From 60422a9884d8c5bda4d973824157cb58d65c6940 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 15 Oct 2024 10:48:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BD=BF=E7=94=A8mybatis-plus?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=9F=BA=E7=A1=80=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/language/InitLocaleResolver.java | 36 +++ .../org/nl/config/language/LangProcess.java | 23 ++ .../master/rest/ClassstandardController.java | 2 +- .../controller/ClassStandardController.java | 86 ++++++ .../master/standard/package-info.java | 4 + .../service/IClassStandardService.java | 84 ++++++ .../standard/service/dao/ClassStandard.java | 73 +++++ .../dao/mapper/ClassStandardMapper.java | 14 + .../dao/mapper/ClassStandardMapper.xml | 19 ++ .../service/dto/ClassStandardDto.java | 73 +++++ .../service/dto/ClassStandardQuery.java | 12 + .../service/dto/ClassStandardTrees.java | 26 ++ .../impl/ClassStandardServiceImpl.java | 274 ++++++++++++++++++ .../wms/ext/acs/rest/AcsToWmsController.java | 5 - .../mes/service/impl/MesToLmsServiceImpl.java | 1 + .../src/main/resources/logback-spring.xml | 2 +- .../basedata/master/class/classstandard.js | 24 +- .../views/wms/basedata/master/class/index.vue | 79 ++--- 18 files changed, 758 insertions(+), 79 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/config/language/InitLocaleResolver.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/config/language/LangProcess.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/controller/ClassStandardController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/package-info.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/IClassStandardService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/ClassStandard.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardQuery.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardTrees.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/impl/ClassStandardServiceImpl.java diff --git a/lms/nladmin-system/src/main/java/org/nl/config/language/InitLocaleResolver.java b/lms/nladmin-system/src/main/java/org/nl/config/language/InitLocaleResolver.java new file mode 100644 index 0000000..7dee751 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/config/language/InitLocaleResolver.java @@ -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 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) { +// } +//} diff --git a/lms/nladmin-system/src/main/java/org/nl/config/language/LangProcess.java b/lms/nladmin-system/src/main/java/org/nl/config/language/LangProcess.java new file mode 100644 index 0000000..4d5064d --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/config/language/LangProcess.java @@ -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; + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java index c0c0572..e685862 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java @@ -25,7 +25,7 @@ import java.util.Map; @RestController @RequiredArgsConstructor -@RequestMapping("/api/Classstandard") +@RequestMapping("/api/Classstandard2") @Slf4j public class ClassstandardController { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/controller/ClassStandardController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/controller/ClassStandardController.java new file mode 100644 index 0000000..b4f6f14 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/controller/ClassStandardController.java @@ -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 query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(classStandardService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增基础分类") + public ResponseEntity create(@Validated @RequestBody ClassStandard entity){ + classStandardService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改基础分类") + public ResponseEntity update(@Validated @RequestBody ClassStandard entity){ + classStandardService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除基础分类") + @DeleteMapping + public ResponseEntity delete(@RequestBody List ids) { + classStandardService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getClass") + @Log("获取Code获取树下拉框") + //@PreAuthorize("@el.check('materialtype:list')") + public ResponseEntity queryClassByCode(@RequestParam Map whereJson) { + return new ResponseEntity<>(classStandardService.queryClassByCode(whereJson), HttpStatus.OK); + } + + @GetMapping("/getClassName") + @Log("获取分类名称下拉框") + public ResponseEntity getClassName() { + return new ResponseEntity<>(classStandardService.getClassName(), HttpStatus.OK); + } + + @GetMapping("/loadClass") + @Log("查询基础类型") + public ResponseEntity query(@RequestParam Map whereJson) { + return new ResponseEntity<>(classStandardService.loadClass(whereJson), HttpStatus.OK); + } + + + @PostMapping("/superior") + public ResponseEntity getSuperior(@RequestBody String id) { + ClassStandard classstandard = classStandardService.getById(id); + ArrayList list = classStandardService.getSuperior(classstandard, new ArrayList<>()); + return new ResponseEntity<>(classStandardService.buildTree(list), HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/package-info.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/package-info.java new file mode 100644 index 0000000..064c8ef --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/package-info.java @@ -0,0 +1,4 @@ +/** + * 基础分类相关 + */ +package org.nl.wms.basedata.master.standard; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/IClassStandardService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/IClassStandardService.java new file mode 100644 index 0000000..4c23fd8 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/IClassStandardService.java @@ -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 { + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(ClassStandard entity); + + /** + * 编辑 + * @param entity / + */ + void update(ClassStandard 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(ClassStandard classstandard, ArrayList objects); + + /** + * 构建树形 + * @param list + * @return + */ + List buildTree(ArrayList list); + + /** + * 根据编码获取对应的父级数据 + * @param whereJson + * @return + */ + List queryClassByCode(Map whereJson); + + /** + * 获取所有的子节点id + * @param classId 父节点id + * @return 子节点id数组 + */ + ArrayList getAllChildrenIds(String classId); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/ClassStandard.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/ClassStandard.java new file mode 100644 index 0000000..49807de --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/ClassStandard.java @@ -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; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.java new file mode 100644 index 0000000..d9cd834 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.java @@ -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 { + ArrayList getAllChildrenIds(String classId); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.xml b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.xml new file mode 100644 index 0000000..9a5fcb8 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dao/mapper/ClassStandardMapper.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardDto.java new file mode 100644 index 0000000..2ea990b --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardDto.java @@ -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; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardQuery.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardQuery.java new file mode 100644 index 0000000..8b88201 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardQuery.java @@ -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 { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardTrees.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardTrees.java new file mode 100644 index 0000000..ace001a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/dto/ClassStandardTrees.java @@ -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 children; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/impl/ClassStandardServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/impl/ClassStandardServiceImpl.java new file mode 100644 index 0000000..bcdaf37 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/standard/service/impl/ClassStandardServiceImpl.java @@ -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 implements IClassStandardService { + @Autowired + private ClassStandardMapper classStandardMapper; + + @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), 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 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() + .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 classList = classStandardMapper + .selectList(new LambdaQueryWrapper().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() + .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 ids) { + // 递归删除子类 + for (String id : ids) { + // 获取元素体 + ClassStandard classstandard = classStandardMapper.selectById(id); + classStandardMapper.deleteById(classstandard.getClass_id()); + // 找出所有当前节点的子节点 + List baseClassstandardList = classStandardMapper.selectList( + new LambdaQueryWrapper() + .eq(ClassStandard::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 classStandardMapper.selectList(new LambdaQueryWrapper() + .isNull(ClassStandard::getParent_class_id) + .or() + .eq(ClassStandard::getParent_class_id, "0") + .eq(ClassStandard::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), 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 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 getSuperior(ClassStandard classstandard, ArrayList res) { + if (ObjectUtil.isEmpty(classstandard.getParent_class_id()) || classstandard.getParent_class_id().equals(IOSEnum.IS_NOTANDYES.code("否"))) { + // 父类id为空或者是0就是顶级类别 + List classstandardList = classStandardMapper + .selectList(new LambdaQueryWrapper() + .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 classStandards = classStandardMapper.selectList( + new LambdaQueryWrapper() + .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 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); + }); + + // 创建树结构 + 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 list) { + List 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 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 classstandards = classStandardMapper.selectList( + new LambdaQueryWrapper().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 getAllChildrenIds(String classId) { + return classStandardMapper.getAllChildrenIds(classId); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 4c1d967..8632a4d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -35,11 +35,6 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK); } - - - - - @PostMapping("/orderFinish") @Log(value = "ACS给WMS下发工单完成状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index 4d101eb..10ad9c1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -992,6 +992,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { } else if (container_name.startsWith("B")) { //调用方法创建一个新的气胀轴编号,赋值 String resourceName = cut_jo.getString("ext_code"); + // 二期的虚拟气胀轴编码需要唯一 String qzzNO = resourceName.substring(0, 2) + resourceName.substring(resourceName.length() - 2) + plan_jo.getString("split_group") diff --git a/lms/nladmin-system/src/main/resources/logback-spring.xml b/lms/nladmin-system/src/main/resources/logback-spring.xml index e2aabd1..2382fa5 100644 --- a/lms/nladmin-system/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/src/main/resources/logback-spring.xml @@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999 nlAdmin + value="%black(%contextName-) %X{traceId} %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %cyan(%msg%n)"/> diff --git a/lms/nladmin-ui/src/views/wms/basedata/master/class/classstandard.js b/lms/nladmin-ui/src/views/wms/basedata/master/class/classstandard.js index ee30283..0c216de 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/master/class/classstandard.js +++ b/lms/nladmin-ui/src/views/wms/basedata/master/class/classstandard.js @@ -48,7 +48,6 @@ export function getClassType(params) { params }) } - export function queryClassById(params) { return request({ url: 'api/Classstandard/queryClassById', @@ -56,7 +55,6 @@ export function queryClassById(params) { params }) } - // 传入分类标识和级别 export function getType(params) { return request({ @@ -81,24 +79,4 @@ export function getClassName() { }) } -export function getCasClass(data) { - return request({ - url: 'api/Classstandard/getCasClass', - method: 'post', - data - }) -} - -export default { - add, - edit, - del, - getClass, - getClassSuperior, - getClassType, - getClassTable, - getType, - queryClassById, - getClassName, - getCasClass -} +export default { add, edit, del, getClass, getClassSuperior, getClassType, getClassTable, getType, queryClassById, getClassName } diff --git a/lms/nladmin-ui/src/views/wms/basedata/master/class/index.vue b/lms/nladmin-ui/src/views/wms/basedata/master/class/index.vue index 9fbfab2..6b0517c 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/master/class/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/master/class/index.vue @@ -92,7 +92,7 @@ :load="getClassDatas" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" :data="crud.data" - row-key="id" + row-key="class_id" @select="crud.selectChange" @select-all="crud.selectAllChange" @selection-change="crud.selectionChangeHandler" @@ -100,7 +100,7 @@ - + { crudClassstandard.getClass(params).then(res => { - resolve(res.content) + resolve(res) }) }, 100) }, @@ -241,32 +241,16 @@ export default { [CRUD.HOOK.beforeRefresh]() { return true }, - modifyFormat(row, index) { - if (row.is_modify === '1') { - return '是' - } else { - return '否' - } - }, - dataTypeChange(data) { - crudClassstandard.getClass({ base_data_type: data }).then(res => { - this.classes = res.content.map(function(obj) { - if (obj.hasChildren) { - obj.children = null - } - return obj - }) - }) - }, // 新增与编辑前做的操作 [CRUD.HOOK.afterToCU](crud, form) { if (form.parent_class_id !== '0' && form.parent_class_id !== null) { form.isTop = '0' - } else if (form.class_id !== '0' && form.class_id !== null) { + } else if (form.id !== '0' && form.id !== null) { form.isTop = '1' } - form.enabled = `${form.enabled}` - if (form.class_id != null) { + // form.enabled = `${form.enabled}` + // 为了初始化数据 -> 树的数据 + if (form.id !== null && form.id !== '0' && form.id !== '') { this.getSubTypes(form.id) } else { this.getClass() @@ -286,16 +270,16 @@ export default { } return true }, - getSubTypes(id) { + getSubTypes(id) { // 获取当前对象与所有父类数据 crudClassstandard.getClassSuperior(id).then(res => { - const date = res.content + const date = res this.buildClass(date) this.classes = date }) }, - getClass() { + getClass() { // 点击新增的时候触发 crudClassstandard.getClass({ enabled: true }).then(res => { - this.classes = res.content.map(function(obj) { + this.classes = res.map(function(obj) { // 为了设置子级属性,才会显示展开图标 if (obj.hasChildren) { obj.children = null } @@ -313,11 +297,11 @@ export default { } }) }, - // 获取弹窗内部门数据 - loadClass({ action, parentNode, callback }) { + // 获取弹窗内数据 + loadClass({ action, parentNode, callback }) { // 展开显示子级数据,只需要吧父类底下的子级返回去 if (action === LOAD_CHILDREN_OPTIONS) { crudClassstandard.getClass({ pid: parentNode.id }).then(res => { - parentNode.children = res.content.map(function(obj) { + parentNode.children = res.map(function(obj) { if (obj.hasChildren) { obj.children = null } @@ -336,22 +320,21 @@ export default { base_data_type: null, path_code: null, class_code: null, - long_class_code: null, class_name: null, class_desc: null, parent_class_id: null, - is_leaf: null, + is_leaf: true, sub_count: null, - is_modify: null, - is_delete: null, + is_modify: true, + is_delete: false, class_level: null, ext_id: null, ext_parent_id: null, create_id: null, create_name: null, create_time: null, - update_optid: null, - update_optname: null, + update_id: null, + update_name: null, update_time: null, isTop: null } @@ -359,16 +342,15 @@ export default { addSibling(row) { this.clearFrom() // 将默认的表单数据清除 defaultForm.id = row.id // 获取分类树的id - 懒加载依赖此id,不可为空 - defaultForm.class_id = row.class_id - defaultForm.parent_class_id = row.parent_class_id // 同级为父类class_id + defaultForm.class_id = row.class_id // 获取分类树的id + defaultForm.parent_class_id = row.parent_class_id ? row.parent_class_id : null // 同级为父类class_id defaultForm.isTop = row.isTop return defaultForm }, addChildren(row) { this.clearFrom() - defaultForm.id = row.id // 获取分类树的id - defaultForm.class_id = row.parent_class_id - defaultForm.parent_class_id = row.id // 子级为本身的class_id + defaultForm.id = row.class_id // 获取分类树的id + defaultForm.parent_class_id = row.class_id // 子级为本身的class_id defaultForm.isTop = row.isTop return defaultForm }, @@ -386,7 +368,6 @@ export default { } const dafult = this.$el.getElementsByClassName('dafult') for (let a = 0; a < dafult.length; a++) { - debugger dafult[a].click() } }