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