From 5e7d539cec94fcb67cd7a958ab2e89ec4c7942bb Mon Sep 17 00:00:00 2001 From: "a15234804788@163.com" Date: Sun, 9 Oct 2022 13:56:23 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/lims/entry/Instrument.java | 2 + .../system/user/entity/TrainPerson.java | 21 +++++++++ .../lims/controller/InstrumentController.java | 7 ++- .../user/controller/TrainController.java | 28 +++++++++++- .../controller/TrainPersonController.java | 26 ++++++----- .../system/user/mapper/TrainPersonMapper.java | 3 ++ .../system/user/mapper/TrainPersonMapper.xml | 27 +++++++++++ .../user/service/ITrainPersonService.java | 3 ++ .../service/impl/TrainPersonServiceImpl.java | 45 +++++++++++++++++++ .../user/service/impl/TrainServiceImpl.java | 1 + 10 files changed, 151 insertions(+), 12 deletions(-) diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Instrument.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Instrument.java index b071290..b66d43b 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Instrument.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Instrument.java @@ -8,6 +8,7 @@ import lombok.Data; import org.springblade.core.mp.base.BaseEntity; import org.springframework.data.annotation.Id; +import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.util.Date; @@ -48,6 +49,7 @@ public class Instrument extends BaseEntity implements Serializable { private Date productionDate; // 启用日期 + @NotBlank(message = "设备启用时间不能为空") private Date enableDate; public String manufacturerBrand; diff --git a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java index fed2de5..635e020 100644 --- a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java +++ b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java @@ -1,10 +1,12 @@ package org.springblade.system.user.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import java.time.LocalDateTime; import java.util.Date; /** @@ -67,4 +69,23 @@ public class TrainPerson extends BaseEntity { // 签到时间 private Date signInTime; + //培训开始时间 + @TableField(exist = false) + private LocalDateTime startTime; + + //培训持续时长 + @TableField(exist = false) + private Integer duration; + + //提前提醒时间 + @TableField(exist = false) + private Integer remind; + + //培训状态 + @TableField(exist = false) + private Integer trainStatus; + + //是否可以签到 + @TableField(exist = false) + private boolean ifCanSign; } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InstrumentController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InstrumentController.java index 5f0886e..a06decd 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InstrumentController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InstrumentController.java @@ -14,6 +14,7 @@ import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.file.entity.EquipVerification; import org.springblade.file.fegin.IEquipVerificationClient; @@ -23,6 +24,7 @@ import org.springblade.lims.service.*; import org.springblade.system.user.feign.IUserClient; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -107,12 +109,15 @@ public class InstrumentController extends BladeController { * 新增 */ @PostMapping("/insert") - public boolean insertExamine(@RequestBody Instrument entry) { + public boolean insertExamine(@Valid @RequestBody Instrument entry) { if (entry.getSaveById() != null) { String name = userClient.userInfoById(entry.getSaveById()).getData().getName(); entry.setSaveByName(name); } entry.setStatus(0); + if(entry.getEnableDate() == null){ + entry.setEnableDate(DateUtil.now()); + } return service.save(entry); } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java index cf3a253..9aa3152 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java @@ -25,9 +25,14 @@ import org.springblade.system.user.service.ITrainSpeakService; import org.springblade.system.user.vo.TrainVO; import org.springframework.web.bind.annotation.*; +import javax.annotation.PostConstruct; import java.time.LocalDateTime; import java.util.Date; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; /** * 培训计划 控制器 @@ -44,6 +49,16 @@ public class TrainController extends BladeController { private final ITrainPersonService trainPersonService; + private ScheduledExecutorService executorService; + + + @PostConstruct + public void init(){ + //cpu核心数 + int i = Runtime.getRuntime().availableProcessors(); + //创建执行定时任务的线程池 + this.executorService = Executors.newScheduledThreadPool(i==0 ? 2:i*2); + } /** * 详情 */ @@ -73,7 +88,7 @@ public class TrainController extends BladeController { for (Train train1 : trains) { long time = System.currentTimeMillis(); long startTime = train1.getStartTime().getTime(); - long endTime = 1000 * 60 * 60 * train1.getDuration() + startTime; + long endTime = 1000 * 60 * train1.getDuration() + startTime; if (time >= startTime && time <= endTime) { train1.setStatus(1); } @@ -168,4 +183,15 @@ public class TrainController extends BladeController { return R.status(trainService.updateById(train)); } + /** + * 测试一段时间后执行任务 + */ +// @GetMapping("/testTimer") +// public R testTimer(Integer t){ +// executorService.schedule(new Runnable() { +// @Override +// public void run() { +// +// } +// },1000L); } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java index 03758ac..73bcb7d 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java @@ -2,6 +2,7 @@ package org.springblade.system.user.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; @@ -30,16 +31,21 @@ public class TrainPersonController extends BladeController { @GetMapping("/list") public R list(TrainPerson trainPerson, Query query) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (trainPerson.getDeptId() != null) { - wrapper.eq(TrainPerson::getDeptId, trainPerson.getDeptId()); - } - if (trainPerson.getPersonName() != null) { - wrapper.like(TrainPerson::getPersonName, trainPerson.getPersonName()).or() - .like(TrainPerson::getTrainName, trainPerson.getPersonName()); - } - wrapper.orderByDesc(TrainPerson::getCreateTime); - return R.data(trainPersonService.page(Condition.getPage(query), wrapper)); +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// if (trainPerson.getDeptId() != null) { +// wrapper.eq(TrainPerson::getDeptId, trainPerson.getDeptId()); +// } +// if (trainPerson.getPersonName() != null) { +// wrapper.like(TrainPerson::getPersonName, trainPerson.getPersonName()).or() +// .like(TrainPerson::getTrainName, trainPerson.getPersonName()); +// } +// wrapper.orderByDesc(TrainPerson::getCreateTime); +// IPage page = trainPersonService.page(Condition.getPage(query), wrapper); +// +// return R.data(trainPersonService.page(Condition.getPage(query), wrapper)); + Page page = new Page<>(); + page.setCurrent(query.getCurrent()).setSize(query.getSize()); + return R.data(trainPersonService.getTrainPersonInfoList(page, trainPerson)); } @PostMapping("/update") diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.java index b60ab25..4cf5640 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.java @@ -1,6 +1,8 @@ package org.springblade.system.user.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import feign.Param; import org.springblade.system.user.entity.Train; import org.springblade.system.user.entity.TrainPerson; @@ -11,4 +13,5 @@ import org.springblade.system.user.entity.TrainPerson; * @since 2022-06-10 */ public interface TrainPersonMapper extends BaseMapper { + Page getTrainPersonInfoList(Page page, @Param TrainPerson person); } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.xml b/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.xml index a00a455..7adceed 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.xml +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.xml @@ -2,4 +2,31 @@ + diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainPersonService.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainPersonService.java index 5245db7..2b909a0 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainPersonService.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainPersonService.java @@ -1,6 +1,8 @@ package org.springblade.system.user.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import feign.Param; import org.springblade.system.user.entity.TrainPerson; /** @@ -10,4 +12,5 @@ import org.springblade.system.user.entity.TrainPerson; * @since 2022-06-10 */ public interface ITrainPersonService extends IService { + Page getTrainPersonInfoList(Page page, @Param TrainPerson person); } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainPersonServiceImpl.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainPersonServiceImpl.java index eccd73e..7089c5f 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainPersonServiceImpl.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainPersonServiceImpl.java @@ -1,11 +1,16 @@ package org.springblade.system.user.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.system.user.entity.TrainPerson; import org.springblade.system.user.mapper.TrainPersonMapper; import org.springblade.system.user.service.ITrainPersonService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.util.List; + /** * 计划参训人员关系表 服务实现类 * @@ -14,4 +19,44 @@ import org.springframework.stereotype.Service; */ @Service public class TrainPersonServiceImpl extends ServiceImpl implements ITrainPersonService { + @Autowired + private TrainPersonMapper trainPersonMapper; + + @Override + public Page getTrainPersonInfoList(Page page, TrainPerson person) { + Page trainPersonInfoPage = trainPersonMapper.getTrainPersonInfoList(page, person); + + List records = trainPersonInfoPage.getRecords(); + records.stream().forEach( + p -> { + if(p.getTrainStatus() != 0 && p.getTrainStatus() != 1){//不正常的培训 + //不能签到 + p.setIfCanSign(false); + }else{ + //培训开始时间 + LocalDateTime start = p.getStartTime(); + //培训持续时间 分 + Integer duration = p.getDuration(); + //培训提前提醒时间 分 + Integer remind = p.getRemind(); + //培训结束时间 + LocalDateTime end = start.plusMinutes(duration); + //可以签到的最早时间 + LocalDateTime signStart = start.minusMinutes(remind); + //当前时间 + LocalDateTime now = LocalDateTime.now(); + + if(now == signStart){ + p.setIfCanSign(true); + } else if (now.isAfter(signStart) && now.isBefore(end)) { + p.setIfCanSign(true); + }else{ + p.setIfCanSign(false); + } + } + } + ); + + return trainPersonInfoPage.setRecords(records); + } } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java index 5c8754d..56dfef7 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java @@ -109,6 +109,7 @@ public class TrainServiceImpl extends BaseServiceImpl implem if (list != null && list.size() > 0) { teacher.setRecentTrain(list.get(0).getName()); } + return teacherService.updateById(teacher); }