Commit 20a3e65d authored by Sridhar Pothanaveni's avatar Sridhar Pothanaveni

More functionality added

parent 2212ca73
......@@ -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
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);
}
}
......@@ -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> uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
// log.info("file upload");
// return fileUploadService.uploadFile(file);
// }
@PostMapping("/uploadFile")
public Flux<BPN> uploadExcelFile(@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());
}
}
}
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);
}
}
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;
}
......@@ -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;
}
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;
}
......@@ -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);
}
......@@ -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("Blocked Successfully");
bpn2.setBpnProcessMessage("BPN Blocked successfully");
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);
}
}
......@@ -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());
}
}
}
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);
});
}
}
......@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment