#90 diagrams
parent
59bc0dbd34
commit
49e407f455
@ -0,0 +1,68 @@
|
|||||||
|
package ru.ulstu.user.model;
|
||||||
|
|
||||||
|
import ru.ulstu.core.model.BaseEntity;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.ManyToOne;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.persistence.Temporal;
|
||||||
|
import javax.persistence.TemporalType;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "users_workloads")
|
||||||
|
public class UserWorkload extends BaseEntity {
|
||||||
|
|
||||||
|
@Column(name = "hours")
|
||||||
|
private int hours;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Temporal(value = TemporalType.TIMESTAMP)
|
||||||
|
@Column(name = "date_from")
|
||||||
|
private Date dateFrom;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Column(name = "date_to")
|
||||||
|
@Temporal(value = TemporalType.TIMESTAMP)
|
||||||
|
private Date dateTo;
|
||||||
|
|
||||||
|
@ManyToOne(optional = false)
|
||||||
|
@JoinColumn(name = "user_id")
|
||||||
|
private User user;
|
||||||
|
|
||||||
|
public int getHours() {
|
||||||
|
return hours;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHours(int hours) {
|
||||||
|
this.hours = hours;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDateFrom() {
|
||||||
|
return dateFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDateFrom(Date dateFrom) {
|
||||||
|
this.dateFrom = dateFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDateTo() {
|
||||||
|
return dateTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDateTo(Date dateTo) {
|
||||||
|
this.dateTo = dateTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public User getUser() {
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUser(User user) {
|
||||||
|
this.user = user;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package ru.ulstu.user.model;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class UserWorkloadDto {
|
||||||
|
private int hours;
|
||||||
|
private Date dateFrom;
|
||||||
|
private Date dateTo;
|
||||||
|
|
||||||
|
public UserWorkloadDto() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserWorkloadDto(int hours, Date dateFrom, Date dateTo) {
|
||||||
|
this.hours = hours;
|
||||||
|
this.dateFrom = dateFrom;
|
||||||
|
this.dateTo = dateTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserWorkloadDto(UserWorkload workload) {
|
||||||
|
this.hours = workload.getHours();
|
||||||
|
this.dateFrom = workload.getDateFrom();
|
||||||
|
this.dateTo = workload.getDateTo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHours() {
|
||||||
|
return hours;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHours(int hours) {
|
||||||
|
this.hours = hours;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDateFrom() {
|
||||||
|
return dateFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDateFrom(Date dateFrom) {
|
||||||
|
this.dateFrom = dateFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDateTo() {
|
||||||
|
return dateTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDateTo(Date dateTo) {
|
||||||
|
this.dateTo = dateTo;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package ru.ulstu.user.repository;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
import ru.ulstu.user.model.User;
|
||||||
|
import ru.ulstu.user.model.UserWorkload;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface UserWorkloadRepository extends JpaRepository<UserWorkload, Integer> {
|
||||||
|
List<UserWorkload> findAllByUser(User user);
|
||||||
|
|
||||||
|
@Query("SELECT uw FROM UserWorkload uw WHERE (user = :user) AND (dateFrom >= :dateFrom) AND (dateTo <= :dateTo) ORDER BY uw.dateFrom")
|
||||||
|
List<UserWorkload> findByUserAndInterval(@Param("user") User user, @Param("dateFrom") Date dateFrom, @Param("dateTo") Date dateTo);
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package ru.ulstu.user.service;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import ru.ulstu.configuration.ApplicationProperties;
|
||||||
|
import ru.ulstu.user.model.User;
|
||||||
|
import ru.ulstu.user.model.UserWorkload;
|
||||||
|
import ru.ulstu.user.model.UserWorkloadDto;
|
||||||
|
import ru.ulstu.user.repository.UserWorkloadRepository;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional
|
||||||
|
public class UserWorkloadService {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(UserWorkloadService.class);
|
||||||
|
private final ApplicationProperties applicationProperties;
|
||||||
|
private final UserWorkloadRepository userWorkloadRepository;
|
||||||
|
|
||||||
|
public UserWorkloadService(UserWorkloadRepository userWorkloadRepository,
|
||||||
|
ApplicationProperties applicationProperties) {
|
||||||
|
this.applicationProperties = applicationProperties;
|
||||||
|
this.userWorkloadRepository = userWorkloadRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserWorkload(User user, UserWorkloadDto userWorkloadDto) {
|
||||||
|
UserWorkload workload = new UserWorkload();
|
||||||
|
|
||||||
|
workload.setHours(userWorkloadDto.getHours());
|
||||||
|
workload.setDateFrom(userWorkloadDto.getDateFrom());
|
||||||
|
workload.setDateTo(userWorkloadDto.getDateTo());
|
||||||
|
workload.setUser(user);
|
||||||
|
|
||||||
|
userWorkloadRepository.save(workload);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<UserWorkloadDto> getUserWorkloads(User user, Date dateFrom, Date dateTo) {
|
||||||
|
List<UserWorkloadDto> workloadDtos = new ArrayList<>();
|
||||||
|
for (UserWorkload workload : userWorkloadRepository.findByUserAndInterval(user, dateFrom, dateTo)) {
|
||||||
|
workloadDtos.add(new UserWorkloadDto(workload));
|
||||||
|
}
|
||||||
|
return workloadDtos;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
|
||||||
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
|
<changeSet author="arefyev" id="20190521_000000-1">
|
||||||
|
<createTable tableName="users_workloads">
|
||||||
|
<column name="id" type="integer">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
<column name="version" type="INTEGER"/>
|
||||||
|
<column name="hours" type="integer"/>
|
||||||
|
<column name="date_from" type="timestamp"/>
|
||||||
|
<column name="date_to" type="timestamp"/>
|
||||||
|
<column name="user_id" type="integer"/>
|
||||||
|
</createTable>
|
||||||
|
<addPrimaryKey tableName="users_workloads" columnNames="id" constraintName="users_workloads_pkey"/>
|
||||||
|
<addForeignKeyConstraint baseTableName="users_workloads" baseColumnNames="user_id"
|
||||||
|
constraintName="fk_user__workload" referencedTableName="users"
|
||||||
|
referencedColumnNames="id"/>
|
||||||
|
|
||||||
|
</changeSet>
|
||||||
|
</databaseChangeLog>
|
Loading…
Reference in New Issue