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.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.CodeClassifyProcessTempDTO;
|
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.mapper.CodeShowFieldConfigMapper;
|
import com.vci.ubcs.code.service.CodeReferConfigService;
|
import com.vci.ubcs.code.service.CodeShowFieldConfigService;
|
import com.vci.ubcs.code.service.CodeSrchCondConfigService;
|
import com.vci.ubcs.code.vo.CodeReferConfigVO;
|
import com.vci.ubcs.code.wrapper.CodeClassifyProcessTempWrapper;
|
import com.vci.ubcs.code.wrapper.CodeReferConfigWraper;
|
import com.vci.ubcs.code.wrapper.CodeShowFieldConfigWraper;
|
import com.vci.ubcs.code.wrapper.CodeSrchCondConfigWraper;
|
import com.vci.ubcs.starter.exception.VciBaseException;
|
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
|
import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
|
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
|
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
|
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
|
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.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 java.util.Objects;
|
|
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 CodeReferConfigService {
|
|
@Resource
|
private CodeReferConfigMapper codeReferconfigMapper;
|
|
@Resource
|
private CodeShowFieldConfigService codeShowFieldConfigService;
|
|
@Resource
|
private CodeSrchCondConfigService codeSrchCondConfigService;
|
|
/**
|
* 通过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);
|
}
|
|
@Override
|
public IPage<CodeReferConfigVO> queryByJoinPage(BladeQueryObject bladeQueryObject) {
|
CodeReferConfig codeReferConfig = new CodeReferConfig();
|
// 根据租户进行区分对应的参照配置
|
Map<String, Object> conditionMap = bladeQueryObject.getConditionMap();
|
conditionMap.put("tenantId",AuthUtil.getTenantId());
|
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);
|
}
|
|
/**
|
* 分页查询
|
*
|
* @param codeReferConfigVO 筛选条件
|
* @return 查询结果
|
*/
|
@Override
|
public List<CodeReferConfigVO> queryByList(CodeReferConfigVO codeReferConfigVO) {
|
codeReferConfigVO.setTenantId(AuthUtil.getTenantId());
|
//MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = Map2MPJLambdaUtil.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 = Objects.requireNonNull(BeanUtil.copy(codeReferConfigVO, CodeReferConfig.class));
|
boolean resInsertReferConfig = this.codeReferconfigMapper.insert(CodeReferConfig) > 0;
|
if (!resInsertReferConfig) {
|
return R.fail("新增参照配置失败!");
|
}
|
codeShowFieldConfigService.insertBatch(codeReferConfigVO.getCodeShowFieldConfigVOS());
|
codeSrchCondConfigService.insertBatch(codeReferConfigVO.getCodeSrchCondConfigVOS());
|
return R.data(codeReferConfigVO);
|
}
|
|
/**
|
* 获取已存在的参照配置
|
* @param codeReferConfigVO
|
* @return 个数
|
*/
|
private Long countCodeReferConfig(CodeReferConfigVO codeReferConfigVO) {
|
String templateName = codeReferConfigVO.getName();
|
if (StringUtils.isBlank(templateName)){
|
throw new VciBaseException("参照配置名称不能为空");
|
}
|
LambdaQueryWrapper<CodeReferConfig> wrapper = Wrappers.<CodeReferConfig>query()
|
.lambda().eq(CodeReferConfig::getId, codeReferConfigVO.getId())
|
.eq(CodeReferConfig::getTenantId, codeReferConfigVO.getTenantId());
|
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.codeShowFieldConfigService.updateBatch(codeReferConfigVO.getCodeShowFieldConfigVOS());
|
this.codeSrchCondConfigService.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.codeShowFieldConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid());
|
this.codeSrchCondConfigService.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;
|
}
|
|
}
|