#826 checkpoint
This commit is contained in:
parent
3f988d8bb6
commit
005e7582bf
1 changed files with 214 additions and 1 deletions
|
|
@ -9,6 +9,7 @@ import { PosType } from "../entities/PosType";
|
||||||
import { PosLevel } from "../entities/PosLevel";
|
import { PosLevel } from "../entities/PosLevel";
|
||||||
import Extension from "../interfaces/extension";
|
import Extension from "../interfaces/extension";
|
||||||
import { DevelopmentScholarship } from "../entities/DevelopmentScholarship";
|
import { DevelopmentScholarship } from "../entities/DevelopmentScholarship";
|
||||||
|
import { IsNull, Not } from "typeorm";
|
||||||
@Route("api/v1/development/report")
|
@Route("api/v1/development/report")
|
||||||
@Tags("Report")
|
@Tags("Report")
|
||||||
@Security("bearerAuth")
|
@Security("bearerAuth")
|
||||||
|
|
@ -24,16 +25,228 @@ export class ReportController extends Controller {
|
||||||
*/
|
*/
|
||||||
@Get("main")
|
@Get("main")
|
||||||
async GetReportDevelopemtMain(/*@Path() type: string*/) {
|
async GetReportDevelopemtMain(/*@Path() type: string*/) {
|
||||||
|
|
||||||
// const _type = type.trim().toUpperCase();
|
// const _type = type.trim().toUpperCase();
|
||||||
const formattedData = {
|
const formattedData = {
|
||||||
org: "_type",
|
org: "_type",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//ตารางรายละเอียด กับ แบบรายงาน
|
||||||
|
const dataDevelopment = await AppDataSource.getRepository(Development)
|
||||||
|
.createQueryBuilder("development")
|
||||||
|
.leftJoinAndSelect("development.developmentHistorys", "history")
|
||||||
|
.leftJoinAndSelect("development.developmentPlannedGoals", "planGoals")
|
||||||
|
.leftJoinAndSelect("development.strategyChild1Actual", "strategy1")
|
||||||
|
.leftJoinAndSelect("development.strategyChild2Actual", "strategy2")
|
||||||
|
.leftJoinAndSelect("development.strategyChild3Actual", "strategy3")
|
||||||
|
.leftJoinAndSelect("development.strategyChild4Actual", "strategy4")
|
||||||
|
.leftJoinAndSelect("development.strategyChild5Actual", "strategy5")
|
||||||
|
.where("development.status = :status", { status: "FINISH" })
|
||||||
|
.andWhere("development.strategyChild1ActualId IS NOT NULL")
|
||||||
|
.select([
|
||||||
|
"development.id AS id",
|
||||||
|
"development.projectName AS projectName",
|
||||||
|
"development.year AS year",
|
||||||
|
"development.totalDate AS totalDate",
|
||||||
|
"development.budget AS budget",
|
||||||
|
"SUM(DISTINCT planGoals.amount) AS goalParticipants",
|
||||||
|
"COUNT(DISTINCT history.id) AS actualParticipants",
|
||||||
|
"strategy1.strategyChild1Name AS strategy1",
|
||||||
|
"strategy2.strategyChild2Name AS strategy2",
|
||||||
|
"strategy3.strategyChild3Name AS strategy3",
|
||||||
|
"strategy4.strategyChild4Name AS strategy4",
|
||||||
|
"strategy5.strategyChild5Name AS strategy5",
|
||||||
|
"development.accept AS acceptBudget",
|
||||||
|
"development.receive AS receiveBudget",
|
||||||
|
"development.obstacle AS obstacle",
|
||||||
|
"development.root AS root",
|
||||||
|
])
|
||||||
|
.groupBy("development.id")
|
||||||
|
.getRawMany();
|
||||||
|
|
||||||
|
const mappedDataDev = dataDevelopment.map((item, index) => {
|
||||||
|
let budget = null;
|
||||||
|
if (item.budget == "REGULATIONBUDGET") {
|
||||||
|
budget = "งบตามข้อบัญญัติ";
|
||||||
|
}else if (item.budget == "OTHERBUDGET") {
|
||||||
|
budget = "เงินนอกงบประมาณ";
|
||||||
|
}else if (item.budget == "BANGKOKBUDGET") {
|
||||||
|
budget = "ไม่ใช้งบประมาณ";
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
strategy: item.strategy1,
|
||||||
|
projectName: item.projectName,
|
||||||
|
totalDate: item.totalDate != null && item.totalDate != "" ? Extension.ToThaiNumber(item.totalDate.toString()): "-",
|
||||||
|
goalParticipants: item.goalParticipants != null && item.goalParticipants != "" ? Extension.ToThaiNumber(item.goalParticipants.toString()): "-",
|
||||||
|
actualParticipants: item.actualParticipants != null && item.actualParticipants != "" ? Extension.ToThaiNumber(item.actualParticipants.toString()): "-",
|
||||||
|
budget: budget,
|
||||||
|
acceptBudget: item.acceptBudget != null && item.acceptBudget != "" ? Extension.ToThaiNumber(item.acceptBudget.toString()): "-",
|
||||||
|
receiveBudget: item.receiveBudget != null && item.receiveBudget != "" ? Extension.ToThaiNumber(item.receiveBudget.toString()): "-",
|
||||||
|
obstacle: item.obstacle,
|
||||||
|
root: item.root,
|
||||||
|
output: "-",
|
||||||
|
outcome: "-",
|
||||||
|
position: "-",
|
||||||
|
indicators: "-",
|
||||||
|
devResult: "-",
|
||||||
|
positionActual: "-",
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const resultAllStrategy = await AppDataSource.getRepository(Development)
|
||||||
|
.createQueryBuilder("development")
|
||||||
|
.leftJoinAndSelect("development.strategyChild1Actual", "strategy1")
|
||||||
|
.where("development.status = :status", { status: "FINISH" })
|
||||||
|
.andWhere("development.strategyChild1ActualId IS NOT NULL")
|
||||||
|
.select([
|
||||||
|
"development.rootId AS rootId",
|
||||||
|
"development.strategyChild1ActualId AS strategyId",
|
||||||
|
"strategy1.strategyChild1Name AS strategyName",
|
||||||
|
"COUNT(development.id) AS devCount",
|
||||||
|
"SUM(development.receive) AS receiveBudget",
|
||||||
|
"development.root AS root",
|
||||||
|
])
|
||||||
|
.groupBy("development.rootId, development.strategyChild1ActualId, strategy1.strategyChild1Name, development.root")
|
||||||
|
.orderBy("strategy1.createdAt", "ASC")
|
||||||
|
.getRawMany();
|
||||||
|
|
||||||
|
interface Strategy {
|
||||||
|
strategyId: string;
|
||||||
|
strategyName: string;
|
||||||
|
devCount: string;
|
||||||
|
receiveBudget: string;
|
||||||
|
sumDev: string;
|
||||||
|
sumTraget: string;
|
||||||
|
sumBudget: string;
|
||||||
|
sumRowDev: string,
|
||||||
|
sumRowTarget: string,
|
||||||
|
sumRowBudget: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GroupedData {
|
||||||
|
rootId: string;
|
||||||
|
root: string;
|
||||||
|
strategy: Strategy[];
|
||||||
|
}
|
||||||
|
|
||||||
|
// สมมติว่า 'resultAllStrategy' ถูกกำหนดไว้แล้วและมีข้อมูลที่คุณให้มา
|
||||||
|
const groupedData: GroupedData[] = resultAllStrategy.reduce((acc: GroupedData[], item) => {
|
||||||
|
const existingRoot = acc.find(entry => entry.rootId === item.rootId);
|
||||||
|
|
||||||
|
if (existingRoot) {
|
||||||
|
existingRoot.strategy.push({
|
||||||
|
strategyId: item.strategyId,
|
||||||
|
strategyName: item.strategyName,
|
||||||
|
devCount: item.devCount?Extension.ToThaiNumber(item.devCount.toString()):"0",
|
||||||
|
receiveBudget: item.receiveBudget?Extension.ToThaiNumber(item.receiveBudget.toString()):"0",
|
||||||
|
sumDev: "",
|
||||||
|
sumTraget: "",
|
||||||
|
sumBudget: "",
|
||||||
|
sumRowDev:"",
|
||||||
|
sumRowTarget:"",
|
||||||
|
sumRowBudget:"",
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
acc.push({
|
||||||
|
rootId: item.rootId,
|
||||||
|
root: item.root,
|
||||||
|
strategy: [{
|
||||||
|
strategyId: item.strategyId,
|
||||||
|
strategyName: item.strategyName,
|
||||||
|
devCount: item.devCount?Extension.ToThaiNumber(item.devCount.toString()):"0",
|
||||||
|
receiveBudget: item.receiveBudget?Extension.ToThaiNumber(item.receiveBudget.toString()):"0",
|
||||||
|
sumDev: "",
|
||||||
|
sumTraget: "",
|
||||||
|
sumBudget: "",
|
||||||
|
sumRowDev:"",
|
||||||
|
sumRowTarget:"",
|
||||||
|
sumRowBudget:"",
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// ตอนนี้คุณสามารถ map ข้อมูลใน 'groupedData' เพื่อสร้าง 'formattedData' ได้แล้ว
|
||||||
|
const reformattedData = groupedData.map((group,x) => {
|
||||||
|
const formattedGroup = {
|
||||||
|
rowNo: x?Extension.ToThaiNumber((x + 1).toString()):Extension.ToThaiNumber("๑"),
|
||||||
|
rootId: group.rootId,
|
||||||
|
root: group.root,
|
||||||
|
strategy: Array(4).fill(null).map((_, index) => {
|
||||||
|
const strategy = group.strategy[index] || {
|
||||||
|
strategyName: "0",
|
||||||
|
devCount: "0",
|
||||||
|
target: "0",
|
||||||
|
receiveBudget: "0",
|
||||||
|
sumDev: "0",
|
||||||
|
sumTraget: "0",
|
||||||
|
sumBudget: "0",
|
||||||
|
sumRowDev:"0",
|
||||||
|
sumRowTarget:"0",
|
||||||
|
sumRowBudget:"0",
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
[`strategyName${index + 1}`]: strategy.strategyName ?? "0",
|
||||||
|
[`devCount${index + 1}`]: strategy.devCount ?? "0",
|
||||||
|
[`target${index + 1}`]: "0",
|
||||||
|
[`receiveBudget${index + 1}`]: strategy.receiveBudget ?? "0",
|
||||||
|
[`sumDev${index + 1}`]: strategy.sumDev ?? "0",
|
||||||
|
[`sumTraget${index + 1}`]: strategy.sumTraget ?? "0",
|
||||||
|
[`sumBudget${index + 1}`]: strategy.sumBudget ?? "0",
|
||||||
|
[`sumRowDev`]: strategy.sumRowDev ?? "0",
|
||||||
|
[`sumRowTarget`]: strategy.sumRowTarget ?? "0",
|
||||||
|
[`sumRowBudget`]: strategy.sumRowBudget ?? "0",
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
|
||||||
|
return formattedGroup;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// const fmdata = reformattedData.map(rfmData => {
|
||||||
|
// return {
|
||||||
|
// rowNo: rfmData.rowNo,
|
||||||
|
// rootId: rfmData.rootId,
|
||||||
|
// root: rfmData.root,
|
||||||
|
// strategy: [
|
||||||
|
// {
|
||||||
|
// strategyName1: rfmData.strategy[0].strategyName1,
|
||||||
|
// devCount1: rfmData.strategy[0].devCount1,
|
||||||
|
// target1: rfmData.strategy[0].target1,
|
||||||
|
// receiveBudget1: rfmData.strategy[0].receiveBudget1
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// strategyName2: rfmData.strategy[1].strategyName2,
|
||||||
|
// devCount2: rfmData.strategy[1].devCount2,
|
||||||
|
// target2: rfmData.strategy[1].target2,
|
||||||
|
// receiveBudget2: rfmData.strategy[1].receiveBudget2
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// strategyName3: rfmData.strategy[2].strategyName3,
|
||||||
|
// devCount3: rfmData.strategy[2].devCount3,
|
||||||
|
// target3: rfmData.strategy[2].target3,
|
||||||
|
// receiveBudget3: rfmData.strategy[2].receiveBudget3
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// strategyName4: rfmData.strategy[3].strategyName4,
|
||||||
|
// devCount4: rfmData.strategy[3].devCount4,
|
||||||
|
// target4: rfmData.strategy[3].target4,
|
||||||
|
// receiveBudget4: rfmData.strategy[3].receiveBudget4
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// };
|
||||||
|
// });
|
||||||
|
|
||||||
return new HttpSuccess({
|
return new HttpSuccess({
|
||||||
template: "development",
|
template: "development",
|
||||||
reportName: "development",
|
reportName: "development",
|
||||||
data: {
|
data: {
|
||||||
data: formattedData,
|
data: mappedDataDev,
|
||||||
|
resultAllStrategy: reformattedData,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue