Advertisement
Guest User

Untitled

a guest
Feb 4th, 2025
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.86 KB | None | 0 0
  1. --Entity
  2.  
  3. package com.monogram.ngs.entity;
  4.  
  5. import com.monogram.ngs.dto.SampleDTO;
  6. import com.monogram.ngs.dto.SampleRegionDTO;
  7. import jakarta.persistence.*;
  8. import lombok.AllArgsConstructor;
  9. import lombok.Data;
  10. import lombok.NoArgsConstructor;
  11.  
  12. import java.io.Serializable;
  13. import java.sql.NClob;
  14. import java.time.LocalDateTime;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17.  
  18. @Entity
  19. @NoArgsConstructor
  20. @AllArgsConstructor
  21. @Data
  22. @Table(name = "NGS_SAMPLE")
  23. @NamedNativeQuery(
  24. name = "sampleSummary_native_query_dto",
  25. query = """
  26. SELECT
  27. s.SAMPLE_NAME as sampleName,
  28. s.SAMPLE_PROJECT as sampleProject,
  29. s.SAMPLE_PLATE as samplePlate,
  30. s.STATUS as sampleStatus,
  31. s.SUBTYPE as subType,
  32. s.PNG_FILE as pngFile,
  33. s.CSV_FILE as csvFile,
  34. s.FASTA_FILE as fastaFile,
  35. s.ERR_FILE as errFile,
  36. s.CHECKED_OUT_BY_ID as checked_out_by_id,
  37. sr.ASSAY_REGION as assayRegion,
  38. sr.MIN_FINAL_DEPTH as minFinalDepth,
  39. sr.MUTLIST
  40. FROM
  41. NGS_SAMPLE s,
  42. NGS_SAMPLEREGION sr
  43. WHERE
  44. s.ID = sr.SAMPLE_ID
  45. AND
  46. s.SAMPLE_PLATE=:batchID
  47. """,
  48. resultSetMapping = "SampleDTO.SampleRegionDTO"
  49. )
  50. @SqlResultSetMapping(
  51. name = "SampleDTO.SampleRegionDTO",
  52. classes = {
  53. @ConstructorResult(
  54. targetClass = SampleDTO.class,
  55. columns = {
  56. @ColumnResult(name = "sampleName", type = String.class),
  57. @ColumnResult(name = "sampleProject", type = String.class),
  58. @ColumnResult(name = "samplePlate", type = String.class),
  59. @ColumnResult(name = "sampleStatus", type = String.class),
  60. @ColumnResult(name = "subType", type = String.class),
  61. @ColumnResult(name = "pngFile", type = String.class),
  62. @ColumnResult(name = "csvFile", type = String.class),
  63. @ColumnResult(name = "fastaFile", type = String.class),
  64. @ColumnResult(name = "errFile", type = String.class),
  65. @ColumnResult(name = "checked_out_by_id", type = Long.class)
  66. }
  67. ),
  68. @ConstructorResult(
  69. targetClass = SampleRegionDTO.class,
  70. columns = {
  71. @ColumnResult(name = "assayRegion", type = String.class),
  72. @ColumnResult(name = "minFinalDepth", type = Long.class),
  73. @ColumnResult(name = "mutList", type = String.class)
  74. }
  75. )
  76. }
  77.  
  78. )
  79. public class Sample implements Serializable {
  80. @Id
  81. @Column(name="ID")
  82. Long id;
  83. @Column(name="CREATEDDATE")
  84. LocalDateTime createdDate;
  85. @Column(name="MODIFIEDDATE")
  86. LocalDateTime modifiedDate;
  87. @Column(name="STATUS")
  88. String sampleStatus;
  89. @Column(name="IS_CONTROL")
  90. Long is_Control;
  91. @Column(name="ASSAY_TYPE")
  92. String assayType;
  93. @Column(name="SAMPLE_NO")
  94. Long sample_No;
  95. @Column(name="SAMPLE_NAME")
  96. String sampleName;
  97. @Column(name="SAMPLE_PLATE")
  98. String samplePlate;
  99. @Column(name="SAMPLE_WELL")
  100. String sampleWell;
  101. @Column(name="I7_INDEX_ID")
  102. String i7_index_id;
  103. @Column(name="INDEX")
  104. String index;
  105. @Column(name="I5_INDEX_ID")
  106. String i5_index_id;
  107. @Column(name="INDEX2")
  108. String index2;
  109. @Column(name="SAMPLE_PROJECT")
  110. String sampleProject;
  111. @Column(name="SAMPLE_SHEET_ID")
  112. Long sampleSheet_Id;
  113. @Column(name="DESCRIPTION")
  114. String description;
  115. @Column(name="SUBTYPE")
  116. String subType;
  117. @Column(name="TEST_CODE")
  118. String testCode;
  119. @Column(name="MFDPASSEDDATE")
  120. LocalDateTime mfdPassedDate;
  121. @Column(name="FASTA_FILE")
  122. String fastaFile;
  123. @Column(name="PNG_FILE")
  124. String pngFile;
  125. @Column(name="CSV_FILE")
  126. String csvFile;
  127. @Column(name="MUT_FILE")
  128. String mutFile;
  129. @Column(name="ERR_FILE")
  130. String errFile;
  131. @Column(name="REFERENCE")
  132. String reference;
  133. @Column(name="RAWNTSEQUENCE")
  134. NClob rawntsequence;
  135. @Column(name="BLAST_STATUS")
  136. String blastStatus;
  137. @Column(name="BLAST_ERROR")
  138. Integer blastError;
  139. @Column(name="BLAST_RESULT")
  140. Integer blastResult;
  141. @Column(name="ASSAY_ID")
  142. Long assay_id;
  143. @Column(name="CHECKED_OUT_BY_ID")
  144. Long checked_out_by_id;
  145. @Column(name="CREATEDBY_ID")
  146. Long createdBy_Id;
  147. @Column(name="LAB_ID")
  148. Long lab_id;
  149. @Column(name="MFDPASSEDBY_ID")
  150. Long mfdPassedBy_Id;
  151. @Column(name="MODIFIEDBY_ID")
  152. Long modifiedBy_Id;
  153.  
  154. @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  155. @JoinColumn(name = "SAMPLE_ID", insertable = false, updatable = false, nullable = false)
  156. @OrderBy("IS_CONTROL DESC,ID")
  157. private List<SampleRegion> sampleRegions = new ArrayList<>();
  158.  
  159.  
  160. }
  161. --repository
  162.  
  163. package com.monogram.ngs.repository;
  164.  
  165.  
  166. import com.monogram.ngs.dto.SampleDTO;
  167. import com.monogram.ngs.entity.Sample;
  168. import org.springframework.data.domain.Page;
  169. import org.springframework.data.domain.Pageable;
  170. import org.springframework.data.jpa.repository.JpaRepository;
  171. import org.springframework.data.jpa.repository.Query;
  172. import org.springframework.stereotype.Repository;
  173.  
  174. @Repository
  175. public interface SampleRepository extends JpaRepository<Sample, Integer> {
  176. @Query(name="sampleSummary_native_query_dto", nativeQuery = true)
  177. Page<SampleDTO> findSamplesUsingPage(String batchID, Pageable pageable);
  178.  
  179. }
  180. --dto
  181. package com.monogram.ngs.dto;
  182.  
  183. import java.util.List;
  184.  
  185. public record SampleDTO(String sampleName
  186. , String sampleProject
  187. , String samplePlate
  188. , String sampleStatus
  189. , String subType
  190. , String pngFile
  191. , String csvFile
  192. , String fastaFile
  193. , String errFile
  194. , Long checked_out_by_id
  195. , List<SampleRegionDTO> sampleRegionDTO) {
  196. }
  197.  
  198. package com.monogram.ngs.dto;
  199.  
  200. import java.sql.NClob;
  201. import java.util.List;
  202.  
  203. public record SampleRegionDTO(String assayRegion
  204. , Long minFinalDepth
  205. , String mutList
  206. ) {
  207. }
  208. --service
  209. package com.monogram.ngs.service;
  210.  
  211. import com.monogram.ngs.dto.SampleDTO;
  212. import com.monogram.ngs.dto.SampleRegionDTO;
  213. import com.monogram.ngs.repository.SampleRepository;
  214. import org.springframework.beans.factory.annotation.Autowired;
  215. import org.springframework.data.domain.Page;
  216. import org.springframework.data.domain.Pageable;
  217. import org.springframework.stereotype.Service;
  218.  
  219.  
  220. import java.util.Arrays;
  221. import java.util.List;
  222.  
  223. @Service
  224. public class SampleSummaryServiceImpl implements ISampleSummaryService{
  225. @Autowired
  226. SampleRepository sampleRepository;
  227.  
  228. @Override
  229. public Page<SampleDTO> getSampleSummary(String batchId, Pageable pageable) {
  230. return sampleRepository.findSamplesUsingPage(batchId, pageable);
  231.  
  232. }
  233. }
  234.  
  235. --controller
  236. package com.monogram.ngs.controller;
  237.  
  238. import com.monogram.ngs.dto.SampleDTO;
  239. import com.monogram.ngs.service.ISampleSummaryService;
  240. import org.slf4j.Logger;
  241. import org.slf4j.LoggerFactory;
  242. import org.springframework.beans.factory.annotation.Autowired;
  243. import org.springframework.data.domain.Page;
  244. import org.springframework.data.domain.PageRequest;
  245. import org.springframework.data.domain.Pageable;
  246. import org.springframework.web.bind.annotation.GetMapping;
  247. import org.springframework.web.bind.annotation.RequestMapping;
  248. import org.springframework.web.bind.annotation.RequestParam;
  249. import org.springframework.web.bind.annotation.RestController;
  250.  
  251. import java.util.List;
  252.  
  253. @RestController
  254. @RequestMapping("/api/sampleSummary")
  255. public class SampleSummaryController {
  256. @Autowired
  257. ISampleSummaryService isamplesummaryService;
  258. private static final Logger logger = LoggerFactory.getLogger(SampleSummaryController.class);
  259.  
  260. @GetMapping("/getSamplesWithPage")
  261. public Page<SampleDTO> getSamplesWithPage(@RequestParam int page, @RequestParam int size, @RequestParam String batchId) {
  262. logger.debug("Entering SampleSummaryController getSamplesWithPage method");
  263. Pageable paging = PageRequest.of(page, size);
  264. return isamplesummaryService.getSampleSummary(batchId, paging);
  265. }
  266.  
  267. }
  268.  
  269.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement