forked from admin/deShanXiao
213 lines
5.5 KiB
TypeScript
213 lines
5.5 KiB
TypeScript
import * as express from "express";
|
||
import { getConnection, getRepository } from "typeorm";
|
||
import DeceasedRetail from "../../entity/DeceasedRetail";
|
||
import curd from "@/lib/curd/curd";
|
||
import SeletedServiceList from "@/entity/SeletedServiceList";
|
||
import Deceased from "@/entity/Deceased";
|
||
|
||
const router = express.Router();
|
||
|
||
async function GetData(result) {
|
||
const ids = Array.from(
|
||
new Set(result.list.map((item) => Number(item.deceasedId)))
|
||
);
|
||
|
||
if (ids.length) {
|
||
const manyResult = await getConnection()
|
||
.getRepository(Deceased)
|
||
.createQueryBuilder("deceased")
|
||
.where("deceased.id IN (:...ids)", {
|
||
ids,
|
||
})
|
||
.getMany();
|
||
|
||
result.list = result.list.map((item: any) => {
|
||
let findData = manyResult.find(
|
||
(fitem: any) => fitem.id === item.deceasedId
|
||
);
|
||
return {
|
||
...findData,
|
||
...item,
|
||
deceased: findData,
|
||
};
|
||
});
|
||
}
|
||
}
|
||
|
||
router.post("/query", async (req, res) => {
|
||
try {
|
||
const result = await curd({
|
||
entity: DeceasedRetail,
|
||
req,
|
||
params: {
|
||
retailType: 2,
|
||
},
|
||
}).queryList();
|
||
await GetData(result);
|
||
res.send({ code: 200, data: result });
|
||
} catch (err) {
|
||
res.status(500).send({ code: 500, msg: err.message });
|
||
}
|
||
});
|
||
|
||
router.get("/list", async (req, res) => {
|
||
try {
|
||
const result: any = await curd({
|
||
entity: DeceasedRetail,
|
||
req,
|
||
params: {
|
||
retailType: 2,
|
||
},
|
||
}).queryList();
|
||
await GetData(result);
|
||
res.send({ code: 200, data: result });
|
||
} catch (err) {
|
||
res.status(500).send({ code: 500, msg: err.message });
|
||
}
|
||
});
|
||
|
||
router.get("/checkout", async (req, res) => {
|
||
let { id } = req.query;
|
||
if (!id) {
|
||
return res.status(500).send({ code: 500, msg: "未传入结账id" });
|
||
}
|
||
|
||
let deceasedRetailRep = getConnection().getRepository(DeceasedRetail);
|
||
let deceasedRetail = await deceasedRetailRep.findOne(Number(id));
|
||
|
||
if (!deceasedRetail)
|
||
return res.status(500).send({ code: 500, msg: "该记录不存在" });
|
||
|
||
deceasedRetail.retailState = 1;
|
||
|
||
await deceasedRetailRep.save(deceasedRetail);
|
||
|
||
res.status(200).send({ code: 200, data: deceasedRetail, msg: "结账成功!" });
|
||
});
|
||
|
||
router.post("/add", async (req, res) => {
|
||
delete req.body.id;
|
||
const connection = getConnection();
|
||
try {
|
||
const tempServiceItems = req.body.services.map((item) => {
|
||
delete item.id;
|
||
|
||
return item;
|
||
});
|
||
req.body.serviceItems = "";
|
||
|
||
const deceasedRetailRep = connection.getRepository(DeceasedRetail);
|
||
let newDeceasedRetail = new DeceasedRetail();
|
||
|
||
newDeceasedRetail = Object.assign(newDeceasedRetail, req.body);
|
||
newDeceasedRetail.retailType = 2;
|
||
|
||
if (tempServiceItems.length) {
|
||
tempServiceItems.forEach((item) => {
|
||
item.retailId = newDeceasedRetail.id;
|
||
item.hasDeceased = 0;
|
||
});
|
||
let executeData = await connection
|
||
.getRepository(SeletedServiceList)
|
||
.save(tempServiceItems);
|
||
|
||
newDeceasedRetail.serviceItems = executeData
|
||
.map((item) => item.id)
|
||
.join(",");
|
||
|
||
await deceasedRetailRep.save(newDeceasedRetail);
|
||
}
|
||
|
||
res.send({ code: 200, msg: "添加成功", data: newDeceasedRetail });
|
||
} catch (err) {
|
||
res.status(500).send({ code: 500, msg: err.message });
|
||
}
|
||
});
|
||
|
||
router.post("/update", async (req, res) => {
|
||
const id = Number(req.body.id);
|
||
|
||
if (!id) {
|
||
return res.send({ code: 400, msg: "逝者ID不能为空!" });
|
||
}
|
||
|
||
try {
|
||
const connection = getConnection();
|
||
const deceasedRepository = connection.getRepository(DeceasedRetail);
|
||
|
||
const tempServiceItems = req.body.services.map((item) => {
|
||
delete item.id;
|
||
|
||
return item;
|
||
});
|
||
|
||
let findData = await deceasedRepository.findOne(id);
|
||
|
||
const ids = findData.serviceItems.split(",").map((id) => Number(id));
|
||
if (ids.length) {
|
||
await connection
|
||
.getRepository(SeletedServiceList)
|
||
.createQueryBuilder("seleted_service_list")
|
||
.where("seleted_service_list.id IN (:...ids)", {
|
||
ids,
|
||
})
|
||
.delete()
|
||
.execute();
|
||
}
|
||
findData = { ...findData, ...req.body };
|
||
if (tempServiceItems.length) {
|
||
tempServiceItems.forEach((item) => {
|
||
item.retailId = id;
|
||
item.hasDeceased = 0;
|
||
item.updateDate = new Date();
|
||
item.createDate = new Date();
|
||
});
|
||
let executeData = await connection
|
||
.getRepository(SeletedServiceList)
|
||
.save(tempServiceItems);
|
||
|
||
findData.serviceItems = executeData.map((item) => item.id).join(",");
|
||
|
||
await deceasedRepository.save(findData);
|
||
}
|
||
|
||
res.send({ code: 200, msg: "更新成功", data: findData });
|
||
} catch (err) {
|
||
res.status(500).send({ code: 500, msg: err.message });
|
||
}
|
||
});
|
||
|
||
router.get("/delete", async (req, res) => {
|
||
const id = Number(req.query.id);
|
||
|
||
if (!id) {
|
||
return res.send({ code: 400, msg: "数据ID不能为空!" });
|
||
}
|
||
|
||
try {
|
||
const connection = getConnection();
|
||
const deceasedRepository = connection.getRepository(DeceasedRetail);
|
||
|
||
const findData = await deceasedRepository.findOne(id);
|
||
|
||
const ids = findData.serviceItems.split(",").map((id) => Number(id));
|
||
if (ids.length) {
|
||
await connection
|
||
.getRepository(SeletedServiceList)
|
||
.createQueryBuilder("seleted_service_list")
|
||
.where("seleted_service_list.id IN (:...ids)", {
|
||
ids,
|
||
})
|
||
.delete()
|
||
.execute();
|
||
}
|
||
await deceasedRepository.remove(findData);
|
||
|
||
res.send({ code: 200, msg: "删除成功!" });
|
||
} catch (err) {
|
||
res.status(500).send({ code: 500, msg: err.message });
|
||
}
|
||
});
|
||
|
||
export default router;
|