diff --git a/nflg-mobilebroken-admin/pom.xml b/nflg-mobilebroken-admin/pom.xml index bc517475..e1c48f33 100644 --- a/nflg-mobilebroken-admin/pom.xml +++ b/nflg-mobilebroken-admin/pom.xml @@ -71,6 +71,10 @@ jakarta.validation jakarta.validation-api + + com.nflg + nflg-mobilebroken-starter + 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 new file mode 100644 index 00000000..b1b1dcad --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceComponentController.java @@ -0,0 +1,100 @@ +package com.nflg.mobilebroken.admin.controller; + + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +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") +public class DeviceComponentController { + + @Resource + IDeviceComponentService deviceComponentService; + + @PostMapping("getList") + @MethodInfoMark("获取部件列表") + 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-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/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 new file mode 100644 index 00000000..49a7a82e --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/query/PageBaseQuery.java @@ -0,0 +1,11 @@ +package com.nflg.mobilebroken.common.pojo.query; + +import lombok.Data; + +@Data +public class PageBaseQuery { + + private Integer page=1; + + private Integer pageSize=20; +} 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/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/mapper/TBaseDepartmentMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TBaseDepartmentMapper.java index 95e60982..76fd3510 100644 --- 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 @@ -1,7 +1,12 @@ 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; /** *

@@ -13,4 +18,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ 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 797172b3..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 @@ -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 java.util.List; /** *

@@ -13,4 +19,20 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IDeviceComponentService extends IService { + /** + * 分页查询 + * @param + * @param query + * @return + */ + Page selectListByPage( @Param("query") PageBaseQuery query); + + DeviceComponent saveComponent(DeviceComponent 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 index b3e3aae9..fa66cc91 100644 --- 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 @@ -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.nflg.mobilebroken.repository.entity.TBaseDepartment; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,14 @@ import com.baomidou.mybatisplus.extension.service.IService; */ 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 d7371340..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 @@ -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,42 @@ import org.springframework.stereotype.Service; @Service public class DeviceComponentServiceImpl extends ServiceImpl implements IDeviceComponentService { + + /** + * 分页查询 + * @param page + * @param query + * @return + */ + public Page selectListByPage( @Param("query") PageBaseQuery query){ + return this.getBaseMapper().selectListByPage(new Page<>(query.getPage(),query.getPageSize()) ,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); + } + + + public void batchDelComponent(List 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 index b4adb80c..09216c79 100644 --- 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 @@ -1,11 +1,17 @@ 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; + /** *

* 部门表 服务实现类 @@ -17,4 +23,22 @@ import org.springframework.stereotype.Service; @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/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-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml index 5a639d26..63ae556c 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml @@ -1,5 +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 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 ""; +}