package com.vci.web.dao.impl; import com.vci.corba.omd.data.BusinessObject; import com.vci.file.constant.VciFileBtmTypeConstant; 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.web.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 selectByPrimaryKeys(String oids) { return boService.selectByOidCollection(VciBaseUtil.str2List(oids),VciFileObjectDO.class); } /** * 根据主键批量查询对象 * * @param oids 对象主键,使用逗号分隔,但是不能超过1000 * @return 业务对象 */ @Override public List selectByPrimaryKeyCollection(Collection oids) { return boService.selectByOidCollection(oids,VciFileObjectDO.class); } /** * 查询所有分类 * * @return 查询结果 */ @Override public List 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 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 oids) { VciBaseUtil.switchCollectionForOracleIn(oids).forEach(oidList->{ Map 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 resultList) { VciBaseUtil.alertNotNull(resultList,"批量插入的"); boService.batchAddSave(resultList.stream().collect(Collectors.toList())); return resultList.size(); } /** * 批量更新 * * @param updateList 更新对象集合 * @return 受影响的行数 */ @Override public int batchUpdateByPrimaryKey(Collection updateList) { VciBaseUtil.alertNotNull(updateList,"批量修改的"); boService.batchEditSave(updateList.stream().collect(Collectors.toList())); return updateList.size(); } /** * 根据关键信息获取文件信息 * * @param keyInfo 关键信息 * @return 数据对象 */ @Override public List selectByKeyInfo(String keyInfo) { Map 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 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; } }