zhanglinxin 1 year ago
parent
commit
b6c1adff85

+ 6 - 5
application/api/controller/Approveinfo.php

@@ -61,7 +61,7 @@ class Approveinfo extends Base
      * @Apidoc\Param("copy_user", type="string", require=false, desc="抄送人id(多个用英文逗号隔开)")
      * @Apidoc\Param("apply_goods", type="array", require=false, desc="module=1 && type=1 必传申购物品数据",
      *     @Apidoc\Param("flag", type="integer", require=true, desc="标识:1=添加新商品,2=批量导入,3=商品库选择"),
-     *     @Apidoc\Param("id", type="integer", require=false, desc="商品ID flag=3传值"),
+     *     @Apidoc\Param("goods_id", type="integer", require=false, desc="商品ID flag=3传值"),
      *     @Apidoc\Param("goods_category_first", type="integer", require=false, desc="商品分类一级ID"),
      *     @Apidoc\Param("goods_category_id", type="integer", require=false, desc="商品分类ID"),
      *     @Apidoc\Param("goods_no", type="string", require=false, desc="商品编号"),
@@ -76,7 +76,7 @@ class Approveinfo extends Base
      * )
      * @Apidoc\Param("stock_goods", type="array", require=false, desc="module=3 必传入库物品数据",
      *     @Apidoc\Param("flag", type="integer", require=true, desc="标识:1=添加新商品,2=批量导入,3=商品库选择"),
-     *     @Apidoc\Param("id", type="integer", require=false, desc="商品ID flag=3传值"),
+     *     @Apidoc\Param("goods_id", type="integer", require=false, desc="商品ID flag=3传值"),
      *     @Apidoc\Param("goods_category_first", type="integer", require=false, desc="商品分类一级ID"),
      *     @Apidoc\Param("goods_category_id", type="integer", require=false, desc="商品分类ID"),
      *     @Apidoc\Param("goods_no", type="string", require=false, desc="商品编号"),
@@ -90,7 +90,7 @@ class Approveinfo extends Base
      * )
      * @Apidoc\Param("use_goods", type="array", require=false, desc="module=4 必传领用物品数据",
      *     @Apidoc\Param("flag", type="integer", require=true, desc="标识:1=添加新商品,2=批量导入,3=商品库选择"),
-     *     @Apidoc\Param("id", type="integer", require=false, desc="商品ID flag=3传值"),
+     *     @Apidoc\Param("goods_id", type="integer", require=false, desc="商品ID flag=3传值"),
      *     @Apidoc\Param("goods_category_first", type="integer", require=false, desc="商品分类一级ID"),
      *     @Apidoc\Param("goods_category_id", type="integer", require=false, desc="商品分类ID"),
      *     @Apidoc\Param("goods_no", type="string", require=false, desc="商品编号"),
@@ -111,8 +111,9 @@ class Approveinfo extends Base
      */
     public function create()
     {
-        // {"way":"create","id": "","module": "1","apply_user_id":"","reason": "测试","type": "1","desc": "","start_time": "","end_time": "","document": "","images": "","remark": "","total_amount": "1000","pay_type": "1","word_size": "","apply_id":"0","number": "","is_who": "","start_am": "","end_am": "","time": "","reach_address": "","end_address": "","scope": "","legal_opinion": "","founder": "","serial_number": "","apply_date": "","degree": "","department": "","department_sign": "","approve_user": "1925696723824730358","copy_user": "","apply_goods": [{"id": "1","goods_category_first": "1","goods_category_id": "3","goods_no": "100001","goods_name": "医疗口罩一次性","goods_brand": "一次性口罩","goods_stock": [{"id": "1","name": "均码,白色","price": "1","stock": "110"},{"id": "2","name": "均码,蓝色","price": "1","stock": "100"},{"id": "19","name": "均码,红色","price": "1","stock": "120"}]},{"id": "2","goods_category_first": "1","goods_category_id": "3","goods_no": "100002","goods_name": "84消毒液","goods_brand": "安其生","goods_stock": [{"id": "3","name": "380ml,低浓度","price": "1","stock": "110"},{"id": "4","name": "380ml,高浓度","price": "1","stock": "100"}]},{"id": "","goods_category_first": "1","goods_category_id": "3","goods_no": "100003","goods_name": "一次性手套丁腈橡胶","goods_brand": "万力","goods_stock": [{"name": "白色","price": "0.2","stock": "110"},{"name": "蓝色","price": "0.2","stock": "100"}]}],"peer_user": [{"is_who": "","user_id": "","name": "","desc": ""}]}
-        // {"way":"create","id": "","module": "3","apply_user_id":"","reason": "测试","type": "","desc": "","start_time": "","end_time": "","document": "","images": "","remark": "入库备注","total_amount": "","pay_type": "","word_size": "","apply_id":"0","number": "","is_who": "","start_am": "","end_am": "","time": "","reach_address": "","end_address": "","scope": "","legal_opinion": "","founder": "","serial_number": "","apply_date": "","degree": "","department": "","department_sign": "","approve_user": "1925696723824730358","copy_user": "","stock_goods": [{"id": "1","goods_category_first": "1","goods_category_id": "3","goods_no": "100001","goods_name": "医疗口罩一次性","goods_brand": "一次性口罩","goods_stock": [{"id": "1","name": "均码,白色","price": "1","stock": "110"},{"id": "2","name": "均码,蓝色","price": "1","stock": "100"},{"id": "19","name": "均码,红色","price": "1","stock": "120"}]},{"id": "2","goods_category_first": "1","goods_category_id": "3","goods_no": "100002","goods_name": "84消毒液","goods_brand": "安其生","goods_stock": [{"id": "3","name": "380ml,低浓度","price": "1","stock": "110"},{"id": "4","name": "380ml,高浓度","price": "1","stock": "100"}]},{"id": "","goods_category_first": "1","goods_category_id": "3","goods_no": "100003","goods_name": "一次性手套丁腈橡胶","goods_brand": "万力","goods_stock": [{"name": "白色","price": "0.2","stock": "110"},{"name": "蓝色","price": "0.2","stock": "100"}]}],"peer_user": [{"is_who": "","user_id": "","name": "","desc": ""}]}
+        // {"way":"create","id":"","module":"1","apply_user_id":"","reason":"测试","type":"1","desc":"","start_time":"","end_time":"","document":"","images":"","remark":"","total_amount":"1000","pay_type":"1","word_size":"","apply_id":"0","number":"","is_who":"","start_am":"","end_am":"","time":"","reach_address":"","end_address":"","scope":"","legal_opinion":"","founder":"","serial_number":"","apply_date":"","degree":"","department":"","department_sign":"","approve_user":"1925696723824730358","copy_user":"","apply_goods":[{"goods_id":"1","goods_category_first":"1","goods_category_id":"3","goods_no":"100001","goods_name":"医疗口罩一次性","goods_brand":"一次性口罩","goods_stock":[{"id":"1","name":"均码,白色","price":"1","stock":"110"},{"id":"2","name":"均码,蓝色","price":"1","stock":"100"},{"id":"19","name":"均码,红色","price":"1","stock":"120"}]},{"goods_id":"2","goods_category_first":"1","goods_category_id":"3","goods_no":"100002","goods_name":"84消毒液","goods_brand":"安其生","goods_stock":[{"id":"3","name":"380ml,低浓度","price":"1","stock":"110"},{"id":"4","name":"380ml,高浓度","price":"1","stock":"100"}]},{"goods_id":"","goods_category_first":"1","goods_category_id":"3","goods_no":"100003","goods_name":"一次性手套丁腈橡胶","goods_brand":"万力","goods_stock":[{"name":"白色","price":"0.2","stock":"110"},{"name":"蓝色","price":"0.2","stock":"100"}]}],"peer_user":[{"is_who":"","user_id":"","name":"","desc":""}]}
+
+        // {"way":"create","id":"","module":"3","apply_user_id":"","reason":"测试","type":"","desc":"","start_time":"","end_time":"","document":"","images":"","remark":"入库备注","total_amount":"","pay_type":"","word_size":"","apply_id":"0","number":"","is_who":"","start_am":"","end_am":"","time":"","reach_address":"","end_address":"","scope":"","legal_opinion":"","founder":"","serial_number":"","apply_date":"","degree":"","department":"","department_sign":"","approve_user":"1925696723824730358","copy_user":"","stock_goods":[{"goods_id":"1","goods_category_first":"1","goods_category_id":"3","goods_no":"100001","goods_name":"医疗口罩一次性","goods_brand":"一次性口罩","goods_stock":[{"id":"1","name":"均码,白色","price":"1","stock":"110"},{"id":"2","name":"均码,蓝色","price":"1","stock":"100"},{"id":"19","name":"均码,红色","price":"1","stock":"120"}]},{"goods_id":"2","goods_category_first":"1","goods_category_id":"3","goods_no":"100002","goods_name":"84消毒液","goods_brand":"安其生","goods_stock":[{"id":"3","name":"380ml,低浓度","price":"1","stock":"110"},{"id":"4","name":"380ml,高浓度","price":"1","stock":"100"}]},{"goods_id":"","goods_category_first":"1","goods_category_id":"3","goods_no":"100003","goods_name":"一次性手套丁腈橡胶","goods_brand":"万力","goods_stock":[{"name":"白色","price":"0.2","stock":"110"},{"name":"蓝色","price":"0.2","stock":"100"}]}],"peer_user":[{"is_who":"","user_id":"","name":"","desc":""}]}
         $way = input('way');
         $id = input('id',0);
         $module = input('module');

+ 36 - 52
application/api/controller/Common.php

@@ -68,7 +68,7 @@ class Common extends Base
      *
      * @Apidoc\Method("POST")
      * @Apidoc\Param("module", type="integer", require=true, desc="模块类型:1=申购申请,3=入库申请,4=领用申请")
-     * @Apidoc\Param("file", type="string", require=true, desc="文件地址")
+     * @Apidoc\Param("file", type="string", require=true, desc="上传后的文件路径")
      * @return void
      * @throws PDOException
      * @throws BindParamException
@@ -118,26 +118,10 @@ class Common extends Base
         } else {
             $reader = new Xlsx();
         }
-        p('123456879');exit;
-
-        //导入文件首行类型,默认是注释,如果需要使用字段名称请使用name
-        $importHeadType = isset($this->importHeadType) ? $this->importHeadType : 'comment';
-
-        $table = $this->model->getQuery()->getTable();
-        $database = \think\Config::get('database.database');
-        $fieldArr = [];
-        $list = db()->query("SELECT COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ? AND TABLE_SCHEMA = ?", [$table, $database]);
-        foreach ($list as $k => $v) {
-            if ($importHeadType == 'comment') {
-                $v['COLUMN_COMMENT'] = explode(':', $v['COLUMN_COMMENT'])[0]; //字段备注有:时截取
-                $fieldArr[$v['COLUMN_COMMENT']] = $v['COLUMN_NAME'];
-            } else {
-                $fieldArr[$v['COLUMN_NAME']] = $v['COLUMN_NAME'];
-            }
-        }
 
         //加载文件
         $insert = [];
+        $data = [];
         try {
             if (!$PHPExcel = $reader->load($filePath)) {
                 $this->error('未知的数据格式!');
@@ -146,18 +130,7 @@ class Common extends Base
             $allColumn = $currentSheet->getHighestDataColumn(); //取得最大的列号
             $allRow = $currentSheet->getHighestRow(); //取得一共有多少行
             $maxColumnNumber = Coordinate::columnIndexFromString($allColumn);
-            $fields = [];
-            for ($currentRow = 1; $currentRow <= 1; $currentRow++) {
-                for ($currentColumn = 1; $currentColumn <= $maxColumnNumber; $currentColumn++) {
-                    $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
-                    $fields[] = $val;
-                }
-            }
-
-            $product = Product::column('id,name'); // 产品列表
-            $status_list = config('bill_status_array');
-            $status_list_flip = array_flip($status_list); // 交换数组中的键和值
-            $status_value = array_values($status_list);
+            $fields = ['goods_no','goods_category_first','goods_category_id','goods_brand','goods_name','goods_sku','goods_sku_value','stock','price','total_price'];
 
             for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
                 $values = [];
@@ -165,36 +138,47 @@ class Common extends Base
                     $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
                     $values[] = is_null($val) ? '' : $val;
                 }
-                $row = [];
                 $temp = array_combine($fields, $values);
-                foreach ($temp as $k => $v) {
-                    if (isset($fieldArr[$k]) && $k !== '') {
-                        $row[$fieldArr[$k]] = $v;
-                    }
+                if ($temp) {
+                    $insert[] = $temp;
+
+                    $data[$values[1].$values[2].$values[4]][$values[5]][] = $temp;
                 }
-                if ($row) {
-                    if(isset($row['date']) && !empty($row['date'])){
-                        // 状态 转为状态码
-                        if(in_array($row['status'],$status_value)){
-                            $row['status'] = $status_list_flip[$row['status']];
-                        }
-                        // 产品名称 转为产品ID
-                        if(in_array($row['product_id'],$product)){
-                            foreach ($product as $kk=>$vv){
-                                if($row['product_id'] == $vv){
-                                    $row['product_id'] = $kk;
-                                }
-                            }
-                        } else{
-                            $row['product_id'] = 0;
-                        }
-                        $insert[] = $row;
+            }
+
+
+            $goods_data = [];
+            foreach ($data as $key=>$value){
+                $goods = [];
+                $goods_stock = [];
+                foreach ($value as $kk=>$vv){
+                    foreach ($vv as $val){
+                        $goods = [
+                            'goods_category_first' => $val['goods_category_first'],
+                            'goods_category_id' => $val['goods_category_id'],
+                            'goods_no' => $val['goods_no'],
+                            'goods_name' => $val['goods_name'],
+                            'goods_brand' => $val['goods_brand'],
+                        ];
+                        $goods_stock[] = [
+                            'name'=>$val['goods_sku_value'],
+                            'price'=>$val['price'],
+                            'stock'=>$val['stock'],
+                        ];
                     }
+
                 }
+
+                $goods['goods_stock'] = $goods_stock;
+                $goods_data[] = $goods;
             }
+            p($goods_data);
         } catch (Exception $exception) {
             $this->error($exception->getMessage());
         }
+//        p($goods_data);
+//        p($insert);
+        exit;
         if (!$insert) {
             $this->error(__('No rows were updated'));
         }

+ 3 - 3
application/common/service/ApproveInfoService.php

@@ -290,7 +290,7 @@ class ApproveInfoService
         foreach ($params as $value) {
             if($value['flag'] == 1){
                 // 商品库选择
-                $goods_ids[$value['id']] = $value;
+                $goods_ids[$value['goods_id']] = $value;
             }
             if($value['flag'] == 2){
                 // 批量导入
@@ -339,9 +339,9 @@ class ApproveInfoService
             $goods_stock_name = '';
             $apply_goods_data = [];
             foreach ($goods_ids as $key => $value) {
-                if (array_key_exists($value['id'], $goods_object)) {
+                if (array_key_exists($value['goods_id'], $goods_object)) {
                     // 商品库里有该商品
-                    $goods_info = $goods_object[$value['id']];
+                    $goods_info = $goods_object[$value['goods_id']];
                     $goods_stock_info = array_column($goods_info['goods_stock'], null, 'id');
                     $goods_stock_data = [];
                     $total_price = 0;