package com.vci.ubcs.code.service.impl;
|
|
|
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.constant.MdmBtmTypeConstant;
|
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.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.web.pagemodel.BladeQueryObject;
|
import com.vci.ubcs.starter.web.util.VciBaseUtil;
|
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.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)表服务实现类
|
*
|
* @author ludc
|
* @since 2023-05-19 17:48:02
|
*/
|
@Service("CodeReferconfigService")
|
public class CodeReferConfigServiceImpl extends MPJBaseServiceImpl<CodeReferConfigMapper,CodeReferConfig> implements ICodeReferConfigService {
|
|
@Resource
|
private CodeReferConfigMapper codeReferconfigMapper;
|
|
@Resource
|
private ICodeShowFieldConfigService ICodeShowFieldConfigService;
|
|
@Resource
|
private ICodeSrchCondConfigService ICodeSrchCondConfigService;
|
|
/**
|
* 通过ID查询单条数据
|
*
|
* @param oid 主键
|
* @return 实例对象
|
*/
|
@Override
|
public CodeReferConfigVO queryById(String oid) {
|
CodeReferConfig codeReferConfig = this.codeReferconfigMapper.selectJoinOne(CodeReferConfig.class, this.getMPJLambdaWrapper().eq(CodeReferConfig::getOid, oid));
|
return CodeReferConfigWraper.build().entityVO(codeReferConfig);
|
}
|
|
/**
|
* 分页查询
|
*
|
* @param bladeQueryObject 筛选条件
|
* @return 查询结果
|
*/
|
@Override
|
public IPage<CodeReferConfigVO> queryByJoinPage(BladeQueryObject bladeQueryObject) {
|
CodeReferConfig codeReferConfig = new CodeReferConfig();
|
// 根据租户进行区分对应的参照配置
|
Map<String, Object> conditionMap = bladeQueryObject.getConditionMap();
|
// 查询所属租户下的和开启全局的参照配置信息
|
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 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 codeReferConfigVO 实例对象
|
* @return 实例对象
|
*/
|
@Override
|
@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 codeReferConfigVO 实例对象
|
* @return 实例对象
|
*/
|
@Override
|
@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 codeReferConfigDTO
|
* @return 是否成功
|
*/
|
@Override
|
@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;
|
}
|
|
}
|