ludc
2023-06-27 aa8db511b7823300bf3312018fbec75a6fa1ccf5
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
@@ -55,6 +56,7 @@
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
@@ -77,7 +79,6 @@
import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -138,6 +139,15 @@
    */
   @Autowired
   private FormulaServiceImpl formulaService;
   /**
    *  对omd中提供的feign接口进行调用,以及处理相关逻辑
    */
   @Autowired
   ICodeReferBtmTypeService codeReferBtmTypeService;
   /**
    * 相似项查询规则
@@ -2182,31 +2192,32 @@
         deleteBatchDTO.getCodeClassifyOid(), "主题库分类的主键");
      CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid());
      //找业务类型,然后使用主键去获取数据库里的数据
      Collection<String> oidCollection = null;
      Collection<String> oidCollection = new ArrayList<>();
      for (Collection<String> strings : VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList())) {
         oidCollection.addAll(strings);
      }
      List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection);
      //      List<ClientBusinessObject> cboList = new ArrayList<>();
//      oidCollection.stream().forEach(oids -> {
//         Map<String, String> conditionMap = new HashMap<>();
//      List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection);
      List<BaseModel> cboList = new ArrayList<>();
      oidCollection.stream().forEach(oids -> {
         Map<String, String> conditionMap = new HashMap<>();
//         conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
//         List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap);
//         cboList.addAll(cbos);
//      });
         List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(),oids);
//            boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap);
         cboList.addAll(cbos);
      });
      if (CollectionUtils.isEmpty(cboList)) {
         throw new VciBaseException("数据全部在系统中不存在");
      }
      List<CodeWupin> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
      List<BaseModel> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
      if (!CollectionUtils.isEmpty(editCBOs)) {
         CodeWupin cbo = editCBOs.get(0);
         BaseModel cbo = editCBOs.get(0);
         throw new VciBaseException("编码为{0}等共{1}条数据的状态不是[{2}],不允许删除", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()});
      }
      //只能删除自己创建的数据
      String userId = AuthUtil.getUser().getUserName();
      for (CodeWupin clientBusinessObject : cboList) {
      String userId = String.valueOf(AuthUtil.getUser().getUserId());
      for (BaseModel clientBusinessObject : cboList) {
         String creator = clientBusinessObject.getCreator();
         if (!userId.equalsIgnoreCase(creator)) {
            throw new VciBaseException("编码为" + clientBusinessObject.getId() + "的数据不是当前用户创建,不能删除!");
@@ -2218,7 +2229,14 @@
//      WebUtil.setPersistence(false);
//      batchCBO.copyFromOther(
      productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid(), deleteBatchDTO.getOidList());
      baseMapper.deleteBatchIds(cboList);
//      baseMapper.deleteBatchIds(cboList);
      //使用传入的业务类型查询表
      R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid()));
      if (listR.getData().size() == 0) {
         throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
      }
      commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(),
         "'"+(StringUtils.join(cboList.stream().map(BaseModel::getOid).collect(Collectors.toSet()),"','"))+"'");
      //      );
//      WebUtil.setPersistence(true);
//      boService.persistenceBatch(batchCBO);
@@ -3341,52 +3359,33 @@
    * 获取参照的信息
    *
    * @param referConfigVO 参照的配置
    * @param pageHelper    分页的工具
    * @return 列表数据
    */
   @Override
   public DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper) {
//      checkReferConfig(referConfigVO);
      //使用业务类型查询
   public Page<BtmTypeVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) {
      // checkReferConfig(referConfigVO);
      // 使用业务类型查询
      R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType());
      BtmTypeVO btmTypeVO = allAttributeByBtmId.getData();
      if (referConfigVO.getWhere() == null) {
         referConfigVO.setWhere(new HashMap<>());
      }
      /**
       * 加上查询最新版次
       */
      Map<String, String> conditionMap = new HashMap<>();
      conditionMap.put("lastr", "1");
      conditionMap.put("lastv", "1");
      referConfigVO.getWhere().putAll(conditionMap);
      if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
      baseQueryObject.getConditionMap().put("lastr", "1");
      baseQueryObject.getConditionMap().put("lastv", "1");
      if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
         BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) {
         referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue());
         baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue());
      }
      if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
      if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) &&
         BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) {
         referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue());
         baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue());
      }
      BaseQueryObject baseQueryObject = new BaseQueryObject();
      Map<String, String> where = referConfigVO.getWhere();
      where.put("domain", AppConstant.APPLICATION_NAME_CODE);
      baseQueryObject.setConditionMap(where);
      baseQueryObject.setPage(pageHelper.getPage());
      baseQueryObject.setSort(pageHelper.getSort());
      baseQueryObject.setLimit(pageHelper.getLimit());
      baseQueryObject.setOrder(pageHelper.getOrder());
      R<List<BtmTypeVO>> ref = btmTypeClient.getRef(baseQueryObject);
      DataGrid<BtmTypeVO> btmTypeVODataGrid = new DataGrid<>();
      List<BtmTypeVO> data = ref.getData();
      btmTypeVODataGrid.setData(data);
      btmTypeVODataGrid.setCode(ref.getCode());
      btmTypeVODataGrid.setLimit(pageHelper.getLimit());
      btmTypeVODataGrid.setMsg(ref.getMsg());
      btmTypeVODataGrid.setSort(pageHelper.getSort());
      btmTypeVODataGrid.setOrder(pageHelper.getOrder());
      btmTypeVODataGrid.setPage(pageHelper.getPage());
      return btmTypeVODataGrid;
      baseQueryObject.getConditionMap().put("domain", AppConstant.APPLICATION_NAME_CODE);
      R<Page<BtmTypeVO>> refPage = btmTypeClient.getRefPage(baseQueryObject);
      if(refPage.getCode() != 200){
         throw new ServiceException("业务类型feign接口调用错误");
      }
      return refPage.getData();
   }
   /**
@@ -3469,6 +3468,17 @@
   }
   @Override
   public boolean checkUnAttrUnEdit(String attrName) {
      return  (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName)
            ||"ts".equalsIgnoreCase(attrName)
            || "lastmodifier".equalsIgnoreCase(attrName)
            || "lastmodifytime".equalsIgnoreCase(attrName)
            || "createtime".equalsIgnoreCase(attrName)
            || "checkintime".equalsIgnoreCase(attrName)
            ||"checkouttime".equalsIgnoreCase(attrName));
   }
   private String getTableName(String refertype){
      if ("codeclassify".equals(refertype)){
         return "pl_code_classify";