diff --git a/nladmin-system/doc/wms.xls b/nladmin-system/doc/wms.xls index 0b05f22..d483754 100644 Binary files a/nladmin-system/doc/wms.xls and b/nladmin-system/doc/wms.xls differ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java new file mode 100644 index 0000000..9b8acf9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/controller/MdBaseClassstandardController.java @@ -0,0 +1,93 @@ +package org.nl.wms.database.classification.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.database.classification.service.IMdBaseClassstandardService; +import org.nl.wms.database.classification.service.dao.MdBaseClassstandard; +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 2023-05-11 +**/ +@Slf4j +@RestController +@Api(tags = "基础分类管理") +@RequestMapping("/api/Classstandard") +public class MdBaseClassstandardController { + + @Autowired + private IMdBaseClassstandardService mdBaseClassstandardService; + + @GetMapping + @Log("查询基础分类") + @ApiOperation("查询基础分类") + //@SaCheckPermission("@el.check('mdBaseClassstandard:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(mdBaseClassstandardService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增基础分类") + @ApiOperation("新增基础分类") + //@SaCheckPermission("@el.check('mdBaseClassstandard:add')") + public ResponseEntity create(@Validated @RequestBody MdBaseClassstandard entity){ + mdBaseClassstandardService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改基础分类") + @ApiOperation("修改基础分类") + //@SaCheckPermission("@el.check('mdBaseClassstandard:edit')") + public ResponseEntity update(@Validated @RequestBody MdBaseClassstandard entity){ + mdBaseClassstandardService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除基础分类") + @ApiOperation("删除基础分类") + //@SaCheckPermission("@el.check('mdBaseClassstandard:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody List ids) { + mdBaseClassstandardService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getClassName") + @Log("获取分类名称下拉框") + @ApiOperation("获取分类名称下拉框") + public ResponseEntity getClassName() { + return new ResponseEntity<>(mdBaseClassstandardService.getClassName(), HttpStatus.OK); + } + + @GetMapping("/loadClass") + @Log("查询基础类型") + @ApiOperation("查询基础类型") + //@PreAuthorize("@el.check('materialtype:list')") + public ResponseEntity query(@RequestParam Map whereJson) { + return new ResponseEntity<>(mdBaseClassstandardService.loadClass(whereJson), HttpStatus.OK); + } + + @ApiOperation("查询类别:根据ID获取同级与上级数据") + @PostMapping("/superior") + //@PreAuthorize("@el.check('user:list','dept:list')") + public ResponseEntity getSuperior(@RequestBody String id) { + MdBaseClassstandard classstandard = mdBaseClassstandardService.getById(id); + ArrayList list = mdBaseClassstandardService.getSuperior(classstandard, new ArrayList<>()); + return new ResponseEntity<>(mdBaseClassstandardService.buildTree(list), HttpStatus.OK); + } +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java new file mode 100644 index 0000000..7081151 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/IMdBaseClassstandardService.java @@ -0,0 +1,72 @@ +package org.nl.wms.database.classification.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.database.classification.service.dao.MdBaseClassstandard; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** +* @description 服务接口 +* @author lyd +* @date 2023-05-11 +**/ +public interface IMdBaseClassstandardService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(MdBaseClassstandard entity); + + /** + * 编辑 + * @param entity / + */ + void update(MdBaseClassstandard entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(List ids); + + /** + * 获取下拉框 + * @return + */ + List getClassName(); + + /** + * loadClass + * @param whereJson + * @return + */ + List loadClass(Map whereJson); + + /** + * + * @param classstandard + * @param objects + * @return + */ + ArrayList getSuperior(MdBaseClassstandard classstandard, ArrayList objects); + + /** + * 构建树形 + * @param list + * @return + */ + List buildTree(ArrayList list); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/MdBaseClassstandard.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/MdBaseClassstandard.java new file mode 100644 index 0000000..e244b8f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/MdBaseClassstandard.java @@ -0,0 +1,98 @@ +package org.nl.wms.database.classification.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 io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** +* @description / +* @author lyd +* @date 2023-05-11 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_base_classstandard") +public class MdBaseClassstandard implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "class_id", type = IdType.NONE) + @ApiModelProperty(value = "分类标识") + private String class_id; + + @ApiModelProperty(value = "分类编码") + private String class_code; + + @ApiModelProperty(value = "分类名称") + private String class_name; + + @ApiModelProperty(value = "分类简要描述") + private String class_desc; + + @ApiModelProperty(value = "上级分类标识") + private String parent_class_id; + + @ApiModelProperty(value = "子级数目") + private Integer sub_count; + + @ApiModelProperty(value = "是否叶子") + private Boolean is_leaf; + + @ApiModelProperty(value = "是否可修改") + private Boolean is_modify; + + @ApiModelProperty(value = "是否删除") + private Boolean is_delete; + + @ApiModelProperty(value = "级别") + private String class_level; + + @ApiModelProperty(value = "外部标识") + private String ext_id; + + @ApiModelProperty(value = "外部上级标识") + private String ext_parent_id; + + @ApiModelProperty(value = "车间编码") + private String workshop_code; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "创建人") + private String create_id; + + @ApiModelProperty(value = "创建人") + private String create_name; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改人") + private String update_id; + + @ApiModelProperty(value = "修改人") + private String update_name; + + @ApiModelProperty(value = "修改时间") + 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; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/mapper/MdBaseClassstandardMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/mapper/MdBaseClassstandardMapper.java new file mode 100644 index 0000000..656069b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/mapper/MdBaseClassstandardMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.database.classification.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.database.classification.service.dao.MdBaseClassstandard; + +/** +* @author lyd +* @date 2023-05-11 +**/ +public interface MdBaseClassstandardMapper extends BaseMapper { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/mapper/MdBaseClassstandardMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/mapper/MdBaseClassstandardMapper.xml new file mode 100644 index 0000000..fc841cc --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dao/mapper/MdBaseClassstandardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardDto.java new file mode 100644 index 0000000..09830e6 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardDto.java @@ -0,0 +1,73 @@ +package org.nl.wms.database.classification.service.dto; + +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-05-11 +**/ +@Data +public class MdBaseClassstandardDto 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; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardQuery.java new file mode 100644 index 0000000..bbf449a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.database.classification.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.database.classification.service.dao.MdBaseClassstandard; + +/** +* @author lyd +* @date 2023-05-11 +**/ +public class MdBaseClassstandardQuery extends BaseQuery { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardTrees.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardTrees.java new file mode 100644 index 0000000..c5f76cc --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/dto/MdBaseClassstandardTrees.java @@ -0,0 +1,26 @@ +package org.nl.wms.database.classification.service.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.nl.wms.database.classification.service.dao.MdBaseClassstandard; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/5/12 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class MdBaseClassstandardTrees extends MdBaseClassstandard implements Serializable { + + @TableField(exist = false) + private List children; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java new file mode 100644 index 0000000..d3c5b65 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/classification/service/impl/MdBaseClassstandardServiceImpl.java @@ -0,0 +1,246 @@ +package org.nl.wms.database.classification.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 lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.database.classification.service.IMdBaseClassstandardService; +import org.nl.wms.database.classification.service.dao.MdBaseClassstandard; +import org.nl.wms.database.classification.service.dao.mapper.MdBaseClassstandardMapper; +import org.nl.wms.database.classification.service.dto.MdBaseClassstandardTrees; +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.function.Consumer; +import java.util.stream.Collectors; + +/** + * @author lyd + * @description 服务实现 + * @date 2023-05-11 + **/ +@Slf4j +@Service +public class MdBaseClassstandardServiceImpl extends ServiceImpl implements IMdBaseClassstandardService { + + @Autowired + private MdBaseClassstandardMapper mdBaseClassstandardMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + String class_code = ObjectUtil.isNotEmpty(whereJson.get("class_code")) ? whereJson.get("class_code").toString() : null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(ObjectUtil.isNotEmpty(class_code), MdBaseClassstandard::getClass_code, class_code) + .eq(MdBaseClassstandard::getIs_delete, false) + .eq(MdBaseClassstandard::getParent_class_id, "0") + .or(la -> la.isNull(MdBaseClassstandard::getParent_class_id)); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + mdBaseClassstandardMapper.selectPage(pages, lam); + pages.getRecords().forEach(classstandard -> { + classstandard.setIs_leaf(!(classstandard.getSub_count() > 0)); + classstandard.setHasChildren(classstandard.getSub_count() > 0); + }); + return pages; + } + + @Override + @Transactional + public void create(MdBaseClassstandard entity) { + // 判断是否存在 + MdBaseClassstandard mdBaseClassstandard = mdBaseClassstandardMapper + .selectOne(new LambdaQueryWrapper() + .eq(MdBaseClassstandard::getClass_code, entity.getClass_code()) + .eq(MdBaseClassstandard::getIs_delete, false)); + if (ObjectUtil.isNotEmpty(mdBaseClassstandard) && !mdBaseClassstandard.getClass_id().equals(entity.getClass_id())) { + throw new BadRequestException("存在相同的基础类别编号"); + } + + 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); + mdBaseClassstandardMapper.insert(entity); + // 更新节点 + if (ObjectUtil.isNotEmpty(entity.getParent_class_id()) && !entity.getParent_class_id().equals("0")) { + updateSubCnt(entity.getParent_class_id()); + } + } + + private void updateSubCnt(String parentClassId) { + MdBaseClassstandard classObject = mdBaseClassstandardMapper.selectById(parentClassId); + if (ObjectUtil.isEmpty(classObject)) return; + List classList = mdBaseClassstandardMapper + .selectList(new LambdaQueryWrapper().eq(MdBaseClassstandard::getParent_class_id, parentClassId)); + int size = classList.size(); + classObject.setSub_count(size); + classObject.setIs_leaf(size > 0); + mdBaseClassstandardMapper.updateById(classObject); + } + + @Override + public void update(MdBaseClassstandard entity) { + MdBaseClassstandard dto = mdBaseClassstandardMapper.selectById(entity.getClass_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + // 判断是否存在 + MdBaseClassstandard mdBaseClassstandard = mdBaseClassstandardMapper + .selectOne(new LambdaQueryWrapper() + .eq(MdBaseClassstandard::getClass_code, entity.getClass_code()) + .eq(MdBaseClassstandard::getIs_delete, false)); + if (ObjectUtil.isNotEmpty(mdBaseClassstandard) && !mdBaseClassstandard.getClass_id().equals(entity.getClass_id())) { + throw new BadRequestException("存在相同的基础类别编号"); + } + // 查询原来的父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("上级不能为自己"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + // 更新 + mdBaseClassstandardMapper.updateById(entity); + //更新父节点中子节点数目 + updateSubCnt(oldPid); + updateSubCnt(newPid); + } + + @Override + public void deleteAll(List ids) { + // 递归删除子类 + for (String id : ids) { + // 获取元素体 + MdBaseClassstandard classstandard = mdBaseClassstandardMapper.selectById(id); + mdBaseClassstandardMapper.deleteById(classstandard.getClass_id()); + // 找出所有当前节点的子节点 + List baseClassstandardList = mdBaseClassstandardMapper.selectList( + new LambdaQueryWrapper() + .eq(MdBaseClassstandard::getParent_class_id, classstandard.getClass_id())); + if (baseClassstandardList.size() > 0) { + List collect = baseClassstandardList.stream() + .map(md -> md.getClass_id()) + .collect(Collectors.toList()); + deleteAll(collect); + } + updateSubCnt(classstandard.getParent_class_id()); + } + } + + @Override + public List getClassName() { + return mdBaseClassstandardMapper.selectList(new LambdaQueryWrapper() + .isNull(MdBaseClassstandard::getParent_class_id) + .or() + .eq(MdBaseClassstandard::getParent_class_id, "0") + .eq(MdBaseClassstandard::getIs_delete, false)); + } + + @Override + public List loadClass(Map whereJson) { + String pid = ObjectUtil.isNotEmpty(whereJson.get("pid")) ? whereJson.get("pid").toString() : null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(ObjectUtil.isNotEmpty(pid), MdBaseClassstandard::getParent_class_id, pid) + .or(ObjectUtil.isEmpty(pid), la -> la.isNull(MdBaseClassstandard::getParent_class_id) + .or() + .eq(MdBaseClassstandard::getParent_class_id, "0")) + .eq(MdBaseClassstandard::getIs_delete, false); + List classstandardList = mdBaseClassstandardMapper.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 getSuperior(MdBaseClassstandard classstandard, ArrayList res) { + if (ObjectUtil.isEmpty(classstandard.getParent_class_id()) || classstandard.getParent_class_id().equals("0")) { + // 父类id为空或者是0就是顶级类别 + List classstandardList = mdBaseClassstandardMapper.selectList(new LambdaQueryWrapper() + .eq(MdBaseClassstandard::getIs_delete, false) + .eq(MdBaseClassstandard::getParent_class_id, "0") + .or(la -> la.isNull(MdBaseClassstandard::getParent_class_id))); + res.addAll(classstandardList); + return res; + } + // 递归寻找同级 + List mdBaseClassstandards = mdBaseClassstandardMapper.selectList( + new LambdaQueryWrapper() + .eq(MdBaseClassstandard::getIs_delete, false) + .eq(MdBaseClassstandard::getParent_class_id, classstandard.getParent_class_id())); + res.addAll(mdBaseClassstandards); + return getSuperior(mdBaseClassstandardMapper.selectById(classstandard.getParent_class_id()), res); + } + + @Override + public List buildTree(ArrayList 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); + }); + List trees = new ArrayList<>(); // 待返回数据 + for (MdBaseClassstandard mdBaseClassstandard : list) { + // 筛选父类的值 + if (ObjectUtil.isEmpty(mdBaseClassstandard.getParent_class_id()) + || mdBaseClassstandard.getParent_class_id().equals("0")) { + // collect:获取当前对象的所有子级 + List collect = list.stream().filter(t -> t.getParent_class_id() + .equals(mdBaseClassstandard.getClass_id())).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(collect)) { + // 设置参数 + collect.forEach(classstandard -> { + classstandard.setId(classstandard.getClass_id()); + classstandard.setLabel(classstandard.getClass_name()); + classstandard.setHasChildren(classstandard.getSub_count() > 0); + }); + MdBaseClassstandardTrees tObj = new MdBaseClassstandardTrees(); + // 赋值一份实体,可以避免vue-tree拿到children属性显示展开图标 + BeanUtils.copyProperties(mdBaseClassstandard, tObj); + tObj.setChildren(collect); + trees.add(tObj); + } else { + trees.add(mdBaseClassstandard); + } + } + } + return trees; + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java index d73b8f4..995086e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/impl/MdBaseMaterialServiceImpl.java @@ -2,6 +2,7 @@ package org.nl.wms.database.material.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; @@ -18,6 +19,7 @@ import org.springframework.stereotype.Service; import java.util.Map; import java.util.Set; +import java.util.function.Consumer; /** @@ -34,7 +36,12 @@ public class MdBaseMaterialServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page){ + String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry")) ? whereJson.get("blurry").toString() : null; + String workshop_code = ObjectUtil.isNotEmpty(whereJson.get("workshop_code")) ? whereJson.get("workshop_code").toString() : null; LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.like(ObjectUtil.isNotEmpty(blurry), MdBaseMaterial::getMaterial_code, blurry) + .or(ObjectUtil.isNotEmpty(blurry), l -> l.like(ObjectUtil.isNotEmpty(blurry), MdBaseMaterial::getMaterial_name, blurry)) + .eq(ObjectUtil.isNotEmpty(workshop_code), MdBaseMaterial::getWorkshop_code, workshop_code); IPage pages = new Page<>(page.getPage() + 1, page.getSize()); mdBaseMaterialMapper.selectPage(pages, lam); return pages; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/controller/MdBaseVehicleController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/controller/MdBaseVehicleController.java new file mode 100644 index 0000000..64271da --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/controller/MdBaseVehicleController.java @@ -0,0 +1,66 @@ +package org.nl.wms.database.vehicle.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.database.vehicle.service.IMdBaseVehicleService; +import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle; +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.Map; +import java.util.Set; +/** +* @author lyd +* @date 2023-05-11 +**/ +@Slf4j +@RestController +@Api(tags = "载具维护管理") +@RequestMapping("/api/mdBaseVehicle") +public class MdBaseVehicleController { + + @Autowired + private IMdBaseVehicleService mdBaseVehicleService; + + @GetMapping + @Log("查询载具维护") + @ApiOperation("查询载具维护") + //@SaCheckPermission("@el.check('mdBaseVehicle:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(mdBaseVehicleService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增载具维护") + @ApiOperation("新增载具维护") + //@SaCheckPermission("@el.check('mdBaseVehicle:add')") + public ResponseEntity create(@Validated @RequestBody MdBaseVehicle entity){ + mdBaseVehicleService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改载具维护") + @ApiOperation("修改载具维护") + //@SaCheckPermission("@el.check('mdBaseVehicle:edit')") + public ResponseEntity update(@Validated @RequestBody MdBaseVehicle entity){ + mdBaseVehicleService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除载具维护") + @ApiOperation("删除载具维护") + //@SaCheckPermission("@el.check('mdBaseVehicle:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + mdBaseVehicleService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/IMdBaseVehicleService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/IMdBaseVehicleService.java new file mode 100644 index 0000000..1444e28 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/IMdBaseVehicleService.java @@ -0,0 +1,43 @@ +package org.nl.wms.database.vehicle.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author lyd +* @date 2023-05-11 +**/ +public interface IMdBaseVehicleService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(MdBaseVehicle entity); + + /** + * 编辑 + * @param entity / + */ + void update(MdBaseVehicle entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/MdBaseVehicle.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/MdBaseVehicle.java new file mode 100644 index 0000000..65ef1b8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/MdBaseVehicle.java @@ -0,0 +1,80 @@ +package org.nl.wms.database.vehicle.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-05-11 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_base_vehicle") +public class MdBaseVehicle implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "vehicle_code", type = IdType.NONE) + @ApiModelProperty(value = "载具编码") + private String vehicle_code; + + @ApiModelProperty(value = "载具名称") + private String vehicle_name; + + @ApiModelProperty(value = "载具类型") + private String vehicle_type; + + @ApiModelProperty(value = "一维码") + private String one_code; + + @ApiModelProperty(value = "二维码") + private String two_code; + + @ApiModelProperty(value = "RFID编码") + private String rfid_code; + + @ApiModelProperty(value = "载具宽度") + private BigDecimal vehicle_width; + + @ApiModelProperty(value = "载具长度") + private BigDecimal vehicle_long; + + @ApiModelProperty(value = "载具高度") + private BigDecimal vehicle_height; + + @ApiModelProperty(value = "载具超仓位类型") + private String overstruct_type; + + @ApiModelProperty(value = "占仓位数") + private BigDecimal occupystruct_qty; + + @ApiModelProperty(value = "外部标识") + private String ext_id; + + @ApiModelProperty(value = "创建人") + private String create_id; + + @ApiModelProperty(value = "创建人") + private String create_name; + + @ApiModelProperty(value = "创建时间") + private String create_time; + + @ApiModelProperty(value = "修改人") + private String update_id; + + @ApiModelProperty(value = "修改人") + private String update_name; + + @ApiModelProperty(value = "修改时间") + private String update_time; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/mapper/MdBaseVehicleMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/mapper/MdBaseVehicleMapper.java new file mode 100644 index 0000000..9dc21e3 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/mapper/MdBaseVehicleMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.database.vehicle.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle; + +/** +* @author lyd +* @date 2023-05-11 +**/ +public interface MdBaseVehicleMapper extends BaseMapper { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/mapper/MdBaseVehicleMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/mapper/MdBaseVehicleMapper.xml new file mode 100644 index 0000000..e51e86f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dao/mapper/MdBaseVehicleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dto/MdBaseVehicleDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dto/MdBaseVehicleDto.java new file mode 100644 index 0000000..737739f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dto/MdBaseVehicleDto.java @@ -0,0 +1,68 @@ +package org.nl.wms.database.vehicle.service.dto; + +import java.math.BigDecimal; +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-05-11 +**/ +@Data +public class MdBaseVehicleDto implements Serializable { + + /** 载具编码 */ + private String vehicle_code; + + /** 载具名称 */ + private String vehicle_name; + + /** 载具类型 */ + private String vehicle_type; + + /** 一维码 */ + private String one_code; + + /** 二维码 */ + private String two_code; + + /** RFID编码 */ + private String rfid_code; + + /** 载具宽度 */ + private BigDecimal vehicle_width; + + /** 载具长度 */ + private BigDecimal vehicle_long; + + /** 载具高度 */ + private BigDecimal vehicle_height; + + /** 载具超仓位类型 */ + private String overstruct_type; + + /** 占仓位数 */ + private BigDecimal occupystruct_qty; + + /** 外部标识 */ + private String ext_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; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dto/MdBaseVehicleQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dto/MdBaseVehicleQuery.java new file mode 100644 index 0000000..7048638 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/dto/MdBaseVehicleQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.database.vehicle.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle; + +/** +* @author lyd +* @date 2023-05-11 +**/ +public class MdBaseVehicleQuery extends BaseQuery { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java new file mode 100644 index 0000000..faea58f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/vehicle/service/impl/MdBaseVehicleServiceImpl.java @@ -0,0 +1,85 @@ +package org.nl.wms.database.vehicle.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 lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.database.vehicle.service.IMdBaseVehicleService; +import org.nl.wms.database.vehicle.service.dao.mapper.MdBaseVehicleMapper; +import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author lyd +* @date 2023-05-11 +**/ +@Slf4j +@Service +public class MdBaseVehicleServiceImpl extends ServiceImpl implements IMdBaseVehicleService { + + @Autowired + private MdBaseVehicleMapper mdBaseVehicleMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + String vehicle_type = ObjectUtil.isNotEmpty(whereJson.get("vehicle_type")) ? whereJson.get("vehicle_type").toString() : null; + String vehicle_code = ObjectUtil.isNotEmpty(whereJson.get("vehicle_code")) ? whereJson.get("vehicle_code").toString() : null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(ObjectUtil.isNotEmpty(vehicle_type), MdBaseVehicle::getVehicle_type, vehicle_type) + .like(ObjectUtil.isNotEmpty(vehicle_code), MdBaseVehicle::getVehicle_code, vehicle_code); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + mdBaseVehicleMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(MdBaseVehicle entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setVehicle_code(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); + mdBaseVehicleMapper.insert(entity); + } + + @Override + public void update(MdBaseVehicle entity) { + MdBaseVehicle dto = mdBaseVehicleMapper.selectById(entity.getVehicle_code()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_id(currentUserId); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + + mdBaseVehicleMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + mdBaseVehicleMapper.deleteBatchIds(ids); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/controller/MdBaseWorkshopController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/controller/MdBaseWorkshopController.java index 30ce61c..1c63c37 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/controller/MdBaseWorkshopController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/controller/MdBaseWorkshopController.java @@ -63,4 +63,12 @@ public class MdBaseWorkshopController { mdBaseWorkshopService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/getWorkShopList") + @Log("获取车间下拉框") + @ApiOperation("获取车间下拉框") + //@SaCheckPermission("@el.check('mdBaseWorkshop:list')") + public ResponseEntity getWorkShopList(){ + return new ResponseEntity<>(mdBaseWorkshopService.getWorkShopList(),HttpStatus.OK); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/IMdBaseWorkshopService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/IMdBaseWorkshopService.java index 8753459..be158c6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/IMdBaseWorkshopService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/IMdBaseWorkshopService.java @@ -5,6 +5,7 @@ import org.nl.common.domain.query.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.database.workshop.service.dao.MdBaseWorkshop; +import java.util.List; import java.util.Map; import java.util.Set; @@ -40,4 +41,10 @@ public interface IMdBaseWorkshopService extends IService { * @param ids / */ void deleteAll(Set ids); + + /** + * 获取车间下拉框 + * @return + */ + List getWorkShopList(); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/impl/MdBaseWorkshopServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/impl/MdBaseWorkshopServiceImpl.java index 4b3f758..aae4573 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/impl/MdBaseWorkshopServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/workshop/service/impl/MdBaseWorkshopServiceImpl.java @@ -14,6 +14,7 @@ import org.nl.wms.database.workshop.service.dao.MdBaseWorkshop; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; import java.util.Set; @@ -71,4 +72,11 @@ public class MdBaseWorkshopServiceImpl extends ServiceImpl getWorkShopList() { + return mdBaseWorkshopMapper.selectList(new LambdaQueryWrapper() + .eq(MdBaseWorkshop::getIs_used, true) + .eq(MdBaseWorkshop::getIs_delete, false)); + } + } diff --git a/nladmin-ui/src/views/wms/basedata/classification/index.vue b/nladmin-ui/src/views/wms/basedata/classification/index.vue new file mode 100644 index 0000000..6c7014f --- /dev/null +++ b/nladmin-ui/src/views/wms/basedata/classification/index.vue @@ -0,0 +1,390 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/basedata/classification/mdBaseClassstandard.js b/nladmin-ui/src/views/wms/basedata/classification/mdBaseClassstandard.js new file mode 100644 index 0000000..0c216de --- /dev/null +++ b/nladmin-ui/src/views/wms/basedata/classification/mdBaseClassstandard.js @@ -0,0 +1,82 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/Classstandard', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/Classstandard/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/Classstandard', + method: 'put', + data + }) +} + +export function getClass(params) { + return request({ + url: 'api/Classstandard/loadClass', + method: 'get', + params + }) +} + +export function getClassSuperior(ids) { + const data = ids.length || ids.length === 0 ? ids : Array.of(ids) + return request({ + url: 'api/Classstandard/superior', + method: 'post', + data + }) +} + +export function getClassType(params) { + return request({ + url: 'api/Classstandard/getClass', + method: 'get', + params + }) +} +export function queryClassById(params) { + return request({ + url: 'api/Classstandard/queryClassById', + method: 'get', + params + }) +} +// 传入分类标识和级别 +export function getType(params) { + return request({ + url: 'api/Classstandard/getType', + method: 'get', + params + }) +} + +export function getClassTable(params) { + return request({ + url: 'api/Classstandard/getClassTable', + method: 'get', + params + }) +} + +export function getClassName() { + return request({ + url: 'api/Classstandard/getClassName', + method: 'get' + }) +} + +export default { add, edit, del, getClass, getClassSuperior, getClassType, getClassTable, getType, queryClassById, getClassName } diff --git a/nladmin-ui/src/views/wms/basedata/material/index.vue b/nladmin-ui/src/views/wms/basedata/material/index.vue index c726090..0f93777 100644 --- a/nladmin-ui/src/views/wms/basedata/material/index.vue +++ b/nladmin-ui/src/views/wms/basedata/material/index.vue @@ -2,6 +2,41 @@
+
+ + + + + + + + + + + +
@@ -37,27 +72,27 @@ - - - - - - - + + + + + + + - - - - + + + +