zhanglinxin 1 year ago
parent
commit
c3f67abd36

+ 5 - 0
application/api/controller/Approve.php

@@ -63,6 +63,11 @@ class Approve extends Base
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
      *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
      * )
+     * @Apidoc\Returned("use_goods", type="array", desc="领用商品列表 module=4",
+     *     @Apidoc\Returned("id", type="integer", desc="领用商品ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
+     *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
+     * )
      * @Apidoc\Returned("peer_user", type="array", desc="同行人员列表 module=5",
      *     @Apidoc\Returned("id", type="integer", desc="同行人员ID"),
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),

+ 30 - 1
application/api/controller/Approveinfo.php

@@ -86,6 +86,19 @@ class Approveinfo extends Base
      *          @Apidoc\Param("stock", type="integer", require=true,desc="数量"),
      *     ),
      * )
+     * @Apidoc\Param("use_goods", type="array", require=false, desc="module=4 必传领用物品数据",
+     *     @Apidoc\Param("id", type="integer", require=false, desc="商品ID 传值=商品库选择,不传值=添加新商品"),
+     *     @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="商品编号"),
+     *     @Apidoc\Param("goods_name", type="string", require=true, desc="商品名称"),
+     *     @Apidoc\Param("goods_brand", type="string", require=false, desc="商品品牌"),
+     *     @Apidoc\Param("goods_stock", type="array", require=true, desc="规格列表",
+     *          @Apidoc\Param("id", type="integer", require=false,desc="规格ID 传值=商品库选择,不传值=添加新商品"),
+     *          @Apidoc\Param("name", type="string", require=true,desc="规格名称"),
+     *          @Apidoc\Param("stock", type="integer", require=true,desc="数量"),
+     *     ),
+     * )
      * @Apidoc\Param("peer_user", type="array", require=false, desc="module=5 传同行员工数据",
      *     @Apidoc\Param("is_who", type="integer", require=true, desc="是否外部人员:0=否,1=是"),
      *     @Apidoc\Param("user_id", type="string", require=false, desc="用户userid"),
@@ -131,8 +144,9 @@ class Approveinfo extends Base
         $copy_user = input('copy_user');
         $apply_goods = input('apply_goods');
         $stock_goods = input('stock_goods');
+        $use_goods = input('use_goods');
         $peer_user = input('peer_user');
-        $params = compact("way","id", "module", "apply_user_id","reason", "type", "desc", "start_time", "end_time", "document", "images", "remark", "total_amount", "pay_type", "word_size", "apply_id","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", "copy_user", "apply_goods", "stock_goods","peer_user");
+        $params = compact("way","id", "module", "apply_user_id","reason", "type", "desc", "start_time", "end_time", "document", "images", "remark", "total_amount", "pay_type", "word_size", "apply_id","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", "copy_user", "apply_goods", "stock_goods","use_goods","peer_user");
         $user = $this->user;
         if($way == CommonConstant::edit){
             ApproveService::make($id, $params, $user, CommonConstant::edit);
@@ -181,6 +195,11 @@ class Approveinfo extends Base
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
      *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
      * )
+     * @Apidoc\Returned("use_goods", type="array", desc="领用商品列表 module=4",
+     *     @Apidoc\Returned("id", type="integer", desc="领用商品ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
+     *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
+     * )
      * @Apidoc\Returned("peer_user", type="array", desc="同行人员列表 module=5",
      *     @Apidoc\Returned("id", type="integer", desc="同行人员ID"),
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
@@ -277,6 +296,11 @@ class Approveinfo extends Base
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
      *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
      * )
+     * @Apidoc\Returned("use_goods", type="array", desc="领用商品列表 module=4",
+     *     @Apidoc\Returned("id", type="integer", desc="领用商品ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
+     *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
+     * )
      * @Apidoc\Returned("peer_user", type="array", desc="同行人员列表 module=5",
      *     @Apidoc\Returned("id", type="integer", desc="同行人员ID"),
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
@@ -328,6 +352,11 @@ class Approveinfo extends Base
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
      *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
      * )
+     * @Apidoc\Returned("use_goods", type="array", desc="领用商品列表 module=4",
+     *     @Apidoc\Returned("id", type="integer", desc="领用商品ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),
+     *     @Apidoc\Returned("goods_name", type="string", desc="商品名称"),
+     * )
      * @Apidoc\Returned("peer_user", type="array", desc="同行人员列表 module=5",
      *     @Apidoc\Returned("id", type="integer", desc="同行人员ID"),
      *     @Apidoc\Returned("info_id", type="integer", desc="申请ID"),

+ 1 - 1
application/common/model/ApplyGoods.php → application/common/model/ApproveApplyGoods.php

@@ -7,7 +7,7 @@ use think\Model;
 /**
  * 申购商品模型
  */
-class ApplyGoods extends Model
+class ApproveApplyGoods extends Model
 {
     // 表名
     protected $name = 'approve_apply_goods';

+ 8 - 2
application/common/model/ApproveInfo.php

@@ -51,13 +51,19 @@ class ApproveInfo extends Model
     // 关联申购商品 (我的申请记录 详情/信息)
     public function applyGoods()
     {
-        return $this->hasMany(ApplyGoods::class, 'info_id', 'id');
+        return $this->hasMany(ApproveApplyGoods::class, 'info_id', 'id');
     }
 
     // 关联入库商品 (我的申请记录 详情/信息)
     public function stockGoods()
     {
-        return $this->hasMany(StockGoods::class, 'info_id', 'id');
+        return $this->hasMany(ApproveStockGoods::class, 'info_id', 'id');
+    }
+
+    // 关联领用商品 (我的申请记录 详情/信息)
+    public function useGoods()
+    {
+        return $this->hasMany(ApproveUseGoods::class, 'info_id', 'id');
     }
 
     // 关联出差同行人员 (我的申请记录 详情/信息)

+ 1 - 1
application/common/model/StockGoods.php → application/common/model/ApproveStockGoods.php

@@ -7,7 +7,7 @@ use think\Model;
 /**
  * 入库商品模型
  */
-class StockGoods extends Model
+class ApproveStockGoods extends Model
 {
     // 表名
     protected $name = 'approve_stock_goods';

+ 20 - 0
application/common/model/ApproveUseGoods.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+/**
+ * 领用商品模型
+ */
+class ApproveUseGoods extends Model
+{
+    // 表名
+    protected $name = 'approve_use_goods';
+
+    // 追加属性
+    protected $append = [
+
+    ];
+
+}

+ 22 - 7
application/common/service/ApproveInfoService.php

@@ -3,15 +3,15 @@
 namespace app\common\service;
 
 use app\common\constant\CommonConstant;
-use app\common\model\ApplyGoods;
 use app\common\model\Approve;
 use app\common\model\ApproveCopy;
+use app\common\model\ApproveApplyGoods;
+use app\common\model\ApproveStockGoods;
 use app\common\model\ApproveEvectionPeerUser;
 use app\common\model\ApproveInfo;
 use app\common\model\Department;
 use app\common\model\Goods;
 use app\common\model\GoodsStock;
-use app\common\model\StockGoods;
 use app\common\model\User;
 use think\Db;
 use think\Exception;
@@ -71,7 +71,7 @@ class ApproveInfoService
         $order_no = get_order_sn($user['id']);
         $approve_user = $params['approve_user'] ? explode(',', $params['approve_user']) : [];
         $copy_user = $params['copy_user'] ? explode(',', $params['copy_user']) : [];
-        $approve_num = count($approve_user);
+        $approve_num = $approve_user ? count($approve_user) : 0;
         $data = [
             'module' => $module,
             'user_id' => $userid,
@@ -172,6 +172,9 @@ class ApproveInfoService
                 $data['remark'] = $params['remark'];
                 break;
             case CommonConstant::MODULE_4:
+                // 添加领用物品
+                self::create_goods($info_id, $module, $params['use_goods'], $type);
+
                 $data['info_id'] = $info_id;
                 $data['reason'] = $params['reason'];
                 $data['document'] = $params['document'];
@@ -280,10 +283,10 @@ class ApproveInfoService
 
         switch ($module) {
             case CommonConstant::MODULE_1:
-                $model = ApplyGoods::class;
+                $model = ApproveApplyGoods::class;
                 break;
             case CommonConstant::MODULE_3:
-                $model = StockGoods::class;
+                $model = ApproveStockGoods::class;
                 break;
         }
         if ($type == 'update') {
@@ -766,10 +769,17 @@ class ApproveInfoService
                                         $query->field('userid,name');
                                     }
                                 ]);
-                        }
+                        },
+                        'useGoods' => function ($query) {
+                            $query->field('id,info_id,goods_name');
+                        },
                     ]);
                 } else {
-
+                    $list = $list->with([
+                        'useGoods' => function ($query) {
+                            $query->field('id,info_id,goods_name');
+                        },
+                    ]);
                 }
                 break;
             case CommonConstant::MODULE_5:
@@ -847,6 +857,11 @@ class ApproveInfoService
                     }
                     break;
                 case CommonConstant::MODULE_4:
+                    if ($type == 'detail') {
+                        $info['use_goods'] = $info->useGoods()->field('id,info_id,goods_name,total_price,goods_stock')->select();
+                    } else {
+                        $info->use_goods;
+                    }
                     break;
                 case CommonConstant::MODULE_5:
                     if ($type == 'detail') {

+ 26 - 3
application/common/service/ApproveService.php

@@ -4,10 +4,12 @@ namespace app\common\service;
 
 use app\common\constant\ApplyConstant;
 use app\common\constant\CommonConstant;
-use app\common\model\ApplyGoods;
 use app\common\model\Approve;
+use app\common\model\ApproveApplyGoods;
 use app\common\model\ApproveEvectionPeerUser;
 use app\common\model\ApproveInfo;
+use app\common\model\ApproveStockGoods;
+use app\common\model\ApproveUseGoods;
 use app\common\model\User;
 use think\Db;
 use think\Exception;
@@ -156,9 +158,11 @@ class ApproveService
     {
         $apply_goods_info_ids = [];
         $stock_goods_info_ids = [];
+        $use_goods_info_ids = [];
         $peer_user_info_ids = [];
         $apply_goods_list = [];
         $stock_goods_list = [];
+        $use_goods_list = [];
         $peer_user_list = [];
         foreach ($list as $value) {
             $module = $value['module'];
@@ -177,17 +181,23 @@ class ApproveService
             }
         }
         if ($apply_goods_info_ids) {
-            $apply_goods_list = ApplyGoods::field('id,info_id,goods_name')
+            $apply_goods_list = ApproveApplyGoods::field('id,info_id,goods_name')
                 ->where('info_id', 'in', $apply_goods_info_ids)
                 ->select()
                 ->toArray();
         }
         if ($stock_goods_info_ids) {
-            $stock_goods_list = ApplyGoods::field('id,info_id,goods_name')
+            $stock_goods_list = ApproveStockGoods::field('id,info_id,goods_name')
                 ->where('info_id', 'in', $stock_goods_info_ids)
                 ->select()
                 ->toArray();
         }
+        if ($use_goods_info_ids) {
+            $use_goods_list = ApproveUseGoods::field('id,info_id,goods_name')
+                ->where('info_id', 'in', $use_goods_info_ids)
+                ->select()
+                ->toArray();
+        }
         if ($peer_user_info_ids) {
             $peer_user_list = ApproveEvectionPeerUser::field('id,info_id,name')
                 ->where('info_id', 'in', $peer_user_info_ids)
@@ -198,6 +208,7 @@ class ApproveService
             $module = $value['module'];
             $apply_goods = [];
             $stock_goods = [];
+            $use_goods = [];
             $peer_user = [];
             switch ($module) {
                 case CommonConstant::MODULE_1:
@@ -216,6 +227,13 @@ class ApproveService
                         }
                     }
                     break;
+                case CommonConstant::MODULE_4:
+                    foreach ($use_goods_list as $val) {
+                        if ($value['info_id'] == $val['info_id']) {
+                            $use_goods[] = $val;
+                        }
+                    }
+                    break;
                 case CommonConstant::MODULE_5:
                     foreach ($peer_user_list as $val) {
                         if ($value['info_id'] == $val['info_id']) {
@@ -226,6 +244,7 @@ class ApproveService
             }
             $value['apply_goods'] = $apply_goods;
             $value['stock_goods'] = $stock_goods;
+            $value['use_goods'] = $use_goods;
             $value['peer_user'] = $peer_user;
         }
         return $list;
@@ -315,6 +334,10 @@ class ApproveService
             // TODO 入库商品列表
             $approve_info->stock_goods;
         }
+        if($approve_info->module == CommonConstant::MODULE_4){
+            // TODO 领用商品列表
+            $approve_info->use_goods;
+        }
 
         Db::startTrans();
         try {

+ 0 - 256
application/common/service/EvectionInfoService.php

@@ -1,256 +0,0 @@
-<?php
-
-namespace app\common\service;
-
-use app\common\constant\CommonConstant;
-use app\common\model\Department;
-use app\common\model\EvectionApprove;
-use app\common\model\EvectionInfo;
-use app\common\model\EvectionPeerUser;
-use app\common\model\User;
-use think\Exception;
-
-/**
- * 出差申请服务类
- */
-class EvectionInfoService
-{
-
-    /**
-     * 申请出差/重新发起
-     *
-     * @param $id
-     * @param $params
-     * @param $user
-     **/
-    public static function create($id,$params, $user)
-    {
-        $userid = $user['userid'];
-        // 编辑
-        if ($id > 0) {
-            $info = EvectionInfo::field('user_id,is_deleted', true)
-                ->where('user_id', $userid)
-                ->where('is_deleted', CommonConstant::IS_DELETED_0)
-                ->find($id);
-            if (!$info) {
-                throw new Exception('出差记录不存在或已删除');
-            }
-            if($info->status != CommonConstant::STATUS_3){
-                throw new Exception('非审批驳回状态无法操作');
-            }
-        }
-
-        $order_no = get_order_sn($user->id);
-        $approve_user = explode(',', $params['approve_user']);
-        $copy_user = explode(',', $params['copy_user']);
-        $approve_num = count($approve_user);
-        $data = [
-            'user_id' => $userid,
-            'order_no' => $order_no,
-            'apply_date' => date("Y-m-d"),
-            'reason' => $params['reason'],
-            'start_time' => $params['start_time'],
-            'end_time' => $params['end_time'],
-            'document' => $params['document'],
-            'images' => $params['images'],
-            'type' => $params['type'],
-            'is_who' => $params['is_who'],
-            'remark' => $params['remark'],
-            'approve_num' => $approve_num,
-            'cur_num' => 0,
-        ];
-        if ($id > 0) {
-            // 编辑出差申请
-            $save_data = [
-                'status' => CommonConstant::STATUS_1,
-                'create_at' => date('Y-m-d H:i:s'),
-            ];
-            $data = array_merge($data, $save_data);
-            $info->save($data);
-
-            // 编辑同行人员
-            self::create_peer_user($id, $params['peer_user'],'update');
-
-            // 编辑出差审批
-            self::create_evection_approve($id, $approve_user, $copy_user,'create');
-        } else {
-            // 添加出差申请
-            $info = EvectionInfo::create($data);
-
-            // 添加同行人员
-            self::create_peer_user($info->id, $params['peer_user']);
-
-            // 添加出差审批
-            self::create_evection_approve($info->id, $approve_user, $copy_user);
-        }
-    }
-
-    protected static function create_peer_user($info_id, $params,$type = 'create')
-    {
-        if (!$params) {
-            return true;
-        }
-
-        if($type == 'update'){
-            EvectionPeerUser::where('info_id', $info_id)->delete();
-        }
-
-        $data = [];
-        foreach ($params as $value) {
-            $data[] = [
-                'info_id' => $info_id,
-                'is_who' => $value['is_who'],
-                'user_id' => isset($value['user_id']) ? $value['user_id'] : '',
-                'name' => $value['name'],
-                'desc' => isset($value['desc']) ? $value['desc'] : '',
-            ];
-        }
-        EvectionPeerUser::insertAll($data);
-    }
-
-    protected static function create_evection_approve($info_id, $approve_user, $copy_user,$type = 'create')
-    {
-        if($type == 'update'){
-            EvectionApprove::where('info_id', $info_id)->delete();
-        }
-
-        $data = [];
-        $flow_num = 0;
-        $create_at = date('Y-m-d H:i:s');
-        // 审批人
-        foreach ($approve_user as $key => $value) {
-            $flow_num++;
-            $data[] = [
-                'info_id' => $info_id,
-                'approve_flow' => $flow_num,
-                'approve_type' => CommonConstant::TYPE_1,
-                'approve_user' => $value,
-                'approve_time' => $create_at,
-                'create_at' => $create_at,
-                'status' => $flow_num == 1 ? CommonConstant::STATUS_1 : CommonConstant::STATUS_0,
-            ];
-        }
-        // 抄送人
-        foreach ($copy_user as $key => $value) {
-            $data[] = [
-                'info_id' => $info_id,
-                'approve_flow' => 0,
-                'approve_type' => CommonConstant::TYPE_2,
-                'approve_user' => $value,
-                'approve_time' => $create_at,
-                'create_at' => $create_at,
-                'status' => CommonConstant::STATUS_0,
-            ];
-        }
-        EvectionApprove::insertAll($data);
-    }
-
-    /**
-     * 列表
-     *
-     * @param $status
-     * @param $search
-     * @param $offset
-     * @param $length
-     * @param $user
-     **/
-    public static function get_list($status, $search, $offset, $length, $user)
-    {
-        $userid = $user['userid'];
-        $list = EvectionInfo::field('id,status,create_at,order_no,reason,start_time,end_time')
-            ->where('user_id', $userid)
-            ->where('is_deleted', CommonConstant::IS_DELETED_0)
-            ->when(array_key_exists($status, CommonConstant::get_status_list()), function ($query) use ($status) {
-                $query->where('status', $status);
-            })
-            ->when($search, function ($query) use ($search) {
-                $query->where('order_no|reason', 'like', '%' . $search . '%');
-            })
-            ->with(['peer_user' => function ($query) {
-                $query->field('id,info_id,name');
-            }, 'approve_info' => function ($query) use ($status) {
-                $query->field('id,info_id,status,approve_user')
-                    ->where('status', $status)
-                    ->with(['user' => function ($query) {
-                        $query->field('userid,name');
-                    }]);
-            }])
-            ->limit($offset, $length)
-            ->order('id desc')
-            ->select();
-        return $list;
-    }
-
-    /**
-     * 详情/信息
-     *
-     * @param $id
-     * @param $user
-     * @param $type
-     **/
-    public static function get_detail($id, $user,$type)
-    {
-        $userid = $user['userid'];
-        if($type == 'detail'){
-            $info = EvectionInfo::field('user_id,is_deleted', true)
-                ->where('user_id', $userid)
-                ->where('is_deleted', CommonConstant::IS_DELETED_0)
-                ->with(['peer_user' => function ($query) {
-                    $query->field('id,info_id,name');
-                }, 'approve' => function ($query) {
-                    $query->field('is_deleted,create_at', true)
-                        ->with(['user' => function ($query) {
-                            $query->field('userid,headimg,name');
-                        }]);
-                }])
-                ->find($id);
-            if ($info) {
-                $info['department'] = Department::where('dept_id', 'in', $user['department'])->field('dept_id,name')->select();
-            }
-        } else{
-            $info = EvectionInfo::field('user_id,is_deleted', true)
-                ->where('user_id', $userid)
-                ->where('is_deleted', CommonConstant::IS_DELETED_0)
-                ->with(['peer_user'])
-                ->find($id);
-        }
-        return $info;
-    }
-
-    /**
-     * 操作方法
-     *
-     * @param $id
-     * @param $user
-     * @param $type
-     */
-    public static function make($id, $user,$type)
-    {
-        $userid = $user['userid'];
-        $info = EvectionInfo::field('id,status')
-            ->where('user_id', $userid)
-            ->where('is_deleted', CommonConstant::IS_DELETED_0)
-            ->find($id);
-        if(!$info) {
-            throw new Exception('出差记录不存在或已删除');
-        }
-        switch ($type){
-            case 'urging':
-                if($info->status != CommonConstant::STATUS_1){
-                    throw new Exception('其他人已操作');
-                }
-
-                // 钉钉接口 TODO
-                break;
-            case 'cancel':
-                if($info->status != CommonConstant::STATUS_3){
-                    throw new Exception('非审批驳回状态无法操作');
-                }
-
-                $info->status = CommonConstant::STATUS_4;
-                $info->save();
-                break;
-        }
-    }
-
-}

+ 0 - 18
application/common/service/UserIdentity.php

@@ -1,18 +0,0 @@
-<?php
-namespace app\common\service;
-
-
-/**
- * 会员身份等级管理
- * Class UserIdentity
- */
-class UserIdentity
-{
-
-    public static function checkVip()
-    {
-
-    }
-
-
-}

+ 6 - 4
application/common/validate/ApproveUse.php

@@ -13,6 +13,7 @@ class ApproveUse extends Validate
      * 验证规则
      */
     protected $rule = [
+        'use_goods' => 'require',
         'reason' => 'require',
         'approve_user' => 'require',
     ];
@@ -25,9 +26,9 @@ class ApproveUse extends Validate
      * 验证场景
      */
     protected $scene = [
-        'create' => ['reason','approve_user'],
-        'update' => ['reason','approve_user'],
-        'edit' => ['reason'],
+        'create' => ['use_goods','reason','approve_user'],
+        'update' => ['use_goods','reason','approve_user'],
+        'edit' => ['use_goods','reason'],
     ];
 
     /**
@@ -40,11 +41,12 @@ class ApproveUse extends Validate
     public function __construct(array $rules = [], $message = [], $field = [])
     {
         $this->field = [
+            'use_goods' => '领用物品',
             'reason' => '物品用途',
             'approve_user' => '审批人',
         ];
         $this->message = array_merge($this->message, [
-
+            'apply_goods.require' => '请添加领用物品',
         ]);
         parent::__construct($rules, $message, $field);
     }