Browse Source

API-saving-activity-API-rrtturen-after-scan

new-feature
Viet.LeQ2 1 year ago
parent
commit
74d50fbf28
14 changed files with 315 additions and 238 deletions
  1. BIN
      build/libs/smart-farm-0.0.1-SNAPSHOT.war
  2. +1
    -1
      src/main/java/vn/azteam/tpf/domain/TBCodeDetails.java
  3. +5
    -0
      src/main/java/vn/azteam/tpf/repository/TBActivityTypeRepository.java
  4. +2
    -0
      src/main/java/vn/azteam/tpf/repository/TBCodeRepository.java
  5. +31
    -22
      src/main/java/vn/azteam/tpf/service/TBActivityTypeQueryService.java
  6. +2
    -2
      src/main/java/vn/azteam/tpf/service/TBCodeDetailsService.java
  7. +1
    -4
      src/main/java/vn/azteam/tpf/service/TBCodeService.java
  8. +53
    -0
      src/main/java/vn/azteam/tpf/service/dto/ActivityCodeCreationDTO.java
  9. +11
    -1
      src/main/java/vn/azteam/tpf/service/dto/TBActivityDTO.java
  10. +58
    -0
      src/main/java/vn/azteam/tpf/service/dto/TBCodeDetailsAndActivityDTO.java
  11. +0
    -113
      src/main/java/vn/azteam/tpf/service/dto/TBCropDetailDTOV2.java
  12. +92
    -83
      src/main/java/vn/azteam/tpf/service/impl/TBCodeDetailsImpl.java
  13. +6
    -9
      src/main/java/vn/azteam/tpf/web/rest/TBCodeDetailsResource.java
  14. +53
    -3
      src/main/java/vn/azteam/tpf/web/rest/TBCodeResource.java

BIN
build/libs/smart-farm-0.0.1-SNAPSHOT.war View File


+ 1
- 1
src/main/java/vn/azteam/tpf/domain/TBCodeDetails.java View File

@Table(name = "tb_code_details") @Table(name = "tb_code_details")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "smf_tbcodedetails") @Document(indexName = "smf_tbcodedetails")
public class TBCodeDetails implements Serializable {
public class TBCodeDetails implements Serializable {


private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;



+ 5
- 0
src/main/java/vn/azteam/tpf/repository/TBActivityTypeRepository.java View File

package vn.azteam.tpf.repository; package vn.azteam.tpf.repository;


import org.springframework.data.repository.query.Param;
import vn.azteam.tpf.domain.TBActivityType; import vn.azteam.tpf.domain.TBActivityType;
import org.springframework.data.jpa.repository.*; import org.springframework.data.jpa.repository.*;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;


import java.util.List;
import java.util.Optional; import java.util.Optional;




@Repository @Repository
public interface TBActivityTypeRepository extends JpaRepository<TBActivityType, Long>, JpaSpecificationExecutor<TBActivityType> { public interface TBActivityTypeRepository extends JpaRepository<TBActivityType, Long>, JpaSpecificationExecutor<TBActivityType> {
Optional<TBActivityType> getByName(String name); Optional<TBActivityType> getByName(String name);

@Query(value = "select tbt from TBActivityType tbt where tbt.isAfterHarvest = :isAfterHarvest")
List<TBActivityType> findByAfterHarvest(@Param("isAfterHarvest") Boolean isAfterHarvest);
} }

+ 2
- 0
src/main/java/vn/azteam/tpf/repository/TBCodeRepository.java View File



//@Query("select tb_crop from TBCrop tb_crop left join fetch tb_crop.tbDetailUsers where tb_crop.id =:id") //@Query("select tb_crop from TBCrop tb_crop left join fetch tb_crop.tbDetailUsers where tb_crop.id =:id")
Optional<TBCode> findById(Long id); Optional<TBCode> findById(Long id);

Optional<TBCode> findByCode(String code);
} }

+ 31
- 22
src/main/java/vn/azteam/tpf/service/TBActivityTypeQueryService.java View File

package vn.azteam.tpf.service; package vn.azteam.tpf.service;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.criteria.JoinType;

import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import io.github.jhipster.service.QueryService;
import io.github.jhipster.service.filter.InstantFilter; import io.github.jhipster.service.filter.InstantFilter;
import io.github.jhipster.service.filter.LongFilter;
import io.github.jhipster.service.filter.StringFilter; import io.github.jhipster.service.filter.StringFilter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

import io.github.jhipster.service.QueryService;

import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import vn.azteam.tpf.Constants.Constants; import vn.azteam.tpf.Constants.Constants;
import vn.azteam.tpf.domain.TBActivityType; import vn.azteam.tpf.domain.TBActivityType;
import vn.azteam.tpf.domain.*; // for static metamodels
import vn.azteam.tpf.domain.TBActivityType_;
import vn.azteam.tpf.domain.TBCustomer_;
import vn.azteam.tpf.domain.TBDetailUser_;
import vn.azteam.tpf.repository.TBActivityTypeRepository; import vn.azteam.tpf.repository.TBActivityTypeRepository;
import vn.azteam.tpf.service.dto.*;
import vn.azteam.tpf.service.dto.TBActivityTypeCriteria;
import vn.azteam.tpf.service.dto.TBActivityTypeDTO;
import vn.azteam.tpf.service.dto.UserDTO;
import vn.azteam.tpf.service.mapper.TBActivityTypeMapper; import vn.azteam.tpf.service.mapper.TBActivityTypeMapper;


import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.criteria.JoinType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/** /**
* Service for executing complex queries for TBActivityType entities in the database. * Service for executing complex queries for TBActivityType entities in the database.
* The main input is a {@link TBActivityTypeCriteria} which gets converted to {@link Specification}, * The main input is a {@link TBActivityTypeCriteria} which gets converted to {@link Specification},


/** /**
* Return a {@link List} of {@link TBActivityTypeDTO} which matches the criteria from the database * Return a {@link List} of {@link TBActivityTypeDTO} which matches the criteria from the database
*
* @param criteria The object which holds all the filters, which the entities should match. * @param criteria The object which holds all the filters, which the entities should match.
* @return the matching entities. * @return the matching entities.
*/ */
return tBActivityTypeMapper.toDto(tBActivityTypeRepository.findAll(specification)); return tBActivityTypeMapper.toDto(tBActivityTypeRepository.findAll(specification));
} }


@Transactional(readOnly = true)
public List<TBActivityTypeDTO> findByAfterHarvestTrue() {
log.debug("find by findByAfterHarvestTrue");
return tBActivityTypeMapper.toDto(tBActivityTypeRepository.findByAfterHarvest(Boolean.TRUE));
}

/** /**
* Return a {@link Page} of {@link TBActivityTypeDTO} which matches the criteria from the database * Return a {@link Page} of {@link TBActivityTypeDTO} which matches the criteria from the database
*
* @param criteria The object which holds all the filters, which the entities should match. * @param criteria The object which holds all the filters, which the entities should match.
* @param page The page, which should be returned.
* @param page The page, which should be returned.
* @return the matching entities. * @return the matching entities.
*/ */
@Transactional(readOnly = true) @Transactional(readOnly = true)


/** /**
* Return the number of matching entities in the database * Return the number of matching entities in the database
*
* @param criteria The object which holds all the filters, which the entities should match. * @param criteria The object which holds all the filters, which the entities should match.
* @return the number of matching entities. * @return the number of matching entities.
*/ */
} }


public TBActivityTypeDTO findActivityTypeByName(String name) { public TBActivityTypeDTO findActivityTypeByName(String name) {
List<TBActivityType>tbActivityTypes = tBActivityTypeRepository.findAll().stream()
List<TBActivityType> tbActivityTypes = tBActivityTypeRepository.findAll().stream()
.filter(x -> x.getName().equals(name)) .filter(x -> x.getName().equals(name))
.collect(Collectors.toList()); .collect(Collectors.toList());
List<TBActivityTypeDTO>tbActivityTypesDTO = tBActivityTypeMapper.toDto(tbActivityTypes);
List<TBActivityTypeDTO> tbActivityTypesDTO = tBActivityTypeMapper.toDto(tbActivityTypes);
return tbActivityTypesDTO.size() == 0 ? null : tbActivityTypesDTO.get(0); return tbActivityTypesDTO.size() == 0 ? null : tbActivityTypesDTO.get(0);
} }


} }


public TBActivityTypeDTO updateUploadedFiles(TBActivityTypeDTO tBActivityTypeDTO, public TBActivityTypeDTO updateUploadedFiles(TBActivityTypeDTO tBActivityTypeDTO,
MultipartFile[] images,
String deletedImage) {
MultipartFile[] images,
String deletedImage) {
if (deletedImage != null && deletedImage != Constants.EMPTY) { if (deletedImage != null && deletedImage != Constants.EMPTY) {
this.fileStorageService.removeFile("url_logo", deletedImage); this.fileStorageService.removeFile("url_logo", deletedImage);
} }
" from tb_activity_type as at\n" + " from tb_activity_type as at\n" +
" where at.deleted_date IS NULL "; " where at.deleted_date IS NULL ";


if(query != null && !query.isEmpty()) {
if (query != null && !query.isEmpty()) {
sqlString = sqlString + " and ( at.description like '%" + query + "%')\n"; sqlString = sqlString + " and ( at.description like '%" + query + "%')\n";
} }


List<TBActivityTypeDTO> tbActivityTypeDTOs = tBActivityTypeMapper.toDto(tbActivityTypeQuery.getResultList()); List<TBActivityTypeDTO> tbActivityTypeDTOs = tBActivityTypeMapper.toDto(tbActivityTypeQuery.getResultList());
int start = Math.toIntExact(pageable.getOffset()); int start = Math.toIntExact(pageable.getOffset());
int end = Math.toIntExact((start + pageable.getPageSize()) > tbActivityTypeDTOs.size() ? tbActivityTypeDTOs.size() : (start + pageable.getPageSize())); int end = Math.toIntExact((start + pageable.getPageSize()) > tbActivityTypeDTOs.size() ? tbActivityTypeDTOs.size() : (start + pageable.getPageSize()));
if(tbActivityTypeDTOs.size() > start) {
if (tbActivityTypeDTOs.size() > start) {
return new PageImpl<>(tbActivityTypeDTOs.subList(start, end), pageable, tbActivityTypeDTOs.size()); return new PageImpl<>(tbActivityTypeDTOs.subList(start, end), pageable, tbActivityTypeDTOs.size());
} }
return new PageImpl<>(Lists.newArrayList(), pageable, tbActivityTypeDTOs.size()); return new PageImpl<>(Lists.newArrayList(), pageable, tbActivityTypeDTOs.size());

+ 2
- 2
src/main/java/vn/azteam/tpf/service/TBCodeDetailsService.java View File

package vn.azteam.tpf.service; package vn.azteam.tpf.service;


import vn.azteam.tpf.service.dto.TBCodeDetailsAndActivityDTO;
import vn.azteam.tpf.service.dto.TBCodeDetailsCreationDTO; import vn.azteam.tpf.service.dto.TBCodeDetailsCreationDTO;
import vn.azteam.tpf.service.dto.TBCodeDetailsDTO; import vn.azteam.tpf.service.dto.TBCodeDetailsDTO;
import vn.azteam.tpf.service.dto.TBCropDetailDTOV2;
import vn.azteam.tpf.web.rest.errors.BadRequestAlertException; import vn.azteam.tpf.web.rest.errors.BadRequestAlertException;


import java.util.List; import java.util.List;


List<TBCodeDetailsDTO> saveAll(List<TBCodeDetailsCreationDTO> tBCodeDetailsDTOs); List<TBCodeDetailsDTO> saveAll(List<TBCodeDetailsCreationDTO> tBCodeDetailsDTOs);


TBCropDetailDTOV2 updateNumberScan(String code) throws BadRequestAlertException;
TBCodeDetailsAndActivityDTO updateNumberScan(String code) throws BadRequestAlertException;


Optional<TBCodeDetailsDTO> updateStatusTBCodeDetails(TBCodeDetailsDTO tBCodeDetailsDTO); Optional<TBCodeDetailsDTO> updateStatusTBCodeDetails(TBCodeDetailsDTO tBCodeDetailsDTO);
} }

+ 1
- 4
src/main/java/vn/azteam/tpf/service/TBCodeService.java View File

package vn.azteam.tpf.service; package vn.azteam.tpf.service;


import vn.azteam.tpf.domain.TBCodeStatusEnum;
import vn.azteam.tpf.service.dto.TBCodeDTO;
import vn.azteam.tpf.service.dto.TBCodeUpdateDTO;
import vn.azteam.tpf.service.dto.TBCropDTO;


import vn.azteam.tpf.service.dto.TBCodeDTO;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;



+ 53
- 0
src/main/java/vn/azteam/tpf/service/dto/ActivityCodeCreationDTO.java View File

package vn.azteam.tpf.service.dto;

import java.io.Serializable;
import java.time.Instant;

public class ActivityCodeCreationDTO implements Serializable {

private Long tbCropId;
private Long activityTypeId;
private Instant executeDate;
private String description;
private String location;

public Long getTbCropId() {
return tbCropId;
}

public void setTbCropId(Long tbCropId) {
this.tbCropId = tbCropId;
}

public Long getActivityTypeId() {
return activityTypeId;
}

public void setActivityTypeId(Long activityTypeId) {
this.activityTypeId = activityTypeId;
}

public Instant getExecuteDate() {
return executeDate;
}

public void setExecuteDate(Instant executeDate) {
this.executeDate = executeDate;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getLocation() {
return location;
}

public void setLocation(String location) {
this.location = location;
}
}

+ 11
- 1
src/main/java/vn/azteam/tpf/service/dto/TBActivityDTO.java View File

package vn.azteam.tpf.service.dto; package vn.azteam.tpf.service.dto;


import java.time.Instant;
import java.io.Serializable; import java.io.Serializable;
import java.time.Instant;
import java.util.Objects; import java.util.Objects;


/** /**


private String activityTypeDescription; private String activityTypeDescription;


private Boolean isAfterHarvest = Boolean.FALSE;

public Long getId() { public Long getId() {
return id; return id;
} }
this.activityTypeDescription = activityTypeDescription; this.activityTypeDescription = activityTypeDescription;
} }


public Boolean getAfterHarvest() {
return isAfterHarvest;
}

public void setAfterHarvest(Boolean afterHarvest) {
isAfterHarvest = afterHarvest;
}

@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) { if (this == o) {

+ 58
- 0
src/main/java/vn/azteam/tpf/service/dto/TBCodeDetailsAndActivityDTO.java View File

package vn.azteam.tpf.service.dto;

import java.io.Serializable;
import java.util.List;

public class TBCodeDetailsAndActivityDTO implements Serializable {

private String description;

private TBCodeDetailsDTO tbCodeDetailsDTO;
private TBCropDTO tbCropDTO;

// Use for web only
private ActivityTimelineDTO activityTimeline;

// Use for app only
private List<TBActivityDTO> activities;

public TBCodeDetailsDTO getTbCodeDetailsDTO() {
return tbCodeDetailsDTO;
}

public void setTbCodeDetailsDTO(TBCodeDetailsDTO tbCodeDetailsDTO) {
this.tbCodeDetailsDTO = tbCodeDetailsDTO;
}

public TBCropDTO getTbCropDTO() {
return tbCropDTO;
}

public void setTbCropDTO(TBCropDTO tbCropDTO) {
this.tbCropDTO = tbCropDTO;
}

public ActivityTimelineDTO getActivityTimeline() {
return activityTimeline;
}

public void setActivityTimeline(ActivityTimelineDTO activityTimeline) {
this.activityTimeline = activityTimeline;
}

public List<TBActivityDTO> getActivities() {
return activities;
}

public void setActivities(List<TBActivityDTO> activities) {
this.activities = activities;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}
}

+ 0
- 113
src/main/java/vn/azteam/tpf/service/dto/TBCropDetailDTOV2.java View File

package vn.azteam.tpf.service.dto;

import java.io.Serializable;
import java.time.Instant;
import java.util.List;

/**
* A DTO for the TBCrop entity.
*/
public class TBCropDetailDTOV2 implements Serializable {

private TBCropDTO tbCropDTO;

// Use for web only
private ActivityTimelineDTO activityTimeline;

// Use for app only
private List<TBActivityDTO> activities;

private Instant plantingDate;

private Instant sowingDate;

private Double seedIncubationTime;

private Integer numberPlants;

private Integer numberCurrentPlants;

private Instant endOfFarmingDate;

private TBAddressDTO tbAddressDTO;

public TBCropDTO getTbCropDTO() {
return tbCropDTO;
}

public void setTbCropDTO(TBCropDTO tbCropDTO) {
this.tbCropDTO = tbCropDTO;
}

public Instant getSowingDate() {
return sowingDate;
}

public void setSowingDate(Instant sowingDate) {
this.sowingDate = sowingDate;
}

public Instant getPlantingDate() {
return plantingDate;
}

public void setPlantingDate(Instant plantingDate) {
this.plantingDate = plantingDate;
}

public Double getSeedIncubationTime() {
return seedIncubationTime;
}

public void setSeedIncubationTime(Double seedIncubationTime) {
this.seedIncubationTime = seedIncubationTime;
}

public Integer getNumberPlants() {
return numberPlants;
}

public void setNumberPlants(Integer numberPlants) {
this.numberPlants = numberPlants;
}

public Integer getNumberCurrentPlants() {
return numberCurrentPlants;
}

public void setNumberCurrentPlants(Integer numberCurrentPlants) {
this.numberCurrentPlants = numberCurrentPlants;
}

public Instant getEndOfFarmingDate() {
return endOfFarmingDate;
}

public void setEndOfFarmingDate(Instant endOfFarmingDate) {
this.endOfFarmingDate = endOfFarmingDate;
}

public List<TBActivityDTO> getActivities() {
return activities;
}

public void setActivities(List<TBActivityDTO> activities) {
this.activities = activities;
}

public ActivityTimelineDTO getActivityTimeline() {
return activityTimeline;
}

public void setActivityTimeline(ActivityTimelineDTO activityTimeline) {
this.activityTimeline = activityTimeline;
}

public TBAddressDTO getTbAddressDTO() {
return tbAddressDTO;
}

public void setTbAddressDTO(TBAddressDTO tbAddressDTO) {
this.tbAddressDTO = tbAddressDTO;
}
}

+ 92
- 83
src/main/java/vn/azteam/tpf/service/impl/TBCodeDetailsImpl.java View File

import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import static vn.azteam.tpf.Constants.Constants.*;

/** /**
* Service Implementation for managing TBCodeDetails. * Service Implementation for managing TBCodeDetails.
*/ */


private final UserService userService; private final UserService userService;


private final TBObjectUpdateService tbObjectUpdateService;

private final UserRoleUtil userRoleUtil; private final UserRoleUtil userRoleUtil;


private final TBActivityQueryService tBActivityQueryService; private final TBActivityQueryService tBActivityQueryService;
TBCodeDetailsMapper tBCodeDetailsMapper, TBCodeDetailsMapper tBCodeDetailsMapper,
TBDetailUserRepository tBDetailUserRepository, TBDetailUserRepository tBDetailUserRepository,
UserService userService, UserService userService,
TBObjectUpdateService tbObjectUpdateService,
UserRoleUtil userRoleUtil, UserRoleUtil userRoleUtil,
TBActivityQueryService tBActivityQueryService,
TBCropService tbCropService,
TBCropQueryService tBCropQueryService, TBCropMapper tbCropMapper,
TBActivityQueryService tBActivityQueryService, TBCropService tbCropService,
TBCropQueryService tBCropQueryService,
TBCropMapper tbCropMapper,
TBCodeDetailsSearchRepository tBCodeDetailsSearchRepository) { TBCodeDetailsSearchRepository tBCodeDetailsSearchRepository) {
this.tbCodeDetailsRepository = tbCodeDetailsRepository; this.tbCodeDetailsRepository = tbCodeDetailsRepository;
this.tBCodeDetailsMapper = tBCodeDetailsMapper; this.tBCodeDetailsMapper = tBCodeDetailsMapper;
this.tBDetailUserRepository = tBDetailUserRepository; this.tBDetailUserRepository = tBDetailUserRepository;
this.userService = userService; this.userService = userService;
this.tbObjectUpdateService = tbObjectUpdateService;
this.userRoleUtil = userRoleUtil; this.userRoleUtil = userRoleUtil;
this.tBActivityQueryService = tBActivityQueryService; this.tBActivityQueryService = tBActivityQueryService;
this.tbCropService = tbCropService; this.tbCropService = tbCropService;
} }


@Transactional @Transactional
public TBCropDetailDTOV2 updateNumberScan(String code) throws BadRequestAlertException {
public TBCodeDetailsAndActivityDTO updateNumberScan(String code) throws BadRequestAlertException {
Optional<TBCodeDetails> tbCodeDetailsOptional = tbCodeDetailsRepository.findByCode(code); Optional<TBCodeDetails> tbCodeDetailsOptional = tbCodeDetailsRepository.findByCode(code);
if (tbCodeDetailsOptional.isPresent()) { if (tbCodeDetailsOptional.isPresent()) {
TBCodeDetails tbCodeDetails = tbCodeDetailsOptional.get(); TBCodeDetails tbCodeDetails = tbCodeDetailsOptional.get();
Integer numberScan = tbCodeDetails.getNumberScan(); Integer numberScan = tbCodeDetails.getNumberScan();
tbCodeDetails.setNumberScan(numberScan.equals(0) ? 1 : numberScan + 1); tbCodeDetails.setNumberScan(numberScan.equals(0) ? 1 : numberScan + 1);
tbCodeDetails.setLastUpdatedDate(Instant.now()); tbCodeDetails.setLastUpdatedDate(Instant.now());
tbCodeDetailsRepository.save(tbCodeDetails);
tbCodeDetails = tbCodeDetailsRepository.save(tbCodeDetails);
log.debug("update number scan find by criteria code : {}", code); log.debug("update number scan find by criteria code : {}", code);
return this.getCodeDetailDTOResponseEntity(tbCropMapper.toDto(tbCodeDetailsOptional.get().getTbCode().getTbCrop()), Pageable.unpaged(), true);
TBCodeDetailsAndActivityDTO tbCodeDetailsAndActivityDTO = this.getCodeDetailDTOResponseEntity(tbCropMapper.toDto(tbCodeDetailsOptional.get().getTbCode().getTbCrop()), Pageable.unpaged(), true);
tbCodeDetailsAndActivityDTO.setTbCodeDetailsDTO(tBCodeDetailsMapper.toDto(tbCodeDetails));
tbCodeDetailsAndActivityDTO.setDescription(tbCode.getDescription());
return tbCodeDetailsAndActivityDTO;
} else { } else {
throw new BadRequestAlertException("Scan code not found", "tb code details with code:", code); throw new BadRequestAlertException("Scan code not found", "tb code details with code:", code);
} }
} }


private TBCropDetailDTOV2 getCodeDetailDTOResponseEntity(
private TBCodeDetailsAndActivityDTO getCodeDetailDTOResponseEntity(
TBCropDTO tBCropDTO, TBCropDTO tBCropDTO,
Pageable pageable, Pageable pageable,
Boolean isRequestedFromWeb) { Boolean isRequestedFromWeb) {
throw new BadRequestAlertException("1018", ENTITY_NAME, "1018"); throw new BadRequestAlertException("1018", ENTITY_NAME, "1018");
} }
Optional<UserDTO> currentUser = userService.getCurrentUserDTO(); Optional<UserDTO> currentUser = userService.getCurrentUserDTO();
TBCropDetailDTOV2 tbCropDetailDTO = new TBCropDetailDTOV2();
tbCropDetailDTO.setTbCropDTO(tBCropDTO);
TBCodeDetailsAndActivityDTO tbCodeDetailsAndActivityDTO = new TBCodeDetailsAndActivityDTO();
tbCodeDetailsAndActivityDTO.setTbCropDTO(tBCropDTO);
// Get list of activity // Get list of activity
TBActivityCriteria criteria = new TBActivityCriteria(); TBActivityCriteria criteria = new TBActivityCriteria();
LongFilter cropFilter = new LongFilter(); LongFilter cropFilter = new LongFilter();
cropFilter.setEquals(tBCropDTO.getId()); cropFilter.setEquals(tBCropDTO.getId());
criteria.setCropId(cropFilter); criteria.setCropId(cropFilter);

// List<TBActivityTypeDTO> activityTypeDTOS = tBActivityTypeQueryService.findByAfterHarvestTrue();
// List<Long> ids = activityTypeDTOS.stream().map(TBActivityTypeDTO::getId).collect(Collectors.toList())

List<TBActivityDTO> allActivities = tBActivityQueryService.findByCriteria(criteria).stream() List<TBActivityDTO> allActivities = tBActivityQueryService.findByCriteria(criteria).stream()
.sorted(Comparator.comparing( .sorted(Comparator.comparing(
TBActivityDTO::getExecuteDate, TBActivityDTO::getExecuteDate,
Comparator.nullsLast(Comparator.naturalOrder())).reversed()) Comparator.nullsLast(Comparator.naturalOrder())).reversed())
.collect(Collectors.toList()); .collect(Collectors.toList());

if (!allActivities.isEmpty()) {
allActivities = allActivities.stream()
.filter(tbActivityDTO -> tbActivityDTO.getAfterHarvest().equals(Boolean.TRUE))
.collect(Collectors.toList());
}
//remove env activities automatically //remove env activities automatically
allActivities
.removeIf(activity -> ACTIVE_TYPE_UPDATE_ENV.equals(activity.getActivityTypeName())
&& activity.getCreatedById() == null);
// allActivities
// .removeIf(activity -> ACTIVE_TYPE_UPDATE_ENV.equals(activity.getActivityTypeName())
// && activity.getCreatedById() == null);
// allActivities.removeIf(activity -> ACTIVE_TYPE_UPDATE_ENV.equals(activity.getActivityTypeId())
// && activity.getCreatedById() == null)


// Lo Uom // Lo Uom
if (tBCropDTO.getTbCropTypeId() == 1) {
// Get sowing Date
TBActivityDTO nurseryActivity = allActivities.stream()
.sorted(Comparator.comparing(
TBActivityDTO::getExecuteDate,
Comparator.nullsLast(Comparator.naturalOrder())))
.filter(activity -> ACTIVE_TYPE_NURSERY.equals(activity.getActivityTypeName()))
.findAny()
.orElse(null);
if (nurseryActivity != null) {
tbCropDetailDTO.setSowingDate(nurseryActivity.getExecuteDate());
List<TBObjectUpdateDTO> tbObjectUpdateDTOs = tbObjectUpdateService.findByTBActivityId(nurseryActivity.getId(),
Pageable.unpaged());
if (tbObjectUpdateDTOs != null && tbObjectUpdateDTOs.size() > 0) {
tbObjectUpdateDTOs.forEach(item -> {
if (item.getTbObjectParameterDTO().getName().equals(THOI_GIAN_NGAM_HAT)) {
item.setIndex(item.getIndex() != null && !item.getIndex().isEmpty() ? item.getIndex() : "0");
tbCropDetailDTO.setSeedIncubationTime(Double.valueOf(item.getIndex()));
}
});
}
}
}
// if (tBCropDTO.getTbCropTypeId() == 1) {
// // Get sowing Date
// TBActivityDTO nurseryActivity = allActivities.stream()
// .sorted(Comparator.comparing(
// TBActivityDTO::getExecuteDate,
// Comparator.nullsLast(Comparator.naturalOrder())))
// .filter(activity -> ACTIVE_TYPE_NURSERY.equals(activity.getActivityTypeName()))
// .findAny()
// .orElse(null);
// if (nurseryActivity != null) {
// tbCropDetailDTO.setSowingDate(nurseryActivity.getExecuteDate());
// List<TBObjectUpdateDTO> tbObjectUpdateDTOs = tbObjectUpdateService.findByTBActivityId(nurseryActivity.getId(),
// Pageable.unpaged());
// if (tbObjectUpdateDTOs != null && tbObjectUpdateDTOs.size() > 0) {
// tbObjectUpdateDTOs.forEach(item -> {
// if (item.getTbObjectParameterDTO().getName().equals(THOI_GIAN_NGAM_HAT)) {
// item.setIndex(item.getIndex() != null && !item.getIndex().isEmpty() ? item.getIndex() : "0");
// tbCropDetailDTO.setSeedIncubationTime(Double.valueOf(item.getIndex()));
// }
// });
// }
// }
// }
//Lo Trong //Lo Trong
if (tBCropDTO.getTbCropTypeId() == 2) {
// Get planting Date
TBActivityDTO plantingActivity = allActivities.stream()
.sorted(Comparator.comparing(
TBActivityDTO::getExecuteDate,
Comparator.nullsLast(Comparator.naturalOrder())))
.filter(activity -> ACTIVE_TYPE_PLANTING.equals(activity.getActivityTypeName()))
.findAny()
.orElse(null);
tbCropDetailDTO.setPlantingDate(plantingActivity != null ? plantingActivity.getExecuteDate() : null);
List<Long> listActivities = allActivities.stream().map(TBActivityDTO::getId).collect(Collectors.toList());
List<TBObjectUpdateDTO> tbObjectUpdateDTOs = tbObjectUpdateService.findByInListTBActivityId(listActivities, Pageable.unpaged());
if (tbObjectUpdateDTOs != null && tbObjectUpdateDTOs.size() > 0) {
tbObjectUpdateDTOs.forEach(item -> {
if (item.getTbObjectParameterDTO().getName().equals(SO_LUONG_CAY_TRONG)) {
item.setIndex(item.getIndex() != null && !item.getIndex().isEmpty() ? item.getIndex() : "0");
tbCropDetailDTO.setNumberPlants(Integer.parseInt(item.getIndex().replaceAll("[^0-9]", "")));
tbCropDetailDTO.setNumberCurrentPlants(Integer.parseInt(item.getIndex().replaceAll("[^0-9]", "")));
}
if (item.getTbObjectParameterDTO().getName().equals(SO_LUONG_LOAI_BO)) {
item.setIndex(item.getIndex() != null && !item.getIndex().isEmpty() ? item.getIndex() : "0");
Integer currentNumberPlants = tbCropDetailDTO.getNumberPlants() - Integer.parseInt(item.getIndex().replaceAll("[^0-9]", ""));
tbCropDetailDTO.setNumberCurrentPlants(currentNumberPlants > 0 ? currentNumberPlants : 0);
}
});
}
}
// if (tBCropDTO.getTbCropTypeId() == 2) {
// // Get planting Date
// TBActivityDTO plantingActivity = allActivities.stream()
// .sorted(Comparator.comparing(
// TBActivityDTO::getExecuteDate,
// Comparator.nullsLast(Comparator.naturalOrder())))
// .filter(activity -> ACTIVE_TYPE_PLANTING.equals(activity.getActivityTypeName()))
// .findAny()
// .orElse(null);
//
// tbCropDetailDTO.setPlantingDate(plantingActivity != null ? plantingActivity.getExecuteDate() : null);
// List<Long> listActivities = allActivities.stream().map(TBActivityDTO::getId).collect(Collectors.toList());
// List<TBObjectUpdateDTO> tbObjectUpdateDTOs = tbObjectUpdateService.findByInListTBActivityId(listActivities, Pageable.unpaged());
//
// if (tbObjectUpdateDTOs != null && tbObjectUpdateDTOs.size() > 0) {
// tbObjectUpdateDTOs.forEach(item -> {
// if (item.getTbObjectParameterDTO().getName().equals(SO_LUONG_CAY_TRONG)) {
// item.setIndex(item.getIndex() != null && !item.getIndex().isEmpty() ? item.getIndex() : "0");
// tbCropDetailDTO.setNumberPlants(Integer.parseInt(item.getIndex().replaceAll("[^0-9]", "")));
// tbCropDetailDTO.setNumberCurrentPlants(Integer.parseInt(item.getIndex().replaceAll("[^0-9]", "")));
// }
// if (item.getTbObjectParameterDTO().getName().equals(SO_LUONG_LOAI_BO)) {
// item.setIndex(item.getIndex() != null && !item.getIndex().isEmpty() ? item.getIndex() : "0");
// Integer currentNumberPlants = tbCropDetailDTO.getNumberPlants() - Integer.parseInt(item.getIndex().replaceAll("[^0-9]", ""));
// tbCropDetailDTO.setNumberCurrentPlants(currentNumberPlants > 0 ? currentNumberPlants : 0);
// }
// });
// }
// }


//Filter assignment croptype by customer //Filter assignment croptype by customer
if (currentUser.get().getCustomerId() != null) { if (currentUser.get().getCustomerId() != null) {
if (isRequestedFromWeb) { if (isRequestedFromWeb) {
ActivityTimelineDTO activityTimeline = ActivityTimelineDTO activityTimeline =
tBCropQueryService.getActivityTimeline(tBCropDTO.getId(), allActivities, pageable); tBCropQueryService.getActivityTimeline(tBCropDTO.getId(), allActivities, pageable);
tbCropDetailDTO.setActivityTimeline(activityTimeline);
tbCodeDetailsAndActivityDTO.setActivityTimeline(activityTimeline);
} else { } else {
//allActivities = pageableUtil.changeTBActivityDTOToPageFromList(allActivities, pageable).getContent(); //allActivities = pageableUtil.changeTBActivityDTOToPageFromList(allActivities, pageable).getContent();
tbCropDetailDTO.setActivities(allActivities);
tbCodeDetailsAndActivityDTO.setActivities(allActivities);
} }


TBActivityDTO endActivity = allActivities.stream()
.sorted(Comparator.comparing(
TBActivityDTO::getExecuteDate,
Comparator.nullsLast(Comparator.naturalOrder())).reversed())
.filter(activity -> ACTIVE_TYPE_END.equals(activity.getActivityTypeName()))
.findAny()
.orElse(null);
if (endActivity != null) {
tbCropDetailDTO.setEndOfFarmingDate(endActivity.getExecuteDate());
}
return tbCropDetailDTO;
// TBActivityDTO endActivity = allActivities.stream()
// .sorted(Comparator.comparing(
// TBActivityDTO::getExecuteDate,
// Comparator.nullsLast(Comparator.naturalOrder())).reversed())
// .filter(activity -> ACTIVE_TYPE_END.equals(activity.getActivityTypeName()))
// .findAny()
// .orElse(null);
// if (endActivity != null) {
// tbCropDetailDTO.setEndOfFarmingDate(endActivity.getExecuteDate());
// }
return tbCodeDetailsAndActivityDTO;
} }


@Override @Override

+ 6
- 9
src/main/java/vn/azteam/tpf/web/rest/TBCodeDetailsResource.java View File



import com.codahale.metrics.annotation.Timed; import com.codahale.metrics.annotation.Timed;
import io.github.jhipster.web.util.ResponseUtil; import io.github.jhipster.web.util.ResponseUtil;
import io.searchbox.strings.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import vn.azteam.tpf.domain.TBCodeStatusEnum; import vn.azteam.tpf.domain.TBCodeStatusEnum;
import vn.azteam.tpf.service.TBCodeDetailsQueryService;
import vn.azteam.tpf.service.TBCodeDetailsService; import vn.azteam.tpf.service.TBCodeDetailsService;
import vn.azteam.tpf.service.UserService; import vn.azteam.tpf.service.UserService;
import vn.azteam.tpf.service.dto.TBCodeDetailsAndActivityDTO;
import vn.azteam.tpf.service.dto.TBCodeDetailsDTO; import vn.azteam.tpf.service.dto.TBCodeDetailsDTO;
import vn.azteam.tpf.service.dto.TBCropDetailDTOV2;
import vn.azteam.tpf.service.dto.UserDTO; import vn.azteam.tpf.service.dto.UserDTO;
import vn.azteam.tpf.service.util.PageableUtil;
import vn.azteam.tpf.service.util.UserRoleUtil;
import vn.azteam.tpf.web.rest.errors.BadRequestAlertException; import vn.azteam.tpf.web.rest.errors.BadRequestAlertException;


import java.time.Instant; import java.time.Instant;
} }


@GetMapping("/tb-code-details/scan/{code}") @GetMapping("/tb-code-details/scan/{code}")
public ResponseEntity<TBCropDetailDTOV2> getTBCodeDetailsScan(@PathVariable String code) {
public ResponseEntity<TBCodeDetailsAndActivityDTO> getTBCodeDetailsScan(@PathVariable String code) {
if (StringUtils.isBlank(code)) { if (StringUtils.isBlank(code)) {
return (ResponseEntity<TBCropDetailDTOV2>) ResponseEntity.badRequest();
return (ResponseEntity<TBCodeDetailsAndActivityDTO>) ResponseEntity.badRequest();
} }
TBCropDetailDTOV2 tbCropDetailDTOV2ResponseEntity = tBCodeDetailsService.updateNumberScan(code);
return ResponseEntity.ok().headers(null).body(tbCropDetailDTOV2ResponseEntity);
TBCodeDetailsAndActivityDTO tbCodeDetailsAndActivityDTO = tBCodeDetailsService.updateNumberScan(code);
return ResponseEntity.ok().headers(null).body(tbCodeDetailsAndActivityDTO);
} }





+ 53
- 3
src/main/java/vn/azteam/tpf/web/rest/TBCodeResource.java View File

import vn.azteam.tpf.web.rest.util.PaginationUtil; import vn.azteam.tpf.web.rest.util.PaginationUtil;
import vn.azteam.tpf.web.rest.util.RandomStringUtil; import vn.azteam.tpf.web.rest.util.RandomStringUtil;


import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.time.Instant; import java.time.Instant;


private final TBCodeService tBCodeService; private final TBCodeService tBCodeService;


private final TBCodeDetailsService tbCodeDetailsService;
private final TBActivityTypeService tBActivityTypeService;

private final TBActivityService tBActivityService;


private final TBCropService tBCropService; private final TBCropService tBCropService;




private final PageableUtil pageableUtil; private final PageableUtil pageableUtil;


public TBCodeResource(TBCodeService tBCodeService, TBCodeDetailsService tbCodeDetailsService, TBCropService tBCropService, UserService userService, TBCodeQueryService tBCodeQueryService, UserRoleUtil userRoleUtil, PageableUtil pageableUtil) {
public TBCodeResource(TBCodeService tBCodeService, TBActivityTypeService tBActivityTypeService,
TBActivityService tBActivityService, TBCropService tBCropService, UserService userService,
TBCodeQueryService tBCodeQueryService,
UserRoleUtil userRoleUtil, PageableUtil pageableUtil) {
this.tBCodeService = tBCodeService; this.tBCodeService = tBCodeService;
this.tbCodeDetailsService = tbCodeDetailsService;
this.tBActivityTypeService = tBActivityTypeService;
this.tBActivityService = tBActivityService;
this.tBCropService = tBCropService; this.tBCropService = tBCropService;
this.userService = userService; this.userService = userService;
this.tBCodeQueryService = tBCodeQueryService; this.tBCodeQueryService = tBCodeQueryService;
public ResponseEntity<TBCodeDTO> getTBCodes(@PathVariable Long id) { public ResponseEntity<TBCodeDTO> getTBCodes(@PathVariable Long id) {
log.debug("REST request to get TBCode : {}", id); log.debug("REST request to get TBCode : {}", id);
Optional<TBCodeDTO> tBCodeDTO = tBCodeService.findOne(id); Optional<TBCodeDTO> tBCodeDTO = tBCodeService.findOne(id);
// tra them thong tin hoat dong
//@CUONGLT - Filter scope customer's data //@CUONGLT - Filter scope customer's data
// if (!userRoleUtil.currentUserHasPermissionByCropId(tBCodeDTO.get().getId())) { // if (!userRoleUtil.currentUserHasPermissionByCropId(tBCodeDTO.get().getId())) {
// throw new BadRequestAlertException("1018", ENTITY_NAME, "1018"); // throw new BadRequestAlertException("1018", ENTITY_NAME, "1018");
return ResponseUtil.wrapOrNotFound(tBCodeDTO); return ResponseUtil.wrapOrNotFound(tBCodeDTO);
} }


// 1 api tạo hoạt động cho code
@PostMapping("/tb-codes/create/activity")
@Timed
public ResponseEntity<TBActivityDTO> createActivityForTBCode(@RequestBody ActivityCodeCreationDTO
activityCodeCreationDTO) throws IOException {

log.debug("REST request to save TBActivityDTO : {}", activityCodeCreationDTO);
//Set created by to current user login
UserDTO currentUser = userService.getCurrentUserDTO().get();
if (activityCodeCreationDTO.getTbCropId() == null) {
throw new BadRequestAlertException("1047", ENTITY_NAME, "1047");
}
if (activityCodeCreationDTO.getActivityTypeId() == null) {
throw new BadRequestAlertException("1047", ENTITY_NAME, "1047");
}
if (activityCodeCreationDTO.getExecuteDate() == null) {
throw new BadRequestAlertException("1047", ENTITY_NAME, "1047");
}

Optional<TBCropDTO> tBCropDTO = tBCropService.findOne(activityCodeCreationDTO.getTbCropId());
if (!tBCropDTO.isPresent()) {
throw new BadRequestAlertException("1019", ENTITY_NAME, "1019");
}

Optional<TBActivityTypeDTO> tbActivityTypeDTO = tBActivityTypeService.findOne(activityCodeCreationDTO.getActivityTypeId());
if (!tbActivityTypeDTO.isPresent()) {
throw new BadRequestAlertException("1019", ENTITY_NAME, "1019");
}

TBActivityDTO activityDTO = new TBActivityDTO();
activityDTO.setCreatedById(currentUser.getId());
activityDTO.setActivityTypeId(activityCodeCreationDTO.getActivityTypeId());
activityDTO.setDescription(activityCodeCreationDTO.getDescription());
activityDTO.setExecuteDate(activityCodeCreationDTO.getExecuteDate());
activityDTO.setCropId(activityCodeCreationDTO.getTbCropId());
activityDTO.setCreatedDate(Instant.now());
TBActivityDTO result = tBActivityService.save(activityDTO);
return ResponseEntity.badRequest()
.headers(HeaderUtil.createEntityUpdateAlert("TBActivity", "Created activity success!"))
.body(result);
}

/** /**
* Add or delete crop's person in charges * Add or delete crop's person in charges
* *

Loading…
Cancel
Save