package com.vci.web.dao.impl;
|
|
import com.vci.constant.VciFileBtmTypeConstant;
|
import com.vci.corba.omd.data.BusinessObject;
|
import com.vci.omd.utils.ObjectTool;
|
import com.vci.starter.web.constant.QueryOptionConstant;
|
import com.vci.starter.web.util.VciBaseUtil;
|
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
|
import com.vci.web.dao.VciFileObjectDaoI;
|
import com.vci.model.VciFileObjectDO;
|
import com.vci.web.service.WebBoServiceI;
|
import com.vci.web.util.WebUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Repository;
|
|
import java.util.Collection;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* 文件对象的数据操作类
|
* @author weidy
|
* @date 2021/3/11
|
*/
|
@Repository
|
public class VciFileObjectDaoImpl implements VciFileObjectDaoI {
|
|
/**
|
* 业务数据对象的服务
|
*/
|
@Autowired
|
private WebBoServiceI boService;
|
|
/**
|
* 使用主键删除
|
*
|
* @param oid 数据主键
|
* @return 执行结果
|
*/
|
@Override
|
public int deleteByPrimaryKey(String oid) {
|
VciBaseUtil.alertNotNull(oid,"文件的主键");
|
boService.deleteByCondition(VciFileBtmTypeConstant.FILE_OBJECT, WebUtil.getOidQuery(oid));
|
return StringUtils.countMatches(oid,",") + 1;
|
}
|
|
/**
|
* 添加数据
|
*
|
* @param record 文件对象数据对象
|
* @return 执行结果
|
*/
|
@Override
|
public int insert(VciFileObjectDO record) {
|
VciBaseUtil.alertNotNull(record,"要添加的内容");
|
if(StringUtils.isBlank(record.getOid())){
|
record.setOid(VciBaseUtil.getPk());
|
}
|
boService.addSave(record);
|
return 1;
|
}
|
|
/**
|
* 根据主键查询
|
*
|
* @param oid 数据主键
|
* @return 数据对象
|
*/
|
@Override
|
public VciFileObjectDO selectByPrimaryKey(String oid) {
|
return boService.selectByOid(oid,VciFileObjectDO.class);
|
}
|
|
/**
|
* 根据主键批量获取对象
|
*
|
* @param oids 主键,包含单引号,但是不能超过1000
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<VciFileObjectDO> selectByPrimaryKeys(String oids) {
|
return boService.selectByOidCollection(VciBaseUtil.str2List(oids),VciFileObjectDO.class);
|
}
|
|
/**
|
* 根据主键批量查询对象
|
*
|
* @param oids 对象主键,使用逗号分隔,但是不能超过1000
|
* @return 业务对象
|
*/
|
@Override
|
public List<VciFileObjectDO> selectByPrimaryKeyCollection(Collection<String> oids) {
|
return boService.selectByOidCollection(oids,VciFileObjectDO.class);
|
}
|
|
/**
|
* 查询所有分类
|
*
|
* @return 查询结果
|
*/
|
@Override
|
public List<VciFileObjectDO> selectAll() {
|
return boService.queryObject(VciFileObjectDO.class,null);
|
}
|
|
/**
|
* 更新物料、工具基本分类
|
*
|
* @param record 物料、工具基本分类数据对象
|
* @return 执行结果
|
*/
|
@Override
|
public int updateByPrimaryKey(VciFileObjectDO record) {
|
VciBaseUtil.alertNotNull(record,"要修改的内容",record.getOid(),"主键");
|
boService.editSave(record);
|
return 1;
|
}
|
|
/**
|
* 根据查询条件查询数据
|
*
|
* @param wrapper 查询条件,包括分页,排序
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<VciFileObjectDO> selectByWrapper(VciQueryWrapperForDO wrapper) {
|
return boService.selectByQueryWrapper(wrapper,VciFileObjectDO.class);
|
}
|
|
/**
|
* 根据查询条件来查询总数
|
*
|
* @param wrapper 查询条件
|
* @return 总数
|
*/
|
@Override
|
public Long countByWrapper(VciQueryWrapperForDO wrapper) {
|
return Long.valueOf(boService.countByQueryWrapper(wrapper,VciFileObjectDO.class));
|
}
|
|
/**
|
* 根据主键获取名称
|
*
|
* @param oid 主键
|
* @return 中文名称
|
*/
|
@Override
|
public String selectNameByOid(String oid) {
|
VciFileObjectDO fileObjectDO = selectByPrimaryKey(oid);
|
return fileObjectDO!=null?fileObjectDO.getName():"";
|
}
|
|
/**
|
* 批量删除对象
|
*
|
* @param oids 对象的主键集合
|
* @return 受印象的行数
|
*/
|
@Override
|
public long batchDeleteByOids(Collection<String> oids) {
|
VciBaseUtil.switchCollectionForOracleIn(oids).forEach(oidList->{
|
Map<String,String> conditionMap = new HashMap<>();
|
conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
|
boService.deleteByCondition(VciFileBtmTypeConstant.FILE_OBJECT,conditionMap);
|
});
|
return oids.size();
|
}
|
|
/**
|
* 批量插入
|
*
|
* @param resultList 保存对象集合
|
* @return 受影响的行数
|
*/
|
@Override
|
public int batchInsert(Collection<VciFileObjectDO> resultList) {
|
VciBaseUtil.alertNotNull(resultList,"批量插入的");
|
boService.batchAddSave(resultList.stream().collect(Collectors.toList()));
|
return resultList.size();
|
}
|
|
/**
|
* 批量更新
|
*
|
* @param updateList 更新对象集合
|
* @return 受影响的行数
|
*/
|
@Override
|
public int batchUpdateByPrimaryKey(Collection<VciFileObjectDO> updateList) {
|
VciBaseUtil.alertNotNull(updateList,"批量修改的");
|
boService.batchEditSave(updateList.stream().collect(Collectors.toList()));
|
return updateList.size();
|
}
|
|
/**
|
* 根据关键信息获取文件信息
|
*
|
* @param keyInfo 关键信息
|
* @return 数据对象
|
*/
|
@Override
|
public List<VciFileObjectDO> selectByKeyInfo(String keyInfo) {
|
Map<String,String> conditionMap = new HashMap<>();
|
conditionMap.put("keyinfo", keyInfo);
|
return boService.queryObject(VciFileObjectDO.class,conditionMap);
|
}
|
|
/**
|
* 计算文件的名称的个数
|
*
|
* @param fileNameNoExtension 文件名称,不包含后缀名
|
* @param fileExtension 文件的后缀名
|
* @param ownbizOid 业务数据主键
|
* @param updateFileFlag 是否为修改(修改的时需要抛出当前主键)
|
* @param oid 修改的时候文件主键
|
* @return 包含的个数
|
*/
|
@Override
|
public int countSameName(String fileNameNoExtension, String fileExtension, String ownbizOid, boolean updateFileFlag, String oid) {
|
Map<String,String> conditionMap = new HashMap<>();
|
conditionMap.put("ownbizOid", ownbizOid);
|
conditionMap.put("name", fileNameNoExtension);
|
conditionMap.put("fileExtension", fileExtension);
|
if(updateFileFlag && StringUtils.isNotBlank(oid)){
|
conditionMap.put("oid", QueryOptionConstant.NOTEQUAL + oid);
|
}
|
return boService.queryCount( VciFileBtmTypeConstant.FILE_OBJECT,conditionMap);
|
}
|
|
/**
|
* 获取数据的密级
|
*
|
* @param ownbizOid 业务数据的主键
|
* @param ownbizBtm 业务类型名称
|
* @return 密级的值
|
*/
|
@Override
|
public String selectSecret(String ownbizOid, String ownbizBtm) {
|
if(StringUtils.isNotBlank(ownbizOid) && StringUtils.isNotBlank(ownbizBtm)){
|
//校验数据的密级
|
BusinessObject cbo = boService.selectCBOByOid(ownbizOid, ownbizBtm);
|
if(cbo !=null && StringUtils.isNotBlank(cbo.oid)){
|
//有可能是先上传文件,所以我们这个不判断是否存在
|
return ObjectTool.getBOAttributeValue(cbo,"secretgrade");
|
}
|
}
|
return null;
|
}
|
}
|