package com.vci.ubcs.starter.util; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.web.util.VciBaseUtil; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.Func; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 新增时默认值属性赋值 * * @author ludc * @date 2023/5/6 */ public class DefaultAttrAssimtUtil { /** * 新增时填充默认值 * @param object 继承了BaseModel的实体对象 * @param 返回值的类型 * @param btmName 业务类型 * @return * @throws VciBaseException */ public static T addDefaultAttrAssimt(T object, String btmName) throws VciBaseException { BaseModel baseModel = object; try { baseModel.setOid(VciBaseUtil.getPk()); baseModel.setCreateTime(new Date()); baseModel.setNameOid(VciBaseUtil.getPk()); baseModel.setLastModifyTime(new Date()); baseModel.setTs(new Date()); baseModel.setRevisionOid(VciBaseUtil.getPk()); baseModel.setBtmname(btmName); baseModel.setCreator(AuthUtil.getUser().getAccount()); baseModel.setFirstR("1"); baseModel.setFirstV("1"); baseModel.setLastR("1"); baseModel.setLastV("1"); baseModel.setRevisionSeq(1); // TODO:目前只有编码规则中有用到,后期需要去掉这段代码的话,就把他加在编码规则新增中去 if(Func.isBlank(baseModel.getOwner())){ // 设置所有者 baseModel.setOwner(AuthUtil.getUserId().toString()); } baseModel.setVersionSeq(1); baseModel.setVersionRule("0"); baseModel.setVersionValue("1"); baseModel.setRevisionOid(VciBaseUtil.getPk()); baseModel.setLastModifier(AuthUtil.getUser().getAccount()); baseModel.setRevisionValue("1"); baseModel.setRevisionRule("1"); baseModel.setTenantId(AuthUtil.getTenantId()); }catch (VciBaseException e){ e.printStackTrace(); } return (T)baseModel; } /** * 当在多线程流中调用时,获取不到请求头信息, * 所以得在多线程流外面获取到request * @param object 继承了BaseModel的实体对象 * @param 返回值的类型 * @param btmName 业务类型 * @return * @throws VciBaseException */ public static T addDefaultAttrAssimt(T object, String btmName, BladeUser user) throws VciBaseException { BaseModel baseModel = object; try { baseModel.setOid(VciBaseUtil.getPk()); baseModel.setCreateTime(new Date()); baseModel.setNameOid(VciBaseUtil.getPk()); baseModel.setLastModifyTime(new Date()); baseModel.setTs(new Date()); baseModel.setRevisionOid(VciBaseUtil.getPk()); baseModel.setBtmname(btmName); String account = Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount(); baseModel.setCreator(account); baseModel.setFirstR("1"); baseModel.setFirstV("1"); baseModel.setLastR("1"); baseModel.setLastV("1"); // TODO:目前只有编码规则中有用到,后期需要去掉这段代码的话,就把他加在编码规则新增中去 if(Func.isBlank(baseModel.getOwner())){ // 设置所有者 baseModel.setOwner(Func.isNotEmpty(user) ? user.getUserId().toString():AuthUtil.getUserId().toString()); } baseModel.setVersionSeq(1); baseModel.setVersionValue("1"); baseModel.setVersionRule("0"); baseModel.setRevisionSeq(1); baseModel.setRevisionValue("1"); baseModel.setRevisionRule("1"); baseModel.setRevisionOid(VciBaseUtil.getPk()); baseModel.setLastModifier(account); baseModel.setTenantId(Func.isNotEmpty(user) ? user.getTenantId():AuthUtil.getTenantId()); }catch (VciBaseException e){ e.printStackTrace(); } return (T)baseModel; } /** * 修改时填充默认值 * @param object 继承了BaseModel的实体对象 * @param 返回值的类型 * @return * @throws VciBaseException */ public static T updateDefaultAttrAssimt(T object) throws VciBaseException { BaseModel baseModel = object; try { Date date = new Date(); baseModel.setLastModifyTime(date); baseModel.setTs(date); // 用户id // String userId = AuthUtil.getUserId().toString(); // 要求改成账号 baseModel.setLastModifier(AuthUtil.getUser().getAccount()); }catch (VciBaseException e){ e.printStackTrace(); } return (T)baseModel; } /** * 修改时填充默认值:多线程流中调用 * @param object 继承了BaseModel的实体对象 * @param 返回值的类型 * @return * @throws VciBaseException */ public static T updateDefaultAttrAssimt(T object, BladeUser user) throws VciBaseException { BaseModel baseModel = object; try { baseModel.setLastModifyTime(new Date()); baseModel.setTs(new Date()); // 用户id // String userId = AuthUtil.getUserId().toString(); // 要求改成账号 baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount()); }catch (VciBaseException e){ e.printStackTrace(); } return (T)baseModel; } /** * 新增时填充默认值:多线程流中调用 * @param object 继承了BaseModel的实体对象 * @param 返回值的类型 * @return * @throws VciBaseException */ public static T copplyDefaultAttrAssimt(Map dataMap, T object,boolean isCase, BladeUser user) throws VciBaseException { BaseModel baseModel = object; baseModel.getData().putAll(dataMap); try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); baseModel.setOid(dataMap.getOrDefault(isCase?"OID":"oid","")); baseModel.setId(dataMap.getOrDefault(isCase?"ID":"id","")); Map newDataMap=new HashMap<>(); /*for (String key:dataMap.keySet()){ Object value=dataMap.get(key); newDataMap.put(key.toLowerCase(Locale.ROOT),value); }*/ /* dataMap.forEach((key,value)->{ newDataMap.put(key.toLowerCase(Locale.ROOT),value); });*/ //baseModel.setData((Map)newDataMap); Object createTimeObj=dataMap.getOrDefault(isCase?"CREATETIME":"createtime",""); if(createTimeObj!=null) { String createTime = createTimeObj.toString(); baseModel.setCreateTime(chageStringToDate(createTime)); } baseModel.setNameOid(dataMap.getOrDefault(isCase?"NAMEOID":"nameoid","")); Object lastModifyTimeObj=dataMap.getOrDefault(isCase?"LASTMODIFYTIME":"lastmodifytime",""); if(lastModifyTimeObj!=null) { String lastModifyTime = lastModifyTimeObj.toString(); baseModel.setLastModifyTime(chageStringToDate(lastModifyTime)); } Object tsObj=dataMap.getOrDefault(isCase?"TS":"ts",""); if(tsObj!=null) { String ts = tsObj.toString(); baseModel.setTs(chageStringToDate(ts)); } baseModel.setRevisionOid(dataMap.getOrDefault(isCase?"REVISIONOID":"revisionoid","")); //用户id ; 要求改成了账号 // String userId = AuthUtil.getUserId().toString(); baseModel.setBtmname(dataMap.getOrDefault(isCase?"BTMNAME":"btmname","")); baseModel.setCreator(dataMap.getOrDefault(isCase?"CREATOR":"creator","")); baseModel.setFirstR(dataMap.getOrDefault(isCase?"FIRSTR":"firstr","")); baseModel.setFirstV(dataMap.getOrDefault(isCase?"FIRSTV":"firstv","")); baseModel.setLastR(dataMap.getOrDefault(isCase?"LASTR":"lastr","")); baseModel.setLastV(dataMap.getOrDefault(isCase?"LASTV":"lastv","")); Object revisionseq =dataMap.getOrDefault(isCase?"REVISIONSEQ":"revisionseq",""); if(revisionseq!=null){ baseModel.setRevisionSeq(chageStringToInt(revisionseq.toString())); } baseModel.setOwner(dataMap.getOrDefault(isCase?"OWNER":"owner","")); Object versionseq =dataMap.getOrDefault(isCase?"VERSIONSEQ":"versionseq",""); if(versionseq!=null){ baseModel.setVersionSeq(chageStringToInt(versionseq.toString())); } baseModel.setVersionRule(dataMap.getOrDefault(isCase?"VERSIONRULE":"versionrule","")); baseModel.setVersionValue(dataMap.getOrDefault(isCase?"VERSIONVALUE":"versionvalue","")); baseModel.setRevisionRule(dataMap.getOrDefault(isCase?"REVISIONRULE":"revisionrule","")); baseModel.setRevisionOid(dataMap.getOrDefault(isCase?"REVISIONOID":"revisionoid","")); baseModel.setRevisionValue(dataMap.getOrDefault(isCase?"REVISIONVALUE":"revisionvalue","")); baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount()); baseModel.setLcStatus(dataMap.getOrDefault(isCase?"LCSTATUS":"lcstatus","")); baseModel.setName(dataMap.getOrDefault(isCase?"NAME":"name","")); baseModel.setTenantId(dataMap.getOrDefault(isCase?"TENANT_ID":"tenant_id","")); baseModel.setDescription(dataMap.getOrDefault(isCase?"DESCRIPTION":"description","")); baseModel.setCopyFromVersion(dataMap.getOrDefault(isCase?"COPYFROMVERSION":"copyfromversion","")); Object secretgrade=dataMap.get(isCase?"SECRETGRADE":"secretgrade"); if(secretgrade!=null){ baseModel.setSecretGrade(chageStringToInt(secretgrade.toString())); } }catch (VciBaseException e){ e.printStackTrace(); throw e; } return (T)baseModel; } private static int chageStringToInt(String value){ int newValue=0; if(StringUtils.isNotBlank(value)){ newValue = Integer.parseInt(value); } return newValue; } private static Date chageStringToDate(String value){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date=new Date(); if(StringUtils.isNotBlank(value)){ try { date = format.parse(value); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * map对象转换为小写 * @param dataMapList * @param isLowerCase */ public static void mapToLowerCase(List> dataMapList, boolean isLowerCase){ // 遍历List中的每个Map for (Map map : dataMapList) { Map newMap = new HashMap<>(); // 遍历每个Map中的key,并将其转换为小写 for (String key : map.keySet()) { newMap.put(isLowerCase ? key.toLowerCase():key.toLowerCase(Locale.ROOT), map.get(key)); } // 用新的Map替换旧的Map dataMapList.set(dataMapList.indexOf(map), newMap); } } }