浏览代码

bulkRequest対応

develop
sosuke.iwabuchi 2 年前
父节点
当前提交
29724025fe
共有 8 个文件被更改,包括 41 次插入36 次删除
  1. +3
    -4
      src/apps/入金予定結果/index.tsx
  2. +13
    -8
      src/apps/各種申請/index.tsx
  3. +6
    -8
      src/apps/定期申込予約/自動承認.ts
  4. +3
    -0
      src/apps/定期駐車場マスタ/index.tsx
  5. +2
    -9
      src/logic/契約状況同期.ts
  6. +6
    -2
      src/rest-api/bulk.ts
  7. +5
    -3
      src/rest-api/車室契約情報.ts
  8. +3
    -2
      src/rest-api/車室情報2.ts

+ 3
- 4
src/apps/入金予定結果/index.tsx 查看文件

@@ -6,7 +6,7 @@ import { makeRecordData } from "@/common/rest-api-client";
import { Message } from "@/exception"; import { Message } from "@/exception";
import { EmailID, sendEmail } from "@/mypage/メール"; import { EmailID, sendEmail } from "@/mypage/メール";
import { makeReceipt } from "@/mypage/領収証発行"; import { makeReceipt } from "@/mypage/領収証発行";
import { BulkRequest } from "@/rest-api/bulk";
import bulkRequest from "@/rest-api/bulk";
import { get定期申込予約 } from "@/rest-api/定期申込予約"; import { get定期申込予約 } from "@/rest-api/定期申込予約";
import { 入金予定結果, 入金予定結果フィールド名 } from "@/types/入金予定結果"; import { 入金予定結果, 入金予定結果フィールド名 } from "@/types/入金予定結果";
import { 定期申込予約フィールド名 } from "@/types/定期申込予約"; import { 定期申込予約フィールド名 } from "@/types/定期申込予約";
@@ -135,8 +135,7 @@ const setData = (event: any, targets: string[]) => {
return String(month); return String(month);
})(); })();


const request = new BulkRequest();
request.update({
bulkRequest.update({
app: AppID.定期申込予約, app: AppID.定期申込予約,
id: record.first_payment_entry_record_no.value, id: record.first_payment_entry_record_no.value,
record: makeRecordData({ record: makeRecordData({
@@ -148,7 +147,7 @@ const setData = (event: any, targets: string[]) => {
[F.日割り分_月]: 日割り月, [F.日割り分_月]: 日割り月,
}), }),
}); });
await request.save();
await bulkRequest.save();
}; };


kintone.events.on(KintoneEvent.追加.レコード追加画面を表示した後, (event) => { kintone.events.on(KintoneEvent.追加.レコード追加画面を表示した後, (event) => {


+ 13
- 8
src/apps/各種申請/index.tsx 查看文件

@@ -9,6 +9,7 @@ import {
showLoadingDialog, showLoadingDialog,
} from "@/middleware/swal"; } from "@/middleware/swal";
import { EmailID, sendEmail } from "@/mypage/メール"; import { EmailID, sendEmail } from "@/mypage/メール";
import bulkRequest from "@/rest-api/bulk";
import { get車室契約情報 } from "@/rest-api/車室契約情報"; import { get車室契約情報 } from "@/rest-api/車室契約情報";
import { get顧客マスタ } from "@/rest-api/顧客マスタ"; import { get顧客マスタ } from "@/rest-api/顧客マスタ";
import { import {
@@ -96,10 +97,8 @@ const getCallBack口座変更申請承認 = (record: 各種申請) => {
}; };


const 解約申請承認 = async (record: 各種申請) => { const 解約申請承認 = async (record: 各種申請) => {
const 契約 = await get車室契約情報(record.契約情報.value);

// 車室契約情報への反映 // 車室契約情報への反映
await client.record.updateRecord({
bulkRequest.update({
app: AppID.車室契約情報, app: AppID.車室契約情報,
id: record.契約情報.value, id: record.契約情報.value,
record: makeRecordData({ record: makeRecordData({
@@ -107,12 +106,12 @@ const 解約申請承認 = async (record: 各種申請) => {
}), }),
}); });


// 契約情報の同期処理
await 契約状況同期(契約.駐車場名.value, Number(契約.車室番号.value));

// 申請の完了 // 申請の完了
await 各種申請完了(record); await 各種申請完了(record);


// データ保存
await bulkRequest.save();

// メールの送信 // メールの送信
const email = await sendEmail(EmailID.解約承認, { const email = await sendEmail(EmailID.解約承認, {
application_no: record.申請番号.value, application_no: record.申請番号.value,
@@ -150,7 +149,7 @@ const 利用者情報変更申請承認 = async (record: 各種申請) => {
顧客コード: Number(record.顧客コード.value), 顧客コード: Number(record.顧客コード.value),
}); });
if (customer === null) throw new Error("顧客不正"); if (customer === null) throw new Error("顧客不正");
await client.record.updateRecord({
bulkRequest.update({
app: AppID.顧客マスタ, app: AppID.顧客マスタ,
id: customer.$id.value, id: customer.$id.value,
record: makeRecordData({ record: makeRecordData({
@@ -170,6 +169,9 @@ const 利用者情報変更申請承認 = async (record: 各種申請) => {
// 申請の完了 // 申請の完了
await 各種申請完了(record); await 各種申請完了(record);


// データ保存
await bulkRequest.save();

// メールの送信 // メールの送信
const email = await sendEmail(EmailID.利用者情報変更完了, { const email = await sendEmail(EmailID.利用者情報変更完了, {
application_no: record.申請番号.value, application_no: record.申請番号.value,
@@ -203,7 +205,7 @@ const getCallBack利用者情報変更申請承認 = (record: 各種申請) => {
const 車両番号_防犯登録番号変更申請承認 = async (record: 各種申請) => { const 車両番号_防犯登録番号変更申請承認 = async (record: 各種申請) => {
// 車室契約情報アプリへの反映 // 車室契約情報アプリへの反映
const F = 車室契約情報フィールド名; const F = 車室契約情報フィールド名;
await client.record.updateRecord({
bulkRequest.update({
app: AppID.車室契約情報, app: AppID.車室契約情報,
id: record.$id.value, id: record.$id.value,
record: makeRecordData({ record: makeRecordData({
@@ -217,6 +219,9 @@ const 車両番号_防犯登録番号変更申請承認 = async (record: 各種
// 申請の完了 // 申請の完了
await 各種申請完了(record); await 各種申請完了(record);


// データ保存
await bulkRequest.save();

// メールの送信 // メールの送信
const email = await sendEmail(EmailID.車両番号_防犯登録番号変更完了, { const email = await sendEmail(EmailID.車両番号_防犯登録番号変更完了, {
application_no: record.申請番号.value, application_no: record.申請番号.value,


+ 6
- 8
src/apps/定期申込予約/自動承認.ts 查看文件

@@ -2,7 +2,6 @@ import { AppID } from "@/common/appids";
import { makeRecordData } from "@/common/rest-api-client"; import { makeRecordData } from "@/common/rest-api-client";
import { 契約状況同期 } from "@/logic/契約状況同期"; import { 契約状況同期 } from "@/logic/契約状況同期";
import { ShowConfirmDialog } from "@/middleware/swal"; import { ShowConfirmDialog } from "@/middleware/swal";
import { BulkRequest } from "@/rest-api/bulk";
import { getDetailUrl } from "@/rest-api/url"; import { getDetailUrl } from "@/rest-api/url";
import { get定期駐車場プランマスタ } from "@/rest-api/定期駐車場プランマスタ"; import { get定期駐車場プランマスタ } from "@/rest-api/定期駐車場プランマスタ";
import { get自動承認グループ } from "@/rest-api/自動承認グループ"; import { get自動承認グループ } from "@/rest-api/自動承認グループ";
@@ -27,6 +26,7 @@ import { 顧客マスタフィールド名 } from "@/types/顧客マスタ";
import { sprintf } from "sprintf"; import { sprintf } from "sprintf";
import { CancelError, Message } from "@/exception"; import { CancelError, Message } from "@/exception";
import { dateParse, now } from "@/common/datetime"; import { dateParse, now } from "@/common/datetime";
import bulkRequest from "@/rest-api/bulk";


export class 申込 { export class 申込 {
private 定期申込予約: 定期申込予約; private 定期申込予約: 定期申込予約;
@@ -43,8 +43,6 @@ export class 申込 {


private 作成後契約: 車室契約情報 | null = null; private 作成後契約: 車室契約情報 | null = null;


private requests: BulkRequest = new BulkRequest();

constructor(定期申込予約: 定期申込予約) { constructor(定期申込予約: 定期申込予約) {
this.定期申込予約 = 定期申込予約; this.定期申込予約 = 定期申込予約;
} }
@@ -194,7 +192,7 @@ export class 申込 {
const F = 顧客マスタフィールド名; const F = 顧客マスタフィールド名;
const 顧客コード = await getNext顧客コード(); const 顧客コード = await getNext顧客コード();


this.requests.create({
bulkRequest.create({
app: AppID.顧客マスタ, app: AppID.顧客マスタ,
record: makeRecordData({ record: makeRecordData({
[F.顧客コード]: String(顧客コード), [F.顧客コード]: String(顧客コード),
@@ -217,7 +215,7 @@ export class 申込 {
if (!this.定期申込予約) throw new Error("定期申込予約不正"); if (!this.定期申込予約) throw new Error("定期申込予約不正");
const F = 車室契約情報フィールド名; const F = 車室契約情報フィールド名;


this.requests.create(
bulkRequest.create(
{ {
app: AppID.車室契約情報, app: AppID.車室契約情報,
record: makeRecordData({ record: makeRecordData({
@@ -238,7 +236,7 @@ export class 申込 {
private async 申込情報完了() { private async 申込情報完了() {
if (this.プラン === null) throw new Error(); if (this.プラン === null) throw new Error();
const F = 定期申込予約フィールド名; const F = 定期申込予約フィールド名;
this.requests.update({
bulkRequest.update({
app: AppID.定期申込予約, app: AppID.定期申込予約,
id: this.定期申込予約.$id.value, id: this.定期申込予約.$id.value,
record: makeRecordData({ record: makeRecordData({
@@ -256,7 +254,7 @@ export class 申込 {
} }


private async save() { private async save() {
this.requests.debug();
await this.requests.save();
bulkRequest.debug();
await bulkRequest.save();
} }
} }

+ 3
- 0
src/apps/定期駐車場マスタ/index.tsx 查看文件

@@ -3,6 +3,7 @@ import { setHeaderButton } from "@/common/header-button";
import { KintoneEvent } from "@/common/kintone-event"; import { KintoneEvent } from "@/common/kintone-event";
import { 契約状況同期 } from "@/logic/契約状況同期"; import { 契約状況同期 } from "@/logic/契約状況同期";
import { ShowConfirmDialog, SuccessDialog } from "@/middleware/swal"; import { ShowConfirmDialog, SuccessDialog } from "@/middleware/swal";
import bulkRequest from "@/rest-api/bulk";
import { 定期駐車場マスタ } from "@/types/定期駐車場マスタ"; import { 定期駐車場マスタ } from "@/types/定期駐車場マスタ";


(() => { (() => {
@@ -21,6 +22,8 @@ import { 定期駐車場マスタ } from "@/types/定期駐車場マスタ";


await 契約状況同期(record.駐車場名.value); await 契約状況同期(record.駐車場名.value);


await bulkRequest.save();

await SuccessDialog.fire(); await SuccessDialog.fire();


location.reload(); location.reload();


+ 2
- 9
src/logic/契約状況同期.ts 查看文件

@@ -1,7 +1,7 @@
import { AppID } from "@/common/appids"; import { AppID } from "@/common/appids";
import { now } from "@/common/datetime"; import { now } from "@/common/datetime";
import { makeRecordData } from "@/common/rest-api-client"; import { makeRecordData } from "@/common/rest-api-client";
import { BulkRequest } from "@/rest-api/bulk";
import bulkRequest from "@/rest-api/bulk";
import { get車室契約情報一覧 } from "@/rest-api/車室契約情報"; import { get車室契約情報一覧 } from "@/rest-api/車室契約情報";
import { get車室情報一覧 } from "@/rest-api/車室情報2"; import { get車室情報一覧 } from "@/rest-api/車室情報2";
import { 状態Dropdown, 車室情報2フィールド名 } from "@/types/車室情報2"; import { 状態Dropdown, 車室情報2フィールド名 } from "@/types/車室情報2";
@@ -11,8 +11,6 @@ export const 契約状況同期 = async (駐車場名: string, 車室番号?: nu
}; };


const 車室情報契約項目同期 = async (駐車場名: string, 車室番号?: number) => { const 車室情報契約項目同期 = async (駐車場名: string, 車室番号?: number) => {
const requests = new BulkRequest();

const 契約一覧 = await get車室契約情報一覧({ const 契約一覧 = await get車室契約情報一覧({
駐車場名, 駐車場名,
車室番号, 車室番号,
@@ -27,7 +25,7 @@ const 車室情報契約項目同期 = async (駐車場名: string, 車室番号
車室一覧.forEach((車室) => { 車室一覧.forEach((車室) => {
const 契約 = 契約一覧.find((c) => c.車室番号.value === 車室.車室番号.value); const 契約 = 契約一覧.find((c) => c.車室番号.value === 車室.車室番号.value);


requests.update({
bulkRequest.update({
app: AppID.車室情報2, app: AppID.車室情報2,
id: 車室.$id.value, id: 車室.$id.value,
record: makeRecordData({ record: makeRecordData({
@@ -38,9 +36,4 @@ const 車室情報契約項目同期 = async (駐車場名: string, 車室番号
}), }),
}); });
}); });
// 保存
if (!requests.isSaved()) {
requests.debug();
await requests.save();
}
}; };

+ 6
- 2
src/rest-api/bulk.ts 查看文件

@@ -1,6 +1,5 @@
import { AppID } from "@/common/appids"; import { AppID } from "@/common/appids";
import { Field } from "@/common/rest-api-client"; import { Field } from "@/common/rest-api-client";
import { delay } from "@/common/timer";
import { KintoneRestAPIClient } from "@kintone/rest-api-client"; import { KintoneRestAPIClient } from "@kintone/rest-api-client";
import { chunk } from "lodash"; import { chunk } from "lodash";


@@ -20,7 +19,7 @@ type Payload = {
record: Field; record: Field;
}; };


type BulkRequestResponse = { id?: string; revision?: string };
export type BulkRequestResponse = { id?: string; revision?: string };


export type RequestParam = { export type RequestParam = {
method: "POST" | "PUT"; method: "POST" | "PUT";
@@ -29,6 +28,7 @@ export type RequestParam = {
}; };


type Callback = (result: BulkRequestResponse) => Promise<void>; type Callback = (result: BulkRequestResponse) => Promise<void>;
export type BulkRequestCallback = Callback;


export class BulkRequest { export class BulkRequest {
private client: KintoneRestAPIClient; private client: KintoneRestAPIClient;
@@ -99,9 +99,13 @@ export class BulkRequest {


clear() { clear() {
this.requests = []; this.requests = [];
this.callbacks = [];
} }


debug() { debug() {
console.log("BulkRequest debug", this, this.requests); console.log("BulkRequest debug", this, this.requests);
} }
} }

const bulkRequest = new BulkRequest();
export default bulkRequest;

+ 5
- 3
src/rest-api/車室契約情報.ts 查看文件

@@ -1,16 +1,18 @@
import { AppID } from "@/common/appids"; import { AppID } from "@/common/appids";
import { formatDateStr, now } from "@/common/datetime";
import { formatDateStr } from "@/common/datetime";
import { 車室契約情報, 車室契約情報フィールド名 } from "@/types/車室契約情報"; import { 車室契約情報, 車室契約情報フィールド名 } from "@/types/車室契約情報";
import { KintoneRestAPIClient } from "@kintone/rest-api-client"; import { KintoneRestAPIClient } from "@kintone/rest-api-client";
import { QueryBuilder } from "./query"; import { QueryBuilder } from "./query";


const client = new KintoneRestAPIClient(); const client = new KintoneRestAPIClient();


const app = AppID.車室契約情報;

export const get車室契約情報 = async ( export const get車室契約情報 = async (
レコード番号: number | string レコード番号: number | string
): Promise<車室契約情報> => { ): Promise<車室契約情報> => {
const { record } = await client.record.getRecord<車室契約情報>({ const { record } = await client.record.getRecord<車室契約情報>({
app: AppID.車室契約情報,
app,
id: レコード番号, id: レコード番号,
}); });


@@ -41,7 +43,7 @@ export const get車室契約情報一覧 = async ({
} }


const record = await client.record.getAllRecords<車室契約情報>({ const record = await client.record.getAllRecords<車室契約情報>({
app: AppID.車室契約情報,
app,
condition: builder.build(), condition: builder.build(),
}); });




+ 3
- 2
src/rest-api/車室情報2.ts 查看文件

@@ -1,11 +1,12 @@
import { AppID } from "@/common/appids"; import { AppID } from "@/common/appids";
import { 車室情報2, 車室情報2フィールド名 } from "@/types/車室情報2"; import { 車室情報2, 車室情報2フィールド名 } from "@/types/車室情報2";
import { KintoneRestAPIClient } from "@kintone/rest-api-client"; import { KintoneRestAPIClient } from "@kintone/rest-api-client";
import { sprintf } from "sprintf";
import { QueryBuilder } from "./query"; import { QueryBuilder } from "./query";


const client = new KintoneRestAPIClient(); const client = new KintoneRestAPIClient();


const app = AppID.車室情報2;

type get車室情報一覧オプション = { type get車室情報一覧オプション = {
駐車場名?: string; 駐車場名?: string;
車室番号?: number | string; 車室番号?: number | string;
@@ -23,7 +24,7 @@ export const get車室情報一覧 = async ({
} }


const { records } = await client.record.getRecords<車室情報2>({ const { records } = await client.record.getRecords<車室情報2>({
app: AppID.車室情報2,
app,
query: builder.build(), query: builder.build(),
}); });




正在加载...
取消
保存