|
@@ -10,6 +10,7 @@ use App\Model\Equipment;
|
|
|
use App\Model\FinishedOrder;
|
|
|
use App\Model\FinishedOrderScrapp;
|
|
|
use App\Model\FinishedOrderSub;
|
|
|
+use App\Model\OrdersProduct;
|
|
|
use App\Model\OrdersProductProcess;
|
|
|
use App\Model\Process;
|
|
|
use App\Model\SaleOrdersProduct;
|
|
@@ -167,6 +168,15 @@ class FinishedOrderService extends Service
|
|
|
]);
|
|
|
|
|
|
if(! empty($insert_waste)) $process_model->insert($insert_waste);
|
|
|
+
|
|
|
+ //生产订单数量
|
|
|
+ if(! empty($waste[$key])){
|
|
|
+ $num = $waste[$key];
|
|
|
+ OrdersProduct::where('id',$value['order_product_id'])->update([
|
|
|
+ 'production_quantity' => DB::raw("production_quantity + {$num}"),
|
|
|
+ 'scrapp_num' => DB::raw("scrapp_num + {$num}"),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//反写数量
|
|
@@ -232,6 +242,9 @@ class FinishedOrderService extends Service
|
|
|
public function orderRule($data){
|
|
|
if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
|
|
|
if($this->isEmpty($data,'quantity')) return [false,'请填写完工数量!'];
|
|
|
+ foreach ($data['quantity'] as $value){
|
|
|
+ if(! is_numeric($value) && $value < 0) return [false,'请填写正确的完工数量!'];
|
|
|
+ }
|
|
|
if($this->isEmpty($data,'finish_id') && $this->isEmpty($data,'team_id')) return [false,'人员和班组不能都为空!'];
|
|
|
|
|
|
$bool = DispatchSub::whereIn('id',$data['id'])->where('job_status',1)->exists();
|
|
@@ -242,8 +255,13 @@ class FinishedOrderService extends Service
|
|
|
->orderBy('id','desc')
|
|
|
->get()->toArray();
|
|
|
|
|
|
+ $waste = [];
|
|
|
+ foreach ($data['waste'] as $key => $value){
|
|
|
+ $waste[$key] = array_sum(array_column($value,'num'));
|
|
|
+ }
|
|
|
foreach ($result as $key => $value){
|
|
|
- if(($data['quantity'][$key] + $value['finished_num']) > $value['dispatch_quantity']) return [false,'完工数量不能大于派工数量'];
|
|
|
+ $tmp = $waste[$key] ?? 0;
|
|
|
+ if(($data['quantity'][$key] + $value['finished_num'] + $tmp) > $value['dispatch_quantity']) return [false,'完工数量加上损耗数量不能大于派工数量'];
|
|
|
}
|
|
|
|
|
|
return [true, $result];
|
|
@@ -439,14 +457,16 @@ class FinishedOrderService extends Service
|
|
|
//本地数据写入-----------
|
|
|
DB::beginTransaction();
|
|
|
|
|
|
- $waste = [];
|
|
|
- foreach ($data as $key => $value){
|
|
|
+ $waste = $waste2 = [];
|
|
|
+ foreach ($data as $value){
|
|
|
if(! empty($value['waste'])){
|
|
|
foreach ($value['waste'] as $v){
|
|
|
if(isset($waste[$value['id']])){
|
|
|
$waste[$value['id']] += $v['num'];
|
|
|
+ $waste2[$value['order_product_id']] += $v['num'];
|
|
|
}else{
|
|
|
$waste[$value['id']] = $v['num'];
|
|
|
+ $waste2[$value['order_product_id']] = $v['num'];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -460,7 +480,14 @@ class FinishedOrderService extends Service
|
|
|
'waste_num' => $waste[$value['id']] ?? 0,
|
|
|
'job_status' => 0
|
|
|
]);
|
|
|
-
|
|
|
+ //生产订单数量
|
|
|
+ if(! empty($waste2[$value['order_product_id']])){
|
|
|
+ $num = $waste2[$value['order_product_id']];
|
|
|
+ OrdersProduct::where('id',$value['order_product_id'])->update([
|
|
|
+ 'production_quantity' => DB::raw("production_quantity + {$num}"),
|
|
|
+ 'scrapp_num' => DB::raw("scrapp_num + {$num}"),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
//损耗
|
|
|
$insert_waste = [];
|
|
|
//工序
|
|
@@ -524,15 +551,25 @@ class FinishedOrderService extends Service
|
|
|
$bool = DispatchSub::whereIn('id',$dispatch_id)->where('job_status',1)->exists();
|
|
|
if($bool) return [false,'正在队列中,请不要重复操作!',''];
|
|
|
|
|
|
- $post = [];
|
|
|
+ $post = $waste = [];
|
|
|
foreach ($data as $value){
|
|
|
- if(empty($value['quantity'])) return [false,'数量必须填写!',''];
|
|
|
+ if(! is_numeric($value['quantity']) && $value['quantity'] < 0) return [false,'请填写正确的完工数量!'];
|
|
|
if(empty($value['finished_id']) && empty($value['team_id'])) return [false,'人员和班组必须填写一项!',''];
|
|
|
if(isset($post[$value['id']])){
|
|
|
$post[$value['id']] += $value['quantity'];
|
|
|
}else{
|
|
|
$post[$value['id']] = $value['quantity'];
|
|
|
}
|
|
|
+
|
|
|
+ if(! empty($value['waste'])){
|
|
|
+ foreach ($value['waste'] as $v){
|
|
|
+ if(isset($waste[$value['id']])){
|
|
|
+ $waste[$value['id']] += $v['num'];
|
|
|
+ }else{
|
|
|
+ $waste[$value['id']] = $v['num'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$result = DispatchSub::whereIn('id',$dispatch_id)
|
|
@@ -541,7 +578,8 @@ class FinishedOrderService extends Service
|
|
|
->get()->toArray();
|
|
|
|
|
|
foreach ($result as $key => $value){
|
|
|
- if(($post[$value['id']] + $value['finished_num']) > $value['dispatch_quantity']) return [false,"{$value['dispatch_no']}单号的完工数量不能大于派工数量",''];
|
|
|
+ $tmp = $waste[$value['id']] ?? 0;
|
|
|
+ if(($post[$value['id']] + $value['finished_num'] + $tmp) > $value['dispatch_quantity']) return [false,"完工数量加上损耗数量不能大于派工数量",''];
|
|
|
}
|
|
|
|
|
|
return [true, $result, $post];
|