review:GWM

This commit is contained in:
sriramv 2022-07-18 13:08:46 +05:30
parent 40e2bb352a
commit 7539642168
6 changed files with 150 additions and 52 deletions

View File

@ -3,6 +3,7 @@ const { logMsg } = require('../services/logger.js');
const Helper = require('../services/cibil.controller.helper.js');
const DataInsertHelper = require('../services/cibil.datainsert.helper.js');
const { Op } = require('sequelize');
const moment = require('moment');
// landing page list of all pan number and reference number from commercial & consumer against losid
@ -358,7 +359,7 @@ exports.consolidatedActiveClosedLoanSplitUp =async (req, res) =>
//split up apis
@ -555,7 +556,55 @@ exports.ConsolidatedSanctionAmountSplitUp =async (req, res) =>
//merge-unmerge api's
exports.ConsolidatedActiveAndClosedLoansReviewAction =async (req, res) =>
{
try
{
LoanData = await sequelize.query("SELECT [losid],STRING_AGG(ref_no,',')as ref_no,STRING_AGG(consumer_name, ',') as consumer_name, [account_type],count(*) as loan_count, [ownership], [reported_and_certified_date], [opened_date], [sanctioned_amount], [current_balance], [repayment_tenure], [emi_amount], [overdue_amount], [status], [current_dpd], [highest_dpd_month_wise_bucket_or_count_0_to_6], [highest_dpd_month_wise_bucket_or_count_07_to_12], [highest_dpd_month_wise_bucket_or_count_13_to_24], [highest_dpd_month_wise_bucket_or_count_25_to_36], [DateClosed], [grp_str] FROM [out_active_and_closed_loans_details] AS [OutputActiveAndClosedLoans] WHERE [OutputActiveAndClosedLoans].[losid] = '"+req.query.losid+"' GROUP BY [grp_str], [losid], [account_type], [ownership], [reported_and_certified_date], [opened_date], [sanctioned_amount], [current_balance], [repayment_tenure], [emi_amount], [overdue_amount], [status], [current_dpd], [highest_dpd_month_wise_bucket_or_count_0_to_6], [highest_dpd_month_wise_bucket_or_count_07_to_12], [highest_dpd_month_wise_bucket_or_count_13_to_24], [highest_dpd_month_wise_bucket_or_count_25_to_36], [DateClosed]");
if(LoanData.length != 0)
{
var LoanDataPromises = new Promise(async(resolve, reject) => {
FinalLoanData = [];
LoanData[0].forEach(async(value,index,array) => {
if(value.loan_count == 1)
{
Object.assign(value , {subValue : [] });
if (index === array.length -1) { resolve(FinalLoanData); }
}else{
subValue = await OutputActiveAndClosedLoans.findAll({raw:true,where:{losid:value.losid,grp_str:value.grp_str}})
.catch(err=>{ });
Object.assign(value , {subValue : subValue });
if (index === array.length -1) { resolve(FinalLoanData); }
}
FinalLoanData.push(value);
});
});
LoanDataPromises.then(async(FinalLoanData)=>{
setTimeout(() => {
res.send({'status':200 , message:"Success." ,'data': FinalLoanData});
}, 1000);
});
}
else{
res.send({'status':400 , message:"Failed." ,'data': "No Data"});
}
} catch(err) {
res.status(500).send({'status':404,
message: err.message || "Some error occurred while inserting statements." ,'data': "No data"
}); } //end of try catch
};
@ -617,7 +666,7 @@ exports.testone =async (req, res) =>
{
try
{
data = await Helper.cibilInputDataApiCall('MW00045413','AAACR4282J',2);
data = await Helper.cibilInputDataApiCall('MW00045413','AAACR4282J',1);
DataInsertHelper.commercialDataInsert(data);
res.send(data);
@ -638,8 +687,18 @@ exports.test2 =async (req, res) =>
{
try
{
//token = await Helper.getLoginToken()
data = await Helper.cibilInputDataApiCall('MW00045413','AAACR4282J',1);
res.send(data);
// beforedate = data.lstConsumerBorrowersDetails[0].dateTimeProcessed;
// var date= moment(beforedate).format('YYYY-MM-DD');
// console.log(date);
req_obj ={
"losid":'MW112233',
Me
}
} catch(err) {

View File

@ -7,7 +7,7 @@ module.exports = app => {
// router.get("/testone", Cibilcontroller.testone);
// router.get("/starter", Cibilcontroller.starter);
// router.get("/test2", Cibilcontroller.test2);
router.get("/test2", Cibilcontroller.test2);
/**
* @swagger
@ -381,6 +381,26 @@ router.get("/consolidatedSanctionAmountSplitUp", Cibilcontroller.ConsolidatedSan
router.get("/consolidatedActiveClosedLoanSplitUp", Cibilcontroller.consolidatedActiveClosedLoanSplitUp);
/**
* @swagger
* /api/ConsolidatedActiveAndClosedLoansReviewAction:
* get:
* summary: landing Page Details
* description: Get active & closed loans Data
* parameters:
* - in: query
* name: losid
* schema:
* type: string
* required: true
* example: MW112233
* responses:
* 200:
* description: success
*/
router.get("/ConsolidatedActiveAndClosedLoansReviewAction", Cibilcontroller.ConsolidatedActiveAndClosedLoansReviewAction);
// routes started here
app.use('/api', router);
};

View File

@ -64,10 +64,10 @@ function findBucketCount(sk_array,dpd_date)
}
function cibilInputDataApiCall(losid,pan_no,applicant_type) {
async function cibilInputDataApiCall(losid,pan_no,applicant_type) {
try {
CIBIL_URL = process.env.CIBIL_DATA_URL;
token = process.env.CIBIL_URL_TOKEN;
token = await getLoginToken();
request_object = {
"losid": losid,
"panNo": pan_no,

View File

@ -999,33 +999,34 @@ async function consumerIntermediateDataInsert(losid,refNo)
try
{
ConBorrowDetailData = await ConBorrowDetail.findAll({attributes: ['losid','MemberReferenceNumber','ConsumerNameField1','ConsumerNameField2','ConsumerNameField3','ConsumerNameField4','ConsumerNameField5'],raw:true ,where:{losid:'MW112233'},include:[{model:ConIDDetail , attributes: ['IDNumber'],where:{IDType:'Income Tax ID Number'}}]});
var ConBorrowDetailDataInsert = new Promise(async(resolve, reject) => {
ConBorrowDetailArray = [];
ConBorrowDetailData.forEach(async(value,index,array) => {
ConBorrowDetailDataObj = {
losid : value.losid,
ReferenceNumber : value.MemberReferenceNumber,
ConsumerNameField1 : value.ConsumerNameField1,
ConsumerNameField2 : value.ConsumerNameField2,
ConsumerNameField3 : value.ConsumerNameField3,
ConsumerNameField4 : value.ConsumerNameField4,
ConsumerNameField5 : value.ConsumerNameField5,
PAN : value['ConIDDetails.IDNumber'],
cibil_type : 1
}
ConBorrowDetailArray.push(ConBorrowDetailDataObj);
if (index === array.length -1) { resolve(ConBorrowDetailArray); }
});
});
ConBorrowDetailDataInsert.then(async(ConBorrowDetailArray)=>{
await InBorrowerDetail.bulkCreate(ConBorrowDetailArray);
ConBorrowDetailData = await ConBorrowDetail.findAll({attributes: ['losid','MemberReferenceNumber','ConsumerNameField1','ConsumerNameField2','ConsumerNameField3','ConsumerNameField4','ConsumerNameField5','DateTimeProcessed'],raw:true ,where:{losid:losid,MemberReferenceNumber:refNo},include:[{model:ConIDDetail , attributes: ['IDNumber'],where:{IDType:'Income Tax ID Number'}}]});
ConBorrowDetailData.forEach(async(value,index,array) => {
ConBorrowDetailDataObj = {
losid : value.losid,
ReferenceNumber : value.MemberReferenceNumber,
ConsumerNameField1 : value.ConsumerNameField1,
ConsumerNameField2 : value.ConsumerNameField2,
ConsumerNameField3 : value.ConsumerNameField3,
ConsumerNameField4 : value.ConsumerNameField4,
ConsumerNameField5 : value.ConsumerNameField5,
PAN : value['ConIDDetails.IDNumber'],
cibil_type : 1
}
await InBorrowerDetail.update(ConBorrowDetailDataObj,{where:{losid:ConBorrowDetailDataObj.losid,PAN:ConBorrowDetailDataObj.PAN,cibil_type:1}});
});
//month bucket count
// DateTimeProcessed = ConBorrowDetailData
end_date = '2022-05-05'
sk = await Helper.createSkeleton(end_date);
ConEnquiryDetailData = await ConEnquiryDetail.findAll({attributes: ['losid','MemberReferenceNumber','DateOfEnquiry','EnquiryPurpose','EnquiryAmount'],raw:true ,where:{losid:'MW112233'}});
ConEnquiryDetailData = await ConEnquiryDetail.findAll({attributes: ['losid','MemberReferenceNumber','DateOfEnquiry','EnquiryPurpose','EnquiryAmount'],raw:true ,where:{losid:losid,MemberReferenceNumber:refNo}});
var ConEnquiryDetailDataInsert = new Promise(async(resolve, reject) => {
ConEnquiryDetailArray = [];
ConEnquiryDetailData.forEach(async(value,index,array) => {
@ -1050,11 +1051,8 @@ async function consumerIntermediateDataInsert(losid,refNo)
end_date = '2022-05-05'
sk = await Helper.createSkeleton(end_date);
ConAccountTranscationData = await ConAccountTranscation.findAll({attributes: ['losid','AccountTranDetailsID','MemberReferenceNumber','AccountType','OwnershipIndicator','DateOpenedDisbursed','DateReportedAndCertified','HighCreditSanctionedAmount','CurrentBalance','AmountOverdue','CreditLimit','RepaymentTenure','EMIAmount','WrittenOffAndSettledStatus','DateClosed'],raw:true ,where:{losid:'MW112233'}});
ConAccountTranscationData = await ConAccountTranscation.findAll({attributes: ['losid','AccountTranDetailsID','MemberReferenceNumber','AccountType','OwnershipIndicator','DateOpenedDisbursed','DateReportedAndCertified','HighCreditSanctionedAmount','CurrentBalance','AmountOverdue','CreditLimit','RepaymentTenure','EMIAmount','WrittenOffAndSettledStatus','DateClosed'],raw:true ,where:{losid:losid,MemberReferenceNumber:refNo}});
ConAccountTranscationData.forEach(async(value) => {
month_bucket_result = await Helper.findBucketCount(sk,value.DateOpenedDisbursed);
Num = value.MemberReferenceNumber;
@ -1142,9 +1140,10 @@ async function commercialIntermediateDataInsert(losid,refNo)
{
try
{
BorrowerProfileData = await BorrowerProfile.findAll({attributes: ['losid','ApplicationRefno','EnqInfoBorrowerName','EnqInfoPan'],raw:true ,where:{losid:'MW112233'}});
var BorrowerProfileDataInsert = new Promise(async(resolve, reject) => {
BorrowerProfileArray = [];
BorrowerProfileData = await BorrowerProfile.findAll({attributes: ['losid','ApplicationRefno','EnqInfoBorrowerName','EnqInfoPan'],raw:true ,where:{losid:losid,ApplicationRefno:refNo}});
BorrowerProfileData.forEach(async(value,index,array) => {
BorrowerProfileDataObj = {
losid : value.losid,
@ -1156,22 +1155,43 @@ async function commercialIntermediateDataInsert(losid,refNo)
ConsumerNameField5 : null,
PAN : value.EnqInfoPan,
cibil_type : 2
}
BorrowerProfileArray.push(BorrowerProfileDataObj);
if (index === array.length -1) { resolve(BorrowerProfileArray); }
});
});
BorrowerProfileDataInsert.then(async(BorrowerProfileArray)=>{
await InBorrowerDetail.bulkCreate(BorrowerProfileArray);
}
await InBorrowerDetail.update(BorrowerProfileDataObj,{where:{losid:BorrowerProfileDataObj.losid,PAN:BorrowerProfileDataObj.PAN,cibil_type:2}});
});
// BorrowerProfileData = await BorrowerProfile.findAll({attributes: ['losid','ApplicationRefno','EnqInfoBorrowerName','EnqInfoPan'],raw:true ,where:{losid:'MW112233'}});
// var BorrowerProfileDataInsert = new Promise(async(resolve, reject) => {
// BorrowerProfileArray = [];
// BorrowerProfileData.forEach(async(value,index,array) => {
// BorrowerProfileDataObj = {
// losid : value.losid,
// ReferenceNumber : value.ApplicationRefno,
// ConsumerNameField1 : value.EnqInfoBorrowerName,
// ConsumerNameField2 : null,
// ConsumerNameField3 : null,
// ConsumerNameField4 : null,
// ConsumerNameField5 : null,
// PAN : value.EnqInfoPan,
// cibil_type : 2
// }
// BorrowerProfileArray.push(BorrowerProfileDataObj);
// if (index === array.length -1) { resolve(BorrowerProfileArray); }
// });
// });
// BorrowerProfileDataInsert.then(async(BorrowerProfileArray)=>{
// await InBorrowerDetail.bulkCreate(BorrowerProfileArray);
// });
end_date = '2022-05-05'
sk = await Helper.createSkeleton(end_date);
ComEnquiryDetailData = await EnquiryDetail.findAll({attributes: ['losid','ApplicationRefno','EnquiryDetailsEnquiryDt','EnquiryDetailsEnquiryPurpose','EnquiryDetailsEnquiryAmt'],raw:true ,where:{losid:'MW112233'}});
ComEnquiryDetailData = await EnquiryDetail.findAll({attributes: ['losid','ApplicationRefno','EnquiryDetailsEnquiryDt','EnquiryDetailsEnquiryPurpose','EnquiryDetailsEnquiryAmt'],raw:true ,where:{losid:losid,ApplicationRefno:refNo}});
var ComEnquiryDetailDataInsert = new Promise(async(resolve, reject) => {
ComEnquiryDetailArray = [];
ComEnquiryDetailData.forEach(async(value,index,array) => {
@ -1199,10 +1219,8 @@ async function commercialIntermediateDataInsert(losid,refNo)
end_date = '2022-05-05'
sk = await Helper.createSkeleton(end_date);
ComCreditFacilityCurrentDetailData = await CreditFacilityCurrentDetail.findAll({attributes: ['losid','ApplicationRefno','CreditFacilityCDcfSrNo','CreditFacilityCDcfType','CreditFacilityCDDatesSanctionedDt','CreditFacilityCDLstReportedDate','CreditFacilityCDAmtSanctionedAmt','CreditFacilityCDAmtoutstandingBalance','CreditFacilityCDAmtOverdue','CreditFacilityCDODTenure','CreditFacilityCDAmtinstallmentAmt','CreditFacilityCDStatus','CreditFacilityCDDatesLoanExpiryDt'],raw:true ,where:{losid:'MW112233'}});
ComCreditFacilityCurrentDetailData = await CreditFacilityCurrentDetail.findAll({attributes: ['losid','ApplicationRefno','CreditFacilityCDcfSrNo','CreditFacilityCDcfType','CreditFacilityCDDatesSanctionedDt','CreditFacilityCDLstReportedDate','CreditFacilityCDAmtSanctionedAmt','CreditFacilityCDAmtoutstandingBalance','CreditFacilityCDAmtOverdue','CreditFacilityCDODTenure','CreditFacilityCDAmtinstallmentAmt','CreditFacilityCDStatus','CreditFacilityCDDatesLoanExpiryDt'],raw:true ,where:{losid:losid,ApplicationRefno:refNo}});
ComCreditFacilityCurrentDetailData.forEach(async(value) => {
month_bucket_result = await Helper.findBucketCount(sk,value.DateOpenedDisbursed);
Num = value.ApplicationRefno;

8
package-lock.json generated
View File

@ -1,5 +1,5 @@
{
"name": "smc_cet_creditpd_backend",
"name": "smc_cet_cibil_staging",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
@ -2371,9 +2371,9 @@
"optional": true
},
"moment": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"moment-timezone": {
"version": "0.5.34",

View File

@ -15,6 +15,7 @@
"dotenv": "^10.0.0",
"express": "^4.17.1",
"log4js": "^6.3.0",
"moment": "^2.29.4",
"mssql": "^7.2.0",
"request": "^2.88.2",
"sequelize": "^6.6.5",