田源
2024-05-25 ba345976f0a6a67bcb20627e33251ded000a3d8f
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -4,16 +4,12 @@
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.apache.poi.ss.formula.functions.T;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import org.springblade.core.tool.utils.Func;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import java.util.*;
/**
 * 新增时默认值属性赋值
@@ -31,30 +27,80 @@
    * @return
    * @throws VciBaseException
    */
   public static <T extends BaseModel> T addDefaultAttrAssimt(T object,String btmName) throws VciBaseException {
   public static <T extends BaseModel> T addDefaultAttrAssimt(T object, String btmName) throws VciBaseException {
      BaseModel baseModel = object;
      try {
         baseModel.setOid(VciBaseUtil.getPk().toUpperCase());
         baseModel.setOid(VciBaseUtil.getPk());
         baseModel.setCreateTime(new Date());
         baseModel.setNameOid(VciBaseUtil.getPk());
         baseModel.setLastModifyTime(new Date());
         baseModel.setTs(new Date());
         baseModel.setRevisionOid(VciBaseUtil.getPk());
         //用户id
         String userId = AuthUtil.getUserId().toString();
         baseModel.setBtmname(btmName);
         baseModel.setCreator(userId);
         baseModel.setCreator(AuthUtil.getUser().getAccount());
         baseModel.setFirstR("1");
         baseModel.setFirstV("1");
         baseModel.setLastR("1");
         baseModel.setLastV("1");
         baseModel.setRevisionSeq(1);
         baseModel.setOwner("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(userId);
         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 <T>   返回值的类型
    * @param btmName  业务类型
    * @return
    * @throws VciBaseException
    */
   public static <T extends BaseModel> 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();
      }
@@ -71,60 +117,120 @@
   public static <T extends BaseModel> T updateDefaultAttrAssimt(T object) throws VciBaseException {
      BaseModel baseModel = object;
      try {
         baseModel.setLastModifyTime(new Date());
         baseModel.setTs(new Date());
         //用户id
         String userId = AuthUtil.getUserId().toString();
         baseModel.setLastModifier(userId);
         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 <T>   返回值的类型
    * @return
    * @throws VciBaseException
    */
   public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> dataMap, T object) throws VciBaseException {
   public static <T extends BaseModel> T updateDefaultAttrAssimt(T object, BladeUser user) throws VciBaseException {
      BaseModel baseModel = object;
      try {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         baseModel.setOid(dataMap.getOrDefault("OID",""));
         Object createTimeObj=dataMap.getOrDefault("CREATETIME","");
         String createTime= createTimeObj.toString();
         baseModel.setCreateTime(chageStringToDate(createTime));
         baseModel.setNameOid(dataMap.getOrDefault("NAMEOID",""));
         Object lastModifyTimeObj=dataMap.getOrDefault("LASTMODIFYTIME","");
         String lastModifyTime= lastModifyTimeObj.toString();
         baseModel.setLastModifyTime(chageStringToDate(lastModifyTime));
         Object tsObj=dataMap.getOrDefault("TS","");
         String ts= tsObj.toString();
         baseModel.setTs(chageStringToDate(ts));
         baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
         //用户id
         String userId = AuthUtil.getUserId().toString();
         baseModel.setBtmname(dataMap.getOrDefault("BTMNAME",""));
         baseModel.setCreator(dataMap.getOrDefault("CREATOR",""));
         baseModel.setFirstR(dataMap.getOrDefault("FIRSTR",""));
         baseModel.setFirstV(dataMap.getOrDefault("FIRSTV",""));
         baseModel.setLastR(dataMap.getOrDefault("LASTR",""));
         baseModel.setLastV(dataMap.getOrDefault("LASTV",""));
         baseModel.setRevisionSeq(chageStringToInt(dataMap.getOrDefault("REVISIONSEQ","")));
         baseModel.setOwner(dataMap.getOrDefault("OWNER",""));
         baseModel.setVersionSeq(chageStringToInt(dataMap.getOrDefault("VERSIONSEQ","")));
         baseModel.setVersionRule(dataMap.getOrDefault("VERSIONRULE",""));
         baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE",""));
         baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
         baseModel.setLastModifier(userId);
         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 <T>   返回值的类型
    * @return
    * @throws VciBaseException
    */
   public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> 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<String,Object> 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;
   }
@@ -149,4 +255,23 @@
      }
      return date;
   }
   /**
    * map对象转换为小写
    * @param dataMapList
    * @param isLowerCase
    */
   public static void mapToLowerCase(List<Map<String,String>> dataMapList, boolean isLowerCase){
      // 遍历List中的每个Map
      for (Map<String, String> map : dataMapList) {
         Map<String, String> 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);
      }
   }
}