|
|
@@ -44,6 +44,7 @@ use App\OrderCommodity;
|
|
|
use App\OrderIssue;
|
|
|
use App\OrderPackage;
|
|
|
use App\OrderPackageCommodities;
|
|
|
+use App\OrderPackageCountingRecord;
|
|
|
use App\OrderTracking;
|
|
|
use App\Owner;
|
|
|
use App\OwnerPriceOperation;
|
|
|
@@ -93,6 +94,7 @@ use App\Warehouse;
|
|
|
use App\Waybill;
|
|
|
use App\WaybillPriceModel;
|
|
|
use Carbon\Carbon;
|
|
|
+use Carbon\CarbonPeriod;
|
|
|
use ChangeColumnOrderIdToOrderIssues;
|
|
|
use Doctrine\DBAL\Query\QueryBuilder;
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
@@ -126,61 +128,34 @@ class TestController extends Controller
|
|
|
return call_user_func([$this, $method], $request);
|
|
|
}
|
|
|
|
|
|
- public function updateInventory()
|
|
|
+ public function syncWeight()
|
|
|
{
|
|
|
- $inventoryAccounts = InventoryAccount::query()->get();
|
|
|
- $updateParams = [[
|
|
|
- 'id', 'processed', 'ignored', 'updated_at'
|
|
|
- ]];
|
|
|
- $updated_at = Carbon::now()->toDateTimeString();
|
|
|
- foreach ($inventoryAccounts as $inventoryAccount) {
|
|
|
- if ($inventoryAccount->getIgnoredAmount() > 0) {
|
|
|
- $updateParams[] = [
|
|
|
- 'id' => $inventoryAccount->id,
|
|
|
- 'processed' => $inventoryAccount->getProcessedAmount(),
|
|
|
- 'ignored' => $inventoryAccount->getIgnoredAmount(),
|
|
|
- 'updated_at' => $updated_at,
|
|
|
- ];
|
|
|
- }
|
|
|
- }
|
|
|
- if (count($updateParams) > 1) {
|
|
|
- app(BatchUpdateService::class)->batchUpdate('inventory_accounts', $updateParams);
|
|
|
- }
|
|
|
- }
|
|
|
- public function disposeDetail($date = null)
|
|
|
- {
|
|
|
- DB::transaction(function ()use($date){
|
|
|
- if (!$date){
|
|
|
- $valueStore = ValueStore::query()->where("name","wave_detail_last_sync_date")->lockForUpdate()->first();
|
|
|
- $date = $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
|
|
|
- }
|
|
|
- $count = DB::connection("oracle")->selectOne(DB::raw("SELECT count(*) count FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
|
|
|
- if ($count->count > 1000){
|
|
|
- $sql = <<<sql
|
|
|
- SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM (
|
|
|
- SELECT * FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
|
|
|
- ORDER BY EDITTIME) WHERE ROWNUM <= 1000)wave WHERE wave.rowno >= 0
|
|
|
+ foreach (CarbonPeriod::create("2020-12-01","2021-01-25") as $date){
|
|
|
+ /** @var $date Carbon */
|
|
|
+ $yesterday = $date->format("Y-m-d");
|
|
|
+ $sql = <<<sql
|
|
|
+SELECT DATE_FORMAT(created_at,'%Y-%m-%d') date,
|
|
|
+SUM(CASE WHEN weighed_at IS NULL THEN 1 ELSE 0 END) AS count,
|
|
|
+COUNT(1) total FROM order_packages WHERE created_at BETWEEN '{$yesterday} 00:00:00' AND '{$yesterday} 23:59:59' GROUP BY date
|
|
|
sql;
|
|
|
- $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);
|
|
|
- //$this->detailExe($details);
|
|
|
- $this->disposeDetail($details[count($details)-1]->edittime);dump($details[count($details)-1]->edittime);
|
|
|
- }else{
|
|
|
- $sql = "SELECT ORDERNO,WAVENO,SEQNO FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')";
|
|
|
- $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);dd($details ? $details[count($details)-1]->edittime : Carbon::now()->toDateTimeString());
|
|
|
- //$this->detailExe($details);
|
|
|
- //ValueStore::query()->where("name","wave_detail_last_sync_date")->update(["value"=>$details ? $details[count($details)-1]->edittime : Carbon::now()->toDateTimeString()]);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- public function test1(){
|
|
|
- $cities = City::query()->with("province")->where("province_id","!=",0)->get();
|
|
|
- foreach ($cities as $city){
|
|
|
- if ($city->name=='汕头/汕尾'){
|
|
|
- app("RegionService")->getCity("汕头",$city->province->name);
|
|
|
- app("RegionService")->getCity("汕尾",$city->province->name);
|
|
|
- continue;
|
|
|
- }
|
|
|
- app("RegionService")->getCity($city->name,$city->province->name);
|
|
|
+ $result = DB::selectOne(DB::raw($sql));
|
|
|
+ if (!$result)$obj = [
|
|
|
+ "targeted_at" => $yesterday,
|
|
|
+ "un_weigh_count" => 0,
|
|
|
+ "total_count" => 0
|
|
|
+ ]; else $obj = [
|
|
|
+ "targeted_at" => $result->date,
|
|
|
+ "un_weigh_count" => $result->count,
|
|
|
+ "total_count" => $result->total,
|
|
|
+ ];
|
|
|
+ /** @var \stdClass $model */
|
|
|
+ $model = OrderPackageCountingRecord::query()->create($obj);
|
|
|
+ Cache::put("weight.".$yesterday,[
|
|
|
+ "date"=>$yesterday,
|
|
|
+ "total"=>$model->total_count,
|
|
|
+ "count"=>$model->un_weigh_count,
|
|
|
+ "value"=>$model->total_count ? round($model->un_weigh_count/$model->total_count,2)*100 : 0
|
|
|
+ ]);
|
|
|
}
|
|
|
}
|
|
|
|