package org.springblade.code.dao.impl;
|
|
import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
|
import com.vci.mdm.constant.MdmBtmTypeConstant;
|
import com.vci.mdm.dao.CodeClassifyTemplateDaoI;
|
import com.vci.mdm.lifecycle.CodeClassifyTemplateLC;
|
import com.vci.mdm.model.CodeClassifyTemplateDO;
|
import com.vci.starter.web.exception.VciBaseException;
|
import com.vci.starter.web.pagemodel.PageHelper;
|
import com.vci.starter.web.util.VciBaseUtil;
|
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
|
import com.vci.web.pageModel.BatchCBO;
|
import com.vci.web.service.OsLifeCycleServiceI;
|
import com.vci.web.service.WebBoServiceI;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Repository;
|
import org.springframework.util.CollectionUtils;
|
import plm.bs.bom.clientobject.ClientBusinessObject;
|
|
import java.util.*;
|
|
import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
|
|
|
/**
|
* 分类模板对象数据操作层实现类
|
*
|
* @author weidy
|
* @date 2022-01-24
|
*/
|
@Repository
|
public class CodeClassifyTemplateDaoImpl implements CodeClassifyTemplateDaoI{
|
|
/**
|
* 业务类型操作的服务
|
*/
|
@Autowired
|
private WebBoServiceI boService;
|
|
/**
|
* 生命周期的服务
|
*/
|
@Autowired
|
private OsLifeCycleServiceI lifeCycleService;
|
|
/**
|
* 使用主键删除
|
* @param oid 数据主键
|
* @return 执行结果
|
*/
|
@Override
|
public BatchCBO deleteByPrimaryKey(String oid){
|
VciBaseUtil.alertNotNull(oid,"主键");
|
CodeClassifyTemplateDO codeClassifyTemplateDO = selectByPrimaryKey(oid);
|
return boService.delete(codeClassifyTemplateDO,false);
|
}
|
|
/**
|
* 添加数据
|
* @param record 分类模板对象数据对象
|
* @return 执行结果
|
*/
|
@Override
|
public BatchCBO insert(CodeClassifyTemplateDO record){
|
VciBaseUtil.alertNotNull(record,"要添加的数据");
|
return boService.addSave(record);
|
}
|
|
/**
|
* 批量添加数据
|
* @param records 分类模板对象数据对象集合
|
* @return 执行结果数
|
*/
|
@Override
|
public BatchCBO batchInsert(List<CodeClassifyTemplateDO> records){
|
VciBaseUtil.alertNotNull(records,"要添加的数据");
|
BatchCBO batchCBO = boService.batchAddSave(records);
|
return batchCBO;
|
}
|
|
/**
|
* 根据主键查询
|
* @param oid 数据主键
|
* @return 数据对象
|
*/
|
@Override
|
public CodeClassifyTemplateDO selectByPrimaryKey(String oid){
|
VciBaseUtil.alertNotNull(oid,"主键");
|
CodeClassifyTemplateDO record = boService.selectByOid(oid, CodeClassifyTemplateDO.class);
|
if(record == null || StringUtils.isBlank(record.getOid())){
|
throw new VciBaseException(DATA_OID_NOT_EXIST);
|
}
|
return record;
|
}
|
|
/**
|
* 根据主键批量获取对象
|
* @param oids 主键,包含单引号,但是不能超过1000
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<CodeClassifyTemplateDO> selectByPrimaryKeys(String oids){
|
VciBaseUtil.alertNotNull(oids,"主键集合");
|
return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyTemplateDO.class);
|
}
|
|
/**
|
* 根据主键批量查询对象
|
* @param oids 对象主键,使用逗号分隔,但是不能超过1000
|
* @return 业务对象
|
*/
|
@Override
|
public List<CodeClassifyTemplateDO> selectByPrimaryKeyCollection(Collection<String> oids){
|
VciBaseUtil.alertNotNull(oids,"主键集合");
|
return boService.selectByOidCollection(oids, CodeClassifyTemplateDO.class);
|
}
|
|
/**
|
* 查询所有分类
|
* @return 查询结果
|
*/
|
@Override
|
public List<CodeClassifyTemplateDO> selectAll(){
|
return boService.queryObject(CodeClassifyTemplateDO.class,null);
|
}
|
|
/**
|
* 更新对象
|
* @param record 分类模板对象数据对象
|
* @return 执行结果
|
*/
|
@Override
|
public BatchCBO updateByPrimaryKey(CodeClassifyTemplateDO record){
|
VciBaseUtil.alertNotNull(record,"要修改的对象",record.getOid(),"主键");
|
return boService.editSave(record);
|
}
|
/**
|
* 批量更新
|
* @param records 分类模板对象数据对象集合
|
* @return 执行结果行数
|
*/
|
@Override
|
public BatchCBO batchUpdate(List<CodeClassifyTemplateDO> records){
|
VciBaseUtil.alertNotNull(records,"要修改的对象");
|
BatchCBO batchCBO = boService.batchEditSave(records);
|
return batchCBO;
|
}
|
|
/**
|
* 根据查询条件查询数据
|
* @param conditionMap 查询条件,
|
* @param pageHelper 包括分页,排序
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<CodeClassifyTemplateDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
|
return boService.queryObject(CodeClassifyTemplateDO.class,conditionMap,pageHelper);
|
}
|
|
/**
|
* 根据查询条件来查询总数
|
* @param conditionMap 查询条件
|
* @return 总数
|
*/
|
@Override
|
public Long countByCondition(Map< String,String> conditionMap){
|
return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyTemplateDO.class,conditionMap)));
|
}
|
|
/**
|
* 根据查询封装器来查询数据
|
* @param queryWrapper 查询封装器
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<CodeClassifyTemplateDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
|
return boService.selectByQueryWrapper(queryWrapper,CodeClassifyTemplateDO.class);
|
}
|
|
/**
|
* 根据查询封装器来查询总数
|
* @param queryWrapper 查询封装器
|
* @return 总数
|
*/
|
@Override
|
public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
|
return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyTemplateDO.class)));
|
}
|
|
/**
|
* 根据主键获取名称
|
* @param oid 主键
|
* @return 中文名称
|
*/
|
@Override
|
public String selectNameByOid(String oid){
|
return selectByPrimaryKey(oid).getName();
|
}
|
|
/**
|
* 获取所有层级下级的主键
|
* @param oid 数据主键
|
* @return 查询结果
|
*/
|
@Override
|
public List<String> selectAllLevelChildOid(String oid){
|
String sql = "select oid from platformbtm_codeclstemplate START WITH codeClassifyOid = :oid CONNECT BY PRIOR codeClassifyOid= OID";
|
Map< String,String> conditionMap = new HashMap< String,String>();
|
conditionMap.put("oid",oid);
|
List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
|
List<String> oidList = new ArrayList<String>();
|
if(!CollectionUtils.isEmpty(dataList)){
|
for(Map data:dataList){
|
oidList.add(VciBaseUtil.getStringValueFromObject(data.get("oid")));
|
}
|
}
|
return oidList;
|
}
|
|
/**
|
* 获取所有下级数据
|
* @param oid 数据主键
|
* @return 查询结果
|
*/
|
@Override
|
public List<CodeClassifyTemplateDO> selectAllLevelChild(String oid){
|
return boService.selectByOidCollection(selectAllLevelChildOid(oid),CodeClassifyTemplateDO.class);
|
}
|
|
/**
|
* 查询某个节点的所有层级下级的个数
|
* @param oid 主键
|
* @return 总数
|
*/
|
@Override
|
public long countAllLevelChildOid(String oid){
|
String sql = "select count(OID) countsize from platformbtm_codeclstemplate START WITH codeClassifyOid = :oid CONNECT BY PRIOR codeClassifyOid = OID";
|
Map< String,String> conditionMap = new HashMap< String,String>();
|
conditionMap.put("oid",oid);
|
List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
|
return !CollectionUtils.isEmpty(dataList)?VciBaseUtil.getInt(VciBaseUtil.getStringValueFromObject(dataList.get(0).get("countsize"))):0;
|
}
|
|
/**
|
* 批量修改生命周期的状态
|
* @param oids 主键集合,不能大于1000
|
* @param lcStatus 生命周期的值
|
* @return 执行的结果
|
*/
|
@Override
|
public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
|
List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codeclstemplate");
|
if(CollectionUtils.isEmpty(cbos)){
|
return 0;
|
}
|
lifeCycleService.transCboStatus(cbos,lcStatus);
|
return cbos.size();
|
}
|
/**
|
* 根据主键更新状态
|
* @param oid 主键
|
* @param lcStatus 生命周期状态
|
* @return 受影响的行数
|
*/
|
@Override
|
public int updateLcStatus( String oid, String lcStatus){
|
ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codeclstemplate");
|
if(cbo == null || StringUtils.isBlank(cbo.getOid())){
|
return 0;
|
}
|
lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
|
return 1;
|
}
|
|
/**
|
* 批量删除对象
|
* @param oids 对象的主键集合
|
* @return 受影响的行数
|
*/
|
@Override
|
public BatchCBO batchDeleteByOids(Collection<String> oids){
|
List<CodeClassifyTemplateDO> dos = boService.selectByOidCollection(oids, CodeClassifyTemplateDO.class);
|
BatchCBO batchCBO = boService.batchDelete(dos);
|
return batchCBO;
|
}
|
|
/**
|
* 查询分类的子分类包含的模板的内容
|
*
|
* @param codeClassifyOid 分类的主键
|
* @return key是模板的主键,value是模板所属的分类主键
|
*/
|
@Override
|
public Map<String, String> selectChildHasReleaseTemplate(String codeClassifyOid) {
|
Map<String, String> tempClsMap = new HashMap<>();
|
if(StringUtils.isNotBlank(codeClassifyOid)) {
|
String sql = "select t.oid as oid,cls.oid as clsoid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE) +
|
" t left join (select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " where lcstatus = :lcstatus " +
|
" start with oid = :classifyoid \n" +
|
"connect by prior oid=parentcodeclassifyoid) cls on t.codeclassifyoid = cls.oid where t.lcstatus =:templatelcstatus and cls.oid is not null\n";
|
Map<String, String> conditionMap = new HashMap<>();
|
conditionMap.put("lcstatus", FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED);
|
conditionMap.put("classifyoid", codeClassifyOid.trim());
|
conditionMap.put("templatelcstatus", CodeClassifyTemplateLC.RELEASED.getValue());
|
List<ClientBusinessObject> cbos = boService.queryBySql(sql, conditionMap);
|
|
if(!CollectionUtils.isEmpty(cbos)){
|
cbos.stream().forEach(cbo->{
|
tempClsMap.put(cbo.getOid(),cbo.getAttributeValue("clsoid"));
|
});
|
}else{
|
|
}
|
}
|
return tempClsMap;
|
}
|
|
}
|