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] =?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