diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentController.java index 0c15ada..edcfb54 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentController.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentController.java @@ -1,6 +1,7 @@ package org.jeecg.modules.database.controller; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -9,17 +10,25 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.util.JwtUtil; -import org.jeecg.common.util.ReflectHelper; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.*; import org.jeecg.modules.database.constant.ExperimentStatus; +import org.jeecg.modules.database.dto.ExperimentExportDTO; +import org.jeecg.modules.database.dto.ExperimentExportDetailDTO; import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.service.*; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -270,15 +279,15 @@ public class ExperimentController extends JeecgController experimentAnnealProcess = experimentAnnealProcessService.getByExperimentId(old.getId()); if (CollUtil.isNotEmpty(experimentAnnealProcess)) { - experimentAnnealProcess.forEach(v -> experimentAnnealProcessService.copy(v.getId(),copied.getId())); + experimentAnnealProcess.forEach(v -> experimentAnnealProcessService.copy(v.getId(), copied.getId())); } List experimentRadiationProcess = experimentRadiationProcessService.getByExperimentId(old.getId()); if (CollUtil.isNotEmpty(experimentRadiationProcess)) { - experimentRadiationProcess.forEach(v -> experimentRadiationProcessService.copy(v.getId(),copied.getId())); + experimentRadiationProcess.forEach(v -> experimentRadiationProcessService.copy(v.getId(), copied.getId())); } List experimentTestProcess = experimentTestProcessService.getByExperimentId(old.getId()); if (CollUtil.isNotEmpty(experimentTestProcess)) { - experimentTestProcess.forEach(v -> experimentTestProcessService.copy(v.getId(),copied.getId())); + experimentTestProcess.forEach(v -> experimentTestProcessService.copy(v.getId(), copied.getId())); } return Result.OK("复制成功!"); } @@ -373,7 +382,82 @@ public class ExperimentController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(experiment, request.getParameterMap()); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + queryWrapper.in("id", selectionList); + } + // Step.2 获取导出数据 + queryWrapper.orderBy(true, true, "index_no"); + List exportList = experimentService.list(queryWrapper); + for (Experiment ex : exportList) { + experimentService.fetchExperimentDetail(ex); + } + List resultList = new ArrayList<>(); + for (Experiment ex : exportList) { + ExperimentExportDTO dto = new ExperimentExportDTO(); + dto.setId(ex.getId()); + dto.setIndexNo(ex.getIndexNo()); + dto.setExperimentNo(ex.getExperimentNo()); + dto.setName(ex.getName()); + dto.setClientName(ex.getClientName()); + dto.setType(ex.getType()); + dto.setStartDate(ex.getStartDate()); + dto.setEndDate(ex.getEndDate()); + String equipmentStr = ex.getDeviationEquipmentList().stream().map(v -> v.getEquipmentNo()).filter( + v -> StringUtils.isNotBlank(v)) + .collect(Collectors.joining("\n")); + dto.setEquipment(equipmentStr); + dto.setSupervisorName(ex.getSupervisorName()); + dto.setReportCount(ex.getExperimentReportList().size() + ""); + List experimentRatingList = ex.getExperimentRatingList(); + String rateStr = experimentRatingList.stream().map(v -> v.getRateUserName() + ":" + v.getTotalScore()).collect( + Collectors.joining("\n")); + dto.setRateUserAndScore(rateStr); + List experimentRadiationProcess = experimentRadiationProcessService.getByExperimentId(ex.getId()); + List detailList = new ArrayList<>(); + //List irradiationBoardList = ex.getIrradiationBoardList(); + if (CollUtil.isNotEmpty(experimentRadiationProcess)) { + experimentRadiationProcess.forEach(v -> { + List sampleInfoList = v.getSampleInfoList(); + if (CollUtil.isNotEmpty(sampleInfoList)) { + sampleInfoList.forEach(sample -> { + ExperimentExportDetailDTO detail = new ExperimentExportDetailDTO(); + detail.setRadiateType(v.getRadiationSource()); + detail.setSampleModel(sample.getSampleModel()); + detail.setSampleType(sample.getSampleType()); + detail.setMeasurementRate(""); + detail.setTotalMeasurementRate(""); + detail.setSourceArea(""); + detailList.add(detail); + }); + } + }); + } + dto.setDetailList(detailList); + resultList.add(dto); + + } + // Step.3 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + //此处设置的filename无效 ,前端会重更新设置一下 + mv.addObject(NormalExcelConstants.FILE_NAME, title); + mv.addObject(NormalExcelConstants.CLASS, ExperimentExportDTO.class); + //update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置-------------------- + ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + Optional.ofNullable(sysUser).map(v -> v.getRealname()) + .orElse("") + ",导出日期:" + DateUtils.formatDate(new Date()), title); + //exportParams.setImageBasePath(jeecgBaseConfig.getPath().getUpload()); + //update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置---------------------- + mv.addObject(NormalExcelConstants.PARAMS, exportParams); + mv.addObject(NormalExcelConstants.DATA_LIST, resultList); + return mv; + } /** diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentRatingController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentRatingController.java index f7073d2..8b9e096 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentRatingController.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentRatingController.java @@ -61,7 +61,7 @@ public class ExperimentRatingController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(experimentRating, req.getParameterMap()); Page page = new Page(pageNo, pageSize); IPage pageList = experimentRatingService.page(page, queryWrapper); - pageList.getRecords().forEach(v -> experimentRatingService.fetchExperimentDetail(v)); + pageList.getRecords().forEach(v -> experimentService.fetchExperimentRateDetail(v)); return Result.OK(pageList); } @@ -188,7 +188,7 @@ public class ExperimentRatingController extends JeecgController detailList; + } diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java index a86cbe2..efb81e0 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java @@ -23,7 +23,7 @@ public class ExperimentExportDetailDTO implements Serializable { * */ @Excel(name = "辐射源类型", width = 15) - private Integer radiateType; + private String radiateType; @Excel(name = "样品型号", width = 15) private String sampleModel; @Excel(name = "样品类型", width = 15) diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/Experiment.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/Experiment.java index 941c64d..ad7c336 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/Experiment.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/Experiment.java @@ -128,16 +128,16 @@ public class Experiment implements Serializable { * 试验负责人 */ @TableField(exist = false) - private String supervisorName; + private String supervisorName; /** * 状态 */ @Excel(name = "状态", width = 15) @Schema(description = "状态") - private String status; + private String status; @TableField(exist = false) - private List statusList; + private List statusList; /** * 样品信息 */ @@ -198,6 +198,10 @@ public class Experiment implements Serializable { */ @TableField(exist = false) private List experimentUserList; + @TableField(exist = false) + private List experimentReportList; + @TableField(exist = false) + private List experimentRatingList; @TableField(exist = false) private String sampleType; diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/ExperimentRating.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/ExperimentRating.java index 6907921..ffd3b42 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/ExperimentRating.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/entity/ExperimentRating.java @@ -111,6 +111,8 @@ public class ExperimentRating implements Serializable { @TableField(exist = false) private String experimentNo; @TableField(exist = false) + private String rateUserName; + @TableField(exist = false) @Schema(description = "评分人列表") private List rateUserList; } diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentRatingService.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentRatingService.java index 0bd84f2..5cef160 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentRatingService.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentRatingService.java @@ -3,6 +3,8 @@ package org.jeecg.modules.database.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.database.entity.ExperimentRating; +import java.util.List; + /** * @Description: 试验评分 * @Author: jeecg-boot @@ -11,5 +13,5 @@ import org.jeecg.modules.database.entity.ExperimentRating; */ public interface IExperimentRatingService extends IService { - void fetchExperimentDetail(ExperimentRating experimentRating); + List getByExperimentId(String experimentId); } diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentService.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentService.java index 8c4520c..496bfd0 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentService.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/IExperimentService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.database.entity.Experiment; +import org.jeecg.modules.database.entity.ExperimentRating; import org.jeecg.modules.system.entity.SysUser; /** @@ -29,4 +30,7 @@ public interface IExperimentService extends IService { Long sumLhs(); Long sumXhy(); + + void fetchExperimentRateDetail(ExperimentRating experimentRating); + } diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentRatingServiceImpl.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentRatingServiceImpl.java index a84f12d..afff8c9 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentRatingServiceImpl.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentRatingServiceImpl.java @@ -1,15 +1,13 @@ package org.jeecg.modules.database.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.jeecg.modules.database.entity.Experiment; import org.jeecg.modules.database.entity.ExperimentRating; import org.jeecg.modules.database.mapper.ExperimentRatingMapper; import org.jeecg.modules.database.service.IExperimentRatingService; -import org.jeecg.modules.database.service.IExperimentService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Objects; +import java.util.List; /** * @Description: 试验评分 @@ -20,19 +18,9 @@ import java.util.Objects; @Service public class ExperimentRatingServiceImpl extends ServiceImpl implements IExperimentRatingService { - @Autowired - private IExperimentService experimentService; - @Override - public void fetchExperimentDetail(ExperimentRating experimentRating) { - if (Objects.isNull(experimentRating)) { - return; - } - Experiment experiment = experimentService.getById(experimentRating.getExperimentId()); - if (Objects.isNull(experiment)) { - return; - } - experimentRating.setExperimentName(experiment.getName()); - experimentRating.setExperimentNo(experiment.getExperimentNo()); + public List getByExperimentId(String experimentId) { + List list = list(new LambdaQueryWrapper().eq(ExperimentRating::getExperimentId, experimentId)); + return list; } } diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentServiceImpl.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentServiceImpl.java index 4ec8e7d..d5f09e3 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentServiceImpl.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentServiceImpl.java @@ -43,6 +43,10 @@ public class ExperimentServiceImpl extends ServiceImpl()); } - experiment.setExperimentUserList(userList); - experiment.setExperimentUser(userList.stream().map(ExperimentUser::getUserId).collect(Collectors.joining(","))); List sampleInfoList = experimentSampleInfoService.getByExperimentId(experiment.getId()); if (CollUtil.isNotEmpty(sampleInfoList)) { experiment.setSampleInfoList(sampleInfoList); + } else { + experiment.setSampleInfoList(new ArrayList<>()); } List deviationConditionList = experimentDeviationConditionService.getByExperimentId( experiment.getId()); if (CollUtil.isNotEmpty(deviationConditionList)) { experiment.setDeviationConditionList(deviationConditionList); + } else { + experiment.setDeviationConditionList(new ArrayList<>()); } List deviationEquipmentList = experimentDeviationEquipmentService.getByExperimentId( experiment.getId()); if (CollUtil.isNotEmpty(deviationEquipmentList)) { experiment.setDeviationEquipmentList(deviationEquipmentList); + } else { + experiment.setDeviationEquipmentList(new ArrayList<>()); } List irradiationBoardList = experimentIrradiationBoardService.getByExperimentId(experiment.getId()); if (CollUtil.isNotEmpty(irradiationBoardList)) { experiment.setIrradiationBoardList(irradiationBoardList); + } else { + experiment.setIrradiationBoardList(new ArrayList<>()); } List experimentFileList = experimentFileService.getByExperimentId(experiment.getId()); if (CollUtil.isNotEmpty(experimentFileList)) { experiment.setFileList(experimentFileList); + } else { + experiment.setFileList(new ArrayList<>()); + } + List reportList = experimentReportService.getByExperimentId(experiment.getId()); + if (CollUtil.isNotEmpty(reportList)) { + experiment.setExperimentReportList(reportList); + } else { + experiment.setExperimentReportList(new ArrayList<>()); + } + List ratingList = experimentRatingService.getByExperimentId(experiment.getId()); + if (CollUtil.isNotEmpty(ratingList)) { + ratingList.forEach(this::fetchExperimentRateDetail); + experiment.setExperimentRatingList(ratingList); + } else { + experiment.setExperimentRatingList(new ArrayList<>()); } //List experimentAnnealProcessList = experimentAnnealProcessService.getByExperimentId(experiment.getId()); //List radiationProcessList = experimentRadiationProcessService.getByExperimentId(experiment.getId()); @@ -290,4 +319,23 @@ public class ExperimentServiceImpl extends ServiceImpl