Kaynağa Gözat

利用実績に郵送依頼件数を追加

develop
sosuke.iwabuchi 2 yıl önce
ebeveyn
işleme
74ed03862b
5 değiştirilmiş dosya ile 77 ekleme ve 10 silme
  1. +72
    -10
      app/Console/Commands/SummaryUse.php
  2. +1
    -0
      app/Models/UseByKeySummary.php
  3. +2
    -0
      app/Repositories/Custom/HelloTechno/UseSummaryRepository.php
  4. +1
    -0
      database/migrations/2023_06_07_144200_create_use_summaries_table.php
  5. +1
    -0
      database/migrations/2023_06_08_092700_create_use_by_key_summaries_table.php

+ 72
- 10
app/Console/Commands/SummaryUse.php Dosyayı Görüntüle

@@ -19,7 +19,7 @@ use LogicException;
class SummaryUse extends BaseCommand
{

const COMMAND = "summary:use {--contractId=} {--yyyymm=}";
const COMMAND = "summary:use {--contractId=} {--yyyymm=} {--current}";

/**
* The name and signature of the console command.
@@ -111,10 +111,18 @@ class SummaryUse extends BaseCommand

// デフォルト判定
if ($yyyyMM === null) {
// デフォルトは先月とする
$this->targetDate = DateUtil::now()->addMonth(-1)->setDay(1)->setTime(0, 0);
$this->targetYYYYMM = $this->targetDate->format('Ym');
return;

if ($this->option('current')) {
// Currentの場合は当月を対象とする
$this->targetDate = DateUtil::now()->setDay(1)->setTime(0, 0);
$this->targetYYYYMM = $this->targetDate->format('Ym');
return;
} else {
// デフォルトは先月とする
$this->targetDate = DateUtil::now()->addMonth(-1)->setDay(1)->setTime(0, 0);
$this->targetYYYYMM = $this->targetDate->format('Ym');
return;
}
}

// フォーマットチェック
@@ -146,6 +154,12 @@ class SummaryUse extends BaseCommand
$model->is_fixed = true;
}


// 初期設定
$model->receipt_order_count = 0;
$model->mail_order_count = 0;
$model->sms_send_count = 0;
$model->sms_send_cost = 0;
return $model;
}

@@ -175,8 +189,17 @@ class SummaryUse extends BaseCommand
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, ">=", $from)
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, "<", $to);

$targetMailOrders = ReceiptIssuingOrder::getBuilder()
->where(ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, $model->contract_id)
->whereNotNull(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME)
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, ">=", $from)
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, "<", $to);

// 領収証発行依頼件数の取得
$receiptIssuingOrders = DB::table($targetOrders, 'target_orders')
$receiptIssuingOrders = ReceiptIssuingOrder::getBuilder()
->where(ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, $model->contract_id)
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, ">=", $from)
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, "<", $to)
->groupBy(
ReceiptIssuingOrder::COL_NAME_CONTRACT_ID,
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1,
@@ -189,7 +212,6 @@ class SummaryUse extends BaseCommand
DB::raw(sprintf("count(*) as count")),
])
->get();
$model->receipt_order_count = 0;
foreach ($receiptIssuingOrders as $ele) {

$key1 = data_get($ele, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1);
@@ -207,6 +229,41 @@ class SummaryUse extends BaseCommand
$summaryByKeys->put($key, $summaryByKey);
}

// 郵送依頼件数の取得
$mailOrders = ReceiptIssuingOrder::getBuilder()
->where(ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, $model->contract_id)
->whereNotNull(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME)
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, ">=", $from)
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, "<", $to)
->groupBy(
ReceiptIssuingOrder::COL_NAME_CONTRACT_ID,
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1,
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2,
)
->select([
ReceiptIssuingOrder::COL_NAME_CONTRACT_ID,
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1,
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2,
DB::raw(sprintf("count(*) as count")),
])
->get();
foreach ($mailOrders as $ele) {

$key1 = data_get($ele, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1);
$key2 = data_get($ele, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2);
$count = data_get($ele, 'count');

$model->mail_order_count += $count;

$key = $makeKey($key1, $key2);

$summaryByKey = $this->getUseByKeyModel($model, $key1, $key2);
$summaryByKey->mail_order_count += $count;

$summaryByKeys->put($key, $summaryByKey);
}


// SMS送信実績の取得
$SMSs = SMSSendOrder::getBuilder()
->where(SMSSendOrder::COL_NAME_CONTRACT_ID, $model->contract_id)
@@ -228,8 +285,6 @@ class SummaryUse extends BaseCommand
])
->get();

$model->sms_send_count = 0;
$model->sms_send_cost = 0;
foreach ($SMSs as $ele) {
$key1 = data_get($ele, SMSSendOrder::COL_NAME_SUMMARY_KEY1);
$key2 = data_get($ele, SMSSendOrder::COL_NAME_SUMMARY_KEY2);
@@ -275,9 +330,10 @@ class SummaryUse extends BaseCommand

$this->outputInfo(
sprintf(
"集計完了:%s 領収証発行依頼:%d件 SMS送信件数:%d件 SMSコスト:%d円",
"集計完了:%s 領収証発行依頼:%d件 郵送依頼:%d件 SMS送信件数:%d件 SMSコスト:%d円",
$contract->name,
$model->receipt_order_count,
$model->mail_order_count,
$model->sms_send_count,
$model->sms_send_cost,
)
@@ -340,6 +396,12 @@ class SummaryUse extends BaseCommand
$summary->is_fixed = true;
}


// 初期設定
$summary->receipt_order_count = 0;
$summary->mail_order_count = 0;
$summary->sms_send_count = 0;
$summary->sms_send_cost = 0;
return $summary;
}
}

+ 1
- 0
app/Models/UseByKeySummary.php Dosyayı Görüntüle

@@ -12,6 +12,7 @@ class UseByKeySummary extends AppModel
const COL_NAME_SUMMARY_KEY1 = "summary_key1";
const COL_NAME_SUMMARY_KEY2 = "summary_key2";
const COL_NAME_RECEIPT_ORDER_COUNT = 'receipt_order_count';
const COL_NAME_MAIL_ORDER_COUNT = 'mail_order_count';
const COL_NAME_SMS_SEND_COUNT = 'sms_send_count';
const COL_NAME_SMS_SEND_COST = 'sms_send_cost';
const COL_NAME_IS_FIXED = 'is_fixed';


+ 2
- 0
app/Repositories/Custom/HelloTechno/UseSummaryRepository.php Dosyayı Görüntüle

@@ -96,6 +96,7 @@ class UseSummaryRepository extends BaseRepository
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY1]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY2]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_RECEIPT_ORDER_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_MAIL_ORDER_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SMS_SEND_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_IS_FIXED]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_UPDATED_AT]),
@@ -116,6 +117,7 @@ class UseSummaryRepository extends BaseRepository
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY2]),
$this->makeColumnNameForSelect([$name, HtCustomParkingName::COL_NAME_PARKING_NAME]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_RECEIPT_ORDER_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_MAIL_ORDER_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SMS_SEND_COUNT]),
];
return $columns;


+ 1
- 0
database/migrations/2023_06_07_144200_create_use_summaries_table.php Dosyayı Görüntüle

@@ -36,6 +36,7 @@ return new class extends Migration

$table->string("summary_yyyymm")->comment("集計年月");
$table->unsignedInteger("receipt_order_count")->default(0)->comment("領収証発行依頼件数");
$table->unsignedInteger("mail_order_count")->default(0)->comment("郵送依頼件数");
$table->unsignedInteger("sms_send_count")->default(0)->comment("SMS送信件数");
$table->unsignedInteger("sms_send_cost")->default(0)->comment("SMS送信コスト");
$table->boolean('is_fixed')->default(false)->comment('確定済み');


+ 1
- 0
database/migrations/2023_06_08_092700_create_use_by_key_summaries_table.php Dosyayı Görüntüle

@@ -39,6 +39,7 @@ return new class extends Migration
$table->string("summary_key2")->comment("集計キー2")->nullable();

$table->unsignedInteger("receipt_order_count")->default(0)->comment("領収証発行依頼件数");
$table->unsignedInteger("mail_order_count")->default(0)->comment("郵送依頼件数");
$table->unsignedInteger("sms_send_count")->default(0)->comment("SMS送信件数");
$table->unsignedInteger("sms_send_cost")->default(0)->comment("SMS送信コスト");
$table->boolean('is_fixed')->default(false)->comment('確定済み');


Yükleniyor…
İptal
Kaydet