12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package org.jeecg.modules.system.rule;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import org.jeecg.common.handler.IFillRuleHandler;
- import org.jeecg.common.util.SpringContextUtils;
- import org.jeecg.common.util.YouBianCodeUtil;
- import org.jeecg.common.util.oConvertUtils;
- import org.jeecg.modules.system.entity.SysCategory;
- import org.jeecg.modules.system.mapper.SysCategoryMapper;
- import java.util.List;
- /**
- * @Author scott
- * @Date 2019/12/9 11:32
- * @Description: 分类字典编码生成规则
- */
- public class CategoryCodeRule implements IFillRuleHandler {
- public static final String ROOT_PID_VALUE = "0";
- @Override
- public Object execute(JSONObject params, JSONObject formData) {
- String categoryPid = ROOT_PID_VALUE;
- String categoryCode = null;
- if (formData != null && formData.size() > 0) {
- Object obj = formData.get("pid");
- if (oConvertUtils.isNotEmpty(obj)) categoryPid = obj.toString();
- } else {
- if (params != null) {
- Object obj = params.get("pid");
- if (oConvertUtils.isNotEmpty(obj)) categoryPid = obj.toString();
- }
- }
- /*
- * 分成三种情况
- * 1.数据库无数据 调用YouBianCodeUtil.getNextYouBianCode(null);
- * 2.添加子节点,无兄弟元素 YouBianCodeUtil.getSubYouBianCode(parentCode,null);
- * 3.添加子节点有兄弟元素 YouBianCodeUtil.getNextYouBianCode(lastCode);
- * */
- //找同类 确定上一个最大的code值
- LambdaQueryWrapper<SysCategory> query = new LambdaQueryWrapper<SysCategory>().eq(SysCategory::getPid, categoryPid).isNotNull(SysCategory::getCode).orderByDesc(SysCategory::getCode);
- SysCategoryMapper baseMapper = (SysCategoryMapper) SpringContextUtils.getBean("sysCategoryMapper");
- List<SysCategory> list = baseMapper.selectList(query);
- if (list == null || list.size() == 0) {
- if (ROOT_PID_VALUE.equals(categoryPid)) {
- //情况1
- categoryCode = YouBianCodeUtil.getNextYouBianCode(null);
- } else {
- //情况2
- SysCategory parent = (SysCategory) baseMapper.selectById(categoryPid);
- categoryCode = YouBianCodeUtil.getSubYouBianCode(parent.getCode(), null);
- }
- } else {
- //情况3
- categoryCode = YouBianCodeUtil.getNextYouBianCode(list.get(0).getCode());
- }
- return categoryCode;
- }
- }
|