package com.vci.web.dao.impl;
|
|
import com.vci.corba.omd.data.BusinessObject;
|
import com.vci.model.OsCodeEnumDO;
|
import com.vci.pagemodel.BatchCBO;
|
import com.vci.starter.web.constant.QueryOptionConstant;
|
import com.vci.starter.web.exception.VciBaseException;
|
import com.vci.starter.web.pagemodel.PageHelper;
|
import com.vci.starter.web.util.VciBaseUtil;
|
import com.vci.web.dao.OsCodeEnumDaoI;
|
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 java.util.*;
|
|
import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
|
|
/**
|
* Description:编码中的枚举映射数据操作层实现类
|
*
|
* @author Lihang
|
* @date 2021/10/15 11:50
|
*/
|
@Repository
|
public class OsCodeEnumDaoImpl implements OsCodeEnumDaoI {
|
/**
|
* 业务类型的服务
|
*/
|
@Autowired
|
private WebBoServiceI boService;
|
|
/**
|
* 使用主键删除
|
* @param oid 数据主键
|
* @return 执行结果
|
*/
|
@Override
|
public int deleteByPrimaryKey(String oid) {
|
VciBaseUtil.alertNotNull(oid,"主键");
|
OsCodeEnumDO osCodeEnumDO = selectByPrimaryKey(oid);
|
this.boService.delete(osCodeEnumDO);
|
return 1;
|
}
|
|
/**
|
* 添加数据
|
* @param record 编码规则数据对象
|
* @return 执行结果
|
*/
|
@Override
|
public int insert(OsCodeEnumDO record) {
|
VciBaseUtil.alertNotNull(record,"要添加的数据");
|
boService.addSave(record);
|
return 1;
|
}
|
|
/**
|
* 根据主键查询
|
* @param oid 数据主键
|
* @return 数据对象
|
*/
|
@Override
|
public OsCodeEnumDO selectByPrimaryKey(String oid) {
|
VciBaseUtil.alertNotNull(oid,"主键");
|
OsCodeEnumDO record = boService.selectByOid(oid, OsCodeEnumDO.class);
|
if(record == null || StringUtils.isBlank(record.getOid())){
|
throw new VciBaseException(DATA_OID_NOT_EXIST);
|
}
|
return record;
|
}
|
|
/**
|
* 根据主键批量获取对象
|
* @param oids 主键,包含单引号,但是不能超过1000
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<OsCodeEnumDO> selectByPrimaryKeys(String oids) {
|
VciBaseUtil.alertNotNull(oids,"主键集合");
|
return boService.selectByOidCollection(VciBaseUtil.str2List(oids), OsCodeEnumDO.class);
|
}
|
|
/**
|
* 根据主键批量查询对象
|
* @param oids 对象主键,使用逗号分隔,但是不能超过1000
|
* @return 业务对象
|
*/
|
@Override
|
public List<OsCodeEnumDO> selectByPrimaryKeyCollection(Collection<String> oids) {
|
VciBaseUtil.alertNotNull(oids,"主键集合");
|
return boService.selectByOidCollection(oids, OsCodeEnumDO.class);
|
}
|
|
/**
|
* 查询所有分类
|
* @return 查询结果
|
*/
|
@Override
|
public List<OsCodeEnumDO> selectAll() {
|
return boService.queryObject(OsCodeEnumDO.class,null);
|
}
|
|
/**
|
* 更新对象
|
* @param record 编码规则数据对象
|
* @return 执行结果
|
*/
|
@Override
|
public int updateByPrimaryKey(OsCodeEnumDO record) {
|
VciBaseUtil.alertNotNull(record,"要修改的对象",record.getOid(),"主键");
|
boService.editSave(record);
|
return 1;
|
}
|
|
/**
|
* 根据查询条件查询数据
|
* @param condition 查询条件,
|
* @param pageHelper 包括分页,排序
|
* @return 数据对象列表
|
*/
|
@Override
|
public List<OsCodeEnumDO> selectByWrapper(Map<String, String> condition, PageHelper pageHelper) {
|
return boService.queryObject(OsCodeEnumDO.class,condition,pageHelper);
|
}
|
|
/**
|
* 根据查询条件来查询总数
|
* @param condition 查询条件
|
* @return 总数
|
*/
|
@Override
|
public Long countByWrapper(Map<String, String> condition) {
|
return VciBaseUtil.getLong(String.valueOf(boService.queryCount(OsCodeEnumDO.class,condition)));
|
}
|
|
/**
|
* 根据主键获取名称
|
* @param oid 主键
|
* @return 中文名称
|
*/
|
@Override
|
public String selectNameByOid(String oid) {
|
return selectByPrimaryKey(oid).getName();
|
}
|
|
/**
|
* 批量删除对象
|
* @param oids 对象的主键集合
|
* @return 受影响的行数
|
*/
|
@Override
|
public long batchDeleteByOids(Collection<String> oids) {
|
List<OsCodeEnumDO> dos = boService.selectByOidCollection(oids, OsCodeEnumDO.class);
|
BatchCBO batchCBO = boService.batchDelete(dos);
|
return batchCBO.getDeleteCbos().size();
|
}
|
|
/**
|
* 获取枚举的映射的值
|
* @param ruleElementOid 编码规则元素的主键
|
* @param enumValue 枚举的值
|
* @return 查询枚举的映射的值
|
*/
|
@Override
|
public String selectMapValueByRuleOidAndValue(String ruleElementOid, String enumValue) {
|
VciBaseUtil.alertNotNull(ruleElementOid,"规则元素主键",enumValue,"枚举的值");
|
Map<String,String> conditionMap = new HashMap<String, String>();
|
conditionMap.put("pkCodeRuleElement",ruleElementOid);
|
conditionMap.put("enumitemvalue",enumValue);
|
List<OsCodeEnumDO> codeEnumDOS = this.boService.queryObject(OsCodeEnumDO.class, conditionMap);
|
if (CollectionUtils.isEmpty(codeEnumDOS)){
|
throw new VciBaseException("编码规则明细下没有找到编号为{1}的枚举值",new String[]{enumValue});
|
}
|
return codeEnumDOS.get(0).getCodeMapValue();
|
}
|
|
/**
|
* 批量插入枚举的映射
|
*
|
* @param enumDOs 映射内容
|
* @return 成功条数
|
*/
|
@Override
|
public int batchInsert(List<OsCodeEnumDO> enumDOs) {
|
VciBaseUtil.alertNotNull(enumDOs,"要添加的数据");
|
BatchCBO batchCBO = this.boService.batchAddSave(enumDOs);
|
return batchCBO.getCreateCbos().size();
|
}
|
|
/**
|
* 使用规则查询
|
*
|
* @param ruleOid 规则的主键的内容
|
* @return 枚举映射信息
|
*/
|
@Override
|
public List<OsCodeEnumDO> selectByRuleOid(String ruleOid) {
|
VciBaseUtil.alertNotNull(ruleOid,"规则的主键");
|
//先查询明细,明细应该不会有1000条
|
Map<String,String> conditionMap = new HashMap<String, String>();
|
conditionMap.put("ruleOid",ruleOid);
|
//todo 此暂无法引用,后续会进行调整,再进行引用
|
// String sql = " select a.oid as oid from " + BtmProvider.getInstance().getBTTableName(BtmIdConstant.OS_CODE_ENUM_BTM_TYPE) + " a left join "
|
// + BtmProvider.getInstance().getBTTableName(BtmIdConstant.OS_CODE_RULE_ELEMENT_BTM_TYPE) + " b on a.pkCodeRuleElement = b.oid where b.pkCodeRule = :ruleOid";
|
String sql = "";
|
List<BusinessObject> enumCbos = boService.queryBySql(sql, conditionMap);
|
if(CollectionUtils.isEmpty(enumCbos)){
|
return new ArrayList<OsCodeEnumDO>();
|
}
|
List<String> oidList = new ArrayList<String>();
|
for(BusinessObject cbo : enumCbos){
|
oidList.add(cbo.oid);
|
}
|
|
return boService.selectByOidCollection(oidList,OsCodeEnumDO.class);
|
}
|
|
/**
|
* 根据元素的主键获取枚举映射的信息
|
*
|
* @param oidList 元素主键的列表
|
* @return 枚举映射的信息
|
*/
|
@Override
|
public List<OsCodeEnumDO> selectByElementOidCollection(Collection<String> oidList) {
|
VciBaseUtil.alertNotNull(oidList,"明细的主键集合");
|
//不找过1000个的
|
Map<String,String> conditionMap = new HashMap<String, String>();
|
conditionMap.put("pkCodeRuleElement", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
|
return boService.queryObject(OsCodeEnumDO.class,conditionMap);
|
}
|
}
|