| | |
| | | package com.vci.ubcs.code.service.impl; |
| | | |
| | | |
| | | import com.vci.ubcs.code.entity.CodeReferConfig; |
| | | import com.alibaba.cloud.commons.lang.StringUtils; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.github.yulichang.base.MPJBaseServiceImpl; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import com.vci.ubcs.code.dto.CodeReferConfigDTO; |
| | | import com.vci.ubcs.code.entity.*; |
| | | import com.vci.ubcs.code.mapper.CodeReferConfigMapper; |
| | | import com.vci.ubcs.code.service.CodeReferConfigService; |
| | | import com.vci.ubcs.code.service.ICodeReferConfigService; |
| | | import com.vci.ubcs.code.service.ICodeShowFieldConfigService; |
| | | import com.vci.ubcs.code.service.ICodeSrchCondConfigService; |
| | | import com.vci.ubcs.code.vo.CodeReferConfigVO; |
| | | import com.vci.ubcs.code.wrapper.CodeReferConfigWraper; |
| | | import com.vci.ubcs.starter.exception.VciBaseException; |
| | | import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; |
| | | import com.vci.ubcs.starter.util.MdmBtmTypeConstant; |
| | | import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject; |
| | | import com.vci.ubcs.starter.web.util.VciBaseUtil; |
| | | import com.vci.ubcs.system.cache.NacosConfigCache; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.BeanUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.cglib.beans.BeanMap; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.data.domain.Page; |
| | | import org.springframework.data.domain.PageImpl; |
| | | import org.springframework.data.domain.PageRequest; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.TS_NOT_PROCESS; |
| | | |
| | | /** |
| | | * 参照配置表(CodeReferconfig)表服务实现类 |
| | |
| | | * @since 2023-05-19 17:48:02 |
| | | */ |
| | | @Service("CodeReferconfigService") |
| | | public class CodeReferConfigServiceImpl implements CodeReferConfigService { |
| | | public class CodeReferConfigServiceImpl extends MPJBaseServiceImpl<CodeReferConfigMapper,CodeReferConfig> implements ICodeReferConfigService { |
| | | |
| | | @Resource |
| | | private CodeReferConfigMapper codeReferconfigMapper; |
| | | |
| | | @Resource |
| | | private ICodeShowFieldConfigService ICodeShowFieldConfigService; |
| | | |
| | | @Resource |
| | | private ICodeSrchCondConfigService ICodeSrchCondConfigService; |
| | | |
| | | /** |
| | | * 通过ID查询单条数据 |
| | |
| | | * @return 实例对象 |
| | | */ |
| | | @Override |
| | | public CodeReferConfig queryById(String oid) { |
| | | return this.codeReferconfigMapper.queryById(oid); |
| | | public CodeReferConfigVO queryById(String oid) { |
| | | CodeReferConfig codeReferConfig = this.codeReferconfigMapper.selectJoinOne(CodeReferConfig.class, this.getMPJLambdaWrapper().eq(CodeReferConfig::getOid, oid)); |
| | | return CodeReferConfigWraper.build().entityVO(codeReferConfig); |
| | | } |
| | | |
| | | /** |
| | | * 分页查询 |
| | | * |
| | | * @param plCodeReferconfig 筛选条件 |
| | | * @param pageRequest 分页对象 |
| | | * @return 查询结果 |
| | | */ |
| | | /** |
| | | * 分页查询 |
| | | * |
| | | * @param bladeQueryObject 筛选条件 |
| | | * @return 查询结果 |
| | | */ |
| | | @Override |
| | | public IPage<CodeReferConfigVO> queryByJoinPage(BladeQueryObject bladeQueryObject) { |
| | | CodeReferConfig codeReferConfig = new CodeReferConfig(); |
| | | // 根据租户进行区分对应的参照配置 |
| | | Map<String, Object> conditionMap = bladeQueryObject.getConditionMap(); |
| | | // 查询所属租户下的和开启全局的参照配置信息 |
| | | if(!NacosConfigCache.getAdminUserInfo().getTenantId().equals(AuthUtil.getTenantId())){ |
| | | conditionMap.put("tenantId",AuthUtil.getTenantId()); |
| | | } |
| | | conditionMap.put("isOpenGlobal","true"); |
| | | BeanMap beanMap = BeanMap.create(codeReferConfig); |
| | | beanMap.putAll(conditionMap); |
| | | // 添加默认排序字段,根据时间进行排序 |
| | | Query query = bladeQueryObject.getQuery(); |
| | | query.setAscs("CREATETIME"); |
| | | IPage<CodeReferConfig> codeReferConfigs = codeReferconfigMapper.selectJoinPage(codeReferConfig, Condition.getPage(query)); |
| | | return CodeReferConfigWraper.build().pageVO(codeReferConfigs); |
| | | } |
| | | |
| | | @Override |
| | | public Page<CodeReferConfig> queryByPage(CodeReferConfig plCodeReferconfig, PageRequest pageRequest) { |
| | | long total = this.codeReferconfigMapper.count(plCodeReferconfig); |
| | | return new PageImpl<>(this.codeReferconfigMapper.queryAllByLimit(plCodeReferconfig, pageRequest), pageRequest, total); |
| | | } |
| | | public List<CodeReferConfigVO> queryByList(CodeReferConfigVO codeReferConfigVO) { |
| | | codeReferConfigVO.setTenantId(AuthUtil.getTenantId()); |
| | | //MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = UBCSCondition.getMPJLambdaWrapper(bladeQueryObject.getConditionMap(), CodeReferConfig.class) |
| | | MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = getMPJLambdaWrapper() |
| | | .setEntity(codeReferConfigVO) |
| | | .orderBy(true, true, CodeReferConfig::getCreateTime); |
| | | List<CodeReferConfig> codeReferConfigList = codeReferconfigMapper.selectJoinList(CodeReferConfig.class, mpjLambdaWrapper); |
| | | return CodeReferConfigWraper.build().listVO(codeReferConfigList); |
| | | } |
| | | |
| | | /** |
| | | * 新增数据 |
| | | * |
| | | * @param plCodeReferconfig 实例对象 |
| | | * @param codeReferConfigVO 实例对象 |
| | | * @return 实例对象 |
| | | */ |
| | | @Override |
| | | public CodeReferConfig insert(CodeReferConfig plCodeReferconfig) { |
| | | this.codeReferconfigMapper.insert(plCodeReferconfig); |
| | | return plCodeReferconfig; |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R insert(CodeReferConfigVO codeReferConfigVO) { |
| | | VciBaseUtil.alertNotNull(codeReferConfigVO,"需要添加的数据对象"); |
| | | if (StringUtils.isBlank(codeReferConfigVO.getReferType())){ |
| | | throw new VciBaseException("参照配置不能为空"); |
| | | } |
| | | // Long count = countCodeReferConfig(codeReferConfigVO); |
| | | // if(count > 0){ |
| | | // throw new VciBaseException("已存在相同的参照配置"); |
| | | // } |
| | | CodeReferConfig codeReferConfig = CodeReferConfigWraper.build().entityDO(codeReferConfigVO); |
| | | codeReferConfig.setOid(VciBaseUtil.getPk().toUpperCase()); |
| | | DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeReferConfig, MdmBtmTypeConstant.CODE_REFER_CONFIG); |
| | | codeReferConfig.setTenantId(AuthUtil.getTenantId()); |
| | | boolean resInsertReferConfig = this.codeReferconfigMapper.insert(codeReferConfig) > 0; |
| | | if (!resInsertReferConfig) { |
| | | return R.fail("新增参照配置失败!"); |
| | | } |
| | | // 主键回填 |
| | | if(Func.isNotEmpty(codeReferConfig.getCodeShowFieldConfigs())){ |
| | | ICodeShowFieldConfigService.insertBatch(codeReferConfigVO.getCodeShowFieldConfigVOS(),codeReferConfig.getOid()); |
| | | } |
| | | if(Func.isNotEmpty(codeReferConfig.getCodeSrchCondConfigs())){ |
| | | ICodeSrchCondConfigService.insertBatch(codeReferConfigVO.getCodeSrchCondConfigVOS(),codeReferConfig.getOid()); |
| | | } |
| | | return R.data(codeReferConfigVO); |
| | | } |
| | | |
| | | /** |
| | | * 获取已存在的参照配置 |
| | | * @param codeReferConfigVO |
| | | * @return 个数 |
| | | */ |
| | | private Long countCodeReferConfig(CodeReferConfigVO codeReferConfigVO) { |
| | | String templateName = codeReferConfigVO.getName(); |
| | | String templateId = codeReferConfigVO.getId(); |
| | | if (StringUtils.isBlank(templateName) && StringUtils.isBlank(templateId)){ |
| | | throw new VciBaseException("参照配置编号和名称不能为空"); |
| | | } |
| | | LambdaQueryWrapper<CodeReferConfig> wrapper = Wrappers.<CodeReferConfig>query() |
| | | .lambda().eq(CodeReferConfig::getId, codeReferConfigVO.getId()) |
| | | .eq(CodeReferConfig::getTenantId, codeReferConfigVO.getTenantId()) |
| | | .or(true) |
| | | .eq(CodeReferConfig::getIsOpenGlobal,"true") // 查询开启全局的参照配置 |
| | | .eq(CodeReferConfig::getId,templateId) |
| | | .eq(CodeReferConfig::getName,templateName); |
| | | Long count = codeReferconfigMapper.selectCount(wrapper); |
| | | return count; |
| | | } |
| | | |
| | | /** |
| | | * 连表查询Wrapper对象获取 |
| | | * @return |
| | | */ |
| | | private MPJLambdaWrapper<CodeReferConfig> getMPJLambdaWrapper(){ |
| | | MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = new MPJLambdaWrapper<>(CodeReferConfig.class) |
| | | .selectAll(CodeReferConfig.class) |
| | | // .select(CodeShowFieldConfig::getField |
| | | // ,CodeShowFieldConfig::getTitle |
| | | // ,CodeShowFieldConfig::getFieldType |
| | | // ,CodeShowFieldConfig::getSort |
| | | // ,CodeShowFieldConfig::getAttrSortField |
| | | // ,CodeShowFieldConfig::getWidth |
| | | // ,CodeShowFieldConfig::getFixedPosition |
| | | // ,CodeShowFieldConfig::getTemplet) |
| | | // .select( |
| | | // CodeSrchCondConfig::getFilterType, |
| | | // CodeSrchCondConfig::getFilterField, |
| | | // CodeSrchCondConfig::getFilterValue) |
| | | .selectCollection(CodeShowFieldConfig.class, CodeReferConfig::getCodeShowFieldConfigs) |
| | | .selectCollection(CodeSrchCondConfig.class, CodeReferConfig::getCodeSrchCondConfigs) |
| | | .leftJoin(CodeShowFieldConfig.class, CodeShowFieldConfig::getReferConfigOid,CodeReferConfig::getOid) |
| | | .leftJoin(CodeSrchCondConfig.class, CodeSrchCondConfig::getReferConfigOid, CodeReferConfig::getOid); |
| | | return mpjLambdaWrapper; |
| | | } |
| | | |
| | | /** |
| | | * 修改数据 |
| | | * |
| | | * @param plCodeReferconfig 实例对象 |
| | | * @param codeReferConfigVO 实例对象 |
| | | * @return 实例对象 |
| | | */ |
| | | @Override |
| | | public CodeReferConfig update(CodeReferConfig plCodeReferconfig) { |
| | | this.codeReferconfigMapper.update(plCodeReferconfig); |
| | | return this.queryById(plCodeReferconfig.getOid()); |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R update(CodeReferConfigVO codeReferConfigVO) { |
| | | boolean resUpdateReferConfig = this.codeReferconfigMapper.updateById(codeReferConfigVO) > 0; |
| | | if (!resUpdateReferConfig) { |
| | | return R.fail("参照配置修改失败!"); |
| | | } |
| | | this.ICodeShowFieldConfigService.updateBatch(codeReferConfigVO.getCodeShowFieldConfigVOS()); |
| | | this.ICodeSrchCondConfigService.updateBatch(codeReferConfigVO.getCodeSrchCondConfigVOS()); |
| | | return R.data(codeReferConfigVO); |
| | | } |
| | | |
| | | /** |
| | | * 通过主键删除数据 |
| | | * |
| | | * @param oid 主键 |
| | | * @param codeReferConfigDTO |
| | | * @return 是否成功 |
| | | */ |
| | | @Override |
| | | public boolean deleteById(String oid) { |
| | | return this.codeReferconfigMapper.deleteById(oid) > 0; |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R deleteById(CodeReferConfigDTO codeReferConfigDTO) { |
| | | CodeReferConfig tsDO = new CodeReferConfig(); |
| | | BeanUtil.copyProperties(tsDO,codeReferConfigDTO); |
| | | CodeReferConfig codeReferConfig = codeReferconfigMapper.queryById(codeReferConfigDTO.getOid()); |
| | | // 检查ts字段是否一致 |
| | | if (!checkTs(tsDO,codeReferConfig)) { |
| | | return R.fail(TS_NOT_PROCESS); |
| | | } |
| | | boolean resDeleteReferConfig = this.codeReferconfigMapper.deleteById(codeReferConfigDTO.getOid()) > 0; |
| | | if (!resDeleteReferConfig) { |
| | | return R.fail("参照配置删除失败!"); |
| | | } |
| | | this.ICodeShowFieldConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid()); |
| | | this.ICodeSrchCondConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid()); |
| | | return R.status(resDeleteReferConfig); |
| | | } |
| | | |
| | | /** |
| | | * 检查ts |
| | | * @param tempDO |
| | | * @param codeReferConfig |
| | | * @return |
| | | */ |
| | | private boolean checkTs(CodeReferConfig tempDO, CodeReferConfig codeReferConfig){ |
| | | Date dbTs = codeReferConfig.getTs(); |
| | | Date currentTs = tempDO.getTs(); |
| | | if(currentTs == null ? dbTs == null:currentTs.compareTo(dbTs)==0){ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | } |