package com.vci.web.dao.impl; import com.vci.model.OsCodeSerialNumberDO; import com.vci.pagemodel.BatchCBO; 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.OsCodeSerialNumberDaoI; 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.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST; /** * Description:编码流水号数据操作层实现类 * * @author Lihang * @date 2021/10/15 11:51 */ @Repository public class OsCodeSerialNumberDaoImpl implements OsCodeSerialNumberDaoI { /** * 业务类型的服务 */ @Autowired private WebBoServiceI boService; /** * 使用主键删除 * @param oid 数据主键 * @return 执行结果 */ @Override public int deleteByPrimaryKey(String oid) { VciBaseUtil.alertNotNull(oid,"主键"); OsCodeSerialNumberDO osCodeSerialNumberDO = selectByPrimaryKey(oid); this.boService.delete(osCodeSerialNumberDO); return 1; } /** * 添加数据 * @param record 编码规则明细数据对象 * @return 执行结果 */ @Override public int insert(OsCodeSerialNumberDO record) { VciBaseUtil.alertNotNull(record,"要添加的数据"); this.boService.addSave(record); return 1; } /** * 根据主键查询 * @param oid 数据主键 * @return 数据对象 */ @Override public OsCodeSerialNumberDO selectByPrimaryKey(String oid) { VciBaseUtil.alertNotNull(oid,"主键"); OsCodeSerialNumberDO record = this.boService.selectByOid(oid, OsCodeSerialNumberDO.class); if (record == null || StringUtils.isBlank(record.getOid())){ throw new VciBaseException(DATA_OID_NOT_EXIST); } return record; } /** * 根据主键批量获取对象 * @param oids 主键,包含单引号,但是不能超过1000 * @return 数据对象列表 */ @Override public List selectByPrimaryKeys(String oids) { VciBaseUtil.alertNotNull(oids,"主键集合"); return this.boService.selectByOidCollection(VciBaseUtil.str2List(oids),OsCodeSerialNumberDO.class); } /** * 根据主键批量查询对象 * @param oids 对象主键,使用逗号分隔,但是不能超过1000 * @return 业务对象 */ @Override public List selectByPrimaryKeyCollection(Collection oids) { VciBaseUtil.alertNotNull(oids,"主键集合"); return this.boService.selectByOidCollection(oids,OsCodeSerialNumberDO.class); } /** * 查询所有分类 * @return 执行结果 */ @Override public List selectAll() { return this.boService.queryObject(OsCodeSerialNumberDO.class,null); } /** * 更新对象 * @param record 物料、工具基本分类数据对象 * @return 执行结果 */ @Override public int updateByPrimaryKey(OsCodeSerialNumberDO record) { VciBaseUtil.alertNotNull(record,"要修改的对象",record.getOid(),"主键"); this.boService.editSave(record); return 1; } /** * 根据查询条件查询数据 * @param condition 查询条件 * @param pageHelper 分页,排序 * @return 数据对象列表 */ @Override public List selectByWrapper(Map condition, PageHelper pageHelper) { return this.boService.queryObject(OsCodeSerialNumberDO.class,condition,pageHelper); } /** * 根据查询条件来查询总数 * @param condition 查询条件 * @return 总数 */ @Override public Long countByWrapper(Map condition) { return VciBaseUtil.getLong(String.valueOf(this.boService.queryCount(OsCodeSerialNumberDO.class,condition))); } /** * 根据主键获取名称 * @param oid 主键 * @return 中文名称 */ @Override public String selectNameByOid(String oid) { return this.selectByPrimaryKey(oid).getName(); } /** * 批量删除对象 * @param oids 对象的主键集合 * @return 受影响的行数 */ @Override public long batchDeleteByOids(Collection oids) { List dos = this.boService.selectByOidCollection(oids,OsCodeSerialNumberDO.class); BatchCBO batchCBO = this.boService.batchDelete(dos); return batchCBO.getDeleteCbos().size(); } /** * 规则主键和流水依据查询最大流水号 * @param ruleOid 规则的主键 * @param serialAccord 流水依据 * @return 数据对象 */ @Override public OsCodeSerialNumberDO selectByAccordingAndRuleOid(String ruleOid, String serialAccord) { VciBaseUtil.alertNotNull(ruleOid,"规则主键",serialAccord,"流水依据"); Map conditionMap = new HashMap(); conditionMap.put("pkcoderule",ruleOid); conditionMap.put("serialunit",serialAccord); List dos = this.boService.queryObject(OsCodeSerialNumberDO.class, conditionMap); if (CollectionUtils.isEmpty(dos)){ return null; } return dos.get(0); } /** * 使用规则的主键查询个数 * @param ruleOid 规则的主键 * @return 包含的数量 */ @Override public long countByRuleOid(String ruleOid) { VciBaseUtil.alertNotNull(ruleOid,"规则主键"); Map conditionMap = new HashMap(); conditionMap.put("pkcoderule",ruleOid); List dos = this.boService.queryObject(OsCodeSerialNumberDO.class, conditionMap); return dos.size(); } }