dev
a15234804788@163.com 3 years ago
parent 6b8a5dbe23
commit 5e7d539cec
  1. 2
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Instrument.java
  2. 21
      lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java
  3. 7
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InstrumentController.java
  4. 28
      lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java
  5. 26
      lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java
  6. 3
      lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.java
  7. 27
      lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/TrainPersonMapper.xml
  8. 3
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainPersonService.java
  9. 45
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainPersonServiceImpl.java
  10. 1
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.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;

@ -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;
}

@ -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);
}

@ -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);
}

@ -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<IPage> list(TrainPerson trainPerson, Query query) {
LambdaQueryWrapper<TrainPerson> 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<TrainPerson> 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<TrainPerson> page = trainPersonService.page(Condition.getPage(query), wrapper);
//
// return R.data(trainPersonService.page(Condition.getPage(query), wrapper));
Page<TrainPerson> page = new Page<>();
page.setCurrent(query.getCurrent()).setSize(query.getSize());
return R.data(trainPersonService.getTrainPersonInfoList(page, trainPerson));
}
@PostMapping("/update")

@ -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<TrainPerson> {
Page<TrainPerson> getTrainPersonInfoList(Page<TrainPerson> page, @Param TrainPerson person);
}

@ -2,4 +2,31 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.system.user.mapper.TrainPersonMapper">
<select id="getTrainPersonInfoList" parameterType="org.springblade.system.user.entity.TrainPerson" resultType="org.springblade.system.user.entity.TrainPerson">
SELECT
A.*,B.start_time,B.duration,B.remind,B.status as trainStatus
FROM
blade_train_person A
INNER JOIN
blade_train B
ON
A.train_id = B.id
<where>
<if test="person.deptId != null and person.deptId != ''">
A.dept_id = #{person.deptId}
</if>
<if test="person.personName != null and person.personName != ''">
AND
(
A.person_name LIKE CONCAT('%',CONCAT(#{person.personName},'%'))
OR
A.train_name LIKE CONCAT('%',CONCAT(#{person.personName},'%'))
)
</if>
</where>
ORDER BY
A.create_time DESC
</select>
</mapper>

@ -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<TrainPerson> {
Page<TrainPerson> getTrainPersonInfoList(Page<TrainPerson> page, @Param TrainPerson person);
}

@ -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<TrainPersonMapper, TrainPerson> implements ITrainPersonService {
@Autowired
private TrainPersonMapper trainPersonMapper;
@Override
public Page<TrainPerson> getTrainPersonInfoList(Page<TrainPerson> page, TrainPerson person) {
Page<TrainPerson> trainPersonInfoPage = trainPersonMapper.getTrainPersonInfoList(page, person);
List<TrainPerson> 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);
}
}

@ -109,6 +109,7 @@ public class TrainServiceImpl extends BaseServiceImpl<TrainMapper, Train> implem
if (list != null && list.size() > 0) {
teacher.setRecentTrain(list.get(0).getName());
}
return teacherService.updateById(teacher);
}

Loading…
Cancel
Save