package com.qianwen.smartman.modules.system.service.impl; import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qianwen.core.cache.utils.CacheUtil; import com.qianwen.core.tool.utils.BeanUtil; import com.qianwen.smartman.common.constant.ExtCacheConstant; import com.qianwen.smartman.common.utils.Lambda; import com.qianwen.smartman.modules.system.dto.MetaObjectTypeDTO; import com.qianwen.smartman.modules.system.entity.BasCodeRule; import com.qianwen.smartman.modules.system.entity.MetaObjectType; import com.qianwen.smartman.modules.system.entity.TableColumn; import com.qianwen.smartman.modules.system.entity.TableDetail; import com.qianwen.smartman.modules.system.mapper.MetaObjectTypeMapper; import com.qianwen.smartman.modules.system.service.IBasCoderuleService; import com.qianwen.smartman.modules.system.service.IMetaObjectTypeFieldService; import com.qianwen.smartman.modules.system.service.IMetaObjectTypeService; import com.qianwen.smartman.modules.system.vo.MetaObjectTypeVO; @Service public class MetaObjectTypeServiceImpl extends ServiceImpl implements IMetaObjectTypeService { @Value("${datasource.database}") private String database; @Autowired private IMetaObjectTypeFieldService fieldService; @Autowired @Lazy private IBasCoderuleService basCoderuleService; @Override // org.springblade.modules.system.service.IMetaObjectTypeService public IPage selectMetaObjectTypePage(IPage page, MetaObjectTypeVO metaObjectType) { return page.setRecords(((MetaObjectTypeMapper) this.baseMapper).selectMetaObjectTypePage(page, metaObjectType)); } @Override // org.springblade.modules.system.service.IMetaObjectTypeService @Transactional(rollbackFor = {Exception.class}) public MetaObjectType submitMetaObjectType(MetaObjectTypeDTO metaObjectTypeDTO) { MetaObjectType metaObjectType = (MetaObjectType) getById(metaObjectTypeDTO.getObjectId()); if (metaObjectType == null) { metaObjectType = new MetaObjectType(); } BeanUtil.copy(metaObjectTypeDTO, metaObjectType); metaObjectType.setFId(metaObjectTypeDTO.getObjectId()); metaObjectType.setPrimaryKey("id"); saveOrUpdate(metaObjectType); this.fieldService.remove(Lambda.eq((v0) -> { return v0.getObjectId(); }, metaObjectType.getFId())); if (metaObjectTypeDTO.getFields() != null) { metaObjectTypeDTO.getFields().forEach(field -> { this.fieldService.saveOrUpdate(field); }); } return metaObjectType; } @Override // org.springblade.modules.system.service.IMetaObjectTypeService public List queryAllTableDetail() { List tableDetails = ((MetaObjectTypeMapper) this.baseMapper).selectAllTables(this.database); tableDetails.parallelStream().forEach(item -> { List tableColumns = ((MetaObjectTypeMapper) this.baseMapper).selectTableColumns(this.database, item.getTableName()); item.setTableColumns(tableColumns); }); return tableDetails; } @Override // org.springblade.modules.system.service.IMetaObjectTypeService public List queryTableCloumns(String tableName) { return ((MetaObjectTypeMapper) this.baseMapper).selectTableColumns(this.database, tableName); } @Override // org.springblade.modules.system.service.IMetaObjectTypeService @Transactional public boolean saveRuleFiled(String objectId, String ruleField, String ruleDictCode) { CacheUtil.clear(ExtCacheConstant.CODE_RULE_CACHE, Boolean.FALSE); List list = this.basCoderuleService.list(Lambda.eq(BasCodeRule::getBillFormId, objectId).select( BasCodeRule::getId )); /* List list = this.basCoderuleService.list(Lambda.eq((v0) -> { return v0.getBillFormId(); }, objectId).select((v0) -> { return v0.getId(); }));*/ if (list.size() > 0) { this.basCoderuleService.deleteCoderule(list.stream().map(BasCodeRule::getId).collect(Collectors.toList())); /* this.basCoderuleService.deleteCoderule((List) list.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()));*/ } return lambdaUpdate().set(MetaObjectType::getRuleField, ruleField).set(MetaObjectType::getRuleDictCode, ruleDictCode) .eq(MetaObjectType::getFId, objectId).update(); /* return ((LambdaUpdateChainWrapper) ((LambdaUpdateChainWrapper) ((LambdaUpdateChainWrapper) lambdaUpdate().set((v0) -> { return v0.getRuleField(); }, ruleField)).set((v0) -> { return v0.getRuleDictCode(); }, ruleDictCode)).eq((v0) -> { return v0.getFId(); }, objectId)).update();*/ } }