> getSimpleAreas(@RequestBody DeviceComponentQuery query){
+ deviceComponentService.selectListByPage(query);
+
+ return ApiResult.success(vos);
+ }
+}
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DeviceComponentQuery.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DeviceComponentQuery.java
new file mode 100644
index 00000000..f4f6d2f6
--- /dev/null
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DeviceComponentQuery.java
@@ -0,0 +1,11 @@
+package com.nflg.mobilebroken.admin.pojo.query;
+
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
+import lombok.Data;
+
+@Data
+public class DeviceComponentQuery extends PageBaseQuery {
+ private String modelNo;
+
+ private String component;
+}
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java
new file mode 100644
index 00000000..28affaff
--- /dev/null
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java
@@ -0,0 +1,8 @@
+package com.nflg.mobilebroken.common.pojo.query;
+
+public class PageBaseQuery {
+
+ private Integer page=1;
+
+ private Integer pageSize=20;
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceComponentMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceComponentMapper.java
index 4238be85..70795835 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceComponentMapper.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceComponentMapper.java
@@ -1,7 +1,10 @@
package com.nflg.mobilebroken.repository.mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +16,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface DeviceComponentMapper extends BaseMapper {
+ /**
+ * 分页查询
+ * @param page
+ * @param query
+ * @return
+ */
+ Page selectListByPage(@Param("page") Page page, @Param("query") PageBaseQuery query);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java
index 797172b3..63e0ddc7 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java
@@ -1,7 +1,13 @@
package com.nflg.mobilebroken.repository.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,18 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IDeviceComponentService extends IService {
+ /**
+ * 分页查询
+ * @param page
+ * @param query
+ * @return
+ */
+ List selectListByPage( @Param("query") PageBaseQuery query);
+
+ DeviceComponent saveComponent(DeviceComponent component);
+
+
+ void delComponent(Integer component);
+
+ Boolean saveOrUpdateBatchComponent(List data);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java
index d7371340..82454ae5 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java
@@ -1,11 +1,16 @@
package com.nflg.mobilebroken.repository.service.impl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.nflg.mobilebroken.repository.mapper.DeviceComponentMapper;
import com.nflg.mobilebroken.repository.service.IDeviceComponentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
*
* 机型部件 服务实现类
@@ -17,4 +22,37 @@ import org.springframework.stereotype.Service;
@Service
public class DeviceComponentServiceImpl extends ServiceImpl implements IDeviceComponentService {
+
+ /**
+ * 分页查询
+ * @param page
+ * @param query
+ * @return
+ */
+ public Page selectListByPage(@Param("page") Page page, @Param("query") PageBaseQuery query){
+ return this.getBaseMapper().selectListByPage(page,query);
+ }
+
+ /**
+ * 保存
+ * @param component
+ * @return
+ */
+ public DeviceComponent saveComponent(DeviceComponent component){
+ this.saveOrUpdate(component);
+ return component;
+ }
+
+ public void delComponent(Integer id){
+ this.getBaseMapper().deleteById(id);
+ }
+
+
+ public Boolean saveOrUpdateBatchComponent(List data){
+ return this.saveOrUpdateBatch(data);
+ }
+
+
+
+
}
diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceComponentMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceComponentMapper.xml
index 49c0a68a..fa11ff73 100644
--- a/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceComponentMapper.xml
+++ b/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceComponentMapper.xml
@@ -2,4 +2,16 @@
+
+
+ and model_no=#{query.modelNo}
+
+
+ and component like concat('%',#{query.component} ,"%")
+
+
+
diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/annotation/MethodInfoMark.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/annotation/MethodInfoMark.java
new file mode 100644
index 00000000..4c29d7c4
--- /dev/null
+++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/annotation/MethodInfoMark.java
@@ -0,0 +1,12 @@
+package com.nflg.mobilebroken.starter.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface MethodInfoMark {
+ String value() default "";
+}
From aaf467d32792ff73a556f2eeb3f314bd401485fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com>
Date: Mon, 20 Jan 2025 17:26:20 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/DepartmentController.java | 68 ++++++++++
.../controller/DeviceComponentController.java | 78 +++++++++++-
.../admin/pojo/dto/DepartmentDTO.java | 20 +++
.../admin/pojo/query/DepartmentQuery.java | 14 +++
nflg-mobilebroken-common/pom.xml | 9 ++
.../mobilebroken/common/pojo/ApiResult.java | 16 +++
.../common/pojo/dto/DevComponentExcel.java | 52 ++++++++
.../common/pojo/query/PageBaseQuery.java | 3 +
.../common/util/EecExcelUtil.java | 117 ++++++++++++++++++
.../mobilebroken/common/util/TokenUtil.java | 3 +-
.../repository/entity/DictionaryItem.java | 5 +
.../repository/entity/TBaseDepartment.java | 83 +++++++++++++
.../mapper/TBaseDepartmentMapper.java | 24 ++++
.../service/IDeviceComponentService.java | 10 +-
.../service/ITBaseDepartmentService.java | 32 +++++
.../impl/DeviceComponentServiceImpl.java | 9 +-
.../impl/TBaseDepartmentServiceImpl.java | 44 +++++++
.../mapper/TBaseDepartmentMapper.xml | 25 ++++
nflg-mobilebroken-starter/pom.xml | 11 ++
.../starter/advice/LoggingAspect.java | 78 ++++++++++++
20 files changed, 689 insertions(+), 12 deletions(-)
create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java
create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DepartmentDTO.java
create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DepartmentQuery.java
create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/DevComponentExcel.java
create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TBaseDepartmentMapper.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseDepartmentService.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseDepartmentServiceImpl.java
create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml
create mode 100644 nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java
new file mode 100644
index 00000000..94b81d64
--- /dev/null
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java
@@ -0,0 +1,68 @@
+package com.nflg.mobilebroken.admin.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.admin.pojo.dto.DepartmentDTO;
+import com.nflg.mobilebroken.admin.pojo.query.DepartmentQuery;
+import com.nflg.mobilebroken.admin.pojo.query.DeviceComponentQuery;
+import com.nflg.mobilebroken.common.pojo.ApiResult;
+import com.nflg.mobilebroken.common.pojo.PageData;
+import com.nflg.mobilebroken.common.util.VUtils;
+import com.nflg.mobilebroken.repository.entity.DeviceComponent;
+import com.nflg.mobilebroken.repository.entity.TBaseDepartment;
+import com.nflg.mobilebroken.repository.service.IDeviceComponentService;
+import com.nflg.mobilebroken.repository.service.ITBaseDepartmentService;
+import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+
+@RestController
+@RequestMapping("/department")
+public class DepartmentController {
+
+ @Resource
+ ITBaseDepartmentService departmentService;
+
+ @PostMapping("getList")
+ @MethodInfoMark("获取部件列表")
+ public ApiResult> getSimpleAreas(@RequestBody DepartmentQuery query){
+ Page result = departmentService.selectListByPage(query);
+ return ApiResult.success(result.getRecords(),result.getCurrent(),result.getTotal());
+ }
+
+ @GetMapping("getChild")
+ @MethodInfoMark("获取子级")
+ public ApiResult> getChild(@RequestParam("parentId") Integer parentId ){
+
+ return ApiResult.success(departmentService.getChildByParentId(parentId));
+ }
+
+ @PostMapping("add")
+ @MethodInfoMark("新增")
+ public ApiResult add(@Valid @RequestBody DepartmentDTO departmentDTO){
+
+ List checkCode = departmentService.lambdaQuery().eq(TBaseDepartment::getDeptCode, departmentDTO.getDeptCode()).list();
+ VUtils.trueThrowBusinessError(CollUtil.isNotEmpty(checkCode)).throwMessage("编码已存在");
+
+ departmentService.saveDepartment(Convert.convert(TBaseDepartment.class,departmentDTO));
+ return ApiResult.success(true);
+
+ }
+
+ @PostMapping("del")
+ @MethodInfoMark("删除")
+ public ApiResult add(@RequestBody List ids ){
+ VUtils.trueThrowBusinessError(CollUtil.isEmpty(ids)).throwMessage("请选择要删除的数据");
+ departmentService.del(ids);
+ return ApiResult.success(true);
+ }
+
+
+
+
+}
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceComponentController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceComponentController.java
index 3fdd2b1d..b1b1dcad 100644
--- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceComponentController.java
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceComponentController.java
@@ -1,19 +1,35 @@
package com.nflg.mobilebroken.admin.controller;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
-import cn.hutool.db.Page;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.admin.pojo.query.DeviceComponentQuery;
+import com.nflg.mobilebroken.common.constant.STATE;
+import com.nflg.mobilebroken.common.exception.NflgException;
import com.nflg.mobilebroken.common.pojo.ApiResult;
+import com.nflg.mobilebroken.common.pojo.PageData;
+import com.nflg.mobilebroken.common.pojo.dto.DevComponentExcel;
import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
import com.nflg.mobilebroken.common.pojo.vo.AreaVO;
+import com.nflg.mobilebroken.common.util.EecExcelUtil;
+import com.nflg.mobilebroken.common.util.VUtils;
+import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.nflg.mobilebroken.repository.service.IDeviceComponentService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.ttzero.excel.entity.ListSheet;
+import org.ttzero.excel.entity.Workbook;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.Struct;
import java.util.List;
+import java.util.stream.Collectors;
@RestController
@RequestMapping("/deviceComponent")
@@ -24,9 +40,61 @@ public class DeviceComponentController {
@PostMapping("getList")
@MethodInfoMark("获取部件列表")
- public ApiResult> getSimpleAreas(@RequestBody DeviceComponentQuery query){
- deviceComponentService.selectListByPage(query);
-
- return ApiResult.success(vos);
+ public ApiResult> getSimpleAreas(@RequestBody DeviceComponentQuery query){
+ Page result = deviceComponentService.selectListByPage(query);
+ return ApiResult.success(result.getRecords(),result.getCurrent(),result.getTotal());
}
+
+
+ @PostMapping("add")
+ @MethodInfoMark("新增部件")
+ public ApiResult add(@RequestBody DeviceComponentQuery component){
+ if(StrUtil.isBlank(component.getModelNo())){
+ throw new NflgException(STATE.ParamErr,"设备机型不能为空");
+ }
+ if(StrUtil.isBlank(component.getComponent())){
+ throw new NflgException(STATE.ParamErr,"机型部件不能为空");
+ }
+ DeviceComponent ent = Convert.convert(DeviceComponent.class, component);
+ deviceComponentService.saveComponent(ent);
+ return ApiResult.success(true);
+ }
+
+
+ @PostMapping("del")
+ @MethodInfoMark("删除部件")
+ public ApiResult del(@RequestBody List ids){
+ if(CollUtil.isNotEmpty(ids)){
+ throw new NflgException(STATE.ParamErr,"请选择要删除的部件");
+ }
+ deviceComponentService.batchDelComponent(ids);
+ return ApiResult.success(true);
+ }
+
+ @PostMapping("importData")
+ @MethodInfoMark("导入部件")
+ public ApiResult importData( @RequestParam(value = "file") MultipartFile file){
+
+ try {
+ List data = EecExcelUtil.getExcelContext(file.getInputStream(), DevComponentExcel.class);
+ VUtils.trueThrowBusinessError(CollUtil.isEmpty(data)).throwMessage("导入文件内容为空");
+ deviceComponentService.saveOrUpdateBatchComponent(Convert.toList(DeviceComponent.class, data));
+
+ } catch (IOException e) {
+ throw new NflgException(STATE.BusinessError, "导出失败:"+e.getMessage());
+ }
+ return ApiResult.success(true);
+ }
+
+
+ @GetMapping("exportData")
+ @MethodInfoMark("导出部件")
+ public void exportData(HttpServletResponse response) throws IOException {
+ List list = deviceComponentService.list();
+ List excelList = Convert.toList(DevComponentExcel.class, list);
+ new Workbook("部件列表", "").addSheet(new ListSheet<>("sheet1", excelList)).writeTo(response.getOutputStream());
+
+ }
+
+
}
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DepartmentDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DepartmentDTO.java
new file mode 100644
index 00000000..78180881
--- /dev/null
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DepartmentDTO.java
@@ -0,0 +1,20 @@
+package com.nflg.mobilebroken.admin.pojo.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class DepartmentDTO {
+
+ private Integer id;
+
+ @NotBlank(message = "编码不能为空")
+ private String deptCode;
+
+ @NotBlank(message = "名称不能为空")
+ private String deptName;
+
+
+ private Integer deptParentId=0;
+}
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DepartmentQuery.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DepartmentQuery.java
new file mode 100644
index 00000000..9682071d
--- /dev/null
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/query/DepartmentQuery.java
@@ -0,0 +1,14 @@
+package com.nflg.mobilebroken.admin.pojo.query;
+
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
+import lombok.Data;
+
+@Data
+public class DepartmentQuery extends PageBaseQuery {
+
+ //编码OR 名称
+ private String deptCodeOrName;
+
+ //是否有效 0-否 1-是
+ private Integer dataValidStatus;
+}
diff --git a/nflg-mobilebroken-common/pom.xml b/nflg-mobilebroken-common/pom.xml
index ef68db84..ff3c701a 100644
--- a/nflg-mobilebroken-common/pom.xml
+++ b/nflg-mobilebroken-common/pom.xml
@@ -33,6 +33,15 @@
cn.dev33
sa-token-core
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+
+
+ org.ttzero
+ eec
+ 0.4.14
+
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java
index a5d7a2c3..7e891522 100644
--- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java
@@ -1,10 +1,13 @@
package com.nflg.mobilebroken.common.pojo;
+import cn.hutool.db.Page;
import com.nflg.mobilebroken.common.constant.STATE;
import lombok.Data;
+import javax.validation.Valid;
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.List;
@Data
public class ApiResult implements Serializable {
@@ -24,6 +27,19 @@ public class ApiResult implements Serializable {
return vo;
}
+ public static ApiResult> success(List value, long page,long total) {
+ ApiResult> vo = new ApiResult<>();
+ PageData data=new PageData<>();
+ data.setItems(value);;
+ data.setPage(page);
+ data.setTotal(total);
+ vo.code = STATE.Success.getState();
+ vo.type=STATE.Success.getType();
+ vo.setResult(data);
+ return vo;
+ }
+
+
public static ApiResult error(int state,String msg,T value) {
ApiResult vo = new ApiResult<>();
vo.result = value;
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/DevComponentExcel.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/DevComponentExcel.java
new file mode 100644
index 00000000..ef11655c
--- /dev/null
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/DevComponentExcel.java
@@ -0,0 +1,52 @@
+package com.nflg.mobilebroken.common.pojo.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import org.ttzero.excel.annotation.ExcelColumn;
+@Data
+public class DevComponentExcel {
+
+
+ /**
+ * 设备机型
+ */
+ @ExcelColumn("设备机型")
+ private String modelNo;
+
+ /**
+ * 机型部件
+ */
+ @ExcelColumn("机型部件")
+ private String component;
+
+ /**
+ * 是否启用
+ */
+ @ExcelColumn("是否启用")
+ private Boolean enable;
+
+ /**
+ * 创建人
+ */
+ @ExcelColumn("创建人")
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelColumn("创建时间")
+ private LocalDateTime createTime;
+
+ /**
+ * 最后更新人
+ */
+ @ExcelColumn("最后更新人")
+ private String updateBy;
+
+ /**
+ * 最后更新时间
+ */
+ @ExcelColumn("最后更新时间")
+ private LocalDateTime updateTime;
+}
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java
index 28affaff..49a7a82e 100644
--- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java
@@ -1,5 +1,8 @@
package com.nflg.mobilebroken.common.pojo.query;
+import lombok.Data;
+
+@Data
public class PageBaseQuery {
private Integer page=1;
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java
new file mode 100644
index 00000000..dc628470
--- /dev/null
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java
@@ -0,0 +1,117 @@
+package com.nflg.mobilebroken.common.util;
+
+
+import com.nflg.mobilebroken.common.constant.STATE;
+import com.nflg.mobilebroken.common.exception.NflgException;
+import org.ttzero.excel.entity.ListSheet;
+
+import org.ttzero.excel.entity.Workbook;
+import org.ttzero.excel.reader.ExcelReader;
+import org.ttzero.excel.reader.Row;
+import org.ttzero.excel.reader.Sheet;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+/**
+ * eecExcel
+ *
+ * @Author 大米
+ */
+public class EecExcelUtil {
+
+ public static void setResponseExcelHeader(HttpServletResponse response, String fileName) throws UnsupportedEncodingException {
+ response.setHeader("content-Type", "application/octet-stream");
+ response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8"));
+
+ }
+
+ public static void eecExcel(String fileName, List sheets, HttpServletResponse response) throws IOException {
+ setResponseExcelHeader(response, fileName);
+ Workbook workbook = new Workbook();
+ for (ListSheet sheet : sheets) {
+ workbook.addSheet(sheet);
+ }
+ workbook.writeTo(response.getOutputStream());
+ }
+
+ /**
+ * 行读取excel sheet 0
+ *
+ * @param hanlder
+ * @param inputStream
+ */
+ public static void iteratorRead(BiConsumer hanlder, InputStream inputStream, Class cls, U u) {
+ try (ExcelReader reader = ExcelReader.read(inputStream)) {
+ Sheet sheet = reader.sheet(0);
+ Iterator ite = sheet.iterator();
+ while (ite.hasNext()) {
+ hanlder.accept(ite.next().to(cls), u);
+ }
+ } catch (IOException e) {
+ throw new IllegalArgumentException("读取EXCEL 失败:" + e.getMessage());
+ }
+ }
+
+ public static List iteratorReadAndInitRowNum(BiConsumer hanlder, InputStream inputStream, Class cls, Integer rowNum) {
+ List result = new ArrayList<>();
+ try (ExcelReader reader = ExcelReader.read(inputStream)) {
+
+ Sheet sheet = reader.sheet(0);
+ Iterator ite = sheet.iterator();
+ while (ite.hasNext()) {
+ T t = ite.next().to(cls);
+ hanlder.accept(t, rowNum++);
+ result.add(t);
+ }
+ } catch (IOException e) {
+ throw new IllegalArgumentException("读取EXCEL 失败:" + e.getMessage());
+ }
+ return result;
+ }
+
+ public static List getExcelContext(InputStream inputStream, Class clc) throws IOException {
+ try {
+ return ExcelReader.read(inputStream)
+ .sheet(0)
+ .dataRows() // 所有数据列,会过滤掉表头
+ .map(row -> row.to(clc))// 列数据转Stock对象
+ .collect(Collectors.toList());// 转为对象数组
+
+ } catch (Exception e) {
+ throw new NflgException(STATE.BusinessError, "读取EXCEL 失败,请检查模板是否正确:" + e.getMessage());
+ }
+
+ }
+
+ public static List handlerExcel(InputStream inputStream, Class clc, Consumer handler) {
+ List result = new ArrayList<>();
+ try (ExcelReader reader = ExcelReader.read(inputStream)) {
+
+ reader.sheet(0).dataRows().map(row -> row.to(clc)
+// T t= row.too(clc);
+// t.setRowNum(row.getRowNum());
+// return t ;
+ ).forEach(u -> {
+ if (handler != null) {
+ handler.accept(u);
+ result.add(u);
+ }
+ });
+ } catch (IOException e) {
+ throw new NflgException(STATE.ParamErr, "excel 解析失败,请检查模板是否正确");
+ }
+
+ return result;
+ }
+}
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java
index c29b779b..e86caa89 100644
--- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java
@@ -1,5 +1,6 @@
package com.nflg.mobilebroken.common.util;
+import cn.hutool.core.collection.ListUtil;
import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.exception.NflgException;
@@ -20,7 +21,7 @@ public class TokenUtil {
public static List getCompanyId(){
try {
//TODO 待实现
- return List.of(111);
+ return ListUtil.of(111);
//return (List)StpUtil.getExtra("companyId");
}catch (Exception ex){
throw new NflgException(STATE.LoginError,"请登录");
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/DictionaryItem.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/DictionaryItem.java
index e9a7fdf2..fad09a15 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/DictionaryItem.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/DictionaryItem.java
@@ -28,6 +28,11 @@ public class DictionaryItem implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
+ /**
+ * 字典id
+ */
+ private Integer dictionaryId;
+
/**
* 字典值编码
*/
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java
new file mode 100644
index 00000000..59dc3d34
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java
@@ -0,0 +1,83 @@
+package com.nflg.mobilebroken.repository.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ * 部门表
+ *
+ *
+ * @author 曹鹏飞
+ * @since 2025-01-20
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("t_base_department")
+public class TBaseDepartment implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id 自增id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 部门编码
+ */
+ private String deptCode;
+
+ /**
+ * 部门名称
+ */
+ private String deptName;
+
+ /**
+ * 部门父类ID
+ */
+ private Integer deptParentId;
+
+ /**
+ * 有效状态 0否1是
+ */
+ private Byte dataValidStatus;
+
+ /**
+ * 创建人编号
+ */
+ private String dataCreateUserNo;
+
+ /**
+ * 创建人
+ */
+ private String dataCreateUserName;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime dataCreateTime;
+
+ /**
+ * 修改人编号
+ */
+ private String dataModifyUserNo;
+
+ /**
+ * 更新人
+ */
+ private String dataModifyUserName;
+
+ /**
+ * 更新时间
+ */
+ private LocalDateTime dataModifyTime;
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TBaseDepartmentMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TBaseDepartmentMapper.java
new file mode 100644
index 00000000..76fd3510
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TBaseDepartmentMapper.java
@@ -0,0 +1,24 @@
+package com.nflg.mobilebroken.repository.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
+import com.nflg.mobilebroken.repository.entity.TBaseDepartment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 部门表 Mapper 接口
+ *
+ *
+ * @author 曹鹏飞
+ * @since 2025-01-20
+ */
+public interface TBaseDepartmentMapper extends BaseMapper {
+
+ Page selectListByPage(@Param("page") Page page,@Param("query") PageBaseQuery query );
+
+ void del(@Param("ids") List ids);
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java
index 63e0ddc7..9ca42ea5 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceComponentService.java
@@ -5,7 +5,7 @@ import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
-import org.springframework.data.repository.query.Param;
+
import java.util.List;
@@ -21,16 +21,18 @@ public interface IDeviceComponentService extends IService {
/**
* 分页查询
- * @param page
+ * @param
* @param query
* @return
*/
- List selectListByPage( @Param("query") PageBaseQuery query);
+ Page selectListByPage( @Param("query") PageBaseQuery query);
DeviceComponent saveComponent(DeviceComponent component);
- void delComponent(Integer component);
+ void delComponent(Integer id);
+
+ void batchDelComponent(List ids);
Boolean saveOrUpdateBatchComponent(List data);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseDepartmentService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseDepartmentService.java
new file mode 100644
index 00000000..fa66cc91
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseDepartmentService.java
@@ -0,0 +1,32 @@
+package com.nflg.mobilebroken.repository.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
+import com.nflg.mobilebroken.repository.entity.DeviceComponent;
+import com.nflg.mobilebroken.repository.entity.TBaseDepartment;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 部门表 服务类
+ *
+ *
+ * @author 曹鹏飞
+ * @since 2025-01-20
+ */
+public interface ITBaseDepartmentService extends IService {
+
+ Page selectListByPage(@Param("query") PageBaseQuery query);
+
+
+ Boolean saveDepartment(TBaseDepartment department);
+
+
+ void del(List ids);
+
+ List getChildByParentId(Integer id);
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java
index 82454ae5..407cece4 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceComponentServiceImpl.java
@@ -29,8 +29,8 @@ public class DeviceComponentServiceImpl extends ServiceImpl selectListByPage(@Param("page") Page page, @Param("query") PageBaseQuery query){
- return this.getBaseMapper().selectListByPage(page,query);
+ public Page selectListByPage( @Param("query") PageBaseQuery query){
+ return this.getBaseMapper().selectListByPage(new Page<>(query.getPage(),query.getPageSize()) ,query);
}
/**
@@ -53,6 +53,11 @@ public class DeviceComponentServiceImpl extends ServiceImpl ids){
+ this.getBaseMapper().deleteByIds(ids);
+ }
+
+
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseDepartmentServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseDepartmentServiceImpl.java
new file mode 100644
index 00000000..09216c79
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseDepartmentServiceImpl.java
@@ -0,0 +1,44 @@
+package com.nflg.mobilebroken.repository.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
+import com.nflg.mobilebroken.repository.entity.DeviceComponent;
+import com.nflg.mobilebroken.repository.entity.TBaseDepartment;
+import com.nflg.mobilebroken.repository.mapper.TBaseDepartmentMapper;
+import com.nflg.mobilebroken.repository.service.ITBaseDepartmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *
+ * 部门表 服务实现类
+ *
+ *
+ * @author 曹鹏飞
+ * @since 2025-01-20
+ */
+@Service
+public class TBaseDepartmentServiceImpl extends ServiceImpl implements ITBaseDepartmentService {
+
+
+ public Page selectListByPage(@Param("query") PageBaseQuery query) {
+ return this.getBaseMapper().selectListByPage(new Page<>(query.getPage(), query.getPageSize()), query);
+ }
+
+
+ public Boolean saveDepartment(TBaseDepartment department) {
+ return this.saveOrUpdate(department);
+ }
+
+
+ public void del(List ids) {
+ this.getBaseMapper().del(ids);
+ }
+
+ public List getChildByParentId(Integer id) {
+ return this.lambdaQuery().eq(TBaseDepartment::getDeptParentId, id).list();
+ }
+}
diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml
new file mode 100644
index 00000000..63ae556c
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+ and (dept_code=#{query.deptCodeOrName} or dept_name=#{query.deptCodeOrName})
+
+
+ and data_valid_status=#{query.dataValidStatus}
+
+
+
+
+
+ update t_base_department set data_valid_status=0 where id in
+
+ #{item}
+
+
+
diff --git a/nflg-mobilebroken-starter/pom.xml b/nflg-mobilebroken-starter/pom.xml
index b91532ad..b6cc526e 100644
--- a/nflg-mobilebroken-starter/pom.xml
+++ b/nflg-mobilebroken-starter/pom.xml
@@ -102,6 +102,17 @@
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.83
+
diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java
new file mode 100644
index 00000000..ee904368
--- /dev/null
+++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java
@@ -0,0 +1,78 @@
+package com.nflg.mobilebroken.starter.advice;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+
+@Aspect
+@Component
+public class LoggingAspect {
+
+ private static final ThreadLocal requestIdHolder = new ThreadLocal<>();
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Before("execution(* com.nflg.mobilebroken.admin.controller..*(..))")
+ public void logMethodCall(JoinPoint joinPoint) {
+ try {
+ // 获取HttpServletRequest对象
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+
+ Long requestId = IdWorker.getId();
+ requestIdHolder.set(requestId.toString());
+
+ // 获取ApiOperation注解
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ Method method = signature.getMethod();
+ MethodInfoMark apiOperation = method.getAnnotation(MethodInfoMark.class);
+
+
+ } catch (Exception e) {
+ logger.error("Error logging request", e);
+ }
+ }
+
+ @AfterReturning(pointcut = "execution(* com.nflg.mobilebroken.admin.controller..*(..))", returning = "result")
+ public void logMethodResponse(Object result) {
+ try {
+ String requestId = requestIdHolder.get();
+ // 批量保存响应日志
+// saveLogBatch(logRecord);
+
+ logger.info("Response for request {}: {}", requestId, JSON.toJSONString(result));
+ } finally {
+ requestIdHolder.remove();
+ }
+ }
+
+ @AfterThrowing(pointcut = "execution(* com.nflg.mobilebroken.admin.controller..*(..))", throwing = "ex")
+ public void logAfterThrowing(JoinPoint joinPoint, Throwable ex) {
+ try {
+ String requestId = requestIdHolder.get();
+ StackTraceElement[] stackTraceElements = ex.getStackTrace();
+ logger.error("Exception in {} for request {}: {} at {}",
+ joinPoint.getSignature().getName(),
+ requestId,
+ ex.getMessage(),
+ stackTraceElements.length > 0 ? stackTraceElements[0].toString() : "");
+ } finally {
+ requestIdHolder.remove();
+ }
+ }
+
+
+}
\ No newline at end of file