#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 Extension from "../interfaces/extension";
|
||||
import { DevelopmentScholarship } from "../entities/DevelopmentScholarship";
|
||||
import { IsNull, Not } from "typeorm";
|
||||
@Route("api/v1/development/report")
|
||||
@Tags("Report")
|
||||
@Security("bearerAuth")
|
||||
|
|
@ -24,16 +25,228 @@ export class ReportController extends Controller {
|
|||
*/
|
||||
@Get("main")
|
||||
async GetReportDevelopemtMain(/*@Path() type: string*/) {
|
||||
|
||||
// const _type = type.trim().toUpperCase();
|
||||
const formattedData = {
|
||||
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({
|
||||
template: "development",
|
||||
reportName: "development",
|
||||
data: {
|
||||
data: formattedData,
|
||||
data: mappedDataDev,
|
||||
resultAllStrategy: reformattedData,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue