DischargeTaskService.php 6.6 KB

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