|
@@ -10,6 +10,7 @@ use App\Model\ConstructionProductInfo;
|
|
|
use App\Model\Customer;
|
|
|
use App\Model\CustomerInfo;
|
|
|
use App\Model\DeliveryNote;
|
|
|
+use App\Model\DeliveryNoteDetail;
|
|
|
use App\Model\Depart;
|
|
|
use App\Model\Employee;
|
|
|
use App\Model\EmployeeDepartPermission;
|
|
@@ -1071,72 +1072,150 @@ class ConstructionService extends Service
|
|
|
}
|
|
|
|
|
|
public function deliveryNoteEdit($data,$user){
|
|
|
- $id = $user['id'];
|
|
|
+ list($status, $msg) = $this->deliveryNoteEditRule($data, $user);
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
+ list($model, $new, $old) = $msg;
|
|
|
+
|
|
|
+ try {
|
|
|
+ if(isset($data['is_submit'])) $model->state = 1;
|
|
|
+
|
|
|
+ if(! isset($data['is_edit']) || $data['is_edit']) {
|
|
|
+ $model->upd_id = $user['id'];
|
|
|
+ $model->construction_order_number = $data['construction_order_number'] ?? '';
|
|
|
+ $model->sales_order_number = $data['sales_order_number'] ?? '';
|
|
|
+ $model->start_time = $data['start_time'] ?? '';
|
|
|
+ $model->end_time = $data['end_time'] ?? '';
|
|
|
+ $model->vin_no = $data['vin_no'] ?? '';
|
|
|
+ $model->system = $data['system'] ?? '';
|
|
|
+ $model->mile = $data['mile'] ?? '';
|
|
|
+ $model->is_wait = $data['is_wait'] ?? '';
|
|
|
+ $model->customer_name = $data['customer_name'] ?? '';
|
|
|
+ $model->customer_mobile = $data['customer_mobile'] ?? '';
|
|
|
+ $model->sale_man = $data['sale_man'] ?? '';
|
|
|
+ $model->install_man = $data['install_man'] ?? '';
|
|
|
+ $model->is_brash = $data['is_brash'] ?? '';
|
|
|
+ $model->is_chong = $data['is_chong'] ?? '';
|
|
|
+ $model->service_mark = $data['service_mark'] ?? '';
|
|
|
+ $model->mark = $data['mark'] ?? '';
|
|
|
+ $model->break = $data['break'] ? json_encode($data['break']):json_encode([]);
|
|
|
+ $model->break_mark = $data['break_mark'] ? json_encode($data['break_mark']):json_encode([]);
|
|
|
+ $model->project_id = $data['project_id'] ? json_encode($data['project_id']):json_encode([]);
|
|
|
+ $model->other_project_mark = $data['other_project_mark'] ?? '';
|
|
|
+ $model->img = $data['img'] ?? '';
|
|
|
+ $model->img1 = $data['img1'] ?? '';
|
|
|
+ $model->img2 = $data['img2'] ?? '';
|
|
|
+ $model->img3 = $data['img3'] ?? '';
|
|
|
+ $model->depart_id = $data['depart_id'] ?? 0;
|
|
|
+ $model->top_depart_id = $data['top_depart_id'] ?? 0;
|
|
|
+ $model->save();
|
|
|
+ $id = $model->id;
|
|
|
+
|
|
|
+ $time = time();
|
|
|
+ DeliveryNoteDetail::where('del_time',0)
|
|
|
+ ->where('delivery_note_id', $id)
|
|
|
+ ->update(['del_time' => $time]);
|
|
|
+
|
|
|
+ $insert = [];
|
|
|
+ if(! empty($data['sale_man'])){
|
|
|
+ $array = explode(',', $data['sale_man']);
|
|
|
+ foreach ($array as $value){
|
|
|
+ $insert[] = [
|
|
|
+ 'delivery_note_id' => $id,
|
|
|
+ 'type' => DeliveryNoteDetail::TYPE_ONE,
|
|
|
+ 'data_id' => $value,
|
|
|
+ 'crt_time' => $time,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(! empty($data['install_man'])){
|
|
|
+ $array = explode(',', $data['install_man']);
|
|
|
+ foreach ($array as $value){
|
|
|
+ $insert[] = [
|
|
|
+ 'delivery_note_id' => $id,
|
|
|
+ 'type' => DeliveryNoteDetail::TYPE_TWO,
|
|
|
+ 'data_id' => $value,
|
|
|
+ 'crt_time' => $time,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(! empty($insert)) DeliveryNoteDetail::insert($insert);
|
|
|
+ }
|
|
|
+
|
|
|
+ }catch (\Throwable $e){
|
|
|
+ return [false, $e->getMessage()];
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, ['file' => ['old' => $old, 'new' => $new]]];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function deliveryNoteEditRule(&$data, $user){
|
|
|
+ if(empty($data['construction_order_number'])) return [false, '施工单编号不能为空'];
|
|
|
+ $construction = Construction::where('del_time',0)
|
|
|
+ ->where('order_number', $data['construction_order_number'])
|
|
|
+ ->first();
|
|
|
+ if(empty($construction)) return [false, '施工单:' . $data['construction_order_number'] . '不存在或已被删除'];
|
|
|
+ $construction = $construction->toArray();
|
|
|
+ $data['depart_id'] = $construction['depart_id'];
|
|
|
+ $data['top_depart_id'] = $construction['top_depart_id'];
|
|
|
+
|
|
|
+ //是否交车
|
|
|
+ $is_submit = 0;
|
|
|
+ if(isset($data['is_submit'])) $is_submit = 1;
|
|
|
+ //校验
|
|
|
+ if($is_submit && $construction['state'] != Construction::STATE_FOUR) return [false, '施工单:' . $data['construction_order_number'] . '未完结,无法交车'];
|
|
|
+
|
|
|
+ //校验
|
|
|
+ if(empty($data['sales_order_number'])) return [false, '销售订单号不能为空'];
|
|
|
+ list($status, $msg) = (new SalesOrderService())->detail(['order_number' => $data['sales_order_number']], $user);
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
+
|
|
|
+ if($is_submit && $msg['payment_receipt_list']['not_receipt_amount'] > 0) return [false, '销售订单:' . $data['sales_order_number'] . '还有未回款金额, 交车失败'];
|
|
|
+
|
|
|
+ $new = $old = [];
|
|
|
if(isset($data['id'])) {
|
|
|
$model = DeliveryNote::where('id',$data['id'])->first();
|
|
|
- if($model->del_time > 0) return [false,'交车单不存在或已被删除!'];
|
|
|
- if($model->img3) return [false,'客户已签字,无法编辑!'];
|
|
|
+ if(empty($model) || $model->del_time > 0) return [false,'交车单不存在或已被删除!'];
|
|
|
+ if($is_submit){
|
|
|
+ if(! $model->img3) return [false, '保存并交车时,必须客户确认签字!'];
|
|
|
+ }else{
|
|
|
+ if($model->img3) return [false,'客户已确认签字,保存失败!'];
|
|
|
+ }
|
|
|
$bool = DeliveryNote::where('del_time',0)
|
|
|
->where('construction_order_number',$data['construction_order_number'])
|
|
|
->where('id','<>',$data['id'])->first();
|
|
|
- if($bool) return [false,'施工单已创建交车单!'];
|
|
|
+ if($bool) return [false,'施工单:' . $data['construction_order_number'] . '已创建交车单!'];
|
|
|
|
|
|
- $new = $old = [];
|
|
|
- if($model->img2 != "" && $data['img2'] != $model->img2) {
|
|
|
- $old[] = $model->img2;
|
|
|
- }else{
|
|
|
- if($data['img2'] != "") $new[] = $data['img2'];
|
|
|
- }
|
|
|
- if($model->img3 != "" && $data['img3'] != $model->img3) {
|
|
|
- $old[] = $model->img3;
|
|
|
- }else{
|
|
|
- if($data['img3'] != "") $new[] = $data['img3'];
|
|
|
+ $is_edit = 0;//不能编辑
|
|
|
+ if(! $model->img3){
|
|
|
+ $is_edit = 1;
|
|
|
+
|
|
|
+ if($model->img2 != "" && $data['img2'] != $model->img2) {
|
|
|
+ $old[] = $model->img2;
|
|
|
+ }else{
|
|
|
+ if($data['img2'] != "") $new[] = $data['img2'];
|
|
|
+ }
|
|
|
+ if($model->img3 != "" && $data['img3'] != $model->img3) {
|
|
|
+ $old[] = $model->img3;
|
|
|
+ }else{
|
|
|
+ if($data['img3'] != "") $new[] = $data['img3'];
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ $data['is_edit'] = $is_edit;
|
|
|
} else {
|
|
|
$bool = DeliveryNote::where('del_time',0)
|
|
|
->where('construction_order_number',$data['construction_order_number'])
|
|
|
->first();
|
|
|
- if($bool) return [false,'施工单已创建交车单!'];
|
|
|
+ if($bool) return [false,'施工单:' . $data['construction_order_number'] . '已创建交车单!'];
|
|
|
|
|
|
$model = new DeliveryNote();
|
|
|
- $model->crt_id = $id;
|
|
|
- $new = [];
|
|
|
+ $model->crt_id = $user['id'];
|
|
|
if($data['img2'] != "") $new[] = $data['img2'];
|
|
|
if($data['img3'] != "") $new[] = $data['img3'];
|
|
|
+ if($is_submit && ! $data['img3']) return [false, '保存并交车时,必须客户确认签字!'];
|
|
|
}
|
|
|
|
|
|
- try {
|
|
|
- $model->upd_id = $id;
|
|
|
- $model->construction_order_number = $data['construction_order_number'] ?? '';
|
|
|
- $model->sales_order_number = $data['sales_order_number'] ?? '';
|
|
|
- $model->start_time = $data['start_time'] ?? '';
|
|
|
- $model->end_time = $data['end_time'] ?? '';
|
|
|
- $model->vin_no = $data['vin_no'] ?? '';
|
|
|
- $model->system = $data['system'] ?? '';
|
|
|
- $model->mile = $data['mile'] ?? '';
|
|
|
- $model->is_wait = $data['is_wait'] ?? '';
|
|
|
- $model->customer_name = $data['customer_name'] ?? '';
|
|
|
- $model->customer_mobile = $data['customer_mobile'] ?? '';
|
|
|
- $model->sale_man = $data['sale_man'] ?? '';
|
|
|
- $model->install_man = $data['install_man'] ?? '';
|
|
|
- $model->is_brash = $data['is_brash'] ?? '';
|
|
|
- $model->is_chong = $data['is_chong'] ?? '';
|
|
|
- $model->service_mark = $data['service_mark'] ?? '';
|
|
|
- $model->mark = $data['mark'] ?? '';
|
|
|
- $model->break = $data['break'] ? json_encode($data['break']):json_encode([]);
|
|
|
- $model->break_mark = $data['break_mark'] ? json_encode($data['break_mark']):json_encode([]);
|
|
|
- $model->project_id = $data['project_id'] ? json_encode($data['project_id']):json_encode([]);
|
|
|
- $model->other_project_mark = $data['other_project_mark'] ?? '';
|
|
|
- $model->img = $data['img'] ?? '';
|
|
|
- $model->img1 = $data['img1'] ?? '';
|
|
|
- $model->img2 = $data['img2'] ?? '';
|
|
|
- $model->img3 = $data['img3'] ?? '';
|
|
|
- $model->save();
|
|
|
- }catch (\Throwable $e){
|
|
|
- return [false, $e->getMessage()];
|
|
|
- }
|
|
|
-
|
|
|
- return [true, ['file' => ['old' => $old ?? [], 'new' => $new]]];
|
|
|
+ return [true, [$model, $new, $old]];
|
|
|
}
|
|
|
|
|
|
public function deliveryNoteList($data)
|
|
@@ -1144,26 +1223,59 @@ class ConstructionService extends Service
|
|
|
$model = DeliveryNote::where('del_time',0)
|
|
|
->select("*")
|
|
|
->orderBy("id","desc");
|
|
|
+
|
|
|
+ if(! empty($data['customer_name'])) $model->where('customer_name', 'LIKE', '%'.$data['customer_name'].'%');
|
|
|
+ if(! empty($data['sales_order_number'])) $model->where('sales_order_number', 'LIKE', '%'.$data['sales_order_number'].'%');
|
|
|
+ if(! empty($data['sale_man_title'])) {
|
|
|
+ $id = $this->searchForMan($data['sale_man_title'], DeliveryNoteDetail::TYPE_ONE);
|
|
|
+ $model->whereIn('id', $id);
|
|
|
+ }
|
|
|
+ if(! empty($data['install_man_title'])) {
|
|
|
+ $id = $this->searchForMan($data['install_man_title'], DeliveryNoteDetail::TYPE_TWO);
|
|
|
+ $model->whereIn('id', $id);
|
|
|
+ }
|
|
|
+ if(! empty($data['end_time'][0]) && ! empty($data['end_time'][1])) {
|
|
|
+ $return = $this->changeDateToTimeStampAboutRange($data['end_time']);
|
|
|
+ $model->whereBetween('end_time',[$return[0],$return[1]]);
|
|
|
+ }
|
|
|
+
|
|
|
$list = $this->limit($model,'', $data);
|
|
|
+ $list = $this->fillDeliveryNoteData($list);
|
|
|
|
|
|
- return [true,$list];
|
|
|
+ return [true, $list];
|
|
|
}
|
|
|
|
|
|
public function fillDeliveryNoteData($data){
|
|
|
if(empty($data['data'])) return $data;
|
|
|
|
|
|
$emp = $this->returnMan($data['data']);
|
|
|
-
|
|
|
foreach ($data['data'] as $key => $value){
|
|
|
$data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
|
|
|
$data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
|
|
|
$data['data'][$key]['sale_man_title'] = $this->returnMan2($value['sale_man'],$emp);
|
|
|
$data['data'][$key]['install_man_title'] = $this->returnMan2($value['install_man'],$emp);
|
|
|
+ $data['data'][$key]['state_title'] = DeliveryNote::$name[$value['state']] ?? "";
|
|
|
}
|
|
|
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
+ public function searchForMan($title, $type){
|
|
|
+ $emp = Employee::where('del_time',0)
|
|
|
+ ->where('emp_name', 'LIKE', '%'.$title.'%')
|
|
|
+ ->select('id')
|
|
|
+ ->get()->toArray();
|
|
|
+ $emp = array_column($emp,'id');
|
|
|
+ if(empty($emp)) return [];
|
|
|
+
|
|
|
+ $delivery_note_id = DeliveryNoteDetail::where('del_time',0)
|
|
|
+ ->where('type', $type)
|
|
|
+ ->whereIn('data_id', $emp)
|
|
|
+ ->select('delivery_note_id')
|
|
|
+ ->get()->toArray();
|
|
|
+ return array_unique(array_column($delivery_note_id,'delivery_note_id'));
|
|
|
+ }
|
|
|
+
|
|
|
public function returnMan($data = []){
|
|
|
if(empty($data)) return [];
|
|
|
|
|
@@ -1231,6 +1343,7 @@ class ConstructionService extends Service
|
|
|
if(empty($data['id'])) return [false, '请选择删除的交车单数据'];
|
|
|
$model = DeliveryNote::where('id', $data['id'])->first();
|
|
|
if($model->del_time > 0) return [false, '交车单不存在或已被删除!'];
|
|
|
+ if($model->state > DeliveryNote::STATE_ZERO) return [false, '交车单已交车,删除失败'];
|
|
|
|
|
|
$old = [];
|
|
|
if($model->img2 != "" ) $old[] = $model->img2;
|
|
@@ -1243,6 +1356,9 @@ class ConstructionService extends Service
|
|
|
]
|
|
|
);
|
|
|
|
|
|
+ DeliveryNoteDetail::where('del_time',0)
|
|
|
+ ->where('delivery_note_id', $data['id'])->update(['del_time' => time(),]);
|
|
|
+
|
|
|
return [true, ['file' => ['old' => $old]]];
|
|
|
}
|
|
|
|