From 082bddee7df8a05ca95f473ec2643701d41a5213 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 08 十月 2026 11:09:01 +0800
Subject: [PATCH] 更新代码
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java | 177 ++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 122 insertions(+), 55 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
index ddd14bd..ef97301 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
@@ -164,28 +164,7 @@
}
culturePreservationService.saveBatch(culturePreservations);
if (dto.getStatus()!=null&&dto.getStatus()==2){
- // 新增消息
- TNotice tNotice = new TNotice();
- List<String> allProjectIds = projectTeamStaffService.lambdaQuery()
- .eq(TProjectTeamStaff::getTeamId,dto.getProjectId())
- .eq(TProjectTeamStaff::getRoleType, 2)
- .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
- if (!allProjectIds.isEmpty()){
- TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
- .eq(TProjectTeam::getStatus, 1)
- .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
- TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery()
- .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
- tNotice.setUserId(projectTeamStaff.getUserId());
-
- tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
- tNotice.setStatus(1);
- tNotice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
- tNotice.setDataId(dto.getId());
- tNotice.setNoticeType(5);
- noticeService.save(tNotice);
- }
-
+ notifyProjectEngineers(dto.getProjectId(), dto.getId(), 5);
}
return R.ok();
}
@@ -209,8 +188,33 @@
dto.setIsDraft(0);
}
TBreedingAndPreservation breedingAndPreservationServiceById = breedingAndPreservationService.getById(dto.getId());
+ if (breedingAndPreservationServiceById == null) {
+ return R.fail("记录不存在");
+ }
if (breedingAndPreservationServiceById.getStatus()==1){
return R.fail("该记录已提交,不可编辑!");
+ }
+ SysUser currentUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
+ if ("3".equals(currentUser.getRoleType())) {
+ return R.fail("菌种工程师只能进行入库确认,不能编辑记录");
+ }
+ List<TVaccinationSlope> vaccinationSlopes = dto.getVaccinationSlopes();
+ List<TCulturePreservation> culturePreservations = dto.getCulturePreservations();
+ if (vaccinationSlopes == null || culturePreservations == null) {
+ return R.fail("接种斜面记录和菌种保藏记录不能为空");
+ }
+ if (dto.getStatus() != null && dto.getStatus() == 1) {
+ if (breedingAndPreservationServiceById.getStatus() == null
+ || breedingAndPreservationServiceById.getStatus() != 2) {
+ return R.fail("请先同步给保藏人并完成入库确认");
+ }
+ boolean slopeUnconfirmed = vaccinationSlopes.stream().anyMatch(item ->
+ !StringUtils.hasLength(item.getPreserveId()) || !StringUtils.hasLength(item.getPreserveSignature()));
+ boolean preservationUnconfirmed = culturePreservations.stream().anyMatch(item ->
+ !StringUtils.hasLength(item.getPreserveId()) || !StringUtils.hasLength(item.getPreserveSignature()));
+ if (slopeUnconfirmed || preservationUnconfirmed) {
+ return R.fail("存在未确认的接种斜面或菌种保藏记录,不能提交");
+ }
}
breedingAndPreservationService.updateById(dto);
List<TSeparationOfCultureDishes> separationOfCultureDishesList = dto.getSeparationOfCultureDishesList();
@@ -225,60 +229,62 @@
}
observationOfPetriDishesService.remove(new LambdaQueryWrapper<TObservationOfPetriDishes>().eq(TObservationOfPetriDishes::getBreedingPreserveId, dto.getId()));
observationOfPetriDishesService.saveBatch(observationOfPetriDishes);
- List<TVaccinationSlope> vaccinationSlopes = dto.getVaccinationSlopes();
for (TVaccinationSlope vaccinationSlope : vaccinationSlopes) {
- if (dto.getStatus()==1&&!StringUtils.hasLength(vaccinationSlope.getPreserveId())){
- return R.fail("接种斜面记录未确认,不能提交");
- }
vaccinationSlope.setBreedingPreserveId(dto.getId());
}
vaccinationSlopeService.remove(new LambdaQueryWrapper<TVaccinationSlope>().eq(TVaccinationSlope::getBreedingPreserveId, dto.getId()));
vaccinationSlopeService.saveBatch(vaccinationSlopes);
- List<TCulturePreservation> culturePreservations = dto.getCulturePreservations();
for (TCulturePreservation tSeparationOfCultureDishes : culturePreservations) {
tSeparationOfCultureDishes.setBreedingPreserveId(dto.getId());
}
culturePreservationService.remove(new LambdaQueryWrapper<TCulturePreservation>().eq(TCulturePreservation::getBreedingPreserveId, dto.getId()));
for (TCulturePreservation culturePreservation : culturePreservations) {
- if (dto.getStatus()==1&&!StringUtils.hasLength(culturePreservation.getPreserveId())){
- return R.fail("菌种保藏记录未确认,不能提交");
- }
culturePreservation.setBreedingPreserveId(dto.getId());
}
culturePreservationService.saveBatch(culturePreservations);
if (dto.getStatus()==2){
- // 新增消息
- TNotice tNotice = new TNotice();
- List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
- .eq(TProjectTeamStaff::getRoleType, 3)
- .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
- if (!allProjectIds.isEmpty()){
- TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
- .eq(TProjectTeam::getStatus, 1)
- .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
- TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
- .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
- tNotice.setUserId(one1.getUserId());
-
- tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
- tNotice.setStatus(1);
- tNotice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
- tNotice.setDataId(dto.getId());
- tNotice.setNoticeType(6);
- noticeService.save(tNotice);
- }
+ notifyProjectEngineers(dto.getProjectId(), dto.getId(), 6);
}
return R.ok();
}
+
+ private void notifyProjectEngineers(String projectId, String dataId, int noticeType) {
+ List<TProjectTeamStaff> engineers = projectTeamStaffService.lambdaQuery()
+ .eq(TProjectTeamStaff::getTeamId, projectId)
+ .eq(TProjectTeamStaff::getRoleType, 3)
+ .list();
+ for (TProjectTeamStaff engineer : engineers) {
+ TNotice notice = new TNotice();
+ notice.setUserId(engineer.getUserId());
+ notice.setCommitId(tokenService.getLoginUser().getUserId() + "");
+ notice.setStatus(1);
+ notice.setNoticeContent("您有【1】条【菌种选育保藏记录】等待签字入库确认;");
+ notice.setDataId(dataId);
+ notice.setNoticeType(noticeType);
+ noticeService.save(notice);
+ }
+ }
+
@Log(title = "接种斜面记录确认入库", businessType = BusinessType.UPDATE)
@ApiOperation(value = "接种斜面记录确认入库",response = TConfirmBreedingAndPreservationDTO.class)
@PostMapping(value = "/api/t-breeding-and-preservation/vaccinationSlopesConfirm")
public R<Boolean> vaccinationSlopesConfirm(@RequestBody String param) {
+ if (tokenService.getLoginUser() == null) {
+ return R.fail(401, "登陆失效");
+ }
Long userId = tokenService.getLoginUser().getUserId();
TConfirmBreedingAndPreservationDTO dto = JSON.parseObject(param,TConfirmBreedingAndPreservationDTO.class);
TVaccinationSlope vaccinationSlope = vaccinationSlopeService.getById(dto.getId());
+ if (vaccinationSlope == null) {
+ return R.fail("接种斜面记录不存在");
+ }
+ R<Boolean> validation = validatePreservationConfirmation(vaccinationSlope.getBreedingPreserveId(), userId,
+ vaccinationSlope.getPreserveSignature());
+ if (validation != null) {
+ return validation;
+ }
vaccinationSlope.setPreserveId(userId+"");
vaccinationSlope.setPreserveTime(LocalDateTime.now());
vaccinationSlope.setPreserveSignature(dto.getPreserveSignature());
@@ -289,9 +295,20 @@
@ApiOperation(value = "菌种保藏记录确认入库",response = TConfirmBreedingAndPreservationDTO.class)
@PostMapping(value = "/api/t-breeding-and-preservation/culturePreservationsConfirm")
public R<Boolean> culturePreservationsConfirm(@RequestBody String param) {
+ if (tokenService.getLoginUser() == null) {
+ return R.fail(401, "登陆失效");
+ }
Long userId = tokenService.getLoginUser().getUserId();
TConfirmBreedingAndPreservationDTO dto = JSON.parseObject(param,TConfirmBreedingAndPreservationDTO.class);
TCulturePreservation culturePreservation = culturePreservationService.getById(dto.getId());
+ if (culturePreservation == null) {
+ return R.fail("菌种保藏记录不存在");
+ }
+ R<Boolean> validation = validatePreservationConfirmation(culturePreservation.getBreedingPreserveId(), userId,
+ culturePreservation.getPreserveSignature());
+ if (validation != null) {
+ return validation;
+ }
culturePreservation.setPreserveId(userId+"");
culturePreservation.setPreserveTime(LocalDateTime.now());
culturePreservation.setPreserveSignature(dto.getPreserveSignature());
@@ -302,28 +319,56 @@
@Resource
private TProjectTeamMapper tProjectTeamMapper;
+ private R<Boolean> validatePreservationConfirmation(String breedingPreserveId, Long userId,
+ String existingSignature) {
+ if (StringUtils.hasLength(existingSignature)) {
+ return R.fail("该记录已经确认,不能重复签字");
+ }
+ TBreedingAndPreservation record = breedingAndPreservationService.getById(breedingPreserveId);
+ if (record == null || record.getStatus() == null || record.getStatus() != 2) {
+ return R.fail("仅已同步且未提交的记录可以确认入库");
+ }
+ boolean isProjectEngineer = projectTeamStaffService.lambdaQuery()
+ .eq(TProjectTeamStaff::getTeamId, record.getProjectId())
+ .eq(TProjectTeamStaff::getUserId, userId)
+ .count() > 0;
+
+ SysUser sysUser = sysUserService.selectUserById(userId);
+
+ if (isProjectEngineer) {
+ if (!sysUser.getRoleType().equals("3")) {
+ return R.fail("仅当前项目的菌种工程师可以确认入库");
+ }
+ }
+ return null;
+ }
+
//@PreAuthorize("@ss.hasPermi('system:breedingAndPreservation:detail')")
@ApiOperation(value = "选育保藏记录详情")
@GetMapping(value = "/open/t-breeding-and-preservation/getDetailById")
public R<TBreedingAndPreservationDetailVO> getDetailById(@RequestParam String id) {
+ if (!StringUtils.hasText(id)) {
+ return R.fail("记录ID不能为空");
+ }
+ TBreedingAndPreservation breedingAndPreservation = breedingAndPreservationService.getById(id);
+ if (breedingAndPreservation == null) {
+ return R.fail("菌种选育保藏记录不存在或已删除");
+ }
List<SysUser> sysUsers = sysUserService.selectAllList();
TBreedingAndPreservationDetailVO res = new TBreedingAndPreservationDetailVO();
- TBreedingAndPreservation breedingAndPreservation = breedingAndPreservationService.getById(id);
BeanUtils.copyProperties(breedingAndPreservation, res);
List<TSeparationOfCultureDishes> separationOfCultureDishesList = separationOfCultureDishesService.lambdaQuery().eq(TSeparationOfCultureDishes::getBreedingPreserveId, id).list();
List<TObservationOfPetriDishes> observationOfPetriDishes = observationOfPetriDishesService.lambdaQuery().eq(TObservationOfPetriDishes::getBreedingPreserveId, id).list();
List<TVaccinationSlope> vaccinationSlopes = vaccinationSlopeService.lambdaQuery().eq(TVaccinationSlope::getBreedingPreserveId, id).list();
List<TCulturePreservation> culturePreservations = culturePreservationService.lambdaQuery().eq(TCulturePreservation::getBreedingPreserveId, id).list();
for (TCulturePreservation culturePreservation : culturePreservations) {
- SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(culturePreservation.getHandleId()))).findFirst()
- .orElse(null);
+ SysUser sysUser = findUserById(sysUsers, culturePreservation.getHandleId());
if (sysUser!=null){
culturePreservation.setHandleName(sysUser.getNickName());
}
}
for (TVaccinationSlope vaccinationSlope : vaccinationSlopes) {
- SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(vaccinationSlope.getHandleId()))).findFirst()
- .orElse(null);
+ SysUser sysUser = findUserById(sysUsers, vaccinationSlope.getHandleId());
if (sysUser!=null){
vaccinationSlope.setHandleName(sysUser.getNickName());
}
@@ -355,6 +400,21 @@
res.setVaccinationSlopes(vaccinationSlopes);
res.setCulturePreservations(culturePreservations);
return R.ok(res);
+ }
+
+ private SysUser findUserById(List<SysUser> sysUsers, String userId) {
+ if (!StringUtils.hasText(userId)) {
+ return null;
+ }
+ try {
+ Long parsedUserId = Long.valueOf(userId);
+ return sysUsers.stream()
+ .filter(user -> user.getUserId() != null && user.getUserId().equals(parsedUserId))
+ .findFirst()
+ .orElse(null);
+ } catch (NumberFormatException exception) {
+ return null;
+ }
}
//
// @Log(title = "培养皿分离记录删除", businessType = BusinessType.DELETE)
@@ -394,6 +454,13 @@
@ApiOperation(value = "菌种保藏记录删除")
@DeleteMapping(value = "/open/t_project_team/deleteBreedingAndPreservation")
public R<Boolean> deleteCulturePreservation(@RequestParam String id) {
+ TBreedingAndPreservation record = breedingAndPreservationService.getById(id);
+ if (record == null) {
+ return R.fail("记录不存在");
+ }
+ if (record.getStatus() != null && record.getStatus() == 1) {
+ return R.fail("该记录已提交,不可删除");
+ }
return R.ok(breedingAndPreservationService.removeById(id));
}
}
--
Gitblit v1.7.1