xiejun
2023-11-17 6732cd7a4e0fd7ea083d4ae11254bde35adb1ee4
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,6 +62,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
@@ -179,6 +181,7 @@
    * @return 执行结果
    */
   @Override
   @Transactional(rollbackFor = Exception.class)
   public R editSave(CodeClassify codeClassifyEntity) {
      if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){
         return R.fail("传入数据不能为空!");
@@ -196,15 +199,28 @@
      codeClassifyEntity.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
      codeClassifyEntity.setLastModifyTime(new Date());
      codeClassifyEntity.setTs(new Date());
      int insertNumber = codeClassifyMapper.updateById(codeClassifyEntity);
      int updateEntity = codeClassifyMapper.updateById(codeClassifyEntity);
      // 如果不是叶子结点,则需要修改其下所有的子分类,是否参与关键属性校验的值
      String oid = codeClassifyEntity.getOid();
      List<CodeClassify> codeClassifies = codeClassifyMapper.selectStartWithCurrentOid(oid);
      int updateAttr = 0;
      // 不为空就需要该当前分类下所有子分类的isParticipateCheck
      if(!codeClassifies.isEmpty()){
         List<String> oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.toList());
         updateAttr = codeClassifyMapper.update(
            null,
            Wrappers.<CodeClassify>update()
               .lambda().in(CodeClassify::getOid, oids)
               .set(CodeClassify::getIsParticipateCheck, codeClassifyEntity.getIsParticipateCheck())
         );
      }
//         //处理数据集成逻辑,成功后执行集成第一步,分类数据特殊处理。只有启用状态的分类才推送
//         if(FRAMEWORK_DATA_ENABLED.equals(codeClassifyDO.getLcStatus()));
//         {
//             codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_EDIT,FRAMEWORK_DATA_ENABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO.getOid(), codeClassifyDTO.getTs());
//         }
      return R.status(SqlHelper.retBool(insertNumber));
//      return BaseResult.success(codeClassifyDO2VO(codeClassifyDO));
      return R.status(SqlHelper.retBool(updateAttr) & SqlHelper.retBool(updateEntity));
   }
   /**
@@ -639,12 +655,29 @@
    * @param oid
    * @return
    */
   public List<CodeClassifyVO> selectAllClassifyByOid(String oid){
      List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId());
   public List<CodeClassifyVO> selectAllClassifyByOid(String oid, String fieldInPath){
      List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId(),fieldInPath);
      List<CodeClassifyVO> voList = codeClassifyDO2VOs(codeClassifyList);
      return voList;
   }
   /**
    * 根据顶层节点oid查询所有除当前节点以外所有不参与校验的分类oid
    * @param topOid
    * @param currentOid
    * @return
    */
   @Override
   public String selectLeafByParentClassifyOid(String topOid, String currentOid) {
      List<CodeClassify> codeClassifies = codeClassifyMapper.selectLeafByParentClassifyOid(topOid, currentOid);
      if(codeClassifies.isEmpty()){
         return "";
      }
      String oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.joining(","));
      return oids;
   }
   /***
    * 根据分类描述备注和库节点查询分类信息
    * @param desc
@@ -807,9 +840,8 @@
   @Override
   public List<CodeClassifyVO> listChildrenClassify(String codeClassifyOid, boolean allLevel, String fieldInPath, boolean enable) {
      if(allLevel){
         List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath);
         List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath,AuthUtil.getTenantId());
         if(!CollectionUtils.isEmpty(classifyDOS)){
            // 这儿用stream有点慢
            classifyDOS = classifyDOS.parallelStream().filter(s->FRAMEWORK_DATA_ENABLED.equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
         }
         return codeClassifyDO2VOs(classifyDOS);
@@ -928,7 +960,7 @@
      Map<String/**路径**/,String/**主键**/> oidPathMap = new HashMap<>();
      //我们需要查询所有已经存在的分类,主要是路径,用来判断分类的数据
      List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null);
      List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null,AuthUtil.getTenantId());
      Map<String/**路径**/, CodeClassify/**已经存在的数据**/> pathDOMap = Optional.ofNullable(existClassifyDOs).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> {
         String path = s.getPath();
         if(StringUtils.isNotBlank(path) && path.startsWith("#")){
@@ -1357,4 +1389,6 @@
      return codeClassifyMapper.selectCount(wrapper).intValue();
   }
}