18 changed files with 758 additions and 79 deletions
@ -0,0 +1,36 @@ |
|||
//package org.nl.config.language;
|
|||
//
|
|||
//import org.apache.commons.lang3.StringUtils;
|
|||
//import org.nl.config.MapOf;
|
|||
//import org.springframework.web.servlet.LocaleResolver;
|
|||
//
|
|||
//import javax.servlet.http.HttpServletRequest;
|
|||
//import javax.servlet.http.HttpServletResponse;
|
|||
//import java.util.Locale;
|
|||
//import java.util.Map;
|
|||
//
|
|||
///**
|
|||
// * s
|
|||
// * @author ZZQ
|
|||
// * @Date 2023/11/13 09:36
|
|||
// */
|
|||
//public class InitLocaleResolver implements LocaleResolver {
|
|||
// public static Map<String,String> Language_Country = MapOf.of("in","in-ID","en","en-US","zh","zh-CN");
|
|||
// @Override
|
|||
// public Locale resolveLocale(HttpServletRequest request) {
|
|||
// String header = request.getHeader("Accept-Language");
|
|||
// if (StringUtils.isNotEmpty(header)){
|
|||
// String lang = Language_Country.get(header);
|
|||
// if (StringUtils.isNotEmpty(lang)){
|
|||
// String[] l = lang.split("-");
|
|||
// //印尼的ISO标准国家代码为id-ID
|
|||
// return new Locale(l[0], l[1]);
|
|||
// }
|
|||
// }
|
|||
// return Locale.getDefault();
|
|||
// }
|
|||
//
|
|||
// @Override
|
|||
// public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
|
|||
// }
|
|||
//}
|
@ -0,0 +1,23 @@ |
|||
package org.nl.config.language; |
|||
|
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.nl.modules.wql.util.SpringContextHolder; |
|||
import org.springframework.context.MessageSource; |
|||
import org.springframework.context.i18n.LocaleContextHolder; |
|||
|
|||
/** |
|||
* s |
|||
* @author ZZQ |
|||
* @Date 2023/11/13 09:45 |
|||
*/ |
|||
public class LangProcess { |
|||
|
|||
public static String msg(String code,String...args){ |
|||
MessageSource bean = SpringContextHolder.getBean(MessageSource.class); |
|||
if (StringUtils.isEmpty(code)){ |
|||
return "配置信息不存在"; |
|||
} |
|||
String message = bean.getMessage(code, args, LocaleContextHolder.getLocale()); |
|||
return message; |
|||
} |
|||
} |
@ -0,0 +1,86 @@ |
|||
package org.nl.wms.basedata.master.standard.controller; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.TableDataInfo; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.modules.logging.annotation.Log; |
|||
import org.nl.wms.basedata.master.standard.service.IClassStandardService; |
|||
import org.nl.wms.basedata.master.standard.service.dao.ClassStandard; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.http.HttpStatus; |
|||
import org.springframework.http.ResponseEntity; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 基础分类 |
|||
* @Author: lyd |
|||
* @Date: 2024/10/15 |
|||
*/ |
|||
@RestController |
|||
@RequiredArgsConstructor |
|||
@RequestMapping("/api/Classstandard") |
|||
@Slf4j |
|||
public class ClassStandardController { |
|||
@Autowired |
|||
private IClassStandardService classStandardService; |
|||
|
|||
@GetMapping |
|||
@Log("查询基础分类") |
|||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){ |
|||
return new ResponseEntity<>(TableDataInfo.build(classStandardService.queryAll(whereJson,page)),HttpStatus.OK); |
|||
} |
|||
|
|||
@PostMapping |
|||
@Log("新增基础分类") |
|||
public ResponseEntity<Object> create(@Validated @RequestBody ClassStandard entity){ |
|||
classStandardService.create(entity); |
|||
return new ResponseEntity<>(HttpStatus.CREATED); |
|||
} |
|||
|
|||
@PutMapping |
|||
@Log("修改基础分类") |
|||
public ResponseEntity<Object> update(@Validated @RequestBody ClassStandard entity){ |
|||
classStandardService.update(entity); |
|||
return new ResponseEntity<>(HttpStatus.NO_CONTENT); |
|||
} |
|||
|
|||
@Log("删除基础分类") |
|||
@DeleteMapping |
|||
public ResponseEntity<Object> delete(@RequestBody List<String> ids) { |
|||
classStandardService.deleteAll(ids); |
|||
return new ResponseEntity<>(HttpStatus.OK); |
|||
} |
|||
|
|||
@GetMapping("/getClass") |
|||
@Log("获取Code获取树下拉框") |
|||
//@PreAuthorize("@el.check('materialtype:list')")
|
|||
public ResponseEntity<Object> queryClassByCode(@RequestParam Map whereJson) { |
|||
return new ResponseEntity<>(classStandardService.queryClassByCode(whereJson), HttpStatus.OK); |
|||
} |
|||
|
|||
@GetMapping("/getClassName") |
|||
@Log("获取分类名称下拉框") |
|||
public ResponseEntity<Object> getClassName() { |
|||
return new ResponseEntity<>(classStandardService.getClassName(), HttpStatus.OK); |
|||
} |
|||
|
|||
@GetMapping("/loadClass") |
|||
@Log("查询基础类型") |
|||
public ResponseEntity<Object> query(@RequestParam Map whereJson) { |
|||
return new ResponseEntity<>(classStandardService.loadClass(whereJson), HttpStatus.OK); |
|||
} |
|||
|
|||
|
|||
@PostMapping("/superior") |
|||
public ResponseEntity<Object> getSuperior(@RequestBody String id) { |
|||
ClassStandard classstandard = classStandardService.getById(id); |
|||
ArrayList<ClassStandard> list = classStandardService.getSuperior(classstandard, new ArrayList<>()); |
|||
return new ResponseEntity<>(classStandardService.buildTree(list), HttpStatus.OK); |
|||
} |
|||
} |
@ -0,0 +1,4 @@ |
|||
/** |
|||
* 基础分类相关 |
|||
*/ |
|||
package org.nl.wms.basedata.master.standard; |
@ -0,0 +1,84 @@ |
|||
package org.nl.wms.basedata.master.standard.service; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.wms.basedata.master.standard.service.dao.ClassStandard; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Date: 2024/10/15 |
|||
*/ |
|||
public interface IClassStandardService extends IService<ClassStandard> { |
|||
/** |
|||
* 查询数据分页 |
|||
* @param whereJson 条件 |
|||
* @param pageable 分页参数 |
|||
* @return IPage<MdBaseClassstandard> |
|||
*/ |
|||
IPage<ClassStandard> queryAll(Map whereJson, PageQuery pageable); |
|||
|
|||
/** |
|||
* 创建 |
|||
* @param entity / |
|||
*/ |
|||
void create(ClassStandard entity); |
|||
|
|||
/** |
|||
* 编辑 |
|||
* @param entity / |
|||
*/ |
|||
void update(ClassStandard entity); |
|||
|
|||
/** |
|||
* 多选删除 |
|||
* @param ids / |
|||
*/ |
|||
void deleteAll(List<String> ids); |
|||
|
|||
/** |
|||
* 获取下拉框 |
|||
* @return |
|||
*/ |
|||
List<ClassStandard> getClassName(); |
|||
|
|||
/** |
|||
* loadClass |
|||
* @param whereJson |
|||
* @return |
|||
*/ |
|||
List<ClassStandard> loadClass(Map whereJson); |
|||
|
|||
/** |
|||
* 获取父级树 |
|||
* @param classstandard |
|||
* @param objects |
|||
* @return |
|||
*/ |
|||
ArrayList<ClassStandard> getSuperior(ClassStandard classstandard, ArrayList<ClassStandard> objects); |
|||
|
|||
/** |
|||
* 构建树形 |
|||
* @param list |
|||
* @return |
|||
*/ |
|||
List<ClassStandard> buildTree(ArrayList<ClassStandard> list); |
|||
|
|||
/** |
|||
* 根据编码获取对应的父级数据 |
|||
* @param whereJson |
|||
* @return |
|||
*/ |
|||
List<ClassStandard> queryClassByCode(Map whereJson); |
|||
|
|||
/** |
|||
* 获取所有的子节点id |
|||
* @param classId 父节点id |
|||
* @return 子节点id数组 |
|||
*/ |
|||
ArrayList<String> getAllChildrenIds(String classId); |
|||
} |
@ -0,0 +1,73 @@ |
|||
package org.nl.wms.basedata.master.standard.service.dao; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Date: 2024/10/15 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = false) |
|||
@TableName("md_pb_classstandard") |
|||
public class ClassStandard { |
|||
/** |
|||
* 防止精度丢失 |
|||
*/ |
|||
@TableId(value = "class_id", type = IdType.NONE) |
|||
private String class_id; |
|||
|
|||
private String class_code; |
|||
|
|||
private String long_class_code; |
|||
|
|||
private String class_name; |
|||
|
|||
private String class_desc; |
|||
|
|||
private String parent_class_id; |
|||
|
|||
private Boolean is_leaf; |
|||
|
|||
private Integer sub_count; |
|||
|
|||
private Boolean is_modify; |
|||
|
|||
private Boolean is_delete; |
|||
|
|||
private String class_level; |
|||
|
|||
private String ext_id; |
|||
|
|||
private String ext_parent_id; |
|||
|
|||
private String create_id; |
|||
|
|||
private String create_name; |
|||
|
|||
private String create_time; |
|||
|
|||
private String update_id; |
|||
|
|||
private String update_name; |
|||
|
|||
private String update_time; |
|||
@TableField(exist = false) |
|||
private Boolean hasChildren; |
|||
|
|||
@TableField(exist = false) |
|||
private String id; |
|||
|
|||
@TableField(exist = false) |
|||
private String label; |
|||
@TableField(exist = false) |
|||
private Boolean leaf; |
|||
} |
@ -0,0 +1,14 @@ |
|||
package org.nl.wms.basedata.master.standard.service.dao.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.nl.wms.basedata.master.standard.service.dao.ClassStandard; |
|||
|
|||
import java.util.ArrayList; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Date: 2024/10/15 |
|||
*/ |
|||
public interface ClassStandardMapper extends BaseMapper<ClassStandard> { |
|||
ArrayList<String> getAllChildrenIds(String classId); |
|||
} |
@ -0,0 +1,19 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="org.nl.wms.basedata.master.standard.service.dao.mapper.ClassStandardMapper"> |
|||
|
|||
<select id="getAllChildrenIds" resultType="java.lang.String"> |
|||
SELECT DISTINCT |
|||
class_id |
|||
FROM ( |
|||
SELECT |
|||
t1.class_id, |
|||
IF(find_in_set(parent_class_id, @pids) > 0, @pids := concat(@pids, ',', class_id), 0) AS ischild |
|||
FROM ( |
|||
SELECT class_id, parent_class_id FROM md_base_classstandard t WHERE t.is_delete = '0' ORDER BY class_code |
|||
) t1, |
|||
(SELECT @pids := #{classId}) t2 |
|||
) t3 |
|||
WHERE ischild != 0 |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,73 @@ |
|||
package org.nl.wms.basedata.master.standard.service.dto; |
|||
|
|||
import lombok.Data; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @description / |
|||
* @author lyd |
|||
* @date 2023-05-11 |
|||
**/ |
|||
@Data |
|||
public class ClassStandardDto implements Serializable { |
|||
|
|||
/** 分类标识 */ |
|||
private String class_id; |
|||
|
|||
/** 分类编码 */ |
|||
private String class_code; |
|||
|
|||
/** 分类名称 */ |
|||
private String class_name; |
|||
|
|||
/** 分类简要描述 */ |
|||
private String class_desc; |
|||
|
|||
/** 上级分类标识 */ |
|||
private String parent_class_id; |
|||
|
|||
/** 子级数目 */ |
|||
private String sub_count; |
|||
|
|||
/** 是否叶子 */ |
|||
private Boolean is_leaf; |
|||
|
|||
/** 是否可修改 */ |
|||
private Boolean is_modify; |
|||
|
|||
/** 是否删除 */ |
|||
private Boolean is_delete; |
|||
|
|||
/** 级别 */ |
|||
private String class_level; |
|||
|
|||
/** 外部标识 */ |
|||
private String ext_id; |
|||
|
|||
/** 外部上级标识 */ |
|||
private String ext_parent_id; |
|||
|
|||
/** 车间编码 */ |
|||
private String workshop_code; |
|||
|
|||
/** 备注 */ |
|||
private String remark; |
|||
|
|||
/** 创建人 */ |
|||
private String create_id; |
|||
|
|||
/** 创建人 */ |
|||
private String create_name; |
|||
|
|||
/** 创建时间 */ |
|||
private String create_time; |
|||
|
|||
/** 修改人 */ |
|||
private String update_id; |
|||
|
|||
/** 修改人 */ |
|||
private String update_name; |
|||
|
|||
/** 修改时间 */ |
|||
private String update_time; |
|||
} |
@ -0,0 +1,12 @@ |
|||
package org.nl.wms.basedata.master.standard.service.dto; |
|||
|
|||
import org.nl.common.domain.query.BaseQuery; |
|||
import org.nl.wms.basedata.master.standard.service.dao.ClassStandard; |
|||
|
|||
/** |
|||
* @author lyd |
|||
* @date 2023-05-11 |
|||
**/ |
|||
public class ClassStandardQuery extends BaseQuery<ClassStandard> { |
|||
|
|||
} |
@ -0,0 +1,26 @@ |
|||
package org.nl.wms.basedata.master.standard.service.dto; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Builder; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import org.nl.wms.basedata.master.standard.service.dao.ClassStandard; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: vue-tree-select所需要的实体 |
|||
* @Date: 2023/5/12 |
|||
*/ |
|||
@Data |
|||
@Builder |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class ClassStandardTrees extends ClassStandard implements Serializable { |
|||
|
|||
@TableField(exist = false) |
|||
private List<ClassStandard> children; |
|||
} |
@ -0,0 +1,274 @@ |
|||
package org.nl.wms.basedata.master.standard.service.impl; |
|||
|
|||
import cn.hutool.core.date.DateUtil; |
|||
import cn.hutool.core.util.IdUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.common.utils.SecurityUtils; |
|||
import org.nl.config.language.LangProcess; |
|||
import org.nl.modules.common.exception.BadRequestException; |
|||
import org.nl.wms.basedata.master.standard.service.IClassStandardService; |
|||
import org.nl.wms.basedata.master.standard.service.dao.ClassStandard; |
|||
import org.nl.wms.basedata.master.standard.service.dao.mapper.ClassStandardMapper; |
|||
import org.nl.wms.basedata.master.standard.service.dto.ClassStandardTrees; |
|||
import org.springframework.beans.BeanUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Date: 2024/10/15 |
|||
*/ |
|||
@Service |
|||
public class ClassStandardServiceImpl extends ServiceImpl<ClassStandardMapper, ClassStandard> implements IClassStandardService { |
|||
@Autowired |
|||
private ClassStandardMapper classStandardMapper; |
|||
|
|||
@Override |
|||
public IPage<ClassStandard> queryAll(Map whereJson, PageQuery page) { |
|||
String class_code = ObjectUtil.isNotEmpty(whereJson.get("class_code")) |
|||
? whereJson.get("class_code").toString() |
|||
: null; |
|||
LambdaQueryWrapper<ClassStandard> lam = new LambdaQueryWrapper<>(); |
|||
lam.eq(ObjectUtil.isNotEmpty(class_code), ClassStandard::getClass_code, class_code) |
|||
.eq(ClassStandard::getIs_delete, false) |
|||
.eq(ClassStandard::getParent_class_id, "0") |
|||
.or(la -> la.isNull(ClassStandard::getParent_class_id)); |
|||
IPage<ClassStandard> pages = new Page<>(page.getPage() + 1, page.getSize()); |
|||
classStandardMapper.selectPage(pages, lam); |
|||
pages.getRecords().forEach(classstandard -> { |
|||
classstandard.setIs_leaf((classstandard.getSub_count() <= 0)); |
|||
classstandard.setHasChildren(classstandard.getSub_count() > 0); |
|||
}); |
|||
return pages; |
|||
} |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void create(ClassStandard entity) { |
|||
// 判断是否存在
|
|||
ClassStandard classStandard = classStandardMapper |
|||
.selectOne(new LambdaQueryWrapper<ClassStandard>() |
|||
.eq(ClassStandard::getClass_code, entity.getClass_code()) |
|||
.eq(ClassStandard::getIs_delete, false)); |
|||
if (ObjectUtil.isNotEmpty(classStandard) && !classStandard.getClass_id().equals(entity.getClass_id())) { |
|||
throw new BadRequestException(LangProcess.msg("error_ParamExist", entity.getClass_id())); |
|||
} |
|||
|
|||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|||
String nickName = SecurityUtils.getCurrentNickName(); |
|||
String now = DateUtil.now(); |
|||
|
|||
entity.setClass_id(IdUtil.getSnowflake(1, 1).nextIdStr()); |
|||
entity.setCreate_id(currentUserId); |
|||
entity.setCreate_name(nickName); |
|||
entity.setCreate_time(now); |
|||
entity.setUpdate_id(currentUserId); |
|||
entity.setUpdate_name(nickName); |
|||
entity.setUpdate_time(now); |
|||
entity.setIs_leaf(true); |
|||
entity.setClass_level(Math.ceil(entity.getClass_code().length() / 2.0) + ""); |
|||
entity.setSub_count(0); |
|||
classStandardMapper.insert(entity); |
|||
// 更新节点
|
|||
if (ObjectUtil.isNotEmpty(entity.getParent_class_id()) && !entity.getParent_class_id().equals(IOSEnum.IS_NOTANDYES.code("否"))) { |
|||
updateSubCnt(entity.getParent_class_id()); |
|||
} |
|||
} |
|||
|
|||
private void updateSubCnt(String parentClassId) { |
|||
ClassStandard classObject = classStandardMapper.selectById(parentClassId); |
|||
if (ObjectUtil.isEmpty(classObject)) { |
|||
return; |
|||
} |
|||
List<ClassStandard> classList = classStandardMapper |
|||
.selectList(new LambdaQueryWrapper<ClassStandard>().eq(ClassStandard::getParent_class_id, parentClassId)); |
|||
int size = classList.size(); |
|||
classObject.setSub_count(size); |
|||
classObject.setIs_leaf(size > 0); |
|||
classStandardMapper.updateById(classObject); |
|||
} |
|||
|
|||
@Override |
|||
public void update(ClassStandard entity) { |
|||
String errorSystemAuthError = "error_SystemAuthError"; |
|||
ClassStandard dto = classStandardMapper.selectById(entity.getClass_id()); |
|||
if (dto == null) { |
|||
throw new BadRequestException(LangProcess.msg(errorSystemAuthError)); |
|||
} |
|||
// 判断是否存在
|
|||
ClassStandard classStandard = classStandardMapper |
|||
.selectOne(new LambdaQueryWrapper<ClassStandard>() |
|||
.eq(ClassStandard::getClass_code, entity.getClass_code()) |
|||
.eq(ClassStandard::getIs_delete, false)); |
|||
if (ObjectUtil.isNotEmpty(classStandard) && !classStandard.getClass_id().equals(entity.getClass_id())) { |
|||
throw new BadRequestException(LangProcess.msg("error_ParamExist", entity.getClass_id())); |
|||
} |
|||
// 查询原来的父id
|
|||
String oldPid = dto.getParent_class_id(); |
|||
String newPid = entity.getParent_class_id(); |
|||
if (entity.getParent_class_id() != null && entity.getClass_id().equals(entity.getParent_class_id())) { |
|||
throw new BadRequestException(LangProcess.msg("login_childError")); |
|||
} |
|||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|||
String nickName = SecurityUtils.getCurrentNickName(); |
|||
String now = DateUtil.now(); |
|||
entity.setUpdate_id(currentUserId); |
|||
entity.setUpdate_name(nickName); |
|||
entity.setUpdate_time(now); |
|||
// 更新
|
|||
classStandardMapper.updateById(entity); |
|||
//更新父节点中子节点数目
|
|||
updateSubCnt(oldPid); |
|||
updateSubCnt(newPid); |
|||
} |
|||
|
|||
@Override |
|||
public void deleteAll(List<String> ids) { |
|||
// 递归删除子类
|
|||
for (String id : ids) { |
|||
// 获取元素体
|
|||
ClassStandard classstandard = classStandardMapper.selectById(id); |
|||
classStandardMapper.deleteById(classstandard.getClass_id()); |
|||
// 找出所有当前节点的子节点
|
|||
List<ClassStandard> baseClassstandardList = classStandardMapper.selectList( |
|||
new LambdaQueryWrapper<ClassStandard>() |
|||
.eq(ClassStandard::getParent_class_id, classstandard.getClass_id())); |
|||
if (baseClassstandardList.size() > 0) { |
|||
List<String> collect = baseClassstandardList.stream() |
|||
.map(md -> md.getClass_id()) |
|||
.collect(Collectors.toList()); |
|||
deleteAll(collect); |
|||
} |
|||
updateSubCnt(classstandard.getParent_class_id()); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public List<ClassStandard> getClassName() { |
|||
return classStandardMapper.selectList(new LambdaQueryWrapper<ClassStandard>() |
|||
.isNull(ClassStandard::getParent_class_id) |
|||
.or() |
|||
.eq(ClassStandard::getParent_class_id, "0") |
|||
.eq(ClassStandard::getIs_delete, false)); |
|||
} |
|||
|
|||
@Override |
|||
public List<ClassStandard> loadClass(Map whereJson) { |
|||
String pid = ObjectUtil.isNotEmpty(whereJson.get("pid")) ? whereJson.get("pid").toString() : null; |
|||
LambdaQueryWrapper<ClassStandard> lam = new LambdaQueryWrapper<>(); |
|||
lam.eq(ObjectUtil.isNotEmpty(pid), ClassStandard::getParent_class_id, pid) |
|||
.or(ObjectUtil.isEmpty(pid), la -> la.isNull(ClassStandard::getParent_class_id) |
|||
.or() |
|||
.eq(ClassStandard::getParent_class_id, "0")) |
|||
.eq(ClassStandard::getIs_delete, false); |
|||
List<ClassStandard> classstandardList = classStandardMapper.selectList(lam); |
|||
classstandardList.forEach(classstandard -> { |
|||
classstandard.setHasChildren(classstandard.getSub_count() > 0); |
|||
classstandard.setLeaf((classstandard.getSub_count() <= 0)); |
|||
classstandard.setId(classstandard.getClass_id()); |
|||
classstandard.setLabel(classstandard.getClass_name()); |
|||
}); |
|||
return classstandardList; |
|||
} |
|||
|
|||
/** |
|||
* 递归获取树形数据,从子级到父级以及最高级 |
|||
* |
|||
* @param classstandard |
|||
* @param res |
|||
* @return |
|||
*/ |
|||
@Override |
|||
public ArrayList<ClassStandard> getSuperior(ClassStandard classstandard, ArrayList<ClassStandard> res) { |
|||
if (ObjectUtil.isEmpty(classstandard.getParent_class_id()) || classstandard.getParent_class_id().equals(IOSEnum.IS_NOTANDYES.code("否"))) { |
|||
// 父类id为空或者是0就是顶级类别
|
|||
List<ClassStandard> classstandardList = classStandardMapper |
|||
.selectList(new LambdaQueryWrapper<ClassStandard>() |
|||
.eq(ClassStandard::getIs_delete, false) |
|||
.eq(ClassStandard::getParent_class_id, "0") |
|||
.or(la -> la.isNull(ClassStandard::getParent_class_id))); |
|||
res.addAll(classstandardList); |
|||
return res; |
|||
} |
|||
// 递归寻找同级
|
|||
List<ClassStandard> classStandards = classStandardMapper.selectList( |
|||
new LambdaQueryWrapper<ClassStandard>() |
|||
.eq(ClassStandard::getIs_delete, false) |
|||
.eq(ClassStandard::getParent_class_id, classstandard.getParent_class_id())); |
|||
res.addAll(classStandards); |
|||
return getSuperior(classStandardMapper.selectById(classstandard.getParent_class_id()), res); |
|||
} |
|||
|
|||
@Override |
|||
public List<ClassStandard> buildTree(ArrayList<ClassStandard> list) { |
|||
// 初始化数据
|
|||
list.forEach(classstandard -> { |
|||
classstandard.setId(classstandard.getClass_id()); |
|||
classstandard.setLabel(classstandard.getClass_name()); |
|||
classstandard.setLeaf((classstandard.getSub_count() <= 0)); |
|||
classstandard.setHasChildren(classstandard.getSub_count() > 0); |
|||
}); |
|||
|
|||
// 创建树结构
|
|||
return list.stream() |
|||
.filter(node -> "0".equals(node.getParent_class_id()) || ObjectUtil.isEmpty(node.getParent_class_id())) |
|||
.map(node -> createTree(node, list)) |
|||
.collect(Collectors.toList()); |
|||
} |
|||
|
|||
private ClassStandard createTree(ClassStandard node, List<ClassStandard> list) { |
|||
List<ClassStandard> children = list.stream() |
|||
.filter(child -> node.getClass_id().equals(child.getParent_class_id())) |
|||
.map(child -> createTree(child, list)) |
|||
.collect(Collectors.toList()); |
|||
if (!children.isEmpty()) { |
|||
ClassStandardTrees tObj = new ClassStandardTrees(); |
|||
// 赋值一份实体,可以避免vue-tree拿到children属性显示展开图标
|
|||
BeanUtils.copyProperties(node, tObj); |
|||
tObj.setChildren(children); |
|||
return tObj; |
|||
} else { |
|||
node.setLeaf(true); |
|||
} |
|||
return node; |
|||
} |
|||
|
|||
@Override |
|||
public List<ClassStandard> queryClassByCode(Map whereJson) { |
|||
String parentClassCode = ObjectUtil.isNotEmpty(whereJson.get("parent_class_code")) |
|||
? (String) whereJson.get("parent_class_code") : null; |
|||
if (null == parentClassCode) { |
|||
throw new BadRequestException("父节点编号不能为空!"); |
|||
} |
|||
List<ClassStandard> classstandards = classStandardMapper.selectList( |
|||
new LambdaQueryWrapper<ClassStandard>().eq(ClassStandard::getClass_code, parentClassCode)); |
|||
if (classstandards.size() == 0) { |
|||
throw new BadRequestException("请输入正确的父节点编号!"); |
|||
} |
|||
// 处理数据
|
|||
classstandards.forEach(classstandard -> { |
|||
classstandard.setHasChildren(classstandard.getSub_count() > 0); |
|||
classstandard.setLeaf((classstandard.getSub_count() == 0)); |
|||
classstandard.setId(classstandard.getClass_id()); |
|||
classstandard.setLabel(classstandard.getClass_name()); |
|||
}); |
|||
return classstandards; |
|||
} |
|||
|
|||
@Override |
|||
public ArrayList<String> getAllChildrenIds(String classId) { |
|||
return classStandardMapper.getAllChildrenIds(classId); |
|||
} |
|||
} |
Loading…
Reference in new issue