From 9b2c4a6e9683a704a872e282eb1deab39f665195 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 15 二月 2025 15:41:19 +0800
Subject: [PATCH] 资源要求-计量溯源性功能迁移
---
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceRecordMapper.java | 22
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceRecord.java | 78 ++
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceRecordService.java | 30 +
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceService.java | 19
ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java | 9
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceInspectionService.java | 16
cnas-require/pom.xml | 36 +
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceMapper.java | 22
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeCalibrationScheduleServiceImpl.java | 75 ++
pom.xml | 1
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptance.java | 86 ++
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java | 79 ++
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java | 116 ++++
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptanceInspection.java | 47 +
cnas-require/src/main/java/com/ruoyi/require/controller/FeCalibrationScheduleController.java | 97 +++
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceMapper.java | 20
cnas-require/src/main/java/com/ruoyi/require/excel/FeStandardSubstanceExcel.java | 54 +
inspect-server/pom.xml | 5
cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceController.java | 80 ++
cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceAcceptanceController.java | 89 +++
ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java | 18
cnas-require/src/main/java/com/ruoyi/require/dto/AcceptanceDto.java | 15
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceService.java | 33 +
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceServiceImpl.java | 26
cnas-require/src/main/java/com/ruoyi/require/vo/SubstanceRecordVo.java | 46 +
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java | 20
ruoyi-admin/pom.xml | 6
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java | 16
cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceVo.java | 46 +
cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceRecordController.java | 63 ++
cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceDetailsVo.java | 22
cnas-require/src/main/java/com/ruoyi/require/excel/FeCalibrationScheduleExport.java | 36 +
cnas-require/src/main/java/com/ruoyi/require/pojo/FeCalibrationSchedule.java | 85 ++
cnas-require/src/main/java/com/ruoyi/require/excel/FeLightningProtectionExcel.java | 22
cnas-require/src/main/java/com/ruoyi/require/service/FeCalibrationScheduleService.java | 29 +
inspect-server/src/main/java/com/ruoyi/basic/util/HackLoopTableRenderPolicy.java | 154 +++++
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstance.java | 81 ++
cnas-require/src/main/java/com/ruoyi/require/mapper/FeCalibrationScheduleMapper.java | 20
38 files changed, 1,719 insertions(+), 0 deletions(-)
diff --git a/cnas-require/pom.xml b/cnas-require/pom.xml
new file mode 100644
index 0000000..5fda62b
--- /dev/null
+++ b/cnas-require/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi</artifactId>
+ <version>3.8.9</version>
+ </parent>
+
+ <artifactId>cnas-require</artifactId>
+
+ <properties>
+ <maven.compiler.source>8</maven.compiler.source>
+ <maven.compiler.target>8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-framework</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>inspect-server</artifactId>
+ <version>3.8.9</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/FeCalibrationScheduleController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeCalibrationScheduleController.java
new file mode 100644
index 0000000..efa7963
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeCalibrationScheduleController.java
@@ -0,0 +1,97 @@
+package com.ruoyi.require.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.require.excel.FeCalibrationScheduleExport;
+import com.ruoyi.require.pojo.FeCalibrationSchedule;
+import com.ruoyi.require.service.FeCalibrationScheduleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+@Api(tags = "閲忓�兼函婧愯鍒�")
+@RestController
+@RequestMapping("/feCalibrationSchedule")
+public class FeCalibrationScheduleController {
+
+ @Resource
+ private FeCalibrationScheduleService feCalibrationScheduleService;
+
+ @ApiOperation(value = "閲忓�兼函婧愯鍒掓煡璇�")
+ @GetMapping("/getPageCalibrationSchedule")
+ public Result<IPage<FeCalibrationSchedule>> getPageCalibrationSchedule(Page page, String instrumentName, String managementNumber) {
+ IPage<FeCalibrationSchedule> ipage = feCalibrationScheduleService.page(page,instrumentName, managementNumber);
+ return Result.success(ipage);
+ }
+
+ @ApiOperation(value = "閲忓�兼函婧愯鍒掓柊澧炵紪杈�")
+ @PostMapping("/addCalibrationSchedule")
+ public Result addCalibrationSchedule(@RequestBody FeCalibrationSchedule feCalibrationSchedule) {
+ return Result.success(feCalibrationScheduleService.saveOrUpdate(feCalibrationSchedule));
+ }
+
+ @ApiOperation(value = "閲忓�兼函婧愯鍒掑垹闄�")
+ @GetMapping("/removeCalibrationSchedule")
+ public Result removeCalibrationSchedule(Integer id) {
+ return Result.success(feCalibrationScheduleService.removeById(id));
+ }
+
+
+ @ApiOperation(value = "閲忓�兼函婧愯鍒掑鍑�")
+ @PostMapping("exportOfValueTraceabilityPlan")
+ public void exportOfValueTraceabilityPlan(String instrumentName, String managementNumber,
+ HttpServletResponse response) throws Exception {
+ IPage<FeCalibrationSchedule> data = feCalibrationScheduleService.page(new Page<>(1, -1),instrumentName, managementNumber);
+ List<FeCalibrationScheduleExport> studentList = JSONObject.parseArray(JSON.toJSONString(data.getRecords()), FeCalibrationScheduleExport.class);
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setHeader("requestType", "excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(FeCalibrationScheduleExport.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+ .sheet("sheet")
+ .doWrite(studentList);
+ }
+
+ @ApiOperation(value = "importOfValueTraceabilityPlan")
+ @PostMapping("/importOfValueTraceabilityPlan")
+ public void importOfValueTraceabilityPlan(MultipartFile file) throws IOException {
+ if (file.isEmpty()) {
+ return;
+ }
+ EasyExcel.read(file.getInputStream(), FeCalibrationScheduleExport.class, new PageReadListener<FeCalibrationScheduleExport>(dataList -> {
+ List<FeCalibrationSchedule> studentList = JSONObject.parseArray(JSON.toJSONString(dataList), FeCalibrationSchedule.class);
+ feCalibrationScheduleService.saveOrUpdateBatch(studentList);
+ })).sheet().doRead();
+ }
+
+
+// Equipment quantity traceability management
+ @ApiOperation(value = "閲忓�兼函婧愯鍒掑鍑簑ord")
+ @GetMapping("/exportWordOfValueTraceabilityPlan")
+ public void exportWordOfValueTraceabilityPlan(HttpServletResponse response) throws IOException {
+ feCalibrationScheduleService.exportWordOfValueTraceabilityPlan(response);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceAcceptanceController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceAcceptanceController.java
new file mode 100644
index 0000000..0e5d823
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceAcceptanceController.java
@@ -0,0 +1,89 @@
+package com.ruoyi.require.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.require.dto.AcceptanceDto;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.require.service.FeStandardSubstanceAcceptanceInspectionService;
+import com.ruoyi.require.service.FeStandardSubstanceAcceptanceService;
+import com.ruoyi.require.vo.AcceptanceVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Api(tags = "鏍囧噯鐗╄川楠屾敹")
+@RestController
+@RequestMapping("/feStandardSubstanceAcceptance")
+public class FeStandardSubstanceAcceptanceController {
+
+ @Autowired
+ private FeStandardSubstanceAcceptanceInspectionService inspectionService;
+ @Resource
+ private FeStandardSubstanceAcceptanceService feStandardSubstanceAcceptanceService;
+
+ @ApiOperation(value = "鏂板")
+ @PostMapping("/addAcceptance")
+ @Transactional
+ public Result addAcceptance(@RequestBody AcceptanceDto dto) {
+ feStandardSubstanceAcceptanceService.addAcceptance(dto);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鏌ヨ")
+ @GetMapping("/getPageAcceptance")
+ public Result<IPage<AcceptanceVo>> getPageAcceptance(Page page, String name) {
+ IPage<AcceptanceVo> ipage = feStandardSubstanceAcceptanceService.getPageAcceptance(page, name);
+ return Result.success(ipage);
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鍒犻櫎")
+ @GetMapping("/deleteAcceptance/{id}")
+ public Result deleteAcceptance(@PathVariable("id") Integer id) {
+ return Result.success(feStandardSubstanceAcceptanceService.deleteAcceptance(id));
+ }
+
+ @ApiOperation(value = "缂栬緫")
+ @PostMapping("/updateAcceptance")
+ public Result updateAcceptance(@RequestBody AcceptanceDto acceptanceDto) {
+ feStandardSubstanceAcceptanceService.updateById(acceptanceDto.getAcceptance());
+ for (FeStandardSubstanceAcceptanceInspection v : acceptanceDto.getList()) {
+ if (v.getId()== null) {
+ inspectionService.save(v);
+ }else {
+ inspectionService.updateById(v);
+ }
+ }
+ return Result.success();
+ }
+
+
+ @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鏌ヨ")
+ @GetMapping("/getAcceptanceDetails")
+ public Result getAcceptanceDetails(Integer id) {
+ return Result.success(feStandardSubstanceAcceptanceService.getAcceptanceDetails(id));
+ }
+
+ @ApiOperation("瀵煎嚭鏍囧噯鐗╄川楠屾敹")
+ @GetMapping("/exportFeStandardSubstanceAcceptance")
+ public Result exportFeStandardSubstanceAcceptance(HttpServletResponse response) {
+ feStandardSubstanceAcceptanceService.exportFeStandardSubstanceAcceptance(response);
+
+ return Result.success();
+ }
+
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceController.java
new file mode 100644
index 0000000..8ccee1b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceController.java
@@ -0,0 +1,80 @@
+package com.ruoyi.require.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.require.excel.FeStandardSubstanceExcel;
+import com.ruoyi.require.pojo.FeStandardSubstance;
+import com.ruoyi.require.service.FeStandardSubstanceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+@Api(tags = "鏍囧噯鐗╄川娓呭崟")
+@RestController
+@RequestMapping("/feStandardSubstance")
+public class FeStandardSubstanceController {
+
+
+ @Resource
+ private FeStandardSubstanceService feStandardSubstanceService;
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏌ヨ")
+ @GetMapping("/getPageStandardSubstance")
+ public Result<IPage<FeStandardSubstance>> getPageStandardSubstance(Page page, FeStandardSubstance feStandardSubstance) {
+ IPage<FeStandardSubstance> ipage = feStandardSubstanceService.page(page, feStandardSubstance);
+ return Result.success(ipage);
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏂板缂栬緫")
+ @PostMapping("/addStandardSubstance")
+ public Result addStandardSubstance(@RequestBody FeStandardSubstance feStandardSubstance) {
+ return Result.success(feStandardSubstanceService.saveOrUpdate(feStandardSubstance));
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鍒犻櫎")
+ @GetMapping("/removeStandardSubstance")
+ public Result removeStandardSubstance(Integer id) {
+ return Result.success(feStandardSubstanceService.removeById(id));
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏌ヨ鎵�鏈�")
+ @GetMapping("/getStandardSubstanceAll")
+ public Result<List<FeStandardSubstance>> getStandardSubstanceAll( ) {
+ return Result.success(feStandardSubstanceService.list());
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟瀵煎嚭")
+ @GetMapping("exportOfStandardSubstanceList")
+ public void exportOfStandardSubstanceList(FeStandardSubstance feStandardSubstance,
+ HttpServletResponse response) throws Exception {
+ IPage<FeStandardSubstance> ipage = feStandardSubstanceService.page(new Page<>(1, -1), feStandardSubstance);
+ List<FeStandardSubstanceExcel> studentList = JSONObject.parseArray(JSON.toJSONString(ipage.getRecords()), FeStandardSubstanceExcel.class);
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setHeader("requestType", "excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(FeStandardSubstanceExcel.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+ .sheet("sheet")
+ .doWrite(studentList);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceRecordController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceRecordController.java
new file mode 100644
index 0000000..b2bcf7a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceRecordController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.require.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.require.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.require.service.FeStandardSubstanceRecordService;
+import com.ruoyi.require.vo.SubstanceRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Api(tags = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+@RestController
+@RequestMapping("/feStandardSubstanceRecord")
+public class FeStandardSubstanceRecordController {
+
+ @Resource
+ private FeStandardSubstanceRecordService feStandardSubstanceRecordService;
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤")
+ @PostMapping("/borrowSubstance")
+ @Transactional
+ public Result borrowSubstance(@RequestBody FeStandardSubstanceRecord record) {
+ feStandardSubstanceRecordService.borrowSubstance(record);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟褰掕繕")
+ @PostMapping("/returnSubstance")
+ @Transactional
+ public Result returnSubstance(@RequestBody FeStandardSubstanceRecord record) {
+ feStandardSubstanceRecordService.returnSubstance(record);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟棰嗙敤鏌ヨ")
+ @PostMapping("/getSubstanceRecord")
+ public Result getSubstanceRecord(Integer id) {
+ return Result.success(feStandardSubstanceRecordService.getSubstanceRecord(id));
+ }
+
+ @ApiOperation(value = "鍒嗛〉鏌ヨ")
+ @PostMapping("/getPageSubstanceRecord")
+ public Result<IPage<SubstanceRecordVo>> getPageSubstanceRecord(Page page, @RequestBody SubstanceRecordVo vo) {
+ IPage<SubstanceRecordVo> ipage = feStandardSubstanceRecordService.getPage(page,vo);
+ return Result.success(ipage);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/AcceptanceDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/AcceptanceDto.java
new file mode 100644
index 0000000..a369361
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/AcceptanceDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AcceptanceDto {
+
+ private FeStandardSubstanceAcceptance acceptance;
+
+ private List<FeStandardSubstanceAcceptanceInspection> list;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/excel/FeCalibrationScheduleExport.java b/cnas-require/src/main/java/com/ruoyi/require/excel/FeCalibrationScheduleExport.java
new file mode 100644
index 0000000..5048365
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/excel/FeCalibrationScheduleExport.java
@@ -0,0 +1,36 @@
+package com.ruoyi.require.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class FeCalibrationScheduleExport {
+ @ExcelProperty("浠櫒鍚嶇О")
+ private String instrumentName;
+
+ @ExcelProperty("瑙勬牸鍨嬪彿")
+ private String model;
+
+ @ExcelProperty("绠$悊缂栧彿")
+ private Integer managementNumber;
+
+ @ExcelProperty("鎶�鏈寚鏍�")
+ private String technicalIndicators;
+
+ @ExcelProperty("妫�瀹氬懆鏈�")
+ private String verificationCyde;
+
+ @ExcelProperty("妫�瀹氬崟浣�")
+ private String verificationUnit;
+
+ @ExcelProperty("鏈�杩戞瀹氭椂闂�")
+ private LocalDateTime recentlyTime;
+
+ @ExcelProperty("璁″垝涓嬫妫�瀹氭椂闂�")
+ private LocalDateTime nextTime;
+
+ @ExcelProperty("澶囨敞")
+ private String remark;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/excel/FeLightningProtectionExcel.java b/cnas-require/src/main/java/com/ruoyi/require/excel/FeLightningProtectionExcel.java
new file mode 100644
index 0000000..b47e79a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/excel/FeLightningProtectionExcel.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class FeLightningProtectionExcel {
+ @ExcelProperty("鍘熸枃浠跺悕")
+ private String fileName;
+
+ @ExcelProperty("妫�娴嬫棩鏈�")
+ private String detectionDate;
+
+ @ExcelProperty("鏈夋晥鏈�")
+ private String termValidity;
+
+ @ExcelProperty("妫�娴嬪崟浣�")
+ private String detectionUnit;
+
+ @ExcelProperty("鍒涘缓鏃堕棿")
+ private String createTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/excel/FeStandardSubstanceExcel.java b/cnas-require/src/main/java/com/ruoyi/require/excel/FeStandardSubstanceExcel.java
new file mode 100644
index 0000000..2f0691c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/excel/FeStandardSubstanceExcel.java
@@ -0,0 +1,54 @@
+package com.ruoyi.require.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class FeStandardSubstanceExcel {
+ @ExcelProperty("鏍囧噯鐗╄川鍚嶇О")
+ private String name;
+
+ @ExcelProperty("瑙勬牸鍨嬪彿")
+ private String model;
+
+ @ExcelProperty("鐢熶骇鍘傚")
+ private String factoryManufacturer;
+
+ @ExcelProperty("鍑哄満缂栧彿")
+ private String factoryNum;
+
+ @ExcelProperty("绠$悊缂栧彿")
+ private String manageNum;
+
+ @ExcelProperty("涓嶇‘瀹氬害")
+ private String uncertainty;
+
+ @ExcelProperty("鏁伴噺")
+ private Long quantity;
+
+ @ExcelProperty("璐疆鏃ユ湡")
+ private LocalDateTime acquisitionDate;
+
+ @ExcelProperty("鏈夋晥鏈�")
+ private LocalDateTime effectiveDate;
+
+ @ExcelProperty("鏂囨。缂栧彿")
+ private String fileNum;
+
+ @ExcelProperty("瀛樻斁浣嶇疆")
+ private String position;
+
+ @ExcelProperty("鍊熻皟鐘舵��")
+ private Integer state;
+
+ @ExcelProperty("澶囨敞")
+ private String remark;
+
+ @ExcelProperty("鍒涘缓浜�")
+ private String createUser;
+
+ @ExcelProperty("鍒涘缓鏃ユ湡")
+ private LocalDateTime createTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeCalibrationScheduleMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeCalibrationScheduleMapper.java
new file mode 100644
index 0000000..9527638
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeCalibrationScheduleMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.require.pojo.FeCalibrationSchedule;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+public interface FeCalibrationScheduleMapper extends BaseMapper<FeCalibrationSchedule> {
+
+ IPage<FeCalibrationSchedule> ipage(Page page, @Param("instrumentName") String instrumentName, @Param("managementNumber") String managementNumber);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java
new file mode 100644
index 0000000..d65993b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+public interface FeStandardSubstanceAcceptanceInspectionMapper extends BaseMapper<FeStandardSubstanceAcceptanceInspection> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceMapper.java
new file mode 100644
index 0000000..cc14a6c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.require.vo.AcceptanceVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+public interface FeStandardSubstanceAcceptanceMapper extends BaseMapper<FeStandardSubstanceAcceptance> {
+
+
+ IPage<AcceptanceVo> getPageAcceptance(Page page, @Param("name")String name);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceMapper.java
new file mode 100644
index 0000000..2340206
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.require.pojo.FeStandardSubstance;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+public interface FeStandardSubstanceMapper extends BaseMapper<FeStandardSubstance> {
+
+ IPage<FeStandardSubstance> getPage(Page page,@Param("ew")FeStandardSubstance feStandardSubstance);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceRecordMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceRecordMapper.java
new file mode 100644
index 0000000..c847574
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceRecordMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.require.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.require.vo.SubstanceRecordVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+public interface FeStandardSubstanceRecordMapper extends BaseMapper<FeStandardSubstanceRecord> {
+
+
+ IPage<SubstanceRecordVo> getPage(Page page,@Param("ew") SubstanceRecordVo vo);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeCalibrationSchedule.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeCalibrationSchedule.java
new file mode 100644
index 0000000..8cbbfea
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeCalibrationSchedule.java
@@ -0,0 +1,85 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_calibration_schedule")
+@ApiModel(value = "FeCalibrationSchedule瀵硅薄", description = "浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛�")
+public class FeCalibrationSchedule implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("浠櫒鍚嶇О")
+ private String instrumentName;
+
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
+ private String model;
+
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ApiModelProperty("鎶�鏈寚鏍�")
+ private String technicalIndicators;
+
+ @ApiModelProperty("妫�瀹氬懆鏈�")
+ private String verificationCyde;
+
+ @ApiModelProperty("妫�瀹氬崟浣�")
+ private String verificationUnit;
+
+ @ApiModelProperty("鏈�杩戞瀹氭椂闂�")
+ private LocalDateTime recentlyTime;
+
+ @ApiModelProperty("璁″垝涓嬫妫�瀹氭椂闂�")
+ private LocalDateTime nextTime;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("缂栧埗")
+ private String organization;
+
+ @ApiModelProperty("缂栧埗鏃ユ湡")
+ private LocalDateTime organizationDate;
+
+ @ApiModelProperty("鎵瑰噯")
+ private String approve;
+
+ @ApiModelProperty("鎵瑰噯鏃ユ湡")
+ private LocalDateTime approveDate;
+
+ @TableField(fill = FieldFill.INSERT)
+ private String createUser;
+
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateUser;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("搴忓彿id, 瀵煎嚭浣跨敤")
+ @TableField(exist = false, select = false)
+ private Integer index;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstance.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstance.java
new file mode 100644
index 0000000..0cd1cb7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstance.java
@@ -0,0 +1,81 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance")
+@ApiModel(value = "FeStandardSubstance瀵硅薄", description = "鏍囧噯鐗╄川娓呭崟")
+public class FeStandardSubstance implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("鏍囧噯鐗╄川鍚嶇О")
+ private String name;
+
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
+ private String model;
+
+ @ApiModelProperty("鐢熶骇鍘傚")
+ private String factoryManufacturer;
+
+ @ApiModelProperty("鍑哄満缂栧彿")
+ private String factoryNum;
+
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String manageNum;
+
+ @ApiModelProperty("涓嶇‘瀹氬害")
+ private String uncertainty;
+
+ @ApiModelProperty("鏁伴噺")
+ private Long quantity;
+
+ @ApiModelProperty("璐疆鏃ユ湡")
+ private LocalDateTime acquisitionDate;
+
+ @ApiModelProperty("鏈夋晥鏈�")
+ private LocalDateTime effectiveDate;
+
+ @ApiModelProperty("鏂囨。缂栧彿")
+ private String fileNum;
+
+ @ApiModelProperty("瀛樻斁浣嶇疆")
+ private String position;
+
+ @ApiModelProperty("鍊熻皟鐘舵�侊紙0:鏈�熻皟 1:宸插�熻皟锛�")
+ private Integer state;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @TableField(fill = FieldFill.INSERT)
+ private String createUser;
+
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateUser;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptance.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptance.java
new file mode 100644
index 0000000..d6d10b0
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptance.java
@@ -0,0 +1,86 @@
+package com.ruoyi.require.pojo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_acceptance")
+@ApiModel(value = "FeStandardSubstanceAcceptance瀵硅薄", description = "鏍囧噯鐗╄川楠屾敹")
+public class FeStandardSubstanceAcceptance implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("娓呭崟id")
+ @ExcelProperty("娓呭崟id")
+ private Integer substanceId;
+
+ @ApiModelProperty("鍒拌揣鏃ユ湡")
+ @ExcelProperty("鍒拌揣鏃ユ湡")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate arriveDate;
+
+ @ApiModelProperty("缁翠慨鍗曚綅")
+ @ExcelProperty("缁翠慨鍗曚綅")
+ private String maintenanceUnit;
+
+ @ApiModelProperty("鍙傛暟")
+ @ExcelProperty("鍙傛暟")
+ private String perameters;
+
+ @ApiModelProperty("瀹夎璋冭瘯鎯呭喌")
+ @ExcelProperty("瀹夎璋冭瘯鎯呭喌")
+ private String installation;
+
+ @ApiModelProperty("楠屾敹鎯呭喌")
+ @ExcelProperty("楠屾敹鎯呭喌")
+ private String situation;
+
+ @ApiModelProperty("鎺ュ彈绛惧瓧")
+ @ExcelProperty("鎺ュ彈绛惧瓧")
+ private String signature;
+
+ @ApiModelProperty("鍘傚浠h〃")
+ @ExcelProperty("鍘傚浠h〃")
+ private String producer;
+
+ @ApiModelProperty("鎺ユ敹浜�")
+ @ExcelProperty("鎺ユ敹浜�")
+ private String recipient;
+
+ @ApiModelProperty("闄勪欢")
+ @ExcelProperty("闄勪欢")
+ private String file;
+
+ @TableField(fill = FieldFill.INSERT)
+ private String createUser;
+
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateUser;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptanceInspection.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptanceInspection.java
new file mode 100644
index 0000000..50adcc3
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptanceInspection.java
@@ -0,0 +1,47 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_acceptance_inspection")
+@ApiModel(value = "FeStandardSubstanceAcceptanceInspection瀵硅薄", description = "楠屾敹寮�绠辫褰�")
+public class FeStandardSubstanceAcceptanceInspection implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private Integer acceptanceId;
+
+ private String name;
+
+ private Integer number;
+
+ @TableField(fill = FieldFill.INSERT)
+ private String createUser;
+
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateUser;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceRecord.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceRecord.java
new file mode 100644
index 0000000..da5fa7c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceRecord.java
@@ -0,0 +1,78 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_record")
+@ApiModel(value = "FeStandardSubstanceRecord瀵硅薄", description = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛�")
+public class FeStandardSubstanceRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("鐗╄川id")
+ private Integer substanceId;
+
+ @ApiModelProperty("鍊熺敤-瀹屽ソ鎬�")
+ private String integrity;
+
+ @ApiModelProperty("鍊熺敤-鍊熺敤浜�")
+ private String borrowUser;
+
+ @ApiModelProperty("鍊熺敤-鑱旂郴鏂瑰紡")
+ private String phone;
+
+ @ApiModelProperty("鍊熺敤-鍊熷嚭鏃ユ湡")
+ private LocalDateTime borrowDate;
+
+ @ApiModelProperty("褰掕繕鏃ユ湡")
+ private LocalDateTime borrowReturnDate;
+
+ @ApiModelProperty("鍊熷嚭浜�")
+ private String lender;
+
+ @ApiModelProperty("褰掕繕-妫�鏌ヤ汉")
+ private String rummager;
+
+ @ApiModelProperty("0锛氬�熺敤 1:褰掕繕")
+ private String status;
+
+ @ApiModelProperty("褰掕繕浜�")
+ private String returnedPerson;
+
+ @ApiModelProperty("褰掕繕-鏃ユ湡")
+ private LocalDateTime returnDate;
+
+ @ApiModelProperty("褰掕繕-瀹屽ソ鎬�")
+ private String returnIntegrity;
+
+ @TableField(fill = FieldFill.INSERT)
+ private String createUser;
+
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateUser;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/FeCalibrationScheduleService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeCalibrationScheduleService.java
new file mode 100644
index 0000000..aaebd46
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeCalibrationScheduleService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.pojo.FeCalibrationSchedule;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+public interface FeCalibrationScheduleService extends IService<FeCalibrationSchedule> {
+
+
+ IPage<FeCalibrationSchedule> page(Page page,String instrumentName, String managementNumber);
+
+ /**
+ * 閲忓�兼函婧愯鍒掑鍑簑ord
+ *
+ * @param response 鍝嶅簲娣诲姞word
+ */
+ void exportWordOfValueTraceabilityPlan(HttpServletResponse response);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceInspectionService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceInspectionService.java
new file mode 100644
index 0000000..ea02235
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceInspectionService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+public interface FeStandardSubstanceAcceptanceInspectionService extends IService<FeStandardSubstanceAcceptanceInspection> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceService.java
new file mode 100644
index 0000000..ba3a70e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceService.java
@@ -0,0 +1,33 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.dto.AcceptanceDto;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.require.vo.AcceptanceDetailsVo;
+import com.ruoyi.require.vo.AcceptanceVo;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+public interface FeStandardSubstanceAcceptanceService extends IService<FeStandardSubstanceAcceptance> {
+
+
+ void addAcceptance(AcceptanceDto dto);
+
+ IPage<AcceptanceVo> getPageAcceptance(Page page, String name);
+
+ AcceptanceDetailsVo getAcceptanceDetails(Integer id);
+
+ Integer deleteAcceptance(Integer id);
+
+ void exportFeStandardSubstanceAcceptance(HttpServletResponse response);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceRecordService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceRecordService.java
new file mode 100644
index 0000000..a77f503
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceRecordService.java
@@ -0,0 +1,30 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.require.vo.SubstanceRecordVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+public interface FeStandardSubstanceRecordService extends IService<FeStandardSubstanceRecord> {
+
+
+ void borrowSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord);
+
+ void returnSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord);
+
+ List<FeStandardSubstanceRecord> getSubstanceRecord(Integer id);
+
+ IPage<SubstanceRecordVo> getPage(Page page, SubstanceRecordVo vo);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceService.java
new file mode 100644
index 0000000..374db35
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.pojo.FeStandardSubstance;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+public interface FeStandardSubstanceService extends IService<FeStandardSubstance> {
+
+ IPage<FeStandardSubstance> page(Page page, FeStandardSubstance feStandardSubstance);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeCalibrationScheduleServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeCalibrationScheduleServiceImpl.java
new file mode 100644
index 0000000..80f9f06
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeCalibrationScheduleServiceImpl.java
@@ -0,0 +1,75 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.ruoyi.basic.util.HackLoopTableRenderPolicy;
+import com.ruoyi.require.mapper.FeCalibrationScheduleMapper;
+import com.ruoyi.require.pojo.FeCalibrationSchedule;
+import com.ruoyi.require.service.FeCalibrationScheduleService;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+@Service
+public class FeCalibrationScheduleServiceImpl extends ServiceImpl<FeCalibrationScheduleMapper, FeCalibrationSchedule> implements FeCalibrationScheduleService {
+
+ @Override
+ public IPage<FeCalibrationSchedule> page(Page page, String instrumentName, String managementNumber) {
+ IPage<FeCalibrationSchedule> ipage = this.baseMapper.ipage(page,instrumentName, managementNumber);
+ return ipage;
+ }
+
+ @Override
+ public void exportWordOfValueTraceabilityPlan(HttpServletResponse response) {
+ List<FeCalibrationSchedule> feCalibrationSchedules = this.baseMapper.selectList(null);
+
+ int size = feCalibrationSchedules.size();
+ for (int i = 0; i < size; i++) {
+ FeCalibrationSchedule feCalibrationSchedule = feCalibrationSchedules.get(i);
+ feCalibrationSchedule.setIndex(i + 1);
+ }
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/value-traceability-plan.docx");
+ Configure configure = Configure.builder()
+ .bind("feCalibrationSchedule", new HackLoopTableRenderPolicy())
+ .build();
+ FeCalibrationSchedule feCalibrationSchedule = size > 0 ? feCalibrationSchedules.get(0) : null;
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("feCalibrationSchedule", feCalibrationSchedules);
+ }}
+ );
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "浠櫒璁惧閲忓�兼函婧愮鐞嗘�讳綋璁″垝", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java
new file mode 100644
index 0000000..1e2cd6e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.mapper.FeStandardSubstanceAcceptanceInspectionMapper;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.require.service.FeStandardSubstanceAcceptanceInspectionService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+@Service
+public class FeStandardSubstanceAcceptanceInspectionServiceImpl extends ServiceImpl<FeStandardSubstanceAcceptanceInspectionMapper, FeStandardSubstanceAcceptanceInspection> implements FeStandardSubstanceAcceptanceInspectionService {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java
new file mode 100644
index 0000000..291b440
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java
@@ -0,0 +1,116 @@
+package com.ruoyi.require.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.dto.AcceptanceDto;
+import com.ruoyi.require.mapper.FeStandardSubstanceAcceptanceInspectionMapper;
+import com.ruoyi.require.mapper.FeStandardSubstanceAcceptanceMapper;
+import com.ruoyi.require.mapper.FeStandardSubstanceMapper;
+import com.ruoyi.require.pojo.FeStandardSubstance;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.require.service.FeStandardSubstanceAcceptanceInspectionService;
+import com.ruoyi.require.service.FeStandardSubstanceAcceptanceService;
+import com.ruoyi.require.vo.AcceptanceDetailsVo;
+import com.ruoyi.require.vo.AcceptanceVo;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Service
+public class FeStandardSubstanceAcceptanceServiceImpl extends ServiceImpl<FeStandardSubstanceAcceptanceMapper, FeStandardSubstanceAcceptance> implements FeStandardSubstanceAcceptanceService {
+
+ @Resource
+ private FeStandardSubstanceAcceptanceInspectionMapper feStandardSubstanceAcceptanceInspectionMapper;
+ @Resource
+ private FeStandardSubstanceAcceptanceInspectionService feStandardSubstanceAcceptanceInspectionService;
+ @Resource
+ private FeStandardSubstanceMapper feStandardSubstanceMapper;
+
+
+
+ @Override
+ public void addAcceptance(AcceptanceDto dto) {
+ FeStandardSubstanceAcceptance acceptance = dto.getAcceptance();
+ this.baseMapper.insert(acceptance);
+ List<FeStandardSubstanceAcceptanceInspection> list = dto.getList();
+ if (CollectionUtils.isNotEmpty(list)) {
+ list.forEach(v -> {
+ v.setAcceptanceId(acceptance.getId());
+ });
+ feStandardSubstanceAcceptanceInspectionService.saveBatch(list);
+ }
+ }
+
+ @Override
+ public IPage<AcceptanceVo> getPageAcceptance(Page page, String name) {
+ return this.baseMapper.getPageAcceptance(page,name);
+ }
+
+ @Override
+ public AcceptanceDetailsVo getAcceptanceDetails(Integer id) {
+ FeStandardSubstanceAcceptance acceptance = this.baseMapper.selectById(id);
+ FeStandardSubstance substance = feStandardSubstanceMapper.selectById(acceptance.getSubstanceId());
+ QueryWrapper<FeStandardSubstanceAcceptanceInspection> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("acceptance_id",id);
+ List<FeStandardSubstanceAcceptanceInspection> list = feStandardSubstanceAcceptanceInspectionMapper.selectList(queryWrapper);
+ AcceptanceDetailsVo vo = new AcceptanceDetailsVo();
+ vo.setSubstance(substance);
+ vo.setAcceptance(acceptance);
+ vo.setList(list);
+ return vo;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Integer deleteAcceptance(Integer id) {
+ feStandardSubstanceAcceptanceInspectionMapper.delete(new QueryWrapper<FeStandardSubstanceAcceptanceInspection>()
+ .lambda().eq(FeStandardSubstanceAcceptanceInspection::getAcceptanceId,id));
+ return this.baseMapper.deleteById(id);
+ }
+
+ @Override
+ public void exportFeStandardSubstanceAcceptance(HttpServletResponse response) {
+ List<FeStandardSubstanceAcceptance> list = this.list();
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("UTF-8");
+ // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+ try {
+ String fileName = URLEncoder.encode("鏍囧噯鐗╄川楠屾敹", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ // 鏂板缓ExcelWriter
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+ WriteSheet writeSheet = EasyExcel.writerSheet(0, "鏍囧噯鐗╄川楠屾敹").head(FeStandardSubstanceAcceptance.class).build();
+ excelWriter.write(list, writeSheet);
+ // 鍏抽棴娴�
+ excelWriter.finish();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
new file mode 100644
index 0000000..134e4ba
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
@@ -0,0 +1,79 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.require.mapper.FeStandardSubstanceMapper;
+import com.ruoyi.require.mapper.FeStandardSubstanceRecordMapper;
+import com.ruoyi.require.pojo.FeStandardSubstance;
+import com.ruoyi.require.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.require.service.FeStandardSubstanceRecordService;
+import com.ruoyi.require.vo.SubstanceRecordVo;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Transactional(rollbackFor = Exception.class)
+@Service
+public class FeStandardSubstanceRecordServiceImpl extends ServiceImpl<FeStandardSubstanceRecordMapper, FeStandardSubstanceRecord> implements FeStandardSubstanceRecordService {
+
+ @Resource
+ private FeStandardSubstanceMapper feStandardSubstanceMapper;
+
+ @Override
+ public void borrowSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord) {
+ FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectOne(Wrappers.<FeStandardSubstance>lambdaQuery()
+ .eq(FeStandardSubstance::getId, feStandardSubstanceRecord.getSubstanceId())
+ .eq(FeStandardSubstance::getState, 0)
+ .last("limit 1"));
+ if (ObjectUtils.isEmpty(standardSubstance)){
+ throw new ErrorException("璇ョ墿璐ㄥ凡琚�熷嚭锛�");
+ }
+ this.baseMapper.insert(feStandardSubstanceRecord);
+ standardSubstance.setState(1);
+ feStandardSubstanceMapper.updateById(standardSubstance);
+ }
+
+ @Override
+ public void returnSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord) {
+ FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectOne(Wrappers.<FeStandardSubstance>lambdaQuery()
+ .eq(FeStandardSubstance::getId, feStandardSubstanceRecord.getSubstanceId())
+ .eq(FeStandardSubstance::getState, 1));
+ if (ObjectUtils.isEmpty(standardSubstance)){
+ throw new ErrorException("璇ョ墿璐ㄦ湭琚鐢紝鏃犻渶褰掕繕锛�");
+ }
+ standardSubstance.setState(0);
+ feStandardSubstanceMapper.updateById(standardSubstance);
+ System.out.println(feStandardSubstanceRecord);
+ baseMapper.update(feStandardSubstanceRecord, Wrappers.<FeStandardSubstanceRecord>lambdaUpdate()
+ .eq(FeStandardSubstanceRecord::getSubstanceId, feStandardSubstanceRecord.getSubstanceId())
+ .eq(FeStandardSubstanceRecord::getStatus, 0));
+ }
+
+ @Override
+ public List<FeStandardSubstanceRecord> getSubstanceRecord(Integer id) {
+ QueryWrapper<FeStandardSubstanceRecord> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("substance_id",id);
+ List<FeStandardSubstanceRecord> list = this.baseMapper.selectList(queryWrapper);
+ return list;
+ }
+
+ @Override
+ public IPage<SubstanceRecordVo> getPage(Page page, SubstanceRecordVo vo) {
+ return this.baseMapper.getPage(page,vo);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceServiceImpl.java
new file mode 100644
index 0000000..141246c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceServiceImpl.java
@@ -0,0 +1,26 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.mapper.FeStandardSubstanceMapper;
+import com.ruoyi.require.pojo.FeStandardSubstance;
+import com.ruoyi.require.service.FeStandardSubstanceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+@Service
+public class FeStandardSubstanceServiceImpl extends ServiceImpl<FeStandardSubstanceMapper, FeStandardSubstance> implements FeStandardSubstanceService {
+
+ @Override
+ public IPage<FeStandardSubstance> page(Page page, FeStandardSubstance feStandardSubstance) {
+ return this.baseMapper.getPage(page,feStandardSubstance);
+ }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceDetailsVo.java b/cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceDetailsVo.java
new file mode 100644
index 0000000..44777a4
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceDetailsVo.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.vo;
+
+import com.ruoyi.require.pojo.FeStandardSubstance;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.require.pojo.FeStandardSubstanceAcceptanceInspection;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AcceptanceDetailsVo extends FeStandardSubstanceAcceptance {
+
+ @ApiModelProperty("鐗╄川娓呭崟")
+ private FeStandardSubstance substance;
+
+ @ApiModelProperty("楠屾敹鍗�")
+ private FeStandardSubstanceAcceptance acceptance;
+
+ @ApiModelProperty("寮�绠辫褰�")
+ private List<FeStandardSubstanceAcceptanceInspection> list;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceVo.java b/cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceVo.java
new file mode 100644
index 0000000..09d0374
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceVo.java
@@ -0,0 +1,46 @@
+package com.ruoyi.require.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class AcceptanceVo {
+
+ @ApiModelProperty("妫�楠岃〃id")
+ private Integer id;
+
+ @ApiModelProperty("鏍囧噯鐗╄川鍚嶇О")
+ private String name;
+
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
+ private String model;
+
+ @ApiModelProperty("鐢熶骇鍘傚")
+ private String factoryManufacturer;
+
+ @ApiModelProperty("鍑哄満缂栧彿")
+ private String factoryNum;
+
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String manageNum;
+
+ @ApiModelProperty("涓嶇‘瀹氬害")
+ private String uncertainty;
+
+ @ApiModelProperty("鏁伴噺")
+ private Long quantity;
+
+ @ApiModelProperty("璐疆鏃ユ湡")
+ private LocalDateTime acquisitionDate;
+
+ @ApiModelProperty("鏈夋晥鏈�")
+ private LocalDateTime effectiveDate;
+
+ @ApiModelProperty("鏂囨。缂栧彿")
+ private String fileNum;
+
+ @ApiModelProperty("瀛樻斁浣嶇疆")
+ private String position;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/vo/SubstanceRecordVo.java b/cnas-require/src/main/java/com/ruoyi/require/vo/SubstanceRecordVo.java
new file mode 100644
index 0000000..00de20d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/vo/SubstanceRecordVo.java
@@ -0,0 +1,46 @@
+package com.ruoyi.require.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class SubstanceRecordVo {
+
+ @ApiModelProperty("id")
+ private Integer id;
+
+ @ApiModelProperty("鏍囧噯鐗╄川鍚嶇О")
+ private String name;
+
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
+ private String model;
+
+ @ApiModelProperty("鍑哄満缂栧彿")
+ private String factoryNum;
+
+ @ApiModelProperty("鏁伴噺")
+ private Long quantity;
+
+ @ApiModelProperty("棰嗙敤浜�")
+ private String borrowUser;
+
+ @ApiModelProperty("鍊熷嚭鏃ユ湡")
+ private LocalDateTime borrowDate;
+
+ @ApiModelProperty("褰掕繕鏃ユ湡")
+ private LocalDateTime returnDate;
+
+ @ApiModelProperty("褰掕繕浜�")
+ private String returnedPerson;
+
+ @ApiModelProperty("瀹屽ソ鎬�")
+ private String returnIntegrity;
+
+ @ApiModelProperty("0锛氬�熺敤 1:褰掕繕")
+ private String status;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+}
diff --git a/inspect-server/pom.xml b/inspect-server/pom.xml
index fc8d299..38a4862 100644
--- a/inspect-server/pom.xml
+++ b/inspect-server/pom.xml
@@ -24,6 +24,11 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.deepoove</groupId>
+ <artifactId>poi-tl</artifactId>
+ <version>1.12.2</version>
+ </dependency>
</dependencies>
<properties>
diff --git a/inspect-server/src/main/java/com/ruoyi/basic/util/HackLoopTableRenderPolicy.java b/inspect-server/src/main/java/com/ruoyi/basic/util/HackLoopTableRenderPolicy.java
new file mode 100644
index 0000000..482f920
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/basic/util/HackLoopTableRenderPolicy.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2014-2020 Sayi
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.ruoyi.basic.util;
+
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.exception.RenderException;
+import com.deepoove.poi.policy.RenderPolicy;
+import com.deepoove.poi.render.compute.RenderDataCompute;
+import com.deepoove.poi.render.processor.DocumentProcessor;
+import com.deepoove.poi.resolver.TemplateResolver;
+import com.deepoove.poi.template.ElementTemplate;
+import com.deepoove.poi.template.MetaTemplate;
+import com.deepoove.poi.template.run.RunTemplate;
+import com.deepoove.poi.util.ReflectionUtils;
+import com.deepoove.poi.util.TableTools;
+import org.apache.poi.xwpf.usermodel.*;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlObject;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Hack for loop table row
+ *
+ * @author Sayi
+ *
+ */
+public class HackLoopTableRenderPolicy implements RenderPolicy {
+
+ private String prefix;
+ private String suffix;
+ private boolean onSameLine;
+
+ public HackLoopTableRenderPolicy() {
+ this(false);
+ }
+
+ public HackLoopTableRenderPolicy(boolean onSameLine) {
+ this("[", "]", onSameLine);
+ }
+
+ public HackLoopTableRenderPolicy(String prefix, String suffix) {
+ this(prefix, suffix, false);
+ }
+
+ public HackLoopTableRenderPolicy(String prefix, String suffix, boolean onSameLine) {
+ this.prefix = prefix;
+ this.suffix = suffix;
+ this.onSameLine = onSameLine;
+ }
+
+ @Override
+ public void render(ElementTemplate eleTemplate, Object data, XWPFTemplate template) {
+ RunTemplate runTemplate = (RunTemplate) eleTemplate;
+ XWPFRun run = runTemplate.getRun();
+ try {
+ if (!TableTools.isInsideTable(run)) {
+ throw new IllegalStateException(
+ "The template tag " + runTemplate.getSource() + " must be inside a table");
+ }
+ XWPFTableCell tagCell = (XWPFTableCell) ((XWPFParagraph) run.getParent()).getBody();
+ XWPFTable table = tagCell.getTableRow().getTable();
+ run.setText("", 0);
+
+ int templateRowIndex = getTemplateRowIndex(tagCell);
+ if (null != data && data instanceof Iterable) {
+ Iterator<?> iterator = ((Iterable<?>) data).iterator();
+ XWPFTableRow templateRow = table.getRow(templateRowIndex);
+ int insertPosition = templateRowIndex;
+
+ TemplateResolver resolver = new TemplateResolver(template.getConfig().copy(prefix, suffix));
+ boolean firstFlag = true;
+ while (iterator.hasNext()) {
+ insertPosition = templateRowIndex++;
+ XWPFTableRow nextRow = table.insertNewTableRow(insertPosition);
+ setTableRow(table, templateRow, insertPosition);
+
+ // double set row
+ XmlCursor newCursor = templateRow.getCtRow().newCursor();
+ newCursor.toPrevSibling();
+ XmlObject object = newCursor.getObject();
+ nextRow = new XWPFTableRow((CTRow) object, table);
+ if (!firstFlag) {
+ // update VMerge cells for non-first row
+ List<XWPFTableCell> tableCells = nextRow.getTableCells();
+ for (XWPFTableCell cell : tableCells) {
+ CTTcPr tcPr = TableTools.getTcPr(cell);
+ CTVMerge vMerge = tcPr.getVMerge();
+ if (null == vMerge) continue;
+ if (STMerge.RESTART == vMerge.getVal()) {
+ vMerge.setVal(STMerge.CONTINUE);
+ }
+ }
+ } else {
+ firstFlag = false;
+ }
+ setTableRow(table, nextRow, insertPosition);
+
+ RenderDataCompute dataCompute = template.getConfig().getRenderDataComputeFactory()
+ .newCompute(iterator.next());
+ List<XWPFTableCell> cells = nextRow.getTableCells();
+ cells.forEach(cell -> {
+ List<MetaTemplate> templates = resolver.resolveBodyElements(cell.getBodyElements());
+ new DocumentProcessor(template, resolver, dataCompute).process(templates);
+ });
+ }
+ }
+
+ table.removeRow(templateRowIndex);
+ afterloop(table, data);
+ } catch (Exception e) {
+ throw new RenderException("HackLoopTable for " + eleTemplate + "error: " + e.getMessage(), e);
+ }
+ }
+
+ private int getTemplateRowIndex(XWPFTableCell tagCell) {
+ XWPFTableRow tagRow = tagCell.getTableRow();
+ return onSameLine ? getRowIndex(tagRow) : (getRowIndex(tagRow) + 1);
+ }
+
+ protected void afterloop(XWPFTable table, Object data) {
+ }
+
+ @SuppressWarnings("unchecked")
+ private void setTableRow(XWPFTable table, XWPFTableRow templateRow, int pos) {
+ List<XWPFTableRow> rows = (List<XWPFTableRow>) ReflectionUtils.getValue("tableRows", table);
+ rows.set(pos, templateRow);
+ table.getCTTbl().setTrArray(pos, templateRow.getCtRow());
+ }
+
+ private int getRowIndex(XWPFTableRow row) {
+ List<XWPFTableRow> rows = row.getTable().getRows();
+ return rows.indexOf(row);
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index ab947ba..2bd747c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -339,6 +339,7 @@
<module>basic-server</module>
<module>inspect-server</module>
<module>performance-server</module>
+ <module>cnas-require</module>
</modules>
<packaging>pom</packaging>
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 0009314..a63e7aa 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -87,6 +87,12 @@
<version>${ruoyi.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>cnas-require</artifactId>
+ <version>${ruoyi.version}</version>
+ </dependency>
+
</dependencies>
<build>
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java
new file mode 100644
index 0000000..4a39760
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java
@@ -0,0 +1,9 @@
+package com.ruoyi.framework.exception;
+
+public class ErrorException extends RuntimeException{
+
+ public ErrorException(String msg){
+ super(msg);
+ }
+
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java
new file mode 100644
index 0000000..95bfc18
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java
@@ -0,0 +1,18 @@
+package com.ruoyi.framework.exception;
+
+public class MyFileException extends RuntimeException{
+ public MyFileException() {
+ }
+
+ public MyFileException(String message) {
+ super(message);
+ }
+
+ public MyFileException(Throwable cause) {
+ super(cause);
+ }
+
+ public MyFileException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
--
Gitblit v1.9.3