Compare commits
12 Commits
cdc16bed0d
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 9a44d4361f | |||
| 5a643045f0 | |||
| 5e528175b8 | |||
| 5360e0da9e | |||
| c4ffd9c0fc | |||
| f73cad7f65 | |||
| e323b34f1e | |||
| e621a36bad | |||
| 4f216a9482 | |||
| 3d7967d593 | |||
| c795636ea4 | |||
| 93fb02eb92 |
21
.fleet/run.json
Normal file
21
.fleet/run.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"type": "spring-boot",
|
||||
"name": "PhysicalApplication",
|
||||
"mainClass": "org.jeecg.PhysicalApplication",
|
||||
"module": "physical-launcher",
|
||||
"options": ["-XX:TieredStopAtLevel=1", "-Dspring.output.ansi.enabled=always", "-Dcom.sun.management.jmxremote", "-Dspring.jmx.enabled=true", "-Dspring.liveBeansView.mbeanDomain", "-Dspring.application.admin.enabled=true", "-Dmanagement.endpoints.jmx.exposure.include=*", "-Dfile.encoding=UTF-8", "-Dsun.stdout.encoding=UTF-8", "-Dsun.stderr.encoding=UTF-8"],
|
||||
"activeProfiles": [""],
|
||||
"workingDir": "$PROJECT_DIR$",
|
||||
"dependsOn": ["Build"]
|
||||
},
|
||||
{
|
||||
"type": "jps-build",
|
||||
"name": "Build",
|
||||
"module": "physical-launcher",
|
||||
"includeTests": false
|
||||
}
|
||||
]
|
||||
}
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -14,5 +14,6 @@ os_del_doc.cmd
|
||||
.svn
|
||||
derby.log
|
||||
/scripts/downloaded_files/
|
||||
/scripts/downloaded_files_old/
|
||||
.DS_Store
|
||||
/__pycache__/
|
||||
BIN
output.zip
Normal file
BIN
output.zip
Normal file
Binary file not shown.
BIN
output/供方财产登记表.pdf
Normal file
BIN
output/供方财产登记表.pdf
Normal file
Binary file not shown.
BIN
output/合同/委托书等评审表.pdf
Normal file
BIN
output/合同/委托书等评审表.pdf
Normal file
Binary file not shown.
BIN
output/沟通记录表.pdf
Normal file
BIN
output/沟通记录表.pdf
Normal file
Binary file not shown.
BIN
output/测试过程记录.pdf
Normal file
BIN
output/测试过程记录.pdf
Normal file
Binary file not shown.
BIN
output/试验大纲评审表.pdf
Normal file
BIN
output/试验大纲评审表.pdf
Normal file
Binary file not shown.
BIN
output/试验报告评审表.pdf
Normal file
BIN
output/试验报告评审表.pdf
Normal file
Binary file not shown.
BIN
output/试验流程检查单.pdf
Normal file
BIN
output/试验流程检查单.pdf
Normal file
Binary file not shown.
BIN
output/辐照试验委托书.pdf
Normal file
BIN
output/辐照试验委托书.pdf
Normal file
Binary file not shown.
BIN
output/辐照试验计划表.pdf
Normal file
BIN
output/辐照试验计划表.pdf
Normal file
Binary file not shown.
BIN
output/辐照试验(钻源)及退火过程记录.pdf
Normal file
BIN
output/辐照试验(钻源)及退火过程记录.pdf
Normal file
Binary file not shown.
@@ -60,6 +60,7 @@ public class SsrfFileTypeFilter {
|
||||
|
||||
//压缩文件
|
||||
FILE_TYPE_WHITE_LIST.add("zip");
|
||||
FILE_TYPE_WHITE_LIST.add("log");
|
||||
FILE_TYPE_WHITE_LIST.add("rar");
|
||||
FILE_TYPE_WHITE_LIST.add("7z");
|
||||
FILE_TYPE_WHITE_LIST.add("tar");
|
||||
|
||||
25044
physical-boot.sql
25044
physical-boot.sql
File diff suppressed because one or more lines are too long
@@ -17,6 +17,16 @@
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-undertow</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jeecgframework.boot</groupId>
|
||||
|
||||
@@ -168,7 +168,7 @@ spring:
|
||||
datasource:
|
||||
master:
|
||||
# url: jdbc:mysql://127.0.0.1:3306/physical-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
url: jdbc:mysql://47.102.126.67:23306/physical-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
url: jdbc:mysql://47.102.126.67:23306/physical-boot-prod?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: urwTocIA1f395t
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
|
||||
@@ -40,11 +40,11 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class DocumentLibraryController extends JeecgController<DocumentLibrary, IDocumentLibraryService> {
|
||||
@Autowired
|
||||
private IDocumentLibraryService documentLibraryService;
|
||||
private IDocumentLibraryService documentLibraryService;
|
||||
@Autowired
|
||||
private IDocumentFavoritesService documentFavoritesService;
|
||||
private IDocumentFavoritesService documentFavoritesService;
|
||||
@Autowired
|
||||
private ISysUserService userService;
|
||||
private ISysUserService userService;
|
||||
@Autowired
|
||||
private IDocumentVisitHistoryService documentVisitHistoryService;
|
||||
|
||||
@@ -152,10 +152,14 @@ public class DocumentLibraryController extends JeecgController<DocumentLibrary,
|
||||
@RequiresPermissions("library:document_library:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody DocumentLibrary documentLibrary, HttpServletRequest request) {
|
||||
documentLibraryService.updateById(documentLibrary);
|
||||
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
DocumentLibrary byId = documentLibraryService.getById(documentLibrary.getId());
|
||||
if (StringUtils.equals(byId.getCreateBy(), "admin") && !StringUtils.equals(userByName.getUsername(), "admin")) {
|
||||
return Result.OK("您无权编辑 Admin 的知识库!");
|
||||
}
|
||||
documentLibraryService.updateById(documentLibrary);
|
||||
if (StringUtils.equals(documentLibrary.getType(), "DOCUMENT")) {
|
||||
DocumentVisitHistory his = documentVisitHistoryService.findByUserAndDocId(userByName.getId(), documentLibrary.getId());
|
||||
his.setDocumentId(documentLibrary.getId());
|
||||
|
||||
@@ -45,12 +45,12 @@ public class ExperimentAnnealProcessController extends JeecgController<Experimen
|
||||
private ISysUserService userService;
|
||||
|
||||
@Autowired
|
||||
private IExperimentService experimentService;
|
||||
private IExperimentService experimentService;
|
||||
@Autowired
|
||||
private IExperimentLogService experimentLogService;
|
||||
|
||||
@Autowired
|
||||
private IExperimentSampleInfoService experimentSampleInfoService;
|
||||
private IExperimentSampleInfoService experimentSampleInfoService;
|
||||
@Autowired
|
||||
private IExperimentDeviationConditionService experimentDeviationConditionService;
|
||||
@Autowired
|
||||
@@ -100,19 +100,22 @@ public class ExperimentAnnealProcessController extends JeecgController<Experimen
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentService.changeStatus(experimentId, ExperimentStatus.PROGRESSING);
|
||||
|
||||
experimentAnnealProcessService.saveWithDetails(experimentAnnealProcess,"add");
|
||||
experimentAnnealProcessService.saveWithDetails(experimentAnnealProcess, "add");
|
||||
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("添加退火过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
@@ -139,19 +142,22 @@ public class ExperimentAnnealProcessController extends JeecgController<Experimen
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentService.changeStatus(experimentId, ExperimentStatus.PROGRESSING);
|
||||
|
||||
experimentAnnealProcessService.saveWithDetails(experimentAnnealProcess,"edit");
|
||||
experimentAnnealProcessService.saveWithDetails(experimentAnnealProcess, "edit");
|
||||
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("编辑退火过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
return Result.OK("编辑成功!");
|
||||
@@ -177,15 +183,18 @@ public class ExperimentAnnealProcessController extends JeecgController<Experimen
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("删除退火过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
|
||||
@@ -171,6 +171,13 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
||||
if (!StringUtils.startsWith(experimentNo, "KC")) {
|
||||
return Result.error("实验编号格式不正确!");
|
||||
}
|
||||
if (StringUtils.isBlank(experiment.getId())) {
|
||||
Experiment dbExp = experimentService.getByExperimentNo(experimentNo);
|
||||
if (Objects.isNull(dbExp)) {
|
||||
return Result.error("实验数据不正确!");
|
||||
}
|
||||
experiment.setId(dbExp.getId());
|
||||
}
|
||||
//校验试验的基本信息
|
||||
String result = validateSampleInfos(experiment);
|
||||
if (StringUtils.isNotBlank(result)) {
|
||||
@@ -257,6 +264,10 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
||||
return Result.error("实验状态不正确!");
|
||||
}
|
||||
}*/
|
||||
Experiment dbExp = experimentService.getByExperimentNo(experimentNo);
|
||||
if (Objects.nonNull(dbExp) && StringUtils.isBlank(experiment.getId())) {
|
||||
experiment.setId(dbExp.getId());
|
||||
}
|
||||
experiment.setStatus(ExperimentStatus.STAGING);
|
||||
experimentService.saveWithDetail(experiment);
|
||||
|
||||
|
||||
@@ -80,8 +80,10 @@ public class ExperimentDeviationConditionController
|
||||
if (StringUtils.contains(sampleId, ",")) {
|
||||
for (String id : sampleId.split(",")) {
|
||||
ExperimentDeviationCondition cloned = ObjectUtils.clone(experimentDeviationCondition);
|
||||
cloned.setSampleId(id);
|
||||
experimentDeviationConditionService.save(experimentDeviationCondition);
|
||||
if (ObjectUtils.isNotEmpty(cloned)) {
|
||||
cloned.setSampleId(id);
|
||||
experimentDeviationConditionService.save(cloned);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
experimentDeviationConditionService.save(experimentDeviationCondition);
|
||||
@@ -106,8 +108,10 @@ public class ExperimentDeviationConditionController
|
||||
if (StringUtils.contains(sampleId, ",")) {
|
||||
for (String id : sampleId.split(",")) {
|
||||
ExperimentDeviationCondition cloned = ObjectUtils.clone(experimentDeviationCondition);
|
||||
cloned.setSampleId(id);
|
||||
experimentDeviationConditionService.saveOrUpdate(experimentDeviationCondition);
|
||||
if (ObjectUtils.isNotEmpty(cloned)) {
|
||||
cloned.setSampleId(id);
|
||||
experimentDeviationConditionService.saveOrUpdate(cloned);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
experimentDeviationConditionService.updateById(experimentDeviationCondition);
|
||||
|
||||
@@ -45,7 +45,7 @@ public class ExperimentRadiationProcessController extends JeecgController<Experi
|
||||
@Autowired
|
||||
private IExperimentLogService experimentLogService;
|
||||
@Autowired
|
||||
private ISysUserService userService;
|
||||
private ISysUserService userService;
|
||||
|
||||
@Autowired
|
||||
private IExperimentService experimentService;
|
||||
@@ -96,9 +96,14 @@ public class ExperimentRadiationProcessController extends JeecgController<Experi
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentRadiationProcess.setId(null);
|
||||
|
||||
@@ -109,8 +114,6 @@ public class ExperimentRadiationProcessController extends JeecgController<Experi
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("添加辐照过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
@@ -137,9 +140,14 @@ public class ExperimentRadiationProcessController extends JeecgController<Experi
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentService.changeStatus(experimentId, ExperimentStatus.PROGRESSING);
|
||||
experimentRadiationProcessService.saveOrUpdate(experimentRadiationProcess);
|
||||
@@ -149,8 +157,6 @@ public class ExperimentRadiationProcessController extends JeecgController<Experi
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("编辑辐照过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
@@ -177,15 +183,18 @@ public class ExperimentRadiationProcessController extends JeecgController<Experi
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED) || StringUtils.equals(dbExperiment.getStatus(),
|
||||
ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("删除辐照过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
experimentRadiationProcessService.removeById(id);
|
||||
|
||||
@@ -94,10 +94,14 @@ public class ExperimentTestProcessController extends JeecgController<ExperimentT
|
||||
Experiment dbExperiment = experimentService.getById(experimentId);
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
}String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)||StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentTestProcess.setId(null);
|
||||
|
||||
experimentService.changeStatus(experimentId, ExperimentStatus.PROGRESSING);
|
||||
@@ -107,8 +111,6 @@ public class ExperimentTestProcessController extends JeecgController<ExperimentT
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentTestProcess.getExperimentId());
|
||||
experimentLog.setLogContent("添加测试过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
@@ -134,10 +136,14 @@ public class ExperimentTestProcessController extends JeecgController<ExperimentT
|
||||
Experiment dbExperiment = experimentService.getById(experimentId);
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
}String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)||StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
|
||||
experimentService.changeStatus(experimentId, ExperimentStatus.PROGRESSING);
|
||||
|
||||
@@ -146,8 +152,6 @@ public class ExperimentTestProcessController extends JeecgController<ExperimentT
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("编辑测试过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
@@ -174,15 +178,17 @@ public class ExperimentTestProcessController extends JeecgController<ExperimentT
|
||||
Experiment dbExperiment = experimentService.getById(experimentId);
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
}String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)||StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.REVIEWED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("删除测试过程");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ public class ExperimentUserController extends JeecgController<ExperimentUser, IE
|
||||
@Autowired
|
||||
private IExperimentLogService experimentLogService;
|
||||
@Autowired
|
||||
private ISysUserService userService;
|
||||
private ISysUserService userService;
|
||||
|
||||
@Autowired
|
||||
private IExperimentService experimentService;
|
||||
@@ -91,15 +91,18 @@ public class ExperimentUserController extends JeecgController<ExperimentUser, IE
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentUserService.save(experimentUser);
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentUser.getExperimentId());
|
||||
experimentLog.setLogContent("添加试验人员");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
return Result.OK("添加成功!");
|
||||
@@ -110,6 +113,9 @@ public class ExperimentUserController extends JeecgController<ExperimentUser, IE
|
||||
@RequiresPermissions("database:experiment_user:add")
|
||||
@PostMapping(value = "/batchAdd")
|
||||
public Result<String> batchAdd(@RequestBody List<ExperimentUser> experimentUserList, HttpServletRequest request) {
|
||||
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
for (ExperimentUser v : experimentUserList) {
|
||||
String experimentId = v.getExperimentId();
|
||||
if (StringUtils.isBlank(experimentId)) {
|
||||
@@ -120,16 +126,18 @@ public class ExperimentUserController extends JeecgController<ExperimentUser, IE
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
experimentUserService.save(v);
|
||||
}
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentUserList.get(0).getExperimentId());
|
||||
experimentLog.setLogContent("添加试验人员");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
return Result.OK("添加成功!");
|
||||
@@ -157,14 +165,17 @@ public class ExperimentUserController extends JeecgController<ExperimentUser, IE
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(byId.getExperimentId());
|
||||
experimentLog.setLogContent("编辑试验人员");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
return Result.OK("编辑成功!");
|
||||
@@ -191,14 +202,17 @@ public class ExperimentUserController extends JeecgController<ExperimentUser, IE
|
||||
if (Objects.isNull(dbExperiment)) {
|
||||
return Result.error("试验数据不存在!");
|
||||
}
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
// 超级管理不用判断状态和修改状态,只修改数据。 20250511 邓春
|
||||
if (!"admin".equals(userByName.getUsername())) {
|
||||
if (StringUtils.equals(dbExperiment.getStatus(), ExperimentStatus.COMPLETED)) {
|
||||
return Result.error("试验状态:[" + dbExperiment.getStatus() + "]不能进行修改!");
|
||||
}
|
||||
}
|
||||
ExperimentLog experimentLog = new ExperimentLog();
|
||||
experimentLog.setExperimentId(experimentId);
|
||||
experimentLog.setLogContent("删除试验人员");
|
||||
String username = JwtUtil.getUserNameByToken(request);
|
||||
SysUser userByName = userService.getUserByName(username);
|
||||
experimentLog.setCreateBy(userByName.getRealname());
|
||||
experimentLogService.save(experimentLog);
|
||||
experimentUserService.removeById(id);
|
||||
|
||||
@@ -92,13 +92,14 @@ public class ExperimentSampleInfo implements Serializable {
|
||||
/**
|
||||
* 生产厂家
|
||||
*/
|
||||
@Schema(description = "生产厂家ID")
|
||||
private String sampleManufacturer;
|
||||
@Schema(description = "生产厂家")
|
||||
@Excel(name = "生产厂家", width = 15)
|
||||
private String sampleManufacturer;
|
||||
//
|
||||
|
||||
@Schema(description = "生产厂家名称")
|
||||
@TableField(exist = false)
|
||||
private String sampleManufacturerName;
|
||||
// @Schema(description = "生产厂家名称")
|
||||
// @TableField(exist = false)
|
||||
// private String sampleManufacturerName;
|
||||
/**
|
||||
* 图片
|
||||
*/
|
||||
|
||||
@@ -146,4 +146,11 @@ public class HistoricalDatabase implements Serializable {
|
||||
@Excel(name = "附件", width = 15)
|
||||
@Schema(description = "附件")
|
||||
private String fileUrl;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@Excel(name = "描述", width = 15)
|
||||
@Schema(description = "描述")
|
||||
private String description;
|
||||
}
|
||||
|
||||
@@ -142,7 +142,12 @@ public class LocalDatabase implements Serializable {
|
||||
@Schema(description = "样品型号")
|
||||
private String sampleModel;
|
||||
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@Excel(name = "描述", width = 15)
|
||||
@Schema(description = "描述")
|
||||
private String description;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<ExperimentReviewDTO> ExperimentReviewList;
|
||||
|
||||
@@ -71,10 +71,7 @@
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
|
||||
</where>
|
||||
<if test="loginUser.postText != null and loginUser.postText != ''">
|
||||
order by ${loginUser.postText}
|
||||
</if>
|
||||
order by e.experiment_no desc
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -18,6 +18,7 @@ public interface IExperimentService extends IService<Experiment> {
|
||||
void fetchExperimentDetail(Experiment experiment);
|
||||
|
||||
Experiment copy(Experiment oldExperiment);
|
||||
Experiment getByExperimentNo(String experimentNo);
|
||||
|
||||
void changeStatus(String experimentId, String status);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.util.Optional;
|
||||
public class ExperimentSampleInfoServiceImpl extends ServiceImpl<ExperimentSampleInfoMapper, ExperimentSampleInfo>
|
||||
implements IExperimentSampleInfoService {
|
||||
@Autowired
|
||||
private IClientService clientService;
|
||||
private IClientService clientService;
|
||||
|
||||
@Override
|
||||
public ExperimentSampleInfo getById(Serializable id) {
|
||||
@@ -35,7 +35,6 @@ public class ExperimentSampleInfoServiceImpl extends ServiceImpl<ExperimentSampl
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void assembleDetails(ExperimentSampleInfo sampleInfo) {
|
||||
if (ObjUtil.isNull(sampleInfo)) {
|
||||
return;
|
||||
@@ -43,7 +42,7 @@ public class ExperimentSampleInfoServiceImpl extends ServiceImpl<ExperimentSampl
|
||||
String sampleManufacturerId = sampleInfo.getSampleManufacturer();
|
||||
if (StringUtils.isNotBlank(sampleManufacturerId)) {
|
||||
Client byId = clientService.getById(sampleManufacturerId);
|
||||
sampleInfo.setSampleManufacturerName(Optional.ofNullable(byId).map(v -> v.getName()).orElse(sampleManufacturerId));
|
||||
sampleInfo.setSampleManufacturer(Optional.ofNullable(byId).map(v -> v.getName()).orElse(sampleManufacturerId));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -243,6 +243,11 @@ public class ExperimentServiceImpl extends ServiceImpl<ExperimentMapper, Experim
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Experiment getByExperimentNo(String experimentNo) {
|
||||
return getOne(new LambdaQueryWrapper<Experiment>().eq(Experiment::getExperimentNo, experimentNo), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeStatus(String experimentId, String status) {
|
||||
Experiment dbData = getById(experimentId);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,6 +4,7 @@ from datetime import datetime
|
||||
from datetime import timedelta
|
||||
|
||||
import mysql.connector
|
||||
import pandas as pd
|
||||
from minio import Minio
|
||||
from minio.error import S3Error
|
||||
|
||||
@@ -21,13 +22,13 @@ db_config = {
|
||||
|
||||
# minio 配置
|
||||
minio_client = Minio(
|
||||
"127.0.0.1:9000", # MinIO服务器地址或IP
|
||||
"47.102.126.67:29000", # MinIO服务器地址或IP
|
||||
# "192.168.50.100:29000", # MinIO服务器地址或IP
|
||||
access_key="root", # 替换为你的Access Key
|
||||
secret_key="12345678", # 替换为你的Secret Key
|
||||
secret_key="FeF4qA6uQBHeRd", # 替换为你的Secret Key
|
||||
secure=False # 如果使用的是http则为False
|
||||
)
|
||||
bucket_name = 'physical'
|
||||
bucket_name = 'physical2'
|
||||
|
||||
|
||||
def get_md5(input_string):
|
||||
@@ -54,7 +55,7 @@ def save_to_db_import_record(connection,data):
|
||||
cursor = connection.cursor()
|
||||
try:
|
||||
"""保存数据到 MySQL 数据库"""
|
||||
insert_query = """INSERT INTO `nasa_data_record` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `device_type`, `device_name`, `device_mode`, `device_function`, `device_batch`, `manufacturer`, `experiment_date`, `data_source`, `experiment_user`, `total_count`, `file_list`,`origin_data`)
|
||||
insert_query = """INSERT INTO `nasa_data_record` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `device_type`, `device_name`, `device_mode`, `device_function`, `device_batch`, `manufacturer`, `experiment_date`, `data_source`, `experiment_user`, `total_count_nasa`, `file_list`,`origin_data`)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);"""
|
||||
cursor.execute(insert_query, data)
|
||||
connection.commit()
|
||||
|
||||
15919
scripts/nasa.json
Normal file
15919
scripts/nasa.json
Normal file
File diff suppressed because it is too large
Load Diff
232
scripts/nasa1.py
232
scripts/nasa1.py
@@ -1,4 +1,4 @@
|
||||
import csv
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
@@ -6,11 +6,14 @@ from datetime import datetime
|
||||
|
||||
import mysql.connector
|
||||
import requests
|
||||
import pandas as pd
|
||||
|
||||
from common import db_config, upload_to_minio, save_to_db_import_record, get_md5
|
||||
|
||||
# https://nepp.nasa.gov/radhome/dev/parts.cfc?method=getParts
|
||||
# https://nepp.nasa.gov/radhome/raddatabase/raddatabase.html
|
||||
# 定义 API URL
|
||||
api_url = 'https://radhome.gsfc.nasa.gov/radhome/dev/parts.cfc?method=getParts'
|
||||
api_url = 'https://nepp.nasa.gov/radhome/dev/parts.cfc?method=getParts'
|
||||
|
||||
# 设置请求头
|
||||
headers = {
|
||||
@@ -37,7 +40,7 @@ data = {
|
||||
os.makedirs('downloaded_files', exist_ok=True)
|
||||
|
||||
# 文件前缀
|
||||
file_prefix = 'https://radhome.gsfc.nasa.gov/radhome/papers/'
|
||||
file_prefix = 'https://nepp.nasa.gov/radhome/papers/'
|
||||
|
||||
# CSV 表头
|
||||
csv_header = [
|
||||
@@ -66,7 +69,7 @@ csv_header = [
|
||||
def scrape():
|
||||
nasa1_connection = mysql.connector.connect(**db_config)
|
||||
try:
|
||||
# 发送请求
|
||||
# 发送请求
|
||||
response = requests.post(api_url, headers=headers, data=data)
|
||||
response.raise_for_status() # 检查请求是否成功
|
||||
|
||||
@@ -88,119 +91,118 @@ def scrape():
|
||||
folder_path = os.path.join('downloaded_files', part_number)
|
||||
os.makedirs(folder_path, exist_ok=True)
|
||||
|
||||
# 创建 CSV 文件
|
||||
csv_file_path = os.path.join(folder_path, 'data.csv')
|
||||
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
|
||||
csv_writer = csv.writer(csv_file)
|
||||
csv_writer.writerow(csv_header) # 写入表头
|
||||
# 创建 DataFrame 并保存为 Excel 文件
|
||||
xlsx_file_path = os.path.join(folder_path, 'data.xlsx')
|
||||
|
||||
# 填写 CSV 数据
|
||||
csv_row = [
|
||||
"", # 序号
|
||||
"", # 试验对象类型
|
||||
row[3], # 试验开始日期
|
||||
"", # 试验结束日期
|
||||
"", # 试验对象名称
|
||||
row[1], # 试验对象型号
|
||||
"", # 试验对象数量
|
||||
row[6], # 试验性质
|
||||
"", # 试验目的
|
||||
"", # 装置名称
|
||||
"", # 数据提供单位
|
||||
"", # 试验委托单位
|
||||
"", # 失效判据
|
||||
"", # 失效数量
|
||||
"", # 试验结果描述
|
||||
"", # 成果
|
||||
"", # 来源项目名称
|
||||
"", # 来源项目类型
|
||||
"", # 分类
|
||||
"", # 元器件名称
|
||||
"", # 元器件型号
|
||||
"", # 元器件批号
|
||||
row[2], # 生产单位
|
||||
"", # 是否国产
|
||||
"", # 元器件成熟度
|
||||
"", # 晶圆材料
|
||||
"", # 晶圆批号
|
||||
"", # 封装材料
|
||||
"", # 封装技术
|
||||
"", # 是否倒装
|
||||
"", # 制造工艺
|
||||
"", # 工艺特征尺寸
|
||||
"", # 工艺平台
|
||||
"", # 工艺代号
|
||||
"", # 工艺版本
|
||||
"", # 质量等级
|
||||
"", # 加固措施
|
||||
"", # 工作原理
|
||||
"", # 供货能力
|
||||
"", # 应用经历
|
||||
"", # 规范手册
|
||||
"", # 器件图片
|
||||
"", # 电子系统分类
|
||||
"", # 电子系统名称
|
||||
"", # 电子系统型号
|
||||
"", # 生产单位
|
||||
"", # 电子系统功能
|
||||
"", # 电子系统加固措施
|
||||
"", # 电子系统图片
|
||||
"", # 材料名称
|
||||
"", # 材料型号
|
||||
"", # 材料组分
|
||||
"", # 材料用途
|
||||
"", # 材料生产单位
|
||||
"", # 材料物理结构
|
||||
"", # 材料使用经历
|
||||
"", # 辐照试验大纲
|
||||
"", # 大纲审核专家类别
|
||||
"", # 辐照试验所依据的标准规范
|
||||
"", # 试验步骤(过程)描述
|
||||
"", # 辐照过程是否加电
|
||||
"", # 直流偏置条件描述
|
||||
"", # 交流偏置条件描述
|
||||
"", # 时钟频率
|
||||
"", # 测试图形
|
||||
"", # 其他偏置条件
|
||||
"", # 辐照偏置原理图
|
||||
"", # 测试方式
|
||||
"", # 测试原理图
|
||||
"", # 试验用仪器名称
|
||||
"", # 试验用仪器型号
|
||||
"", # 试验用仪器生产厂家
|
||||
"", # 试验用仪器检定证书
|
||||
"", # 试验用软件名称
|
||||
"", # 试验用软件开发单位
|
||||
"", # 试验用软件版本号
|
||||
"", # 试验现场照片
|
||||
"", # 测试人员姓名
|
||||
"", # 测试人员单位
|
||||
"", # 测试人员电话
|
||||
"", # 装置运行人员
|
||||
"", # 第三方人员
|
||||
"", # 第三方人员单位
|
||||
"", # 第三方人员电话
|
||||
"", # 其他需要说明的事项
|
||||
"", # 是否采用铅铝屏蔽
|
||||
"", # 剂量率
|
||||
"", # 总剂量
|
||||
"", # 剂量等效材料
|
||||
"", # 试验对象编号
|
||||
"", # 测试参数名称
|
||||
"", # 测试参数单位
|
||||
"", # 测试参数结果
|
||||
"", # 是否为加速试验后数据
|
||||
"", # 是否为退火数据
|
||||
"", # 退火温度
|
||||
"", # 退火时间
|
||||
"", # 原始数据
|
||||
"", # 数据处理方法
|
||||
"", # 其他需要说明的事项
|
||||
]
|
||||
# 填写数据
|
||||
data_row = [
|
||||
"", # 序号
|
||||
"", # 试验对象类型
|
||||
row[3], # 试验开始日期
|
||||
"", # 试验结束日期
|
||||
"", # 试验对象名称
|
||||
row[1], # 试验对象型号
|
||||
"", # 试验对象数量
|
||||
row[6], # 试验性质
|
||||
"", # 试验目的
|
||||
"", # 装置名称
|
||||
"", # 数据提供单位
|
||||
"", # 试验委托单位
|
||||
"", # 失效判据
|
||||
"", # 失效数量
|
||||
"", # 试验结果描述
|
||||
"", # 成果
|
||||
"", # 来源项目名称
|
||||
"", # 来源项目类型
|
||||
"", # 分类
|
||||
"", # 元器件名称
|
||||
"", # 元器件型号
|
||||
"", # 元器件批号
|
||||
row[2], # 生产单位
|
||||
"", # 是否国产
|
||||
"", # 元器件成熟度
|
||||
"", # 晶圆材料
|
||||
"", # 晶圆批号
|
||||
"", # 封装材料
|
||||
"", # 封装技术
|
||||
"", # 是否倒装
|
||||
"", # 制造工艺
|
||||
"", # 工艺特征尺寸
|
||||
"", # 工艺平台
|
||||
"", # 工艺代号
|
||||
"", # 工艺版本
|
||||
"", # 质量等级
|
||||
"", # 加固措施
|
||||
"", # 工作原理
|
||||
"", # 供货能力
|
||||
"", # 应用经历
|
||||
"", # 规范手册
|
||||
"", # 器件图片
|
||||
"", # 电子系统分类
|
||||
"", # 电子系统名称
|
||||
"", # 电子系统型号
|
||||
"", # 生产单位
|
||||
"", # 电子系统功能
|
||||
"", # 电子系统加固措施
|
||||
"", # 电子系统图片
|
||||
"", # 材料名称
|
||||
"", # 材料型号
|
||||
"", # 材料组分
|
||||
"", # 材料用途
|
||||
"", # 材料生产单位
|
||||
"", # 材料物理结构
|
||||
"", # 材料使用经历
|
||||
"", # 辐照试验大纲
|
||||
"", # 大纲审核专家类别
|
||||
"", # 辐照试验所依据的标准规范
|
||||
"", # 试验步骤(过程)描述
|
||||
"", # 辐照过程是否加电
|
||||
"", # 直流偏置条件描述
|
||||
"", # 交流偏置条件描述
|
||||
"", # 时钟频率
|
||||
"", # 测试图形
|
||||
"", # 其他偏置条件
|
||||
"", # 辐照偏置原理图
|
||||
"", # 测试方式
|
||||
"", # 测试原理图
|
||||
"", # 试验用仪器名称
|
||||
"", # 试验用仪器型号
|
||||
"", # 试验用仪器生产厂家
|
||||
"", # 试验用仪器检定证书
|
||||
"", # 试验用软件名称
|
||||
"", # 试验用软件开发单位
|
||||
"", # 试验用软件版本号
|
||||
"", # 试验现场照片
|
||||
"", # 测试人员姓名
|
||||
"", # 测试人员单位
|
||||
"", # 测试人员电话
|
||||
"", # 装置运行人员
|
||||
"", # 第三方人员
|
||||
"", # 第三方人员单位
|
||||
"", # 第三方人员电话
|
||||
"", # 其他需要说明的事项
|
||||
"", # 是否采用铅铝屏蔽
|
||||
"", # 剂量率
|
||||
"", # 总剂量
|
||||
"", # 剂量等效材料
|
||||
"", # 试验对象编号
|
||||
"", # 测试参数名称
|
||||
"", # 测试参数单位
|
||||
"", # 测试参数结果
|
||||
"", # 是否为加速试验后数据
|
||||
"", # 是否为退火数据
|
||||
"", # 退火温度
|
||||
"", # 退火时间
|
||||
"", # 原始数据
|
||||
"", # 数据处理方法
|
||||
"", # 其他需要说明的事项
|
||||
]
|
||||
|
||||
# 写入 CSV 行
|
||||
csv_writer.writerow(csv_row)
|
||||
# 创建 DataFrame
|
||||
df = pd.DataFrame([data_row], columns=csv_header)
|
||||
df.to_excel(xlsx_file_path, index=False)
|
||||
|
||||
# 已直接创建了 Excel 文件,不需要再转换
|
||||
# 下载文件
|
||||
for file_name in file_links:
|
||||
file_name = file_name.strip() # 去除空格
|
||||
@@ -248,3 +250,5 @@ def scrape():
|
||||
# 输出数据
|
||||
# for row in json_data['ROWS']:
|
||||
# print(row)
|
||||
|
||||
scrape()
|
||||
220
scripts/nasa2.py
220
scripts/nasa2.py
@@ -1,10 +1,10 @@
|
||||
import csv
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
import mysql.connector
|
||||
import requests
|
||||
from lxml import html
|
||||
import pandas as pd
|
||||
|
||||
from common import db_config, upload_to_minio, save_to_db_import_record, get_md5
|
||||
|
||||
@@ -66,118 +66,116 @@ def scrape():
|
||||
folder_path = os.path.join('downloaded_files', part_number)
|
||||
os.makedirs(folder_path, exist_ok=True)
|
||||
|
||||
# 创建 CSV 文件
|
||||
csv_file_path = os.path.join(folder_path, 'data.csv')
|
||||
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
|
||||
csv_writer = csv.writer(csv_file)
|
||||
csv_writer.writerow(csv_header) # 写入表头
|
||||
# 创建 DataFrame 并保存为 Excel 文件
|
||||
xlsx_file_path = os.path.join(folder_path, 'data.xlsx')
|
||||
|
||||
# 填写 CSV 数据
|
||||
csv_row = [
|
||||
"", # 序号
|
||||
"", # 试验对象类型
|
||||
columns[8].text_content().strip(), # 试验开始日期
|
||||
"", # 试验结束日期
|
||||
"", # 试验对象名称
|
||||
columns[2].text_content().strip(), # 试验对象型号
|
||||
"", # 试验对象数量
|
||||
columns[4].text_content().strip(), # 试验性质
|
||||
"", # 试验目的
|
||||
"", # 装置名称
|
||||
"", # 数据提供单位
|
||||
"", # 试验委托单位
|
||||
"", # 失效判据
|
||||
"", # 失效数量
|
||||
"", # 试验结果描述
|
||||
"", # 成果
|
||||
"", # 来源项目名称
|
||||
"", # 来源项目类型
|
||||
"", # 分类
|
||||
"", # 元器件名称
|
||||
"", # 元器件型号
|
||||
"", # 元器件批号
|
||||
columns[5].text_content().strip(), # 生产单位
|
||||
"", # 是否国产
|
||||
"", # 元器件成熟度
|
||||
"", # 晶圆材料
|
||||
"", # 晶圆批号
|
||||
"", # 封装材料
|
||||
"", # 封装技术
|
||||
"", # 是否倒装
|
||||
"", # 制造工艺
|
||||
"", # 工艺特征尺寸
|
||||
"", # 工艺平台
|
||||
"", # 工艺代号
|
||||
"", # 工艺版本
|
||||
"", # 质量等级
|
||||
"", # 加固措施
|
||||
"", # 工作原理
|
||||
"", # 供货能力
|
||||
"", # 应用经历
|
||||
"", # 规范手册
|
||||
"", # 器件图片
|
||||
"", # 电子系统分类
|
||||
"", # 电子系统名称
|
||||
"", # 电子系统型号
|
||||
"", # 生产单位
|
||||
"", # 电子系统功能
|
||||
"", # 电子系统加固措施
|
||||
"", # 电子系统图片
|
||||
"", # 材料名称
|
||||
"", # 材料型号
|
||||
"", # 材料组分
|
||||
"", # 材料用途
|
||||
"", # 材料生产单位
|
||||
"", # 材料物理结构
|
||||
"", # 材料使用经历
|
||||
"", # 辐照试验大纲
|
||||
"", # 大纲审核专家类别
|
||||
"", # 辐照试验所依据的标准规范
|
||||
"", # 试验步骤(过程)描述
|
||||
"", # 辐照过程是否加电
|
||||
"", # 直流偏置条件描述
|
||||
"", # 交流偏置条件描述
|
||||
"", # 时钟频率
|
||||
"", # 测试图形
|
||||
"", # 其他偏置条件
|
||||
"", # 辐照偏置原理图
|
||||
"", # 测试方式
|
||||
"", # 测试原理图
|
||||
"", # 试验用仪器名称
|
||||
"", # 试验用仪器型号
|
||||
"", # 试验用仪器生产厂家
|
||||
"", # 试验用仪器检定证书
|
||||
"", # 试验用软件名称
|
||||
"", # 试验用软件开发单位
|
||||
"", # 试验用软件版本号
|
||||
"", # 试验现场照片
|
||||
"", # 测试人员姓名
|
||||
"", # 测试人员单位
|
||||
"", # 测试人员电话
|
||||
"", # 装置运行人员
|
||||
"", # 第三方人员
|
||||
"", # 第三方人员单位
|
||||
"", # 第三方人员电话
|
||||
"", # 其他需要说明的事项
|
||||
"", # 是否采用铅铝屏蔽
|
||||
"", # 剂量率
|
||||
"", # 总剂量
|
||||
"", # 剂量等效材料
|
||||
"", # 试验对象编号
|
||||
"", # 测试参数名称
|
||||
"", # 测试参数单位
|
||||
"", # 测试参数结果
|
||||
"", # 是否为加速试验后数据
|
||||
"", # 是否为退火数据
|
||||
"", # 退火温度
|
||||
"", # 退火时间
|
||||
"", # 原始数据
|
||||
"", # 数据处理方法
|
||||
"", # 其他需要说明的事项
|
||||
]
|
||||
# 填写数据
|
||||
data_row = [
|
||||
"", # 序号
|
||||
"", # 试验对象类型
|
||||
columns[8].text_content().strip(), # 试验开始日期
|
||||
"", # 试验结束日期
|
||||
"", # 试验对象名称
|
||||
columns[2].text_content().strip(), # 试验对象型号
|
||||
"", # 试验对象数量
|
||||
columns[4].text_content().strip(), # 试验性质
|
||||
"", # 试验目的
|
||||
"", # 装置名称
|
||||
"", # 数据提供单位
|
||||
"", # 试验委托单位
|
||||
"", # 失效判据
|
||||
"", # 失效数量
|
||||
"", # 试验结果描述
|
||||
"", # 成果
|
||||
"", # 来源项目名称
|
||||
"", # 来源项目类型
|
||||
"", # 分类
|
||||
"", # 元器件名称
|
||||
"", # 元器件型号
|
||||
"", # 元器件批号
|
||||
columns[5].text_content().strip(), # 生产单位
|
||||
"", # 是否国产
|
||||
"", # 元器件成熟度
|
||||
"", # 晶圆材料
|
||||
"", # 晶圆批号
|
||||
"", # 封装材料
|
||||
"", # 封装技术
|
||||
"", # 是否倒装
|
||||
"", # 制造工艺
|
||||
"", # 工艺特征尺寸
|
||||
"", # 工艺平台
|
||||
"", # 工艺代号
|
||||
"", # 工艺版本
|
||||
"", # 质量等级
|
||||
"", # 加固措施
|
||||
"", # 工作原理
|
||||
"", # 供货能力
|
||||
"", # 应用经历
|
||||
"", # 规范手册
|
||||
"", # 器件图片
|
||||
"", # 电子系统分类
|
||||
"", # 电子系统名称
|
||||
"", # 电子系统型号
|
||||
"", # 生产单位
|
||||
"", # 电子系统功能
|
||||
"", # 电子系统加固措施
|
||||
"", # 电子系统图片
|
||||
"", # 材料名称
|
||||
"", # 材料型号
|
||||
"", # 材料组分
|
||||
"", # 材料用途
|
||||
"", # 材料生产单位
|
||||
"", # 材料物理结构
|
||||
"", # 材料使用经历
|
||||
"", # 辐照试验大纲
|
||||
"", # 大纲审核专家类别
|
||||
"", # 辐照试验所依据的标准规范
|
||||
"", # 试验步骤(过程)描述
|
||||
"", # 辐照过程是否加电
|
||||
"", # 直流偏置条件描述
|
||||
"", # 交流偏置条件描述
|
||||
"", # 时钟频率
|
||||
"", # 测试图形
|
||||
"", # 其他偏置条件
|
||||
"", # 辐照偏置原理图
|
||||
"", # 测试方式
|
||||
"", # 测试原理图
|
||||
"", # 试验用仪器名称
|
||||
"", # 试验用仪器型号
|
||||
"", # 试验用仪器生产厂家
|
||||
"", # 试验用仪器检定证书
|
||||
"", # 试验用软件名称
|
||||
"", # 试验用软件开发单位
|
||||
"", # 试验用软件版本号
|
||||
"", # 试验现场照片
|
||||
"", # 测试人员姓名
|
||||
"", # 测试人员单位
|
||||
"", # 测试人员电话
|
||||
"", # 装置运行人员
|
||||
"", # 第三方人员
|
||||
"", # 第三方人员单位
|
||||
"", # 第三方人员电话
|
||||
"", # 其他需要说明的事项
|
||||
"", # 是否采用铅铝屏蔽
|
||||
"", # 剂量率
|
||||
"", # 总剂量
|
||||
"", # 剂量等效材料
|
||||
"", # 试验对象编号
|
||||
"", # 测试参数名称
|
||||
"", # 测试参数单位
|
||||
"", # 测试参数结果
|
||||
"", # 是否为加速试验后数据
|
||||
"", # 是否为退火数据
|
||||
"", # 退火温度
|
||||
"", # 退火时间
|
||||
"", # 原始数据
|
||||
"", # 数据处理方法
|
||||
"", # 其他需要说明的事项
|
||||
]
|
||||
|
||||
# 写入 CSV 行
|
||||
csv_writer.writerow(csv_row)
|
||||
# 创建 DataFrame
|
||||
df = pd.DataFrame([data_row], columns=csv_header)
|
||||
df.to_excel(xlsx_file_path, index=False)
|
||||
|
||||
try:
|
||||
# 下载文件
|
||||
|
||||
218
scripts/nasa2.pyx
Normal file
218
scripts/nasa2.pyx
Normal file
@@ -0,0 +1,218 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
import mysql.connector
|
||||
import requests
|
||||
from lxml import html
|
||||
import pandas as pd
|
||||
|
||||
from common import db_config, upload_to_minio, save_to_db_import_record, get_md5
|
||||
|
||||
# 定义页面 URL
|
||||
url = 'https://radhome.gsfc.nasa.gov/radhome/papers/TIDPart.html'
|
||||
|
||||
# 创建文件夹以保存文件
|
||||
os.makedirs('downloaded_files', exist_ok=True)
|
||||
# CSV 表头
|
||||
csv_header = [
|
||||
"序号", "试验对象类型", "试验开始日期", "试验结束日期", "试验对象名称", "试验对象型号",
|
||||
"试验对象数量", "试验性质", "试验目的", "装置名称", "数据提供单位", "试验委托单位",
|
||||
"失效判据", "失效数量", "试验结果描述", "成果", "来源项目名称", "来源项目类型",
|
||||
"分类", "元器件名称", "元器件型号", "元器件批号", "生产单位", "是否国产",
|
||||
"元器件成熟度", "晶圆材料", "晶圆批号", "封装材料", "封装技术", "是否倒装",
|
||||
"制造工艺", "工艺特征尺寸", "工艺平台", "工艺代号", "工艺版本", "质量等级",
|
||||
"加固措施", "工作原理", "供货能力", "应用经历", "规范手册", "器件图片",
|
||||
"电子系统分类", "电子系统名称", "电子系统型号", "生产单位", "电子系统功能",
|
||||
"电子系统加固措施", "电子系统图片", "材料名称", "材料型号", "材料组分",
|
||||
"材料用途", "材料生产单位", "材料物理结构", "材料使用经历", "辐照试验大纲",
|
||||
"大纲审核专家类别", "辐照试验所依据的标准规范", "试验步骤(过程)描述", "辐照过程是否加电",
|
||||
"直流偏置条件描述", "交流偏置条件描述", "时钟频率", "测试图形", "其他偏置条件",
|
||||
"辐照偏置原理图", "测试方式", "测试原理图", "试验用仪器名称", "试验用仪器型号",
|
||||
"试验用仪器生产厂家", "试验用仪器检定证书", "试验用软件名称", "试验用软件开发单位",
|
||||
"试验用软件版本号", "试验现场照片", "测试人员姓名", "测试人员单位", "测试人员电话",
|
||||
"装置运行人员", "第三方人员", "第三方人员单位", "第三方人员电话", "其他需要说明的事项",
|
||||
"是否采用铅铝屏蔽", "剂量率", "总剂量", "剂量等效材料", "试验对象编号", "测试参数名称",
|
||||
"测试参数单位", "测试参数结果", "是否为加速试验后数据", "是否为退火数据",
|
||||
"退火温度", "退火时间", "原始数据", "数据处理方法", "其他需要说明的事项"
|
||||
]
|
||||
|
||||
|
||||
def scrape():
|
||||
nasa2_connection = mysql.connector.connect(**db_config)
|
||||
try:
|
||||
# 发送请求
|
||||
response = requests.get(url)
|
||||
response.raise_for_status()
|
||||
|
||||
# 使用 lxml 解析 HTML
|
||||
tree = html.fromstring(response.text)
|
||||
|
||||
# 找到目标表格
|
||||
table = tree.xpath('/html/body/table[3]')[0] # 获取第一个表格
|
||||
|
||||
# 遍历表格行,跳过表头
|
||||
for row in table.xpath('.//tr')[1:]: # 跳过表头
|
||||
columns = row.xpath('.//td')
|
||||
if len(columns) < 8:
|
||||
continue # 跳过不完整的行
|
||||
table_id= get_md5('NASA-' + columns[0].text_content().strip())
|
||||
part_number =table_id # columns[2].text_content().strip() # 第三列 Part Number
|
||||
file_link_tag = columns[7].xpath('//a') # 第八列的 <a> 标签
|
||||
|
||||
# 获取文件名和下载链接
|
||||
file_url = 'https://radhome.gsfc.nasa.gov/' + file_link_tag[0].get('href')
|
||||
|
||||
# 创建目录
|
||||
folder_path = os.path.join('downloaded_files', part_number)
|
||||
os.makedirs(folder_path, exist_ok=True)
|
||||
|
||||
# 创建 DataFrame 并保存为 Excel 文件
|
||||
xlsx_file_path = os.path.join(folder_path, 'data.xlsx')
|
||||
|
||||
# 填写数据
|
||||
data_row = [
|
||||
"", # 序号
|
||||
"", # 试验对象类型
|
||||
columns[8].text_content().strip(), # 试验开始日期
|
||||
"", # 试验结束日期
|
||||
"", # 试验对象名称
|
||||
columns[2].text_content().strip(), # 试验对象型号
|
||||
"", # 试验对象数量
|
||||
columns[4].text_content().strip(), # 试验性质
|
||||
"", # 试验目的
|
||||
"", # 装置名称
|
||||
"", # 数据提供单位
|
||||
"", # 试验委托单位
|
||||
"", # 失效判据
|
||||
"", # 失效数量
|
||||
"", # 试验结果描述
|
||||
"", # 成果
|
||||
"", # 来源项目名称
|
||||
"", # 来源项目类型
|
||||
"", # 分类
|
||||
"", # 元器件名称
|
||||
"", # 元器件型号
|
||||
"", # 元器件批号
|
||||
columns[5].text_content().strip(), # 生产单位
|
||||
"", # 是否国产
|
||||
"", # 元器件成熟度
|
||||
"", # 晶圆材料
|
||||
"", # 晶圆批号
|
||||
"", # 封装材料
|
||||
"", # 封装技术
|
||||
"", # 是否倒装
|
||||
"", # 制造工艺
|
||||
"", # 工艺特征尺寸
|
||||
"", # 工艺平台
|
||||
"", # 工艺代号
|
||||
"", # 工艺版本
|
||||
"", # 质量等级
|
||||
"", # 加固措施
|
||||
"", # 工作原理
|
||||
"", # 供货能力
|
||||
"", # 应用经历
|
||||
"", # 规范手册
|
||||
"", # 器件图片
|
||||
"", # 电子系统分类
|
||||
"", # 电子系统名称
|
||||
"", # 电子系统型号
|
||||
"", # 生产单位
|
||||
"", # 电子系统功能
|
||||
"", # 电子系统加固措施
|
||||
"", # 电子系统图片
|
||||
"", # 材料名称
|
||||
"", # 材料型号
|
||||
"", # 材料组分
|
||||
"", # 材料用途
|
||||
"", # 材料生产单位
|
||||
"", # 材料物理结构
|
||||
"", # 材料使用经历
|
||||
"", # 辐照试验大纲
|
||||
"", # 大纲审核专家类别
|
||||
"", # 辐照试验所依据的标准规范
|
||||
"", # 试验步骤(过程)描述
|
||||
"", # 辐照过程是否加电
|
||||
"", # 直流偏置条件描述
|
||||
"", # 交流偏置条件描述
|
||||
"", # 时钟频率
|
||||
"", # 测试图形
|
||||
"", # 其他偏置条件
|
||||
"", # 辐照偏置原理图
|
||||
"", # 测试方式
|
||||
"", # 测试原理图
|
||||
"", # 试验用仪器名称
|
||||
"", # 试验用仪器型号
|
||||
"", # 试验用仪器生产厂家
|
||||
"", # 试验用仪器检定证书
|
||||
"", # 试验用软件名称
|
||||
"", # 试验用软件开发单位
|
||||
"", # 试验用软件版本号
|
||||
"", # 试验现场照片
|
||||
"", # 测试人员姓名
|
||||
"", # 测试人员单位
|
||||
"", # 测试人员电话
|
||||
"", # 装置运行人员
|
||||
"", # 第三方人员
|
||||
"", # 第三方人员单位
|
||||
"", # 第三方人员电话
|
||||
"", # 其他需要说明的事项
|
||||
"", # 是否采用铅铝屏蔽
|
||||
"", # 剂量率
|
||||
"", # 总剂量
|
||||
"", # 剂量等效材料
|
||||
"", # 试验对象编号
|
||||
"", # 测试参数名称
|
||||
"", # 测试参数单位
|
||||
"", # 测试参数结果
|
||||
"", # 是否为加速试验后数据
|
||||
"", # 是否为退火数据
|
||||
"", # 退火温度
|
||||
"", # 退火时间
|
||||
"", # 原始数据
|
||||
"", # 数据处理方法
|
||||
"", # 其他需要说明的事项
|
||||
]
|
||||
|
||||
# 创建 DataFrame
|
||||
df = pd.DataFrame([data_row], columns=csv_header)
|
||||
df.to_excel(xlsx_file_path, index=False)
|
||||
|
||||
try:
|
||||
# 下载文件
|
||||
file_response = requests.get(file_url)
|
||||
file_response.raise_for_status()
|
||||
|
||||
# 保存文件
|
||||
file_path = os.path.join(folder_path, os.path.basename(file_url))
|
||||
with open(file_path, 'wb') as file:
|
||||
file.write(file_response.content)
|
||||
print(f"NASA2 Download file: {file_path}")
|
||||
except requests.RequestException as e:
|
||||
print(f"NASA2 Download file error: {file_url},error: {e}")
|
||||
upload_ids = upload_to_minio(nasa2_connection, folder_path, 'NASA')
|
||||
device_type = columns[4].text_content().strip()
|
||||
device_name = columns[2].text_content().strip()
|
||||
device_mode = columns[2].text_content().strip()
|
||||
device_function = columns[3].text_content().strip()
|
||||
device_batch = None
|
||||
manufacturer = None
|
||||
experiment_date = columns[8].text_content().strip()
|
||||
origin_data = ','.join([c.text_content().strip() for c in columns])
|
||||
data_db = [table_id, 'Crawler', datetime.now(), None, None, None,
|
||||
device_type,
|
||||
device_name, device_mode,
|
||||
device_function,
|
||||
device_batch, manufacturer,
|
||||
experiment_date,
|
||||
'NASA', None, None, str(upload_ids),origin_data
|
||||
]
|
||||
save_to_db_import_record(nasa2_connection, data_db)
|
||||
except Exception as e:
|
||||
print(f"error: {e}")
|
||||
finally:
|
||||
# 关闭游标和连接
|
||||
nasa2_connection.close()
|
||||
# 输出数据
|
||||
# for row in table.xpath('.//tr')[1:]:
|
||||
# columns = row.xpath('.//td')
|
||||
# print([col.text_content().strip() for col in columns]) # 打印每一行的数据
|
||||
File diff suppressed because it is too large
Load Diff
205
scripts/xx.json
Normal file
205
scripts/xx.json
Normal file
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"ROWS": [
|
||||
[
|
||||
"XC4VFX60",
|
||||
"Virtex IV FPGA 90<39>m CMOS",
|
||||
"Xilinx",
|
||||
"10/26/2006;IUCF07MAR;2007JUL",
|
||||
"M102606_XC4VFX60.pdf;T021607_XC4VFX60.pdf;nsrec07_W27_SEE.pdf;IU032707_XC4VFX60.pdf;nsrec08_W3_SEE.pdf;G07JUL_XC4VFX60_TID.pdf;nsrec08_W2_TID.pdf",
|
||||
"TID; SEE; SEFI",
|
||||
"90<39>m CMOS"
|
||||
],
|
||||
[
|
||||
"XC4VLX25",
|
||||
"Virtex IV FPGA",
|
||||
"Xilinx",
|
||||
"TAMU07AUG;IUCF07AUG;IUCF07OCT",
|
||||
"I032706_LX25_V2.pdf;nsrec08_W3_SEE.pdf",
|
||||
"SEE;SEL",
|
||||
"90nm CMOS"
|
||||
],
|
||||
[
|
||||
"XC5VLX30T-1FFG665GU",
|
||||
"Virtex V FPGA",
|
||||
"Xilinx",
|
||||
"TAMU09SEPT;UCD09JUN;IU09AUG",
|
||||
"D062209_XCVLX30T_na.pdf;nsrec2010_W8_SEE.pdf",
|
||||
"SEE;SEL;SEU",
|
||||
"65nm CMOS"
|
||||
],
|
||||
[
|
||||
"XC6SLX16",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"IU10MAR",
|
||||
"NEPP_DTRA_04062010_Berg.pdf;nsrec2011_W6_SEE.pdf",
|
||||
"SEE;SEL;SEU",
|
||||
"45nm CMOS"
|
||||
],
|
||||
[
|
||||
"XC7K325T Kintex7",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"4/5/2014;6/5/2014;12/16/2014;4/10/2015;8/12/2015;2016OctNRL",
|
||||
"https://nepp.nasa.gov/files/27025/2015-561-OBryan-Final-Paper-NEPPweb-NSREC2015DW-TN36350.pdf;https://nepp.nasa.gov/files/27964/NEPP-CP-2015-Berg-Presentation-SEE-MAPLD-TN23543.pdf;https://nepp.nasa.gov/files/28030/NEPP-CP-2015-Berg-Pres-NEPP-ETW-TN24313.pdf;https://nepp.nasa.gov/files/28239/NEPP-CP-2016-OBryan-Paper-NSREC-SEE-DW-TN35503.pdf;https://nepp.nasa.gov/workshops/etw2016/talks/14TUE/20160614-1330-FPGA-2016-561-Berg-Final-Pres-NEPP-ETW-FPGA_TN32953_v3.pdf;https://nepp.nasa.gov/files/28073/NEPP-CP-2016-Berg-Pres-MRQW-TN29375.pdf;https://nepp.nasa.gov/files/28290/NEPP-CP-2016-Berg-Pres-SEE-MAPLD-Mitigation-TN32695.pdf",
|
||||
"SEU",
|
||||
"CMOS"
|
||||
],
|
||||
[
|
||||
"XC7K325T-1FBG900 Kintex K7",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"2016Oct-Nov",
|
||||
"https://nepp.nasa.gov/files/29000/NEPP-CP-2017-OBryan-NSREC-SEE-DW-Paper-TN44942.pdf;https://nepp.nasa.gov/workshops/etw2017/talks/26-JUN-MON/1100%20-%20ETW_BERG_FPGA_SEU_TESTING_2017_EDAA.pdf;https://nepp.nasa.gov/files/28706/NEPP-CP-2017-Berg-SEE-MAPLD-FPGA-Presentation-TN42793.pdf;https://nepp.nasa.gov/files/28339/NEPP-CP-2016-Berg-Presentation-RADECS-TN35422.pdf;https://nepp.nasa.gov/files/28343/NEPP-CP-2016-Berg-Paper-RADECS-Proc-TN35827.pdf",
|
||||
"SEU;SEL",
|
||||
"28nm planar"
|
||||
],
|
||||
[
|
||||
"XCKU040-1LFFVA1156I Kintex-UltraScale",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"10/1/2016(TAMU); 3/1/2017(TAMU); 3/22/2017(TAMU); 12/6/2017(TAMU); 2017(Chicago); 4/29/2018(MGH); 5/1/2018(TAMU); 11/18/2019(LBNL)",
|
||||
"https://nepp.nasa.gov/docs/tasks/051-Compendium-SEE-TID-DD/NEPP-CP-2019-Topper-NSREC-Paper-TID-SEE-DD-Compendium-NSREC-TN70538.pdf;CP-2018-OBryan-NSREC-SEE-DW-Paper-20205001490.pdf;https://nepp.nasa.gov/files/29000/NEPP-CP-2017-OBryan-NSREC-SEE-DW-Paper-TN44942.pdf;https://nepp.nasa.gov/files/29516/NEPP-TR-2017-Berg-15-061-XCKU040-2FFVA1156-Kintex-UltraScale-TN45195.pdf",
|
||||
"SEE;SEU;SEFI;SEL",
|
||||
"20nm CMOS"
|
||||
],
|
||||
[
|
||||
"XCKU040-2FFVA1156E Kintex-UltraScale",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"11/18/2019",
|
||||
"2020-Topper-NSREC-TID-SEE-Compendium-DW-Paper-20205007136.pdf;https://nepp.nasa.gov/docs/tasks/041-FPGA/NEPP-TR-2019-Berg-TR-15-061-Xilinx-XCKU040-2FFVA1156E-KintexUltraScale-LBNL-2019Nov18-20205007765.pdf",
|
||||
"SEE",
|
||||
"FPGA"
|
||||
],
|
||||
[
|
||||
"XFM-5050-UV",
|
||||
"AlGaN 280 nm LED",
|
||||
"Luminus",
|
||||
"2023Aug(UDC)",
|
||||
"2024-OBryan-NSREC-DW-Compendium-Paper-20240008405.pdf",
|
||||
"DD",
|
||||
"Photonics"
|
||||
],
|
||||
[
|
||||
"XPA-II",
|
||||
"ASIC",
|
||||
"AMIS",
|
||||
"VdG2008AUG",
|
||||
"tid/VdG08AUG_XPAII.pdf;nsrec09_W13_TID.pdf",
|
||||
"TID",
|
||||
"0.18µm CMOS"
|
||||
],
|
||||
[
|
||||
"XQR4036XL",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"9/6/1998",
|
||||
"http://www.klabs.org/richcontent/fpga_content/Xilinx/SEE_Test_XR4036XL.pdf",
|
||||
"SEE",
|
||||
"FPGA"
|
||||
],
|
||||
[
|
||||
"XQV5FX70T",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"12/16/2014",
|
||||
"https://nepp.nasa.gov/files/27025/2015-561-OBryan-Final-Paper-NEPPweb-NSREC2015DW-TN36350.pdf;https://nepp.nasa.gov/files/27964/NEPP-CP-2015-Berg-Presentation-SEE-MAPLD-TN23543.pdf;https://nepp.nasa.gov/files/28030/NEPP-CP-2015-Berg-Pres-NEPP-ETW-TN24313.pdf",
|
||||
"SEE",
|
||||
"CMOS"
|
||||
],
|
||||
[
|
||||
"XQVR300",
|
||||
"FPGA",
|
||||
"Xilinx",
|
||||
"10/28/2000",
|
||||
"http://rk.gsfc.nasa.gov/richcontent/papers/Xilinx/Xilinx_NSREC2000.pdf",
|
||||
"TID;SEL;SEU",
|
||||
"FPGA"
|
||||
],
|
||||
[
|
||||
"Xilinx SIRF Test Transistors",
|
||||
"Test Transistors",
|
||||
"Xilinx",
|
||||
"VdG2008JUN",
|
||||
"tid/VdG08JUN_Xilinx_SIRF.pdf;nsrec09_W13_TID.pdf",
|
||||
"TID",
|
||||
"Transistor"
|
||||
],
|
||||
[
|
||||
"ZQ04031",
|
||||
"32kx8 SRAM",
|
||||
"Elmo/Hitachi",
|
||||
"11/7/1991",
|
||||
"tid/PPM-91-702.pdf",
|
||||
"TID",
|
||||
"Memory"
|
||||
],
|
||||
[
|
||||
"ZT-6500",
|
||||
"CPCI Pentium Processor",
|
||||
"Ziatech",
|
||||
"9/1/1997",
|
||||
"NSREC99.pdf",
|
||||
"SEE",
|
||||
"Board"
|
||||
],
|
||||
[
|
||||
"ZYNQ XC7Z020-1CLG400C",
|
||||
"FPGA and ARM Processor on TUL PYNQ-Z2 Board",
|
||||
"Xilinx",
|
||||
"8/19/2023(MGH)",
|
||||
"2024-OBryan-NSREC-DW-Compendium-Paper-20240008405.pdf;https://nepp.nasa.gov/docs/tasks/065-GPU-Devices/NEPP-NASA-TM-20-004-Xilinx-ZYNQ-XC7Z020-1CLG400C-SEE-Test-Report-MGH-2023Aug-20230013162.pdf",
|
||||
"SEE",
|
||||
"CMOS"
|
||||
],
|
||||
[
|
||||
"i3-5005U Broadwell 5th Gen Core™",
|
||||
"Processor",
|
||||
"Intel",
|
||||
"2015MGH;TRIUMF;HUPTI;Scripps;2015AugTAMU;2015DecTAMU;2016MayTAMU",
|
||||
"https://nepp.nasa.gov/files/28239/NEPP-CP-2016-OBryan-Paper-NSREC-SEE-DW-TN35503.pdf;https://nepp.nasa.gov/files/28007/NEPP-CP-2015-Szabo-Paper-DW-TN24989.pdf",
|
||||
"Proton Facility Evaluation",
|
||||
"14nm Gen 5 CMOS and FinFET"
|
||||
],
|
||||
[
|
||||
"i3-6100 Skylake 6th Gen Core™",
|
||||
"Processor",
|
||||
"Intel",
|
||||
"2015Dec",
|
||||
"https://nepp.nasa.gov/files/28239/NEPP-CP-2016-OBryan-Paper-NSREC-SEE-DW-TN35503.pdf",
|
||||
"Proton Facility Evaluation",
|
||||
"14nm Gen 6 CMOS and FinFET"
|
||||
],
|
||||
[
|
||||
"i3-6100T Skylake 6th Gen Core™",
|
||||
"Processor",
|
||||
"Intel",
|
||||
"2016MayTAMU;2016MayScripps",
|
||||
"https://nepp.nasa.gov/files/28239/NEPP-CP-2016-OBryan-Paper-NSREC-SEE-DW-TN35503.pdf",
|
||||
"Proton Facility Evaluation",
|
||||
"14nm Gen 6 CMOS and FinFET"
|
||||
],
|
||||
[
|
||||
"i5-6600K Skylake 6th Gen Core™",
|
||||
"Processor",
|
||||
"Intel",
|
||||
"2015NovTRIUMF",
|
||||
"https://nepp.nasa.gov/files/28239/NEPP-CP-2016-OBryan-Paper-NSREC-SEE-DW-TN35503.pdf",
|
||||
"Proton Facility Evaluation",
|
||||
"14nm Gen 6 CMOS and FinFET"
|
||||
],
|
||||
[
|
||||
"v1202b",
|
||||
"CPU",
|
||||
"AMD",
|
||||
"5/28/2022",
|
||||
"https://nepp.nasa.gov/docs/tasks/051-Compendium-SEE-TID-DD/NEPP-CP-2023-OBryan-Paper-NSREC-DW-Compendium-SEE-TID-20230009904.pdf;https://nepp.nasa.gov/docs/tasks/065-GPU-Devices/2022-Wyrwas-NASA-TM-20-005-AMD-v1202b-SoC-Proton-Test-Report-20230000488.pdf",
|
||||
"SEE",
|
||||
"CMOS"
|
||||
]
|
||||
],
|
||||
"PAGE": 1,
|
||||
"TOTAL": 1,
|
||||
"RECORDS": 1768
|
||||
}
|
||||
Reference in New Issue
Block a user