pluck('value', 'key')->toArray(); self::$box_detail_header = Header_ext::where('type', 'box_detail')->pluck('value', 'key')->toArray(); self::$box_hook = BoxHookService::getInstance(); } /** * 包装 * @param $data * @return array */ public function boxIn($data) { // if(!isset($data['params'])) return [false,'not found params']; // $param = $data['params']; // $param = [ // [ // 'id' => 716, // 'param' => [ // '1', // '1' // ], // ], [ // 'id' => 723, // 'param' => [ // '40', // '40' // ], // ], // ]; $ids = []; $key_list = []; foreach ($data as $v) { $ids[] = $v['id']; $total = 0; foreach ($v['params'] as $vv) { $total += $vv; } $key_list[$v['id']] = [ 'detail' => $v['params'], 'total' => $total, ]; } $insert = []; try{ DB::beginTransaction(); $key = $this->lock_key.'_'.$v['id']; $lock_status = $this->isLock($key); if(!$lock_status) return [false,'操作过于频繁']; $product_list = OrdersProduct::wherein('id', $ids)->get()->toArray(); $box_insert = []; foreach ($product_list as $v) { $num_list = $key_list[$v['id']]; $total = $num_list['total']; $detail = $num_list['detail']; $un_box_num = $v['order_quantity'] - $v['box_num']; if ($total > $un_box_num) return [false, $v['product_title'] . '数量不足']; $ext_1 = $v['customer_no']; $ext_2 = $v['customer_name']; $ext_3 = $v['product_no']; $ext_4 = $v['product_title']; $ext_5 = $v['product_size']; $out_order_no = $insert['out_order_no'] = $v['out_order_no']; $top_id = $v['sale_orders_product_id']; foreach ($detail as $vv){ $box_insert[] = [ 'out_order_no' => $out_order_no, 'top_id' => $top_id, 'ext_1' => $ext_1, 'ext_2' => $ext_2, 'ext_3' => $ext_3, 'ext_4' => $ext_4, 'ext_5' => $ext_5, 'num' => $vv, ]; } SaleOrdersProduct::where('id',$v['sale_orders_product_id'])->update([ 'box_num' => DB::raw('box_num + '.$total), ]); } $insert['detail'] = $box_insert; list($status,$msg) = self::$box_hook->boxInsert($insert); if(!$status) { $this->delLock($key); DB::rollBack(); return [false,$msg]; } $this->delLock($key); DB::commit(); return [true,'']; }catch (\Exception $e){ DB::rollBack(); return [false,$e->getLine().':'.$e->getMessage()]; } } /** * 包装详情1 * @param $data * @return array */ public function boxDetail($data) { list($status, $data) = self::$box_hook->boxDetail($data); if (!$status) return [false, $data]; return [true, $data]; } public function boxProductList($data){ if(!isset($data['id'])) return [false,'id not found']; $sale_order_ids = $data['id']; $model = OrdersProduct::where('del_time',0)->wherein('sale_orders_product_id',$sale_order_ids) ->select('id','out_order_no','customer_no','customer_name','product_no','product_title','product_size','production_time','production_no','sale_orders_product_id','dispatch_complete_quantity','box_num','technology_name','wood_name','crt_time') ->orderBy('id','desc')->get()->toArray(); $sale_list = SaleOrdersProduct::wherein('id',$sale_order_ids)->select('order_quantity','id','production_quantity','box_num')->get()->toArray(); $sale_key_list = []; foreach ($sale_list as $v){ $sale_key_list[$v['id']] = [ 'order_quantity' => $v['order_quantity'], 'production_quantity' => $v['production_quantity'], 'box_num' => $v['box_num'], ]; } $return = []; $product_key_list = []; foreach ($model as $v){ if(!isset($product_key_list[$v['sale_orders_product_id']])) { $p = $sale_key_list[$v['sale_orders_product_id']]; $product_key_list[$v['sale_orders_product_id']] = [ 'out_order_no' => $v['out_order_no'], 'production_time' => '未下生产', 'customer_no' => $v['customer_no'], 'customer_name' => $v['customer_name'], 'product_no' => $v['production_no'], 'product_title' => $v['product_title'], 'product_size' => $v['product_size'], 'id' => -$v['sale_orders_product_id'], 'type' => '2', 'is_box_num' => $p['box_num'], 'un_box_num' => $p['order_quantity'] - $p['box_num'] - $p['production_quantity'], 'sale_num' => $p['order_quantity'], ]; } $return[] = [ 'id' => $v['id'], 'out_order_no' => $v['out_order_no'], 'production_time' => date('Y-m-d',$v['crt_time']), 'customer_no' => $v['customer_no'], 'customer_name' => $v['customer_name'], 'product_no' => $v['production_no'], 'product_title' => $v['product_title'], 'product_size' => $v['product_size'], 'type' => '1', 'is_box_num' => $v['box_num'], 'un_box_num' => $v['dispatch_complete_quantity'] - $v['box_num'], 'sale_num' => $sale_key_list[$v['sale_orders_product_id']]['order_quantity'], ]; } foreach ($product_key_list as $v){ $return[] = $v; } // $data = [ // [ // 'id' => 1, // 'out_order_no' => '销售订单号', // 'production_time' => '下生产时间', // 'customer_no' => '客户编码', // 'customer_name' => '客户名称', // 'product_no' => '产品编码', // 'product_title' => '产品名称', // 'product_size' => '产品规格', // 'type' => '1生产包装2备用包装', // 'is_box_num' => '已包装数量', // 'un_box_num' => '未包装', // 'sale_num' => '销售数量', // ] // ]; return [true,$return]; } }