| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?php
- namespace App\Services;
- use App\Role;
- use App\Traits\ServiceAppAop;
- use App\DischargeTask;
- use Carbon\Carbon;
- use Illuminate\Database\Eloquent\Collection;
- use Illuminate\Support\Facades\Auth;
- class DischargeTaskService
- {
- use ServiceAppAop;
- protected $modelClass = DischargeTask::class;
- // 编辑卸货任务
- public function updateDischargeTask(DischargeTask $dischargeTask, array $param): array
- {
- if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行编辑'];
- if(!empty($param['status'])){
- if( $param['status'] > 0 && $dischargeTask->facilitator_id == 0){
- return ['success' => false, 'message' => '未指定服务商的卸货任务,不可进行当前编辑'];
- }
- if($param['status'] ==3 && $dischargeTask->status == 0){
- return ['success' => false, 'message' => '未指定服务商的卸货任务,不可进行当前编辑'];
- }
- }
- $bool = $dischargeTask->update($param);
- if ($bool){
- $dischargeTask->refresh();
- $dischargeTask->loadMissing('owner','facilitator');
- return ['success' => true, 'data' => $dischargeTask];
- }
- else return ['success' => false];
- }
- // 删除卸货任务
- public function deleteDischargeTask(DischargeTask $dischargeTask): array
- {
- if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行删除'];
- try {
- $dischargeTask->delete();
- return ['success' => true];
- } catch (\Exception $e) {
- return ['success' => false, 'message' => $e->getMessage()];
- }
- }
- // 指定服务商
- public function updateTaskFacilitator(DischargeTask $dischargeTask, array $param): array
- {
- unset($param['owner'],$param['income_at']);
- if ($param['id']) unset($param['id']);
- $roles = Role::query()->where('name','like','人事%')->get();
- $personnel = app(UserService::class)->hasRoles(Auth::user(),$roles);
- if(array_search(Auth::user()["name"],config("users.superAdmin"))!==false){
- $personnel = true;
- }
- if ($dischargeTask->status >= 1 && $personnel == false) return ['success' => false, 'message' => '当前任务状态不可修改'];
- if (empty($param['expenditure_at'])) $param['expenditure_at'] = now();
- if (empty($param['status'])) $param['status'] = 1;
- $param['expenditure_total_cost'] = $param['expenditure_unit_price'] * $param['expenditure_amount'];
- // Authority
- $bool = $dischargeTask->update($param);
- if ($bool == 1) {
- $dischargeTask->loadMissing('owner','facilitator');
- return ['success' => true, 'data' => $dischargeTask];
- } else return ['success' => false];
- }
- // 创建卸货任务
- public function createTask(array $param,bool $loadMissing = true): array
- {
- if (isset($param['id'])) unset($param['id']);
- if (empty($param['income_total_cost'])) $param['income_total_cost'] = $param['income_unit_price'] * $param['income_amount'];
- if (empty($param['income_at'])) $param['income_at'] = now();
- if (empty($param['status'])) $param['status'] = 0;
- $dischargeTask = DischargeTask::query()->create($param);
- if($loadMissing)$dischargeTask->loadMissing('facilitator', 'owner','warehouse');
- return ['success' => true, 'data' => $dischargeTask];
- }
- // 卸货任务
- public function getJson(Collection $dischargeTasks): array
- {
- $json = [];
- foreach ($dischargeTasks as $dischargeTask) {
- /** @var DischargeTask $dischargeTask */
- /** @var Carbon $date */
- $date = $dischargeTask['created_at'];
- $json[] = [
- $date->toDateTimeString(),
- $dischargeTask->warehouse->name ?? '',
- $dischargeTask->owner->name ?? '',
- DischargeTask::types[$dischargeTask['type']] ?? '',
- $dischargeTask->numbers ?? '',
- ($dischargeTask['income_amount']).'',
- DischargeTask::units[$dischargeTask['income_unit']] ?? '',
- $dischargeTask->income_unit_price ?? '',
- $dischargeTask->income_total_cost ?? '',
- DischargeTask::status[$dischargeTask['status']] ?? '',
- $dischargeTask->income_remark ?? ' ',
- ];
- }
- return $json;
- }
- // 结算报表
- public function getStatementsJson(Collection $dischargeTasks): array
- {
- $json = [];
- foreach ($dischargeTasks as $dischargeTask) {
- /** @var DischargeTask $dischargeTask */
- $json[] = [
- $dischargeTask['income_at'], // 日期
- $dischargeTask->owner->name ?? '', // 客户名称
- $dischargeTask->warehouse->name ?? '', // 仓库
- DischargeTask::types[$dischargeTask['type']] ?? '', // 作业名称
- $dischargeTask['numbers'], // 入库单号
- // --- 收入信息
- ($dischargeTask['income_amount']).'', // 数量
- DischargeTask::units[$dischargeTask['income_unit']] ?? '', // 单位
- $dischargeTask['income_unit_price'], // 收入单价
- $dischargeTask['income_total_cost'], // 收入合计
- // --- 支出信息
- $dischargeTask->facilitator->name ?? '', // 服务商
- ($dischargeTask['expenditure_amount']).'', // 数量
- DischargeTask::units[$dischargeTask['expenditure_unit']] ?? '', // 单位
- $dischargeTask['expenditure_unit_price'], // 支出单价
- $dischargeTask['expenditure_total_cost'], // 支出合计
- // --- 其他信息
- DischargeTask::status[$dischargeTask['status']] ?? '', // 状态
- $dischargeTask->income_remark ?? '', // 收入备注
- $dischargeTask->expenditure_remark ?? '', // 支出备注
- ];
- }
- return $json;
- }
- // 服务商对账单
- public function getFacilitatorStatementsJson(Collection $dischargeTasks): array
- {
- $json = [];
- foreach ($dischargeTasks as $dischargeTask) {
- /** @var Carbon $date */
- $date = $dischargeTask->created_at;
- $json[] = [
- $date->toDateTimeString(), // 日期
- $dischargeTask->facilitator->name ?? '', // 服务商
- $dischargeTask['expenditure_amount'].'', // 数量
- DischargeTask::units[$dischargeTask['expenditure_unit']] ?? '', // 单位
- $dischargeTask['expenditure_unit_price'].'', // 支出单价
- $dischargeTask['expenditure_total_cost'].'', // 支出合计
- ];
- }
- return $json;
- }
- }
|