DischargeTaskService.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Services;
  3. use App\Facilitator;
  4. use App\Traits\ServiceAppAop;
  5. use App\DischargeTask;
  6. use Illuminate\Database\Eloquent\Collection;
  7. class DischargeTaskService
  8. {
  9. use ServiceAppAop;
  10. protected $modelClass = DischargeTask::class;
  11. // 编辑卸货任务
  12. public function updateDischargeTask(DischargeTask $dischargeTask, array $param): array
  13. {
  14. if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行编辑'];
  15. if(!empty($param['status']) && $param['status'] > 0 && $dischargeTask->facilitator_id == 0)
  16. return ['success' => false, 'message' => '未指定服务商的卸货任务,不可进行当前编辑'];
  17. $bool = $dischargeTask->update($param);
  18. if ($bool){
  19. $dischargeTask->refresh();
  20. $dischargeTask->loadMissing('owner','facilitator');
  21. return ['success' => true, 'data' => $dischargeTask];
  22. }
  23. else return ['success' => false];
  24. }
  25. // 删除卸货任务
  26. public function deleteDischargeTask(DischargeTask $dischargeTask): array
  27. {
  28. if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行删除'];
  29. try {
  30. $dischargeTask->delete();
  31. return ['success' => true];
  32. } catch (\Exception $e) {
  33. return ['success' => false, 'message' => $e->getMessage()];
  34. }
  35. }
  36. // 指定服务商
  37. public function updateTaskFacilitator(DischargeTask $dischargeTask, array $param): array
  38. {
  39. unset($param['owner'],$param['income_at']);
  40. if ($param['id']) unset($param['id']);
  41. if ($dischargeTask->status >= 1) return ['success' => false, 'message' => '当前任务状态不可修改'];
  42. if (empty($param['expenditure_total_cost'])) $param['expenditure_total_cost'] = $param['expenditure_unit_price'] * $param['expenditure_amount'];
  43. if (empty($param['expenditure_at'])) $param['expenditure_at'] = now();
  44. if (empty($param['status'])) $param['status'] = 1;
  45. $bool = $dischargeTask->update($param);
  46. if ($bool == 1) {
  47. $dischargeTask->loadMissing('owner','facilitator');
  48. return ['success' => true, 'data' => $dischargeTask];
  49. } else return ['success' => false];
  50. }
  51. // 创建卸货任务
  52. public function createTask(array $param): array
  53. {
  54. if (isset($param['id'])) unset($param['id']);
  55. if (empty($param['income_total_cost'])) $param['income_total_cost'] = $param['income_unit_price'] * $param['income_amount'];
  56. if (empty($param['income_at'])) $param['income_at'] = now();
  57. if (empty($param['status'])) $param['status'] = 0;
  58. $dischargeTask = DischargeTask::query()->create($param);
  59. $dischargeTask->loadMissing('owner');
  60. return ['success' => true, 'data' => $dischargeTask];
  61. }
  62. // 卸货任务
  63. public function getJson(Collection $dischargeTasks): array
  64. {
  65. $json = [];
  66. foreach ($dischargeTasks as $dischargeTask) {
  67. /** @var DischargeTask $dischargeTask */
  68. $json[] = [
  69. $dischargeTask->created_at,
  70. $dischargeTask->owner->name ?? '',
  71. DischargeTask::types[$dischargeTask->type] ?? '',
  72. $dischargeTask->numbers,
  73. $dischargeTask->income_amount,
  74. DischargeTask::units[$dischargeTask->unit] ?? '',
  75. $dischargeTask->income_unit_price,
  76. $dischargeTask->income_total_cost,
  77. $dischargeTask->income_remark,
  78. ];
  79. }
  80. return $json;
  81. }
  82. // 结算报表
  83. public function getStatementsJson(Collection $dischargeTasks): array
  84. {
  85. $json = [];
  86. foreach ($dischargeTasks as $dischargeTask) {
  87. /** @var DischargeTask $dischargeTask */
  88. $json[] = [
  89. $dischargeTask->created_at, //日期
  90. $dischargeTask->owner->name ?? '', // 客户名称
  91. DischargeTask::types[$dischargeTask->type] ?? '', // 作业名称
  92. $dischargeTask->numbers, // 入库单号
  93. // --- 收入信息
  94. $dischargeTask->income_amount, // 数量
  95. DischargeTask::units[$dischargeTask->income_unit] ?? '', // 单位
  96. $dischargeTask->income_unit_price, // 收入单价
  97. $dischargeTask->income_total_cost, // 收入合计
  98. // --- 支出信息
  99. $dischargeTask->facilitator->name ?? '', // 服务商
  100. $dischargeTask->expenditure_amount, // 数量
  101. DischargeTask::units[$dischargeTask->expenditure_unit] ?? '', // 单位
  102. $dischargeTask->expenditure_unit_price, // 支出单价
  103. $dischargeTask->expenditure_total_cost, // 支出合计
  104. // --- 其他信息
  105. DischargeTask::status[$dischargeTask->status] ?? '', // 状态
  106. $dischargeTask->income_remark, // 收入备注
  107. $dischargeTask->expenditure_remark, // 支出备注
  108. ];
  109. }
  110. return $json;
  111. }
  112. // 服务商对账单
  113. public function getProviderStatementsJons(Collection $dischargeTasks): array
  114. {
  115. $json = [];
  116. foreach ($dischargeTasks as $dischargeTask) {
  117. $json[] = [
  118. $dischargeTask->created_at, // 日期
  119. $dischargeTask->dischargeProvider->name ?? '', // 服务商
  120. $dischargeTask->expenditure_amount, // 数量
  121. DischargeTask::units[$dischargeTask->expenditure_unit] ?? '', // 单位
  122. $dischargeTask->expenditure_unit_price, // 支出单价
  123. $dischargeTask->expenditure_total_cost, // 支出合计
  124. ];
  125. }
  126. return $json;
  127. }
  128. }