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

More functionality added

parent 2212ca73
...@@ -107,6 +107,15 @@ ...@@ -107,6 +107,15 @@
<version>4.1.2</version> <version>4.1.2</version>
</dependency> </dependency>
<!-- Add Apache POI dependencies -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
package com.nisum.task.controller; package com.nisum.task.controller;
import com.nisum.task.entity.BPN; import com.nisum.task.entity.BPN;
import com.nisum.task.entity.BPNDto;
import com.nisum.task.service.BPNService; import com.nisum.task.service.BPNService;
import com.nisum.task.service.FileUploadService; import com.nisum.task.service.FileUploadService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -87,6 +88,12 @@ public class BPNController { ...@@ -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; ...@@ -15,7 +15,7 @@ import reactor.core.publisher.Flux;
import java.io.IOException; import java.io.IOException;
@CrossOrigin(origins = "*") //@CrossOrigin(origins = "*")
@RestController @RestController
@RequestMapping("/file") @RequestMapping("/file")
public class FileUploadController { public class FileUploadController {
...@@ -23,11 +23,11 @@ public class FileUploadController { ...@@ -23,11 +23,11 @@ public class FileUploadController {
@Autowired @Autowired
private FileUploadService fileUploadService; private FileUploadService fileUploadService;
// @PostMapping("/uploadFile") @PostMapping("/uploadFile")
// public Flux<BPN> uploadFile(@RequestParam("file") MultipartFile file) throws IOException { public Flux<BPN> uploadExcelFile(@RequestParam("file") MultipartFile file) throws IOException {
// log.info("file upload"); log.info("file upload");
// return fileUploadService.uploadFile(file); return fileUploadService.uploadFile(file);
// } }
private static final Logger log = LoggerFactory.getLogger(FileUploadController.class); private static final Logger log = LoggerFactory.getLogger(FileUploadController.class);
...@@ -49,4 +49,22 @@ public class FileUploadController { ...@@ -49,4 +49,22 @@ public class FileUploadController {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing the file."); 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; package com.nisum.task.controller;
import com.nisum.task.entity.BPN;
import com.nisum.task.entity.SMIC; import com.nisum.task.entity.SMIC;
import com.nisum.task.service.SmicService; import com.nisum.task.service.SmicService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -36,4 +37,10 @@ public class SmicController { ...@@ -36,4 +37,10 @@ public class SmicController {
return smicService.findAll(); 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,7 +19,7 @@ public class SMIC { ...@@ -19,7 +19,7 @@ public class SMIC {
private ObjectId id; private ObjectId id;
private String group; private String group;
private String category; private String category;
private String smicClass ; private String smicClass;
private String subClass; private String subClass;
private String fac; private String fac;
private String forceOptCd; private String forceOptCd;
...@@ -31,5 +31,6 @@ public class SMIC { ...@@ -31,5 +31,6 @@ public class SMIC {
private String updatedBy; private String updatedBy;
private Date createdTime; private Date createdTime;
private Date updatedTime; 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; ...@@ -3,9 +3,12 @@ package com.nisum.task.repository;
import com.nisum.task.entity.BPN; import com.nisum.task.entity.BPN;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository; import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
@Repository @Repository
public interface BPNRepository extends ReactiveMongoRepository<BPN,Long> { public interface BPNRepository extends ReactiveMongoRepository<BPN,Long> {
Mono<BPN> findByBpn(String bpn); Mono<BPN> findByBpn(String bpn);
Flux<BPN> findByRog(String rog);
} }
...@@ -2,6 +2,7 @@ package com.nisum.task.service; ...@@ -2,6 +2,7 @@ package com.nisum.task.service;
import com.nisum.task.entity.ActionEnum; import com.nisum.task.entity.ActionEnum;
import com.nisum.task.entity.BPN; import com.nisum.task.entity.BPN;
import com.nisum.task.entity.BPNDto;
import com.nisum.task.repository.BPNRepository; import com.nisum.task.repository.BPNRepository;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -15,13 +16,6 @@ import java.util.Date; ...@@ -15,13 +16,6 @@ import java.util.Date;
@Slf4j @Slf4j
public class BPNService { 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 @Autowired
private BPNRepository bpnRepository; private BPNRepository bpnRepository;
...@@ -48,7 +42,7 @@ public class BPNService { ...@@ -48,7 +42,7 @@ public class BPNService {
return bpnRepository.findByBpn(bpn2.getBpn()) return bpnRepository.findByBpn(bpn2.getBpn())
.flatMap(bpn1 -> Mono.just(setAllFields(bpn1, bpn2, "BPN Blocked successfully", bpn2.getForceOptCd()))) .flatMap(bpn1 -> Mono.just(setAllFields(bpn1, bpn2, "BPN Blocked successfully", bpn2.getForceOptCd())))
.switchIfEmpty(Mono.defer(() -> { .switchIfEmpty(Mono.defer(() -> {
bpn2.setBpnProcessMessage("Blocked Successfully"); bpn2.setBpnProcessMessage("BPN Blocked successfully");
bpn2.setBpnStatus(bpn2.getForceOptCd()); bpn2.setBpnStatus(bpn2.getForceOptCd());
return Mono.just(bpn2); return Mono.just(bpn2);
})); }));
...@@ -84,4 +78,26 @@ public class BPNService { ...@@ -84,4 +78,26 @@ public class BPNService {
log.info("bpnDB {}", bpnDB); log.info("bpnDB {}", bpnDB);
return 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 { ...@@ -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; package com.nisum.task.service;
import com.nisum.task.entity.BPN;
import com.nisum.task.entity.SMIC; import com.nisum.task.entity.SMIC;
import com.nisum.task.repository.SmicRepository; import com.nisum.task.repository.SmicRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -12,14 +13,12 @@ import java.util.Date; ...@@ -12,14 +13,12 @@ import java.util.Date;
@Service @Service
public class SmicService { 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 @Autowired
private SmicRepository smicRepository; private SmicRepository smicRepository;
@Autowired
private BPNService bpnService;
public Mono<SMIC> saveSMIC(SMIC smic) { public Mono<SMIC> saveSMIC(SMIC smic) {
smic.setFirstEffectiveDate(new Date()); smic.setFirstEffectiveDate(new Date());
smic.setCreatedTime(new Date()); smic.setCreatedTime(new Date());
...@@ -35,11 +34,12 @@ public class SmicService { ...@@ -35,11 +34,12 @@ public class SmicService {
return smicRepository.findAll(); return smicRepository.findAll();
} }
private SMIC setAllFields(SMIC smicDB, SMIC uiSMIC, String message) { public Flux<BPN> processSMIC(SMIC smic) {
smicDB.setLasttEffectiveDate(uiSMIC.getLasttEffectiveDate()); return bpnService.findByRog(smic.getRog()).flatMap(bpn -> {
smicDB.setUpdatedTime(new Date()); bpn.setBpnStatus(smic.getForceOptCd());
smicDB.setFac(uiSMIC.getFac()); bpn.setForceOptCd(smic.getForceOptCd());
smicDB.setForceOptCd(uiSMIC.getForceOptCd()); bpn.setLasttEffectiveDate(smic.getLasttEffectiveDate());
return smicDB; return bpnService.saveBPN(bpn);
});
} }
} }
...@@ -22,5 +22,7 @@ spring.http.multipart.location:"" ...@@ -22,5 +22,7 @@ spring.http.multipart.location:""
spring.http.multipart.max-file-size:20MB spring.http.multipart.max-file-size:20MB
spring.http.multipart.max-request-size:20MB spring.http.multipart.max-request-size:20MB
spring.servlet.multipart.max-file-size=1MB spring.servlet.multipart.max-file-size=256MB
spring.servlet.multipart.max-request-size=1MB 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