package com.vci.web.service; import com.vci.dto.OsCodeRuleDTO; import com.vci.dto.OsCodeRuleProduceDTO; import com.vci.model.OsCodeRuleDO; import com.vci.model.OsCodeRuleElementDO; import com.vci.pagemodel.OsCodeResultVO; import com.vci.pagemodel.OsCodeRuleElementVO; import com.vci.pagemodel.OsCodeRuleVO; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.DataGrid; import com.vci.starter.web.pagemodel.PageHelper; import java.util.Collection; import java.util.List; import java.util.Map; /** * 编码规则的服务接口 * @author weidy * @date 2020/09/01 */ public interface OsCodeRuleServiceI { /** * 使用编码规则生成编码 * @param codeRuleProduceDTO 编码生成所属数据传输对象,规则编号优先级大于主键,传递的数据优先级大于业务数据 * @return 生成的编码的值 * @throws VciBaseException 参数错误,规则不存在,数据不支持编码的生成等会抛出异常 */ String produceCode(OsCodeRuleProduceDTO codeRuleProduceDTO) throws VciBaseException; /** * 列表查询 * @param conditionMap 查询条件 * @param pageHelper 分页的对象 * @return 数据显示对象 */ DataGrid dataGrid(Map conditionMap, PageHelper pageHelper); /** * 数据对象批量转换为显示对象 * @param ruleDOCollection 规则的数据对象 * @return 规则的显示对象 */ List codeRuleDO2VOs(Collection ruleDOCollection); /** * 规则的元素的数据对象转换为显示对象 * @param elementDOCollection 元素的数据对象 * @return 元素的显示对象 */ List codeRuleElementDO2VOs(Collection elementDOCollection); /** * 数据对象转换为显示对象 * @param ruleDO 规则的数据对象 * @return 规则的显示对象 */ OsCodeRuleVO codeRuleDO2VO(OsCodeRuleDO ruleDO); /** * 明细的数据对象转换为显示对象 * @param elementDO 明细的数据对象 * @return 显示对象 */ OsCodeRuleElementVO codeRuleElementDO2VO(OsCodeRuleElementDO elementDO); /** * 列表的明细查询 * @param pkRule 规则的主键 * @param conditionMap 查询条件 * @param pageHelper 分页的对象 * @return 数据显示对象 */ DataGrid dataGridElement(String pkRule, Map conditionMap, PageHelper pageHelper); /** * 添加规则 * @param ruleDTO 规则的数据传输对象,需要将明细也传递 * @return 显示对象 */ OsCodeRuleVO addRule(OsCodeRuleDTO ruleDTO); /** * 修改规则 * @param ruleDTO 规则的数据传输对象,需要将明细也传递 * @return 显示对象 */ OsCodeRuleVO editRule(OsCodeRuleDTO ruleDTO); /** * 删除规则,有流水号的时候不能删除 * @param ruleDTO 规则的数据传输对象,必须有ts和oid */ void deleteRule(OsCodeRuleDTO ruleDTO); /** * 停用规则 * @param ruleDTO 规则的数据传输对象,必须有ts和oid */ void disableRule(OsCodeRuleDTO ruleDTO); /** * 启用规则 * @param ruleDTO 规则的数据传输对象,必须有ts和oid */ void enableRule(OsCodeRuleDTO ruleDTO); /** * 使用编码规则生成编码 * * @param codeRuleProduceDTO 编码生成所属数据传输对象,规则编号优先级大于主键,传递的数据优先级大于业务数据 * @return 生成的编码的值 * @throws VciBaseException 参数错误,规则不存在,数据不支持编码的生成等会抛出异常 */ List batchProduceCode(OsCodeRuleProduceDTO codeRuleProduceDTO, Integer needAddQuantity); /** * 是否存在编码规则 * @param codeRuleProduceDTO 编码生成所属数据传输对象,规则编号优先级大于主键,传递的数据优先级大于业务数据 * @return 是否包含 */ boolean existRule(OsCodeRuleProduceDTO codeRuleProduceDTO); /** * 上移 * @param codeRuleElementOid 元素的主键 */ void upIndex(String codeRuleElementOid); /** * 下移 * @param codeRuleElementOid 元素的主键 */ void downIndex(String codeRuleElementOid); /** * 获取流程依据 * @param ruleDTO 创建内容的数据传输对象 * @return 流水依据 */ String getSerialUnit(OsCodeRuleProduceDTO ruleDTO); /** * 根据产品型号查询编码规则 * @param productmodel 产品型号 * @return 编码规则DO */ OsCodeRuleDO selectById(String productmodel); }