杜洪波
2024-08-27 f694f6ac8336866061a0caf8ff6b149a3d1f4a4b
src/main/java/com/product/file/service/DocumentDirectoryService.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.product.common.collect.ListUtils;
import com.product.common.lang.DateUtils;
import com.product.core.config.CoreConst;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
@@ -52,68 +53,41 @@
      return dtTree;
   }
   @Override
   /**
    *    文档目录保存
    * @param fse
    * @return
    */
   @Transactional
   public String addDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException {
      String triCode = CodeUtil.getNewCodeByTemp(CmnConst.PRODUCT_OA_DIRECTORY, CmnConst.TRICODE,
            !StringUtils.isEmpty(fieldSetEntity.getString(CmnConst.TRICODE_PARENT))
                  ? fieldSetEntity.getString(CmnConst.TRICODE_PARENT)
                  : "");
      fieldSetEntity.setValue(CmnConst.TRICODE, triCode);
      String[] codes = triCode.split("-");
      String org_level_uuid = SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid();
      fieldSetEntity.setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid);
      fieldSetEntity.setValue(CmnConst.DIRECTORY_TIER, codes.length);
      fieldSetEntity.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 获取登录帐号
      fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 创建时间
      return baseDao.add(fieldSetEntity);
   }
   @Override
   @Transactional
   public boolean upDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException {
      String uuid = fieldSetEntity.getString(CmnConst.UUID);
      FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, uuid, false);
      String tricode_parent1 = fieldSetEntity.getString(CmnConst.TRICODE_PARENT);
      String tricode_parent2 = fieldSet.getString(CmnConst.TRICODE_PARENT);
      boolean flag;
      // 上级目录tricode如果不相等
      if (!StringUtils.isEmpty(tricode_parent1) || !StringUtils.isEmpty(tricode_parent2)) {
         if (!StringUtils.isEmpty(tricode_parent1) && !StringUtils.isEmpty(tricode_parent2)
               && !tricode_parent1.equals(tricode_parent2)) {
            flag = true;
         } else if (!StringUtils.isEmpty(tricode_parent1) && !StringUtils.isEmpty(tricode_parent2)
               && tricode_parent1.equals(tricode_parent2)) {
            flag = false;
         } else if (!StringUtils.isEmpty(tricode_parent1) && StringUtils.isEmpty(tricode_parent2)) {
            tricode_parent2 = "";
            flag = true;
         } else if (!StringUtils.isEmpty(tricode_parent2) && StringUtils.isEmpty(tricode_parent1)) {
            tricode_parent1 = "";
            flag = true;
   public boolean saveDocumentDireactory(FieldSetEntity fse) {
      BaseUtil.createCreatorAndCreationTime(fse);
      String tricode = null;
      String tricodeParent = BaseUtil.strIsNull(fse.getString(CmnConst.TRICODE_PARENT)) ? "" : fse.getString(CmnConst.TRICODE_PARENT);
      if(BaseUtil.strIsNull(fse.getUUID())) {
         tricode = CodeUtil.getNewCodeByTemp(CmnConst.PRODUCT_OA_DIRECTORY, CmnConst.TRICODE, tricodeParent);
         } else {
            flag = false;
         FieldSetEntity fseOrigin = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, fse.getUUID(), false);
         if(fseOrigin == null) {
            fse.remove(CoreConst.UUID);
         }
      } else {
         flag = false;
      }
      if (flag) {
         StringBuffer sql = new StringBuffer();
         sql.append(" update PRODUCT_OA_directory set tricode=replace(");
         sql.append(" tricode,concat(?,'-'),concat(?,'-')),");
         sql.append(" tricode_parent=(case when tricode_parent=? then replace(tricode_parent,?,?) else ");
         sql.append(" replace (tricode_parent,concat(?,'-'),concat(?,'-')) end )");
         String originParent = BaseUtil.strIsNull(fseOrigin.getString(CmnConst.TRICODE_PARENT)) ? "" : fseOrigin.getString(CmnConst.TRICODE_PARENT);
         if (!originParent.equals(tricodeParent)) {
            String originTricode = BaseUtil.strIsNull(fseOrigin.getString(CmnConst.TRICODE)) ? "" : fseOrigin.getString(CmnConst.TRICODE);
            tricode = CodeUtil.getNewCodeByTemp(CmnConst.PRODUCT_OA_DIRECTORY, CmnConst.TRICODE, tricodeParent);
            StringBuilder sql = new StringBuilder();
            sql.append("update product_oa_directory ");
            sql.append("set tricode=concat(replace(substring(tricode,1,locate(?,tricode)+length(?)),?,?),substring(tricode,locate(?,tricode)+length(?)+1)), ");
            sql.append("tricode_parent=concat(replace(substring(tricode_parent,1,locate(?,tricode_parent)+length(?)),?,?),substring(tricode_parent,locate(?,tricode_parent)+length(?)+1)) ");
         sql.append("  where  tricode like ?");
         baseDao.executeUpdate(sql.toString(), new String[] { tricode_parent1, tricode_parent2, tricode_parent1,
               tricode_parent1, tricode_parent2, tricode_parent1, tricode_parent2, tricode_parent1 + "-%", });
            baseDao.executeUpdate(sql.toString(), new Object[] {originTricode,originTricode,originTricode,tricode,originTricode,originTricode,
                  originTricode,originTricode,originTricode,tricode,originTricode,originTricode,originTricode+"-%"});
         }
      }
      fse.setValue(CmnConst.TRICODE, tricode);
      fse.setValue(CmnConst.DIRECTORY_TIER, tricode.split(",").length);
      return baseDao.saveFieldSetEntity(fse);
      }
      fieldSetEntity.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 获取登录帐号
      fieldSetEntity.setValue(CmnConst.UPDATED_UTC_DATETIME, DateUtils.getDateTime());// 创建时间
      return baseDao.update(fieldSetEntity);
   }
   @Override
   @Transactional