Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
WebFlux-MongoDB Aggregations
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sridhar Pothanaveni
WebFlux-MongoDB Aggregations
Commits
20a3e65d
Commit
20a3e65d
authored
Feb 06, 2024
by
Sridhar Pothanaveni
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More functionality added
parent
2212ca73
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
175 additions
and
29 deletions
+175
-29
pom.xml
pom.xml
+9
-0
BPNController.java
src/main/java/com/nisum/task/controller/BPNController.java
+7
-0
FileUploadController.java
.../java/com/nisum/task/controller/FileUploadController.java
+24
-6
SmicController.java
src/main/java/com/nisum/task/controller/SmicController.java
+7
-0
BPNDto.java
src/main/java/com/nisum/task/entity/BPNDto.java
+35
-0
SMIC.java
src/main/java/com/nisum/task/entity/SMIC.java
+3
-2
SMICDto.java
src/main/java/com/nisum/task/entity/SMICDto.java
+34
-0
BPNRepository.java
src/main/java/com/nisum/task/repository/BPNRepository.java
+3
-0
BPNService.java
src/main/java/com/nisum/task/service/BPNService.java
+24
-8
FileUploadService.java
src/main/java/com/nisum/task/service/FileUploadService.java
+14
-0
SmicService.java
src/main/java/com/nisum/task/service/SmicService.java
+11
-11
application.properties
src/main/resources/application.properties
+4
-2
No files found.
pom.xml
View file @
20a3e65d
...
...
@@ -107,6 +107,15 @@
<version>
4.1.2
</version>
</dependency>
<!-- Add Apache POI dependencies -->
<dependency>
<groupId>
org.apache.poi
</groupId>
<artifactId>
poi
</artifactId>
<version>
4.1.2
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
src/main/java/com/nisum/task/controller/BPNController.java
View file @
20a3e65d
package
com
.
nisum
.
task
.
controller
;
import
com.nisum.task.entity.BPN
;
import
com.nisum.task.entity.BPNDto
;
import
com.nisum.task.service.BPNService
;
import
com.nisum.task.service.FileUploadService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -87,6 +88,12 @@ public class BPNController {
}
}
@PostMapping
(
"/createMultipleBPN"
)
public
Flux
<
BPN
>
saveBPN
(
@RequestBody
BPNDto
bpnDto
)
{
log
.
info
(
"createMultipleBPN {}"
,
bpnDto
);
return
bPNService
.
saveMultipleBPN
(
bpnDto
);
}
}
src/main/java/com/nisum/task/controller/FileUploadController.java
View file @
20a3e65d
...
...
@@ -15,7 +15,7 @@ import reactor.core.publisher.Flux;
import
java.io.IOException
;
@CrossOrigin
(
origins
=
"*"
)
//
@CrossOrigin(origins = "*")
@RestController
@RequestMapping
(
"/file"
)
public
class
FileUploadController
{
...
...
@@ -23,11 +23,11 @@ public class FileUploadController {
@Autowired
private
FileUploadService
fileUploadService
;
//
@PostMapping("/uploadFile")
// public Flux<BPN> upload
File(@RequestParam("file") MultipartFile file) throws IOException {
//
log.info("file upload");
//
return fileUploadService.uploadFile(file);
//
}
@PostMapping
(
"/uploadFile"
)
public
Flux
<
BPN
>
uploadExcel
File
(
@RequestParam
(
"file"
)
MultipartFile
file
)
throws
IOException
{
log
.
info
(
"file upload"
);
return
fileUploadService
.
uploadFile
(
file
);
}
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
FileUploadController
.
class
);
...
...
@@ -49,4 +49,22 @@ public class FileUploadController {
return
ResponseEntity
.
status
(
HttpStatus
.
INTERNAL_SERVER_ERROR
).
body
(
"Error processing the file."
);
}
}
@PostMapping
(
"/upload"
)
public
ResponseEntity
<
String
>
uploadExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
fileUploadService
.
processExcelSheet
(
file
);
return
ResponseEntity
.
ok
(
"File uploaded successfully!"
);
}
@PostMapping
(
"/importExcel"
)
public
ResponseEntity
<
String
>
importExcel
(
@RequestParam
(
"excel"
)
MultipartFile
file
,
BPN
bpn
)
{
try
{
fileUploadService
.
processExcelSheet
(
file
);
return
ResponseEntity
.
ok
(
"File uploaded successfully!"
);
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
badRequest
().
body
(
"Bad Request ss: "
+
e
.
getMessage
());
}
}
}
src/main/java/com/nisum/task/controller/SmicController.java
View file @
20a3e65d
package
com
.
nisum
.
task
.
controller
;
import
com.nisum.task.entity.BPN
;
import
com.nisum.task.entity.SMIC
;
import
com.nisum.task.service.SmicService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -36,4 +37,10 @@ public class SmicController {
return
smicService
.
findAll
();
}
@PostMapping
(
"/processSMIC"
)
public
Flux
<
BPN
>
processSMIC
(
@RequestBody
SMIC
smic
)
{
log
.
info
(
"process SMIC {}"
,
smic
);
return
smicService
.
processSMIC
(
smic
);
}
}
src/main/java/com/nisum/task/entity/BPNDto.java
0 → 100644
View file @
20a3e65d
package
com
.
nisum
.
task
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.bson.types.ObjectId
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
import
java.util.List
;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Document
@Data
public
class
BPNDto
{
private
ObjectId
id
;
private
List
<
String
>
bpnList
;
private
String
rog
;
private
String
fac
;
private
String
forceOptCd
;
private
Date
firstEffectiveDate
;
private
Date
lasttEffectiveDate
;
private
String
bpnStatus
;
private
String
bpnProcessMessage
;
private
Date
createdTime
;
private
Date
updatedTime
;
private
String
createdBy
;
private
String
updatedBy
;
private
String
smic
;
}
src/main/java/com/nisum/task/entity/SMIC.java
View file @
20a3e65d
...
...
@@ -19,9 +19,9 @@ public class SMIC {
private
ObjectId
id
;
private
String
group
;
private
String
category
;
private
String
smicClass
;
private
String
smicClass
;
private
String
subClass
;
private
String
fac
;
private
String
fac
;
private
String
forceOptCd
;
private
Date
firstEffectiveDate
;
private
Date
lasttEffectiveDate
;
...
...
@@ -31,5 +31,6 @@ public class SMIC {
private
String
updatedBy
;
private
Date
createdTime
;
private
Date
updatedTime
;
private
String
rog
;
}
src/main/java/com/nisum/task/entity/SMICDto.java
0 → 100644
View file @
20a3e65d
package
com
.
nisum
.
task
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.bson.types.ObjectId
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Document
@Data
public
class
SMICDto
{
private
ObjectId
id
;
private
String
group
;
private
String
category
;
private
String
smicClass
;
private
String
subClass
;
private
String
fac
;
private
String
forceOptCd
;
private
Date
firstEffectiveDate
;
private
Date
lasttEffectiveDate
;
private
Date
smicDescription
;
private
Date
comment
;
private
String
createdBy
;
private
String
updatedBy
;
private
Date
createdTime
;
private
Date
updatedTime
;
}
src/main/java/com/nisum/task/repository/BPNRepository.java
View file @
20a3e65d
...
...
@@ -3,9 +3,12 @@ package com.nisum.task.repository;
import
com.nisum.task.entity.BPN
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
org.springframework.stereotype.Repository
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Repository
public
interface
BPNRepository
extends
ReactiveMongoRepository
<
BPN
,
Long
>
{
Mono
<
BPN
>
findByBpn
(
String
bpn
);
Flux
<
BPN
>
findByRog
(
String
rog
);
}
src/main/java/com/nisum/task/service/BPNService.java
View file @
20a3e65d
...
...
@@ -2,6 +2,7 @@ package com.nisum.task.service;
import
com.nisum.task.entity.ActionEnum
;
import
com.nisum.task.entity.BPN
;
import
com.nisum.task.entity.BPNDto
;
import
com.nisum.task.repository.BPNRepository
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -15,13 +16,6 @@ import java.util.Date;
@Slf4j
public
class
BPNService
{
private
static
final
String
DELETE
=
"Deleted"
;
private
static
final
String
BLOCK
=
"block"
;
private
static
final
String
FORCE
=
"force"
;
private
static
final
String
RECALL
=
"recall"
;
private
static
final
String
ACTIVE
=
"Active"
;
private
static
final
String
IN_ACTIVE
=
"In Active"
;
@Autowired
private
BPNRepository
bpnRepository
;
...
...
@@ -48,7 +42,7 @@ public class BPNService {
return
bpnRepository
.
findByBpn
(
bpn2
.
getBpn
())
.
flatMap
(
bpn1
->
Mono
.
just
(
setAllFields
(
bpn1
,
bpn2
,
"BPN Blocked successfully"
,
bpn2
.
getForceOptCd
())))
.
switchIfEmpty
(
Mono
.
defer
(()
->
{
bpn2
.
setBpnProcessMessage
(
"B
locked S
uccessfully"
);
bpn2
.
setBpnProcessMessage
(
"B
PN Blocked s
uccessfully"
);
bpn2
.
setBpnStatus
(
bpn2
.
getForceOptCd
());
return
Mono
.
just
(
bpn2
);
}));
...
...
@@ -84,4 +78,26 @@ public class BPNService {
log
.
info
(
"bpnDB {}"
,
bpnDB
);
return
bpnDB
;
}
public
Flux
<
BPN
>
saveMultipleBPN
(
BPNDto
bpnDto
)
{
return
Flux
.
fromIterable
(
bpnDto
.
getBpnList
()).
flatMap
(
bpnNumber
->
{
BPN
bpn
=
new
BPN
();
bpn
.
setBpn
(
bpnNumber
);
return
saveBPN
(
setAllFieldsToEntity
(
bpn
,
bpnDto
));
});
}
private
BPN
setAllFieldsToEntity
(
BPN
bpnDB
,
BPNDto
uiBPN
)
{
bpnDB
.
setBpnStatus
(
uiBPN
.
getForceOptCd
());
bpnDB
.
setLasttEffectiveDate
(
uiBPN
.
getLasttEffectiveDate
());
bpnDB
.
setUpdatedTime
(
new
Date
());
bpnDB
.
setFac
(
uiBPN
.
getFac
()
!=
null
?
uiBPN
.
getFac
()
:
""
);
bpnDB
.
setForceOptCd
(
uiBPN
.
getForceOptCd
());
log
.
info
(
"bpnDB {}"
,
bpnDB
);
return
bpnDB
;
}
public
Flux
<
BPN
>
findByRog
(
String
rog
)
{
return
bpnRepository
.
findByRog
(
rog
);
}
}
src/main/java/com/nisum/task/service/FileUploadService.java
View file @
20a3e65d
...
...
@@ -61,4 +61,18 @@ public class FileUploadService {
}
public
void
processExcelSheet
(
MultipartFile
file
)
{
try
{
Files
.
createDirectories
(
root
);
Files
.
copy
(
file
.
getInputStream
(),
this
.
root
.
resolve
(
file
.
getOriginalFilename
()));
log
.
info
(
"file imported successfully"
);
}
catch
(
Exception
e
)
{
if
(
e
instanceof
FileAlreadyExistsException
)
{
throw
new
RuntimeException
(
"A file of that name already exists."
);
}
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
}
src/main/java/com/nisum/task/service/SmicService.java
View file @
20a3e65d
package
com
.
nisum
.
task
.
service
;
import
com.nisum.task.entity.BPN
;
import
com.nisum.task.entity.SMIC
;
import
com.nisum.task.repository.SmicRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -12,14 +13,12 @@ import java.util.Date;
@Service
public
class
SmicService
{
private
static
final
String
DELETE
=
"Deleted"
;
private
static
final
String
BLOCK
=
"block"
;
private
static
final
String
FORCE
=
"force"
;
private
static
final
String
RECALL
=
"recall"
;
@Autowired
private
SmicRepository
smicRepository
;
@Autowired
private
BPNService
bpnService
;
public
Mono
<
SMIC
>
saveSMIC
(
SMIC
smic
)
{
smic
.
setFirstEffectiveDate
(
new
Date
());
smic
.
setCreatedTime
(
new
Date
());
...
...
@@ -35,11 +34,12 @@ public class SmicService {
return
smicRepository
.
findAll
();
}
private
SMIC
setAllFields
(
SMIC
smicDB
,
SMIC
uiSMIC
,
String
message
)
{
smicDB
.
setLasttEffectiveDate
(
uiSMIC
.
getLasttEffectiveDate
());
smicDB
.
setUpdatedTime
(
new
Date
());
smicDB
.
setFac
(
uiSMIC
.
getFac
());
smicDB
.
setForceOptCd
(
uiSMIC
.
getForceOptCd
());
return
smicDB
;
public
Flux
<
BPN
>
processSMIC
(
SMIC
smic
)
{
return
bpnService
.
findByRog
(
smic
.
getRog
()).
flatMap
(
bpn
->
{
bpn
.
setBpnStatus
(
smic
.
getForceOptCd
());
bpn
.
setForceOptCd
(
smic
.
getForceOptCd
());
bpn
.
setLasttEffectiveDate
(
smic
.
getLasttEffectiveDate
());
return
bpnService
.
saveBPN
(
bpn
);
});
}
}
src/main/resources/application.properties
View file @
20a3e65d
...
...
@@ -22,5 +22,7 @@ spring.http.multipart.location:""
spring.http.multipart.max-file-size
:
20MB
spring.http.multipart.max-request-size
:
20MB
spring.servlet.multipart.max-file-size
=
1MB
spring.servlet.multipart.max-request-size
=
1MB
spring.servlet.multipart.max-file-size
=
256MB
spring.servlet.multipart.max-request-size
=
256MB
spring.servlet.multipart.enabled
=
true
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment