Commit 4d21634c by hcy001
parents 852a4d3e d7b747b6
...@@ -3,4 +3,5 @@ ...@@ -3,4 +3,5 @@
Homestead.yaml Homestead.yaml
Homestead.json Homestead.json
.idea .idea
.env .env
\ No newline at end of file storage/logs/
...@@ -4,6 +4,7 @@ namespace App\Http\Controllers; ...@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Model\CommonModel; use App\Model\CommonModel;
use App\Model\InquiryItemsAssignModel;
use App\Model\InquiryItemsReportModel; use App\Model\InquiryItemsReportModel;
use App\Model\InquiryModel; use App\Model\InquiryModel;
use App\Model\InquiryItemsModel; use App\Model\InquiryItemsModel;
...@@ -99,6 +100,41 @@ class ApiController extends Controller ...@@ -99,6 +100,41 @@ class ApiController extends Controller
ExportLayui((new QuoteModel())->ItemsList($input)); ExportLayui((new QuoteModel())->ItemsList($input));
} }
// 已领取列表
private function GetAssignList($input, $id){
$inquiry_items_id = $input['inquiry_items_id'];
$p = $input['p'] ? $input['p'] : 1;
$limit = $input['limit'] ? $input['limit'] : 10;
$InquiryItemsAssignModel = new InquiryItemsAssignModel;
$list = $InquiryItemsAssignModel->GetAssignList($inquiry_items_id, $p, $limit);
if ($list['data'] && is_array($list['data'])){
$InquiryItemsModel = new InquiryItemsModel();
$inquire_item_info = $InquiryItemsModel->where('id', $inquiry_items_id)->first()->toArray();
if ($inquire_item_info){
// 获取领取了询价单后已报价的uids
$QuoteModel = new QuoteModel();
$assign_uids = array_column($list['data'], 'assign_uid');
$quoted_uids = $QuoteModel->GetQuotedUids($inquiry_items_id, $assign_uids);
foreach ($list['data'] as $k => &$assign_item){
$assign_item['goods_name'] = $inquire_item_info['goods_name'];
$assign_item['brand_name'] = $inquire_item_info['brand_name'];
$assign_item['status_name'] = "已领取";
$assign_item['create_time'] = date("Y-m-d H:i:s", $assign_item['create_time']);
}
// 判断当前用户是否有对该询价单报价,如果有报价,那么过滤
if (in_array($assign_item['assign_uid'], $quoted_uids)){
unset($list['data'][$k]);
}
}
}
$data = [0, '成功', $list['data'], $list['total']];
ExportLayui($data);
}
//搜索品牌 //搜索品牌
private function ApiBrandList($input, $id){ private function ApiBrandList($input, $id){
(new CommonModel())->BrandList($input['k'],@$input["types"] ? @$input["types"] : 1); (new CommonModel())->BrandList($input['k'],@$input["types"] ? @$input["types"] : 1);
...@@ -143,6 +179,7 @@ class ApiController extends Controller ...@@ -143,6 +179,7 @@ class ApiController extends Controller
private function ApiInquiryExport($input){ private function ApiInquiryExport($input){
(new ExportModel())->InquiryExport($input,$this->user_id); (new ExportModel())->InquiryExport($input,$this->user_id);
} }
//生成报价pdf //生成报价pdf
private function ApiOfferPdf($request){ private function ApiOfferPdf($request){
(new CommonModel())->Pdf(); (new CommonModel())->Pdf();
...@@ -194,6 +231,8 @@ class ApiController extends Controller ...@@ -194,6 +231,8 @@ class ApiController extends Controller
Export((new InquiryItemsModel())->import($input)); Export((new InquiryItemsModel())->import($input));
} }
// 删除报价草稿 // 删除报价草稿
public function ApiDeleteQuoteDraft($input, $id) public function ApiDeleteQuoteDraft($input, $id)
{ {
......
...@@ -41,6 +41,7 @@ class ServerController extends Controller ...@@ -41,6 +41,7 @@ class ServerController extends Controller
$server->addMethod('InquiryServer',$this); $server->addMethod('InquiryServer',$this);
$server->handle(); $server->handle();
} }
public function InquiryServer($info){ public function InquiryServer($info){
$res= (new InquiryModel())->getList(json_decode($info,true),1); $res= (new InquiryModel())->getList(json_decode($info,true),1);
return ExportLayuiReturn($res); return ExportLayuiReturn($res);
......
...@@ -8,7 +8,7 @@ defined('REPORT_APP_NAME') or define('REPORT_APP_NAME', 'frq_api'); ...@@ -8,7 +8,7 @@ defined('REPORT_APP_NAME') or define('REPORT_APP_NAME', 'frq_api');
defined('LOG_FILE_SIZE') or define('LOG_FILE_SIZE', 2097152); //2MB defined('LOG_FILE_SIZE') or define('LOG_FILE_SIZE', 2097152); //2MB
// 设定错误和异常处理 // 设定错误和异常处理
error_reporting(0); error_reporting(E_ERROR);
LogReport::auto(); LogReport::auto();
......
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class BestGoodsModel extends Model
{
protected $connection = 'rfq';
protected $table = 'best_goods';
protected $primaryKey = 'id';
const STATUS_ENABLE = 1; // 有效
const STATUS_DISABLE = 2; // 无效
public $timestamps = true;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
public function GetList($where = [], $page = 1, $limit = 10)
{
if ($where) {
$list = $this->where($where)->orderBy('id', 'desc')->paginate($limit, ['*'], 'p', $page)->toArray();
} else {
$list = $this->select()->orderBy('id', 'desc')->paginate($limit, ['*'], 'p', $page)->toArray();
}
return $list;
}
public function getCountByWhere($where = [])
{
if ($where) {
return $this->where($where)->count();
} else {
return $this->count();
}
}
public function GetListByIds($ids)
{
return $this->whereIn("id", $ids)->get()->toArray();
}
public function updateByIds($ids, $data)
{
return $this->whereIn("id", $ids)->update($data);
}
}
\ No newline at end of file
...@@ -63,5 +63,4 @@ class ExportModel ...@@ -63,5 +63,4 @@ class ExportModel
echo self::push($data); echo self::push($data);
} }
} }
\ No newline at end of file
...@@ -11,6 +11,12 @@ class InquiryItemsAssignModel extends Model ...@@ -11,6 +11,12 @@ class InquiryItemsAssignModel extends Model
protected $primaryKey = 'id'; protected $primaryKey = 'id';
public $timestamps = false; public $timestamps = false;
// 领取类型 1 指定 2 领取
const ASSIGN_TYPE_BIND = 1;
const ASSIGN_TYPE_SELECTED = 2;
// 领取询价 // 领取询价
public function assign($inquiry_items_id, $assign_uid, $types=1) public function assign($inquiry_items_id, $assign_uid, $types=1)
{ {
...@@ -27,6 +33,24 @@ class InquiryItemsAssignModel extends Model ...@@ -27,6 +33,24 @@ class InquiryItemsAssignModel extends Model
return $this->insert($data); return $this->insert($data);
} }
public function GetAssignList($inquiry_items_id, $p, $limit)
{
return $this
->where("inquiry_items_id", $inquiry_items_id)
->where("assign_type", self::ASSIGN_TYPE_SELECTED)
->orderBy('id','desc')
->paginate($limit ? $limit : 10, ['*'], 'p', $p ? $p : 1)
->toArray();
}
public function GetAssignCountByInquiryId($inquiry_items_id)
{
return $this
->where("inquiry_items_id", $inquiry_items_id)
->count();
}
// 删除 // 删除
public function delAssign($inquiry_items_id, $assign_uid, $types=1) public function delAssign($inquiry_items_id, $assign_uid, $types=1)
{ {
......
...@@ -25,6 +25,12 @@ class InquiryItemsModel extends Model ...@@ -25,6 +25,12 @@ class InquiryItemsModel extends Model
return strtotime(parent::fromDateTime($value)); return strtotime(parent::fromDateTime($value));
} }
public function GetInquireItemsListByIds($ids)
{
return $this->whereIn("id", $ids)->get()->toArray();
}
//生成报价单详情 //生成报价单详情
public function ItemsOfferDetail($inquiry_id) public function ItemsOfferDetail($inquiry_id)
{ {
...@@ -109,6 +115,11 @@ class InquiryItemsModel extends Model ...@@ -109,6 +115,11 @@ class InquiryItemsModel extends Model
// 添加操作日志 // 添加操作日志
$inquiry_items = $this->find($id); $inquiry_items = $this->find($id);
// 检查询价单状态,如果状态为默认的 待报价 状态,那么更改为 已领取状态
if ($inquiry_items['status'] == InquiryMap::status_ready){
$this->where('id', $id)->update(['status' => InquiryMap::status_fix]);
}
$data = []; $data = [];
$data['types'] = 1; $data['types'] = 1;
$data['relation_id'] = $id; $data['relation_id'] = $id;
...@@ -250,6 +261,8 @@ class InquiryItemsModel extends Model ...@@ -250,6 +261,8 @@ class InquiryItemsModel extends Model
if(count($assignInsert) >0){ #插入指定人 if(count($assignInsert) >0){ #插入指定人
(new InquiryItemsAssignModel())->insert($assignInsert); (new InquiryItemsAssignModel())->insert($assignInsert);
} }
$this->where('id', $inquiryItemsId)->update(['status' => 4]); // 存在指定采购,则标记状态为已领取
} }
#日志 #日志
...@@ -331,6 +344,8 @@ class InquiryItemsModel extends Model ...@@ -331,6 +344,8 @@ class InquiryItemsModel extends Model
if(count($assignInsert) >0){ #插入指定人 if(count($assignInsert) >0){ #插入指定人
$InquiryItemsAssignModel->insert($assignInsert); $InquiryItemsAssignModel->insert($assignInsert);
} }
$this->where('id', $inquiry_items_id)->update(['status' => 4]); // 存在指定采购,则标记状态为已领取
} }
#发送消息 #发送消息
......
...@@ -217,7 +217,7 @@ class InquiryItemsReportModel extends Model ...@@ -217,7 +217,7 @@ class InquiryItemsReportModel extends Model
* 判断是否能生成销售单 * 判断是否能生成销售单
*/ */
public function checkOrder($input){ public function checkOrder($input){
$check = $this->where(["price_origin"=>0,"price_rmb"=>0])->whereIn("id",explode(",",$input["inquiry_items_id"]))->count(); $check = $this->where(["price_origin"=>0,"price_rmb"=>0])->whereIn("id",explode(",",$input["report_ids"]))->count();
return $check >0 ? [1001,"没有销售报价的报价单不能生成销售订单"] : [0,"通过"]; return $check >0 ? [1001,"没有销售报价的报价单不能生成销售订单"] : [0,"通过"];
} }
/* /*
......
...@@ -20,6 +20,12 @@ class InquiryModel extends Model ...@@ -20,6 +20,12 @@ class InquiryModel extends Model
protected $primaryKey = 'id'; protected $primaryKey = 'id';
public $timestamps = false; public $timestamps = false;
public function GetInquiryListByIds($ids)
{
return $this->whereIn("id", $ids)->get()->toArray();
}
/** /**
* 询价列表 * 询价列表
*/ */
...@@ -77,7 +83,6 @@ class InquiryModel extends Model ...@@ -77,7 +83,6 @@ class InquiryModel extends Model
} }
} }
}); });
#不同类别查询 #不同类别查询
switch (@$input["types"]) { switch (@$input["types"]) {
case "1": //我的询价 case "1": //我的询价
...@@ -119,6 +124,8 @@ class InquiryModel extends Model ...@@ -119,6 +124,8 @@ class InquiryModel extends Model
$QuoteModel = new QuoteModel(); $QuoteModel = new QuoteModel();
$InquiryItemsAssignModel = new InquiryItemsAssignModel(); $InquiryItemsAssignModel = new InquiryItemsAssignModel();
$BestGoodsModel = new BestGoodsModel();
$Redis = \RedisDB::connection(); $Redis = \RedisDB::connection();
foreach ($list['data'] as $k => &$v) { foreach ($list['data'] as $k => &$v) {
$inquiry_items_id = $v["id"]; #明细id $inquiry_items_id = $v["id"]; #明细id
...@@ -166,6 +173,11 @@ class InquiryModel extends Model ...@@ -166,6 +173,11 @@ class InquiryModel extends Model
$v['inquiry_sn_origin'] = $v["inquiry_sn"]; $v['inquiry_sn_origin'] = $v["inquiry_sn"];
// 查询历史报价数
$v['history_quote_count'] = $QuoteModel->GetHistoryQuotedCount($v['goods_name']);
// 查询优选匹配数
$v['best_count'] = $BestGoodsModel->getCountByWhere([["goods_name", '=', $v['goods_name']], ["g_status", '=', BestGoodsModel::STATUS_ENABLE]]);
// 在Redis集合中检查是否有新的报价 // 在Redis集合中检查是否有新的报价
if ($export == 0){ if ($export == 0){
$res = $Redis->SISMEMBER('frq_quote_urge', $v['id']); $res = $Redis->SISMEMBER('frq_quote_urge', $v['id']);
...@@ -246,8 +258,7 @@ class InquiryModel extends Model ...@@ -246,8 +258,7 @@ class InquiryModel extends Model
->join('inquiry_items_urge as u', 'b.id', '=', 'u.inquiry_items_id') ->join('inquiry_items_urge as u', 'b.id', '=', 'u.inquiry_items_id')
->where('c.assign_uid', $user_id); ->where('c.assign_uid', $user_id);
} }
$list = $list->select(DB::Raw("lie_a.inquiry_sn,lie_a.currency,lie_a.status as status_a,lie_a.user_name,lie_a.com_name,lie_a.create_name,lie_a.create_time as inquiry_ctime, lie_a.remark as inquiry_remark, lie_b.*, lie_c.id as c_id, lie_c.assign_type as c_assign_type"))
$list = $list->select(DB::Raw("lie_a.inquiry_sn,lie_a.currency,lie_a.status as status_a,lie_a.user_name,lie_a.com_name,lie_a.create_name,lie_a.create_time as inquiry_ctime, lie_b.*, lie_c.id as c_id, lie_c.assign_type as c_assign_type"))
->where(function ($query) use ($input, $type, $user_id) { ->where(function ($query) use ($input, $type, $user_id) {
foreach ($input as $k => $v) { foreach ($input as $k => $v) {
$v = trim($v); $v = trim($v);
...@@ -310,7 +321,6 @@ class InquiryModel extends Model ...@@ -310,7 +321,6 @@ class InquiryModel extends Model
// $tmp = vsprintf($tmp, $list->getBindings()); // $tmp = vsprintf($tmp, $list->getBindings());
// echo $tmp; // echo $tmp;
// exit; // exit;
$page = isset($input['p']) ? $input['p'] : $input['page']; $page = isset($input['p']) ? $input['p'] : $input['page'];
$list = $list->orderBy('b.id', 'desc')->paginate(@$input['limit'] ? $input["limit"] : 10, ['*'], 'p', @$page ? $page : 1)->toArray(); $list = $list->orderBy('b.id', 'desc')->paginate(@$input['limit'] ? $input["limit"] : 10, ['*'], 'p', @$page ? $page : 1)->toArray();
...@@ -318,6 +328,8 @@ class InquiryModel extends Model ...@@ -318,6 +328,8 @@ class InquiryModel extends Model
$QuoteModel = new QuoteModel(); $QuoteModel = new QuoteModel();
$InquiryItemsUrgeModel = new InquiryItemsUrgeModel; $InquiryItemsUrgeModel = new InquiryItemsUrgeModel;
$InquiryItemsAssignModel = new InquiryItemsAssignModel;
foreach ($list['data'] as $k => &$v) { foreach ($list['data'] as $k => &$v) {
//报价 //报价
...@@ -353,6 +365,9 @@ class InquiryModel extends Model ...@@ -353,6 +365,9 @@ class InquiryModel extends Model
} }
} }
$v['assign_count'] = $InquiryItemsAssignModel->GetAssignCountByInquiryId($v['id']);
$v['delivery_time'] = $v['delivery_time'] > 6 ? ($v['delivery_time']/7).'周' : $v['delivery_time']."天";
} }
return [0, '成功', $list['data'], $list['total']]; return [0, '成功', $list['data'], $list['total']];
......
...@@ -24,35 +24,58 @@ use Excel; ...@@ -24,35 +24,58 @@ use Excel;
class QuoteModel extends Model class QuoteModel extends Model
{ {
protected $connection = 'rfq'; protected $connection = 'rfq';
protected $table = 'quote'; protected $table = 'quote';
protected $primaryKey = 'id'; protected $primaryKey = 'id';
protected $guarded = ['id']; protected $guarded = ['id'];
public $timestamps = true; public $timestamps = true;
const CREATED_AT = 'create_time'; const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time'; const UPDATED_AT = 'update_time';
const STATUS_OFFER = 1; // 已报价
const STATUS_SELECTED = 2; // 已选中
const STATUS_SURE = 3; // 已确认
public function fromDateTime($value) public function fromDateTime($value)
{ {
return strtotime(parent::fromDateTime($value)); return strtotime(parent::fromDateTime($value));
} }
public function GetHistoryQuotedCount($goods_name)
{
return $this->whereIn("status", [self::STATUS_OFFER, self::STATUS_SELECTED, self::STATUS_SURE])->where('goods_name', $goods_name)->count();
}
public function GetQuotedUids($inquiry_items_id, $assign_uids)
{
return $this->where("inquiry_items_id", $inquiry_items_id)
->whereIn("create_uid", $assign_uids)
->whereIn("status", [self::STATUS_OFFER, self::STATUS_SELECTED, self::STATUS_SURE])
->lists("create_uid")->toArray();
}
//单个明细分页列表 //单个明细分页列表
public function ItemsList($input) public function ItemsList($input)
{ {
$list = $this $list = $this
->where("inquiry_items_id",$input["inquiry_items_id"]) ->where("inquiry_items_id", $input["inquiry_items_id"])
->orderBy('status','desc') ->orderBy('status', 'desc')
->orderBy('price_rmb','asc') ->orderBy('price_rmb', 'asc')
->whereNotIn("status",[-1,0]) ->whereNotIn("status", [-1, 0])
->paginate(@$input['limit'] ? $input["limit"] : 10, ['*'], 'p', @$input['p'] ? $input["p"] : 1) ->paginate(@$input['limit'] ? $input["limit"] : 10, ['*'], 'p', @$input['p'] ? $input["p"] : 1)
->toArray(); ->toArray();
if (!$list) return [20001, '没有数据']; if (!$list) {
foreach ($list['data'] as $k=>&$v){ return [20001, '没有数据'];
$v["price_origin"] = $v["currency"] >1 ? InquiryMap::$currency_sign[$v["currency"]].$v["price_origin"] : "--"; }
$v["price_rmb"] = $v["currency"] == 1 ? "¥".$v["price_rmb"]:"--"; foreach ($list['data'] as $k => &$v) {
$v["price_origin"] = $v["currency"] > 1 ? InquiryMap::$currency_sign[$v["currency"]] . $v["price_origin"] : "--";
$v["price_rmb"] = $v["currency"] == 1 ? "¥" . $v["price_rmb"] : "--";
$v['status'] = QuoteMap::$status[$v["status"]]; $v['status'] = QuoteMap::$status[$v["status"]];
if ($v["raw_goods_packing"] != ""){ if ($v["raw_goods_packing"] != "") {
$v["create_name"] = $v["create_name"]."(包装:".$v["raw_goods_packing"].")"; $v["create_name"] = $v["create_name"] . "(包装:" . $v["raw_goods_packing"] . ")";
} }
} }
return [0, '成功', $list['data'], $list['total']]; return [0, '成功', $list['data'], $list['total']];
...@@ -62,90 +85,96 @@ class QuoteModel extends Model ...@@ -62,90 +85,96 @@ class QuoteModel extends Model
public function ItemsListGroup($inquiry_items_id) public function ItemsListGroup($inquiry_items_id)
{ {
$list = $this $list = $this
->where("inquiry_items_id",$inquiry_items_id) ->where("inquiry_items_id", $inquiry_items_id)
->orderBy('status','desc') ->orderBy('status', 'desc')
->get() ->get()
->toArray(); ->toArray();
if (!$list) return [20001, '没有数据']; if (!$list) {
return [20001, '没有数据'];
}
// 状态 -1:已撤销 1:已报价 2:已选中 3:已确认 // 状态 -1:已撤销 1:已报价 2:已选中 3:已确认
$dataSure = []; //已确认 $dataSure = []; //已确认
$dataCheck = []; //已选中 $dataCheck = []; //已选中
$dataDelete = []; //删除 $dataDelete = []; //删除
$dataReady = []; //已报价 $dataReady = []; //已报价
foreach ($list as $k=>&$v){ foreach ($list as $k => &$v) {
switch ($v["status"]){ switch ($v["status"]) {
case -1: case -1:
array_push($dataDelete,$v); array_push($dataDelete, $v);
break; break;
case 1: case 1:
array_push($dataReady,$v); array_push($dataReady, $v);
break; break;
case 2: case 2:
array_push($dataCheck,$v); array_push($dataCheck, $v);
break; break;
case 3: case 3:
array_push($dataSure,$v); array_push($dataSure, $v);
break; break;
} }
$v['status'] = QuoteMap::$status[$v["status"]]; $v['status'] = QuoteMap::$status[$v["status"]];
} }
return ["dataSure"=>$dataSure,"dataCheck"=>$dataCheck,"dataDelete"=>$dataDelete,"dataReady"=>$dataReady]; return [
"dataSure" => $dataSure,
"dataCheck" => $dataCheck,
"dataDelete" => $dataDelete,
"dataReady" => $dataReady
];
} }
// 获取报价列表 // 获取报价列表
public function lists($input, $export='') public function lists($input, $export = '')
{ {
$page = $input['page']; $page = $input['page'];
$limit = $input['limit']; $limit = $input['limit'];
$type = $input['type']; // 1-我的报价,2-所有报价,3-报价草稿 $type = $input['type']; // 1-我的报价,2-所有报价,3-报价草稿,4-销售首页
$map['inquiry_sn'] = isset($input['inquiry_sn']) ? trim($input['inquiry_sn']) : ''; // 询价单号 $map['inquiry_sn'] = isset($input['inquiry_sn']) ? trim($input['inquiry_sn']) : ''; // 询价单号
$map['goods_name'] = isset($input['goods_name']) ? trim($input['goods_name']) : ''; // 型号 $map['goods_name'] = isset($input['goods_name']) ? trim($input['goods_name']) : ''; // 型号
$map['brand_name'] = isset($input['brand_name']) ? trim($input['brand_name']) : ''; // 品牌 $map['brand_name'] = isset($input['brand_name']) ? trim($input['brand_name']) : ''; // 品牌
$map['quote_sn'] = isset($input['quote_sn']) ? trim($input['quote_sn']) : ''; // 报价单号 $map['quote_sn'] = isset($input['quote_sn']) ? trim($input['quote_sn']) : ''; // 报价单号
$map['status'] = isset($input['status']) ? $input['status'] : ''; // 报价状态 $map['status'] = isset($input['status']) ? $input['status'] : ''; // 报价状态
$map['create_uid'] = isset($input['create_uid']) ? $input['create_uid'] : ''; // 报价制单人
$map['start_time'] = !empty($input['start_time']) ? strtotime($input['start_time']) : ''; $map['start_time'] = !empty($input['start_time']) ? strtotime($input['start_time']) : '';
$map['end_time'] = !empty($input['end_time']) ? strtotime($input['end_time']) + 86399 : ''; $map['end_time'] = !empty($input['end_time']) ? strtotime($input['end_time']) + 86399 : '';
$field = ['q.id', 'q.inquiry_id', 'q.inquiry_sn', 'q.inquiry_items_id', 'q.quote_sn', 'q.source', 'q.price_origin', 'q.price_rmb', 'q.price_other', 'q.currency', 'q.goods_name as quote_goods_name', 'q.brand_name as quote_brand_name', 'q.supplier_id', 'q.supplier_name', 'q.quote_number', 'q.status', 'q.create_uid', 'q.create_name', 'q.delivery_time', 'q.batch', 'q.create_time', 'it.goods_name', 'it.brand_name', 'it.inquiry_number']; // $map = array_filter($map) ? $map : [];
$field = [
$list = $this->from('quote as q') 'q.id',
->join('inquiry_items as it', 'q.inquiry_items_id', '=', 'it.id') 'q.inquiry_id',
->where(function($query) use ($map) { 'q.inquiry_sn',
if ($map['inquiry_sn']) { 'q.inquiry_items_id',
$query->where('q.inquiry_sn', '=', $map['inquiry_sn']); 'q.quote_sn',
} 'q.source',
'q.price_origin',
if ($map['goods_name']) { 'q.price_rmb',
$query->where('it.goods_name', 'like', $map['goods_name'].'%'); 'q.price_other',
} 'q.currency',
'q.goods_name as quote_goods_name',
if ($map['brand_name']) { 'q.brand_name as quote_brand_name',
$query->where('it.brand_name', 'like', $map['brand_name'].'%'); 'q.supplier_id',
} 'q.supplier_name',
'q.quote_number',
if ($map['quote_sn']) { 'q.status',
$query->where('q.quote_sn', '=', $map['quote_sn']); 'q.create_uid',
} 'q.create_name',
'q.delivery_time',
if ($map['status']) { 'q.batch',
$query->where('q.status', '=', $map['status']); 'q.create_time',
} 'it.goods_name',
'it.brand_name',
// 创建时间 'it.inquiry_number'
if(!empty($map['start_time']) && !empty($map['end_time'])) { ];
$query->whereBetween('q.create_time', [$map['start_time'], $map['end_time']]); if ($map) {
} else if(!empty($map['start_time'])) { $list = $this->commonQuery($map, $input);
$query->where('q.create_time', '>=', $map['start_time']); } else {
} else if(!empty($map['end_time'])) { $list = $this->from('quote as q')
$query->where('q.create_time', '<=', $map['end_time']); ->join('inquiry_items as it', 'q.inquiry_items_id', '=', 'it.id');
} }
});
$map['create_uid'] = isset($input['create_uid']) ? $input['create_uid'] : ''; // 报价制单人
if ($type == 1) { if ($type == 1) {
$list = $list->where('q.create_uid', $input['user_id'])->where('q.status', '<>', 0); // 过滤报价草稿 $list = $list->where('q.create_uid', $input['user_id'])->whereNotIn('q.status', [0, -1]); // 过滤报价草稿
} else if ($type == 2) { } elseif ($type == 2) {
$perm = new PermController; $perm = new PermController;
$role = $perm->getUserRole($input['user_id'], $input['email']); // 用户角色 $role = $perm->getUserRole($input['user_id'], $input['email']); // 用户角色
...@@ -154,9 +183,15 @@ class QuoteModel extends Model ...@@ -154,9 +183,15 @@ class QuoteModel extends Model
$list = $list->whereIn('q.create_uid', $sub_sale_ids); $list = $list->whereIn('q.create_uid', $sub_sale_ids);
} }
$list = $list->where('q.status', '<>', 0); // 过滤报价草稿 $list = $list->whereNotIn('q.status', [0, -1]); // 过滤报价草稿
} elseif(@$input['inquiry_items_id'] > 0) { } elseif ($type == 3) {
$list = $list->where('q.status', 0)->where('q.inquiry_items_id', $input['inquiry_items_id']); $list = $list->where('q.status', 0)->whereIn('q.inquiry_items_id', explode(',', $input['inquiry_items_ids']));
} elseif (@$input['inquiry_items_id'] > 0) {
$list = $list->whereNotIn('q.status', [0, -1])->where('q.inquiry_items_id', $input['inquiry_items_id']);
} elseif (isset($input['inquiry_items_ids']) && $input['inquiry_items_ids']) {
$inquiry_items_ids = explode(",", $input['inquiry_items_ids']);
$inquiry_items_ids = array_values(array_filter($inquiry_items_ids));
$list = $list->whereNotIn('q.status', [0, -1])->whereIn('q.inquiry_items_id', $inquiry_items_ids);
} }
if ($map['create_uid']) { // 制单人 if ($map['create_uid']) { // 制单人
...@@ -164,12 +199,18 @@ class QuoteModel extends Model ...@@ -164,12 +199,18 @@ class QuoteModel extends Model
} }
$list = $list->select($field)->orderBy('id', 'desc'); $list = $list->select($field)->orderBy('id', 'desc');
// dump($list->getBindings());
// dump($list->toSql());
// $tmp = str_replace('?', '"'.'%s'.'"', $list->toSql());
// $tmp = vsprintf($tmp, $list->getBindings());
// echo $tmp;
// exit;
if ($export) { if ($export) {
$list = $list->get()->toArray(); $list = $list->get()->toArray();
if (empty($list)) { if (empty($list)) {
echo '<script>alert("导出数据为空");history.go(-1);</script>';die; echo '<script>alert("导出数据为空");history.go(-1);</script>';
die;
} }
return $list; return $list;
...@@ -178,115 +219,216 @@ class QuoteModel extends Model ...@@ -178,115 +219,216 @@ class QuoteModel extends Model
$list['data'] = $this->handleData($list['data'], $type); $list['data'] = $this->handleData($list['data'], $type);
return [0, '获取成功', $list['data'], $list['total']]; $msg = '成功';
if ($type == 1) { // 我的报价
if ($map['status']) {
switch($map['status']) {
case 1:
$list['count']['quoted_status'] = $this->commonQuery($map, $input, 2);
$list['count']['selected_status'] = 0;
$list['count']['confirmed_status'] = 0;
break;
case 2:
$list['count']['quoted_status'] = 0;
$list['count']['selected_status'] = $this->commonQuery($map, $input, 2);
$list['count']['confirmed_status'] = 0;
break;
case 3:
$list['count']['quoted_status'] = 0;
$list['count']['selected_status'] = 0;
$list['count']['confirmed_status'] = $this->commonQuery($map, $input, 2);
break;
}
} else {
$map['status'] = 1;
$list['count']['quoted_status'] = $this->commonQuery($map, $input, 2);
$map['status'] = 2;
$list['count']['selected_status'] = $this->commonQuery($map, $input, 2);
$map['status'] = 3;
$list['count']['confirmed_status'] = $this->commonQuery($map, $input, 2);
}
$msg = $list['count'];
}
// return [0, '获取成功', $list['data'], $list['total']];
return [0, $msg, $list['data'], $list['total']];
} }
} }
// 获取历史报价 // 获取历史报价
public function historyList($input) public function historyList($input)
{ {
$page = $input['page']; $page = $input['page'];
$limit = $input['limit']; $limit = $input['limit'];
$list = $this->from('quote as q') $list = $this->from('quote as q')
->select("q.*") ->select("q.*")
->join('inquiry_items as it', 'q.inquiry_items_id', '=', 'it.id') ->join('inquiry_items as it', 'q.inquiry_items_id', '=', 'it.id')
->where(function($query) use ($input) { ->where(function ($query) use ($input) {
foreach ($input as $k=>$b){ foreach ($input as $k => $b) {
switch ($k){ switch ($k) {
case "goods_name": case "goods_name":
$query->where('it.goods_name', 'like', $b.'%'); $query->where('q.goods_name', 'like', $b . '%');
break; break;
case "brand_name": case "brand_name":
$query->where('it.brand_name', 'like',$b.'%'); $query->where('q.brand_name', 'like', $b . '%');
break; break;
case "inquiry_items_id": case "inquiry_items_id":
$query->where('it.id', '<>',$b); $query->where('q.inquiry_items_id', '<>', $b);
break; break;
} }
} }
$query->whereIn('q.status', [1,2,3]); $query->whereIn('q.status', [1, 2, 3]);
}); });
$list = $list->orderBy('id', 'desc')->paginate($limit, ['*'], 'page', $page)->toArray(); $list = $list->orderBy('id', 'desc')->paginate($limit, ['*'], 'page', $page)->toArray();
foreach ($list['data'] as $b=>&$v) { foreach ($list['data'] as $b => &$v) {
if ($v['currency'] == 1){ if ($v['currency'] == 1) {
$v["price_origin"] = "--"; $v["price_origin"] = "--";
}else{ } else {
$v["price_rmb"] = "--"; $v["price_rmb"] = "--";
} }
$v["currency"] = InquiryMap::$currency[$v["currency"]]; $v["currency"] = InquiryMap::$currency[$v["currency"]];
if ($v['delivery_time'] > 6) { if ($v['delivery_time'] > 6) {
$v['delivery_time'] = intval($v['delivery_time'] / 7).'周'; $v['delivery_time'] = intval($v['delivery_time'] / 7) . '周';
} else { } else {
$v['delivery_time'] = $v['delivery_time'].'天'; $v['delivery_time'] = $v['delivery_time'] . '天';
} }
$v["effect_days"] = $v["effect_days"]."天"; $v["effect_days"] = $v["effect_days"] . "天";
$v['price_rmb'] = $v['currency'] == 1 ? $v['price_rmb'] : ''; $v['price_rmb'] = $v['currency'] == 1 ? $v['price_rmb'] : '';
$v["digikey"] = "包装:".$v["raw_goods_packing"]; $v["digikey"] = "包装:" . $v["raw_goods_packing"];
} }
return [0, '获取成功', $list['data'], $list['total']]; return [0, '获取成功', $list['data'], $list['total']];
} }
// 处理数据 // 处理数据
public function handleData($data, $type) public function handleData($data, $type)
{ {
if (empty($data)) return $data; if (empty($data)) {
return $data;
}
foreach ($data as &$v) { foreach ($data as &$v) {
$v["inquiry_sn_origin"] = $v["inquiry_sn"]; $v["inquiry_sn_origin"] = $v["inquiry_sn"];
$currency_sign = array_get(Config('quote.currency_sign'), $v['currency'], '¥'); $currency_sign = array_get(Config('quote.currency_sign'), $v['currency'], '¥');
$v['currency_val'] = array_get(Config('quote.currency'), $v['currency'], '人民币'); $v['currency_val'] = array_get(Config('quote.currency'), $v['currency'], '人民币');
$v['price'] = $v['currency'] == 1 ? $currency_sign.$v['price_rmb'] : $currency_sign.$v['price_origin']; $v['price'] = $v['currency'] == 1 ? $currency_sign . $v['price_rmb'] : $currency_sign . $v['price_origin'];
$v['status_val'] = array_get(Config('quote.quote_status'), $v['status'], ''); $v['status_val'] = array_get(Config('quote.quote_status'), $v['status'], '');
if ($type == 3) { // 报价草稿 if ($type == 3) { // 报价草稿
if ($v['delivery_time'] > 6) { if ($v['delivery_time'] > 6) {
$v['delivery_time'] = intval($v['delivery_time'] / 7).'周'; $v['delivery_time'] = intval($v['delivery_time'] / 7) . '周';
} else { } else {
$v['delivery_time'] = $v['delivery_time'].'天'; $v['delivery_time'] = $v['delivery_time'] . '天';
} }
$v['price_rmb'] = $v['currency'] == 1 ? $v['price_rmb'] : ''; $v['price_rmb'] = $v['currency'] == 1 ? $v['price_rmb'] : '';
} }
$v["digikey"] = "包装".@$v["raw_goods_packing"]; $v["digikey"] = "包装" . @$v["raw_goods_packing"];
} }
return $data; return $data;
} }
// 通用查询
public function commonQuery($map, $input, $type=1)
{
$list = $this->from('quote as q')->join('inquiry_items as it', 'q.inquiry_items_id', '=', 'it.id');
if (isset($type) && $type == 4) {
$list = $list->leftJoin('inquiry as i', 'it.inquiry_id', '=', 'i.id');
$perm = new PermController;
$role = $perm->getUserRole($input['user_id'], $input['user_name']); // 用户角色
switch ($role) {
case 2: // 销售查看下级
$sub_sale_ids = $perm->getSubSaleId($input['user_id']);
$list = $list->whereIn('i.create_uid', $sub_sale_ids);
break;
case 3: // 销售查看自己
$list = $list->where('i.create_uid', $input['user_id']);
break;
}
}
$list = $list->where(function ($query) use ($map) {
if ($map['inquiry_sn']) {
$query->where('q.inquiry_sn', '=', $map['inquiry_sn']);
}
if ($map['goods_name']) {
$query->where('it.goods_name', 'like', $map['goods_name'] . '%');
}
if ($map['brand_name']) {
$query->where('it.brand_name', 'like', $map['brand_name'] . '%');
}
if ($map['quote_sn']) {
$query->where('q.quote_sn', '=', $map['quote_sn']);
}
if ($map['status']) {
$query->where('q.status', '=', $map['status']);
}
// 创建时间
if(!empty($map['start_time']) && !empty($map['end_time'])) {
$query->whereBetween('q.create_time', [$map['start_time'], $map['end_time']]);
} else if(!empty($map['start_time'])) {
$query->where('q.create_time', '>=', $map['start_time']);
} else if(!empty($map['end_time'])) {
$query->where('q.create_time', '<=', $map['end_time']);
}
});
if ($type == 1) return $list;
return $list->where('q.create_uid', $input['user_id'])->whereNotIn('q.status', [0, -1])->count();
}
// 撤销报价 // 撤销报价
public function cancel($input) public function cancel($input)
{ {
$id = $input['id']; $id = $input['id'];
$cancel_reason = $input['cancel_reason']; $cancel_reason = $input['cancel_reason'];
if (!$id) return [-1, '参数缺失']; if (!$id) {
return [-1, '参数缺失'];
}
try { try {
$quote_info = $this->find($id); $quote_info = $this->find($id);
if ($quote_info['status'] == -1) return [1, '撤销失败,该报价已撤销,请刷新页面查看']; if ($quote_info['status'] == -1) {
if ($quote_info['status'] == 3) return [1, '撤销失败,该报价已确认,请刷新页面查看']; return [1, '撤销失败,该报价已撤销,请刷新页面查看'];
}
if ($quote_info['status'] == 3) {
return [1, '撤销失败,该报价已确认,请刷新页面查看'];
}
$res = $this->where('id', $id)->update(['status' => -1, 'cancel_reason'=>$cancel_reason]); $res = $this->where('id', $id)->update(['status' => -1, 'cancel_reason' => $cancel_reason]);
// 需要删除当前用户的领取记录 // 需要删除当前用户的领取记录
$InquiryItemsAssignModel = new InquiryItemsAssignModel; $InquiryItemsAssignModel = new InquiryItemsAssignModel;
$InquiryItemsAssignModel->delAssign($quote_info['inquiry_items_id'], $quote_info['create_uid']); $InquiryItemsAssignModel->delAssign($quote_info['inquiry_items_id'], $quote_info['create_uid']);
// 查看当前询价明细的报价数量,若为0,则更新询价明细状态为待报价 // 查看当前询价明细的报价数量,若为0,则更新询价明细状态为待报价
$count = $this->where('inquiry_items_id', $quote_info['inquiry_items_id'])->where('status', '<>', -1)->count(); $count = $this->where('inquiry_items_id', $quote_info['inquiry_items_id'])->where('status', '<>',
-1)->count();
$InquiryItemsModel = new InquiryItemsModel; $InquiryItemsModel = new InquiryItemsModel;
if (!$count) { if (!$count) {
$InquiryItemsModel->where('id', $quote_info['inquiry_items_id'])->update(['status' => 1]); $InquiryItemsModel->where('id', $quote_info['inquiry_items_id'])->update(['status' => 1]);
} else { // 若不为0,且该询价明细状态为‘已选中’,则更新为已报价 } else { // 若不为0,且该询价明细状态为‘已选中’,则更新为已报价
$status = $InquiryItemsModel->where('inquiry_items_id', $quote_info['inquiry_items_id'])->value('status'); $status = $InquiryItemsModel->where('inquiry_items_id',
$quote_info['inquiry_items_id'])->value('status');
if ($status == 3) { if ($status == 3) {
$InquiryItemsModel->where('id', $quote_info['inquiry_items_id'])->update(['status' => 2]); $InquiryItemsModel->where('id', $quote_info['inquiry_items_id'])->update(['status' => 2]);
...@@ -294,11 +436,11 @@ class QuoteModel extends Model ...@@ -294,11 +436,11 @@ class QuoteModel extends Model
} }
$data = []; $data = [];
$data['types'] = 2; $data['types'] = 2;
$data['relation_id'] = $id; $data['relation_id'] = $id;
$data['relation_sn'] = $quote_info['quote_sn']; $data['relation_sn'] = $quote_info['quote_sn'];
$data['content'] = '撤销报价,撤销原因:'.$cancel_reason.',报价单号:'.$quote_info['quote_sn']; $data['content'] = '撤销报价,撤销原因:' . $cancel_reason . ',报价单号:' . $quote_info['quote_sn'];
$data['create_uid'] = $input['user_id']; $data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name']; $data['create_name'] = $input['user_name'];
OpLogModel::log($data); OpLogModel::log($data);
...@@ -307,8 +449,8 @@ class QuoteModel extends Model ...@@ -307,8 +449,8 @@ class QuoteModel extends Model
$InquiryModel = new InquiryModel; $InquiryModel = new InquiryModel;
$inquiry_uid = $InquiryModel->where('id', $quote_info['inquiry_id'])->value('create_uid'); // 询价人 $inquiry_uid = $InquiryModel->where('id', $quote_info['inquiry_id'])->value('create_uid'); // 询价人
$contents = $input['user_name'].'已撤销报价,请及时查看!报价单号:'.$quote_info['quote_sn'].',型号:'.$quote_info['goods_name']; $contents = $input['user_name'] . '已撤销报价,请及时查看!报价单号:' . $quote_info['quote_sn'] . ',型号:' . $quote_info['goods_name'];
$CommonModel = new CommonModel; $CommonModel = new CommonModel;
$CommonModel->send_msg($inquiry_uid, $contents); $CommonModel->send_msg($inquiry_uid, $contents);
} catch (Exception $e) { } catch (Exception $e) {
...@@ -317,79 +459,87 @@ class QuoteModel extends Model ...@@ -317,79 +459,87 @@ class QuoteModel extends Model
return [0, '撤销成功']; return [0, '撤销成功'];
} }
/* /*
* 批量新增报价 * 批量新增报价
* *
*/ */
public function addBatch($indata) public function addBatch($indata)
{ {
$input = json_decode($indata,true); $input = json_decode($indata, true);
if (!$input || count($input) == 0 ) return [1, '数据不得为空']; if (!$input || count($input) == 0) {
return [1, '数据不得为空'];
}
// 询价明细单状态 // 询价明细单状态
$inquiry_items_id = current($input)['inquiry_items_id']; $inquiry_items_id = current($input)['inquiry_items_id'];
$inquiry_items_status = InquiryItemsModel::where('id', $inquiry_items_id)->value('status'); $inquiry_items_status = InquiryItemsModel::where('id', $inquiry_items_id)->value('status');
if ($inquiry_items_status == -1) return [1, '新增报价失败,该询价明细已关闭']; if ($inquiry_items_status == -1) {
return [1, '新增报价失败,该询价明细已关闭'];
}
try{ try {
$con = DB::connection('rfq'); $con = DB::connection('rfq');
$con->beginTransaction(); $con->beginTransaction();
$QuoteModel = new QuoteModel(); $QuoteModel = new QuoteModel();
#批量获取品牌 #批量获取品牌
$param = []; $param = [];
foreach ($input as $a=>$b){ foreach ($input as $a => $b) {
array_push($param,["spu_name"=>strtoupper($b["goods_name"]),"brand_name"=>strtoupper($b["brand_name"])]); array_push($param,
["spu_name" => strtoupper($b["goods_name"]), "brand_name" => strtoupper($b["brand_name"])]);
} }
$classArr = (new SearchModel())->getClassName(\GuzzleHttp\json_encode($param)); $classArr = (new SearchModel())->getClassName(\GuzzleHttp\json_encode($param));
$CommonModel = new CommonModel; $CommonModel = new CommonModel;
#拼接批量插入明细 #拼接批量插入明细
foreach ($input as $k=>&$v){ foreach ($input as $k => &$v) {
if ($classArr !== false){ if ($classArr !== false) {
$classInfo = @$classArr[strtoupper($v["goods_name"])."#".strtoupper($v["brand_name"])]; $classInfo = @$classArr[strtoupper($v["goods_name"]) . "#" . strtoupper($v["brand_name"])];
if (count($classInfo) > 0){ if (count($classInfo) > 0) {
$v["class_id2"] = $classInfo["class_id2"]; $v["class_id2"] = $classInfo["class_id2"];
$v["class_id2_name"] = $classInfo["class_id2_name"]; $v["class_id2_name"] = $classInfo["class_id2_name"];
} }
} }
if ($v['currency'] != 1) { if ($v['currency'] != 1) {
$rate = $CommonModel->getRate($v['currency']); $rate = $CommonModel->getRate($v['currency']);
$v['price_rmb'] = $rate ? number_format($v['price_origin'] * $rate, 6) : 0; // 需计算汇率(排序用) $v['price_rmb'] = $rate ? number_format($v['price_origin'] * $rate, 6) : 0; // 需计算汇率(排序用)
} }
if (@$v["supplier_name"] == "猎芯自营"){ $quote_sn = $this->where([
$quote_sn = $this->where(["inquiry_items_id"=>$inquiry_items_id,"goods_id"=>$v["goods_id"],"supplier_name"=>"猎芯自营"])->value("quote_sn"); "inquiry_items_id" => $inquiry_items_id,
}else{ "raw_goods_sn" => $v["raw_goods_sn"]
$quote_sn = $this->where(["inquiry_items_id"=>$inquiry_items_id,"raw_goods_sn"=>$v["raw_goods_sn"]])->value("quote_sn"); ])->value("quote_sn");
} if ($quote_sn) { #存在更新
if ($quote_sn){ #存在更新
$v["create_time"] = time(); $v["create_time"] = time();
$this->where(["quote_sn"=>$quote_sn])->update($v) ; $this->where([
"inquiry_items_id" => $inquiry_items_id,
"raw_goods_sn" => $v["raw_goods_sn"]
])->update($v);
$currency_sign = array_get(Config('quote.currency_sign'), $v['currency'], '¥'); $currency_sign = array_get(Config('quote.currency_sign'), $v['currency'], '¥');
OpLogModel::log([ OpLogModel::log([
'types'=>2, 'types' => 2,
'relation_id'=>$inquiry_items_id, 'relation_id' => $inquiry_items_id,
'relation_sn'=>$quote_sn, 'relation_sn' => $quote_sn,
'content'=>'自动报价-更新,价格:'+($v["currency"] == "1" ? "¥".$v["price_rmb"] : $currency_sign.$v["price_origin"]), 'content' => '自动报价-更新,价格:' + ($v["currency"] == "1" ? "¥" . $v["price_rmb"] : $currency_sign . $v["price_origin"]),
'create_name'=>"系统", 'create_name' => "系统",
]); ]);
}else{ } else {
$v["quote_sn"] = createSn($QuoteModel, 'quote_sn', 'B'); $v["quote_sn"] = createSn($QuoteModel, 'quote_sn', 'B');
$v["create_time"] = time(); $v["create_time"] = time();
$v["update_time"] = time(); $v["update_time"] = time();
$this->insert($v); $this->insert($v);
OpLogModel::log([ OpLogModel::log([
'types'=>2, 'types' => 2,
'relation_id'=>$inquiry_items_id, 'relation_id' => $inquiry_items_id,
'relation_sn'=>$v["quote_sn"], 'relation_sn' => $v["quote_sn"],
'content'=>'自动报价-插入', 'content' => '自动报价-插入',
'create_name'=>"系统", 'create_name' => "系统",
]); ]);
} }
} }
...@@ -411,10 +561,10 @@ class QuoteModel extends Model ...@@ -411,10 +561,10 @@ class QuoteModel extends Model
$contents = '您有新报价,请及时查看!'; $contents = '您有新报价,请及时查看!';
$CommonModel->send_msg($inquiry_uid, $contents); $CommonModel->send_msg($inquiry_uid, $contents);
return [0,"新增成功"]; return [0, "新增成功"];
}catch (\Exception $e) { } catch (\Exception $e) {
$con->rollBack(); $con->rollBack();
return [1001,"新增失败".$e->getMessage()]; return [1001, "新增失败" . $e->getMessage()];
} }
} }
...@@ -422,17 +572,20 @@ class QuoteModel extends Model ...@@ -422,17 +572,20 @@ class QuoteModel extends Model
public function add($input) public function add($input)
{ {
$quote_info = $input['quote_info']; $quote_info = $input['quote_info'];
if (!$quote_info) {
return [1, '报价数据不存在'];
}
if (!$quote_info) return [1, '报价数据不存在']; try {
try {
// 询价明细单状态 // 询价明细单状态
$inquiry_items_status = InquiryItemsModel::where('id', $quote_info['inquiry_items_id'])->value('status'); $inquiry_items_status = InquiryItemsModel::where('id', $quote_info['inquiry_items_id'])->value('status');
if ($inquiry_items_status == -1) return [1, '新增报价失败,该询价明细已关闭']; if ($inquiry_items_status == -1) {
return [1, '新增报价失败,该询价明细已关闭'];
}
$brand = json_decode($quote_info['brand_s'], true); $brand = json_decode($quote_info['brand_s'], true);
$quote_info['brand_id'] = $brand[0]['brand_id']; $quote_info['brand_id'] = $brand[0]['brand_id'];
$quote_info['brand_name'] = $brand[0]['brand_name']; $quote_info['brand_name'] = $brand[0]['brand_name'];
unset($quote_info['brand_s']); unset($quote_info['brand_s']);
...@@ -452,21 +605,23 @@ class QuoteModel extends Model ...@@ -452,21 +605,23 @@ class QuoteModel extends Model
$SearchModel = new SearchModel; $SearchModel = new SearchModel;
$res = $SearchModel->getClassName(json_encode([$params])); // 获取型号分类 $res = $SearchModel->getClassName(json_encode([$params])); // 获取型号分类
if (isset($res[$params['spu_name']."#".strtoupper($params["brand_name"])])) { if (isset($res[$params['spu_name'] . "#" . strtoupper($params["brand_name"])])) {
$classInfo = $res[$params['spu_name']."#".strtoupper($params["brand_name"])]; $classInfo = $res[$params['spu_name'] . "#" . strtoupper($params["brand_name"])];
$quote_info['class_id2'] = $classInfo['class_id2']; $quote_info['class_id2'] = $classInfo['class_id2'];
$quote_info['class_id2_name'] = $classInfo['class_id2_name']; $quote_info['class_id2_name'] = $classInfo['class_id2_name'];
} }
$quote_info['status'] = 1; // 已报价 $quote_info['status'] = 1; // 已报价
$quote_info['create_uid'] = $input['user_id']; $quote_info['create_uid'] = $input['user_id'];
$quote_info['create_name'] = $input['user_name']; $quote_info['create_name'] = $input['user_name'];
$quote_info['delivery_time'] = $quote_info['delivery_time_unit'] == '天' ? $quote_info['delivery_time'] : $quote_info['delivery_time'] * 7; $quote_info['delivery_time'] = $quote_info['delivery_time_unit'] == '天' ? $quote_info['delivery_time'] : $quote_info['delivery_time'] * 7;
unset($quote_info['delivery_time_unit']); unset($quote_info['delivery_time_unit']);
$res = $this->create($quote_info); $res = $this->create($quote_info);
if ($res === false) return [2, '新增报价失败']; if ($res === false) {
return [2, '新增报价失败'];
}
if ($inquiry_items_status == 1) { // 询价明细为待报价时,更新为已报价 if ($inquiry_items_status == 1) { // 询价明细为待报价时,更新为已报价
InquiryItemsModel::where('id', $quote_info['inquiry_items_id'])->update(['status' => 2]); InquiryItemsModel::where('id', $quote_info['inquiry_items_id'])->update(['status' => 2]);
...@@ -476,7 +631,7 @@ class QuoteModel extends Model ...@@ -476,7 +631,7 @@ class QuoteModel extends Model
$InquiryItemsAssignModel = new InquiryItemsAssignModel; $InquiryItemsAssignModel = new InquiryItemsAssignModel;
$map = []; $map = [];
$map['inquiry_items_id'] = $quote_info['inquiry_items_id']; $map['inquiry_items_id'] = $quote_info['inquiry_items_id'];
$map['assign_uid'] = $input['user_id']; $map['assign_uid'] = $input['user_id'];
$assign_id = $InquiryItemsAssignModel->where($map)->value('id'); $assign_id = $InquiryItemsAssignModel->where($map)->value('id');
if (!$assign_id) { if (!$assign_id) {
...@@ -487,11 +642,11 @@ class QuoteModel extends Model ...@@ -487,11 +642,11 @@ class QuoteModel extends Model
RedisDB::sadd('frq_quote_urge', $quote_info['inquiry_items_id']); RedisDB::sadd('frq_quote_urge', $quote_info['inquiry_items_id']);
$data = []; $data = [];
$data['types'] = 2; $data['types'] = 2;
$data['relation_id'] = $res->id; $data['relation_id'] = $res->id;
$data['relation_sn'] = $quote_info['quote_sn']; $data['relation_sn'] = $quote_info['quote_sn'];
$data['content'] = '新增报价,报价单号:'.$quote_info['quote_sn']; $data['content'] = '新增报价,报价单号:' . $quote_info['quote_sn'];
$data['create_uid'] = $input['user_id']; $data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name']; $data['create_name'] = $input['user_name'];
OpLogModel::log($data); OpLogModel::log($data);
...@@ -500,9 +655,10 @@ class QuoteModel extends Model ...@@ -500,9 +655,10 @@ class QuoteModel extends Model
$InquiryModel = new InquiryModel; $InquiryModel = new InquiryModel;
$inquiry_uid = $InquiryModel->where('id', $quote_info['inquiry_id'])->value('create_uid'); // 询价人 $inquiry_uid = $InquiryModel->where('id', $quote_info['inquiry_id'])->value('create_uid'); // 询价人
$price = array_get(Config('quote.currency_sign'), $quote_info['currency'], '¥').$quote_info['price_origin']; $price = array_get(Config('quote.currency_sign'), $quote_info['currency'],
'¥') . $quote_info['price_origin'];
$contents = $input['user_name'].'已报价,请及时查看!报价单号:'.$quote_info['quote_sn'].',型号:'.$quote_info['goods_name'].',单价:'.$price; $contents = $input['user_name'] . '已报价,请及时查看!报价单号:' . $quote_info['quote_sn'] . ',型号:' . $quote_info['goods_name'] . ',单价:' . $price;
$CommonModel->send_msg($inquiry_uid, $contents); $CommonModel->send_msg($inquiry_uid, $contents);
} catch (Exception $e) { } catch (Exception $e) {
return [1, $e->getMessage()]; return [1, $e->getMessage()];
...@@ -515,42 +671,50 @@ class QuoteModel extends Model ...@@ -515,42 +671,50 @@ class QuoteModel extends Model
{ {
// 询价明细单状态 // 询价明细单状态
$inquiry_items_status = InquiryItemsModel::where('id', $input['inquiry_items_id'])->value('status'); $inquiry_items_status = InquiryItemsModel::where('id', $input['inquiry_items_id'])->value('status');
if ($inquiry_items_status == -1) return [1, '导入报价失败,该询价明细已关闭']; if ($inquiry_items_status == -1) {
return [1, '导入报价失败,该询价明细已关闭'];
}
$file = $_FILES['file']; // $request->file('file') $file = $_FILES['file']; // $request->file('file')
$filePath = $file['tmp_name']; // 临时路径 $filePath = $file['tmp_name']; // 临时路径
// 获取导入内容 // 获取导入内容
$excel = []; $excel = [];
Excel::load($filePath, function($reader) use(&$excel){ Excel::load($filePath, function ($reader) use (&$excel) {
$data = $reader->getSheet(0); $data = $reader->getSheet(0);
$excel = $data->toArray(); $excel = $data->toArray();
}, 'GBK'); }, 'GBK');
if (empty($excel)) return [1, '未获取到模板内容,请检查模板内容数据格式']; if (empty($excel)) {
return [1, '未获取到模板内容,请检查模板内容数据格式'];
}
$map = Config('quote.import_quote_map'); $map = Config('quote.import_quote_map');
if (count($map) != count($excel[0])) return [2, '导入模板错误']; if (count($map) != count($excel[2])) {
return [2, '导入模板错误'];
}
$excel = $this->handleExcelData($excel, $map); // 处理数据 $excel = $this->handleExcelData($excel, $map); // 处理数据
$valid = $this->excelValid($excel); // 验证excel内容 $valid = $this->excelValid($excel); // 验证excel内容
if ($valid[0] != 0) return $valid; if ($valid[0] != 0) {
return $valid;
}
array_shift($excel); // 删除第一行 array_shift($excel); // 删除第一行
// 插入到报价表 -- 状态:草稿 // 插入到报价表 -- 状态:草稿
try { try {
$ApiController = new ApiController; $ApiController = new ApiController;
$CommonModel = new CommonModel; $CommonModel = new CommonModel;
foreach ($excel as &$v) { foreach ($excel as &$v) {
if ($v['currency'] == '人民币') { if ($v['currency'] == '人民币') {
$v['currency'] = 1; $v['currency'] = 1;
} else { } else {
$rate = $CommonModel->getRate($v['currency']); // 获取汇率 $rate = $CommonModel->getRate($v['currency']); // 获取汇率
$v['currency'] = array_search($v['currency'], Config('quote.currency')); $v['currency'] = array_search($v['currency'], Config('quote.currency'));
$v['price_rmb'] = $rate ? number_format($v['price_origin'] * $rate, 6) : 0; $v['price_rmb'] = $rate ? number_format($v['price_origin'] * $rate, 6) : 0;
} }
...@@ -561,26 +725,28 @@ class QuoteModel extends Model ...@@ -561,26 +725,28 @@ class QuoteModel extends Model
$v['delivery_time'] = intval(str_replace("天", "", $v['delivery_time'])); $v['delivery_time'] = intval(str_replace("天", "", $v['delivery_time']));
} }
$v['quote_sn'] = $ApiController->createSn($this, 'quote_sn', 'B'); $v['quote_sn'] = $ApiController->createSn($this, 'quote_sn', 'B');
$v['inquiry_id'] = $input['inquiry_id']; $v['inquiry_id'] = $input['inquiry_id'];
$v['inquiry_sn'] = $input['inquiry_sn']; $v['inquiry_sn'] = $input['inquiry_sn'];
$v['inquiry_items_id'] = $input['inquiry_items_id']; $v['inquiry_items_id'] = $input['inquiry_items_id'];
$v['status'] = 0; $v['status'] = 0;
$v['create_uid'] = $input['user_id']; $v['create_uid'] = $input['user_id'];
$v['create_name'] = $input['user_name']; $v['create_name'] = $input['user_name'];
$v['create_time'] = time(); $v['create_time'] = time();
$v['update_time'] = time(); $v['update_time'] = time();
} }
$res = $this->insert($excel); // 批量插入 $res = $this->insert($excel); // 批量插入
if ($res === false) return [1, '添加报价草稿失败']; if ($res === false) {
return [1, '添加报价草稿失败'];
}
$data = []; $data = [];
$data['types'] = 2; $data['types'] = 2;
$data['relation_id'] = $input['inquiry_items_id']; $data['relation_id'] = $input['inquiry_items_id'];
$data['relation_sn'] = ''; $data['relation_sn'] = '';
$data['content'] = '批量导入报价'; $data['content'] = '批量导入报价';
$data['create_uid'] = $input['user_id']; $data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name']; $data['create_name'] = $input['user_name'];
OpLogModel::log($data); OpLogModel::log($data);
...@@ -594,8 +760,8 @@ class QuoteModel extends Model ...@@ -594,8 +760,8 @@ class QuoteModel extends Model
// 处理导入内容---赋上字段 // 处理导入内容---赋上字段
public function handleExcelData($excel, $map) public function handleExcelData($excel, $map)
{ {
$goods_info = array_map(function($val) use($map) { $goods_info = array_map(function ($val) use ($map) {
foreach ($val as $k=>$v) { foreach ($val as $k => $v) {
$tmp[$map[$k]] = trim($v); $tmp[$map[$k]] = trim($v);
} }
...@@ -610,10 +776,12 @@ class QuoteModel extends Model ...@@ -610,10 +776,12 @@ class QuoteModel extends Model
{ {
$count = count($excel); $count = count($excel);
if ($count == 1) return [3, '未填写报价信息']; if ($count == 3) {
return [3, '未填写报价信息'];
}
// 获取excel菜单栏必填项 // 获取excel菜单栏必填项
$required = array_filter($excel[0], function($v) { $required = array_filter($excel[0], function ($v) {
return strpos($v, '*') === false ? false : true; return strpos($v, '*') === false ? false : true;
}); });
...@@ -621,14 +789,14 @@ class QuoteModel extends Model ...@@ -621,14 +789,14 @@ class QuoteModel extends Model
$CommonModel = new CommonModel(); $CommonModel = new CommonModel();
$err = []; // 提示信息 $err = []; // 提示信息
array_walk($excel, function($val, $key) use($CommonModel, $required, $required_keys, &$err) { array_walk($excel, function ($val, $key) use ($CommonModel, $required, $required_keys, &$err) {
// 跳过第一条 // 跳过第一条
if ($key != 0) { if ($key != 0) {
if ($val['goods_name']) { // 判断型号是否存在 if ($val['goods_name']) { // 判断型号是否存在
$res = $CommonModel->isGoodsNameExists($val['goods_name']); $res = $CommonModel->isGoodsNameExists($val['goods_name']);
if (!$res) { if (!$res) {
$err[] = '第'.($key+1).'行,型号'.$val['goods_name'].'不存在于系统'; $err[] = '第' . ($key + 1) . '行,型号' . $val['goods_name'] . '不存在于系统';
return; return;
} }
} }
...@@ -637,7 +805,7 @@ class QuoteModel extends Model ...@@ -637,7 +805,7 @@ class QuoteModel extends Model
$res = $CommonModel->isBrandNameExists($val['brand_name']); $res = $CommonModel->isBrandNameExists($val['brand_name']);
if (!$res) { if (!$res) {
$err[] = '第'.($key+1).'行,品牌'.$val['brand_name'].'不存在于系统'; $err[] = '第' . ($key + 1) . '行,品牌' . $val['brand_name'] . '不存在于系统';
return; return;
} }
} }
...@@ -646,62 +814,62 @@ class QuoteModel extends Model ...@@ -646,62 +814,62 @@ class QuoteModel extends Model
$res = $CommonModel->isSupplierNameExists($val['supplier_name']); $res = $CommonModel->isSupplierNameExists($val['supplier_name']);
if (!$res) { if (!$res) {
$err[] = '第'.($key+1).'行,供应商'.$val['supplier_name'].'不存在于系统'; $err[] = '第' . ($key + 1) . '行,供应商' . $val['supplier_name'] . '不存在于系统';
return; return;
} }
} }
if ($val['currency'] != '人民币' && $val['price_origin'] <= 0) { if ($val['currency'] != '人民币' && $val['price_origin'] <= 0) {
$err[] = '第'.($key+1).'行,单价等于或小于0'; $err[] = '第' . ($key + 1) . '行,单价等于或小于0';
return; return;
} }
if ($val['currency'] != '人民币' && !preg_match('/^\d{0,9}(\.\d{0,6})?$/', $val['price_origin'])) { if ($val['currency'] != '人民币' && !preg_match('/^\d{0,9}(\.\d{0,6})?$/', $val['price_origin'])) {
$err[] = '第'.($key+1).'行,单价格式错误'; $err[] = '第' . ($key + 1) . '行,单价格式错误';
return; return;
} }
if ($val['currency'] == '人民币' && $val['price_rmb'] <= 0) { if ($val['currency'] == '人民币' && $val['price_rmb'] <= 0) {
$err[] = '第'.($key+1).'行,含税价格等于或小于0'; $err[] = '第' . ($key + 1) . '行,含税价格等于或小于0';
return; return;
} }
if ($val['currency'] == '人民币' && !preg_match('/^\d{0,9}(\.\d{0,6})?$/', $val['price_rmb'])) { if ($val['currency'] == '人民币' && !preg_match('/^\d{0,9}(\.\d{0,6})?$/', $val['price_rmb'])) {
$err[] = '第'.($key+1).'行,含税价格格式错误'; $err[] = '第' . ($key + 1) . '行,含税价格格式错误';
return; return;
} }
if (!preg_match('/^\d{1,9}$/', intval($val['quote_number']))) { if (!preg_match('/^\d{1,9}$/', intval($val['quote_number']))) {
$err[] = '第'.($key+1).'行,报价数量格式错误,请填写整数'; $err[] = '第' . ($key + 1) . '行,报价数量格式错误,请填写整数';
return; return;
} }
if (intval($val['quote_number']) <= 0) { if (intval($val['quote_number']) <= 0) {
$err[] = '第'.($key+1).'行,报价数量等于或小于0'; $err[] = '第' . ($key + 1) . '行,报价数量等于或小于0';
return; return;
} }
if (strpos($val['delivery_time'], "天") === false && strpos($val['delivery_time'], "周") === false) { if (strpos($val['delivery_time'], "天") === false && strpos($val['delivery_time'], "周") === false) {
$err[] = '第'.($key+1).'行,交期输入有误,请以天或周结尾'; $err[] = '第' . ($key + 1) . '行,交期输入有误,请以天或周结尾';
return; return;
} }
$delivery_time_day = intval(str_replace("天", "", $val['delivery_time'])); $delivery_time_day = intval(str_replace("天", "", $val['delivery_time']));
if ($delivery_time_day > 6) { if ($delivery_time_day > 6) {
$err[] = '第'.($key+1).'行,交期输入有误,单位为天时,不能大于6,请按周计数'; $err[] = '第' . ($key + 1) . '行,交期输入有误,单位为天时,不能大于6,请按周计数';
return; return;
} }
$delivery_time_week = intval(str_replace("周", "", $val['delivery_time'])); $delivery_time_week = intval(str_replace("周", "", $val['delivery_time']));
if ($delivery_time_week > 108) { if ($delivery_time_week > 108) {
$err[] = '第'.($key+1).'行,交期输入有误,单位为周时,不能大于108周'; $err[] = '第' . ($key + 1) . '行,交期输入有误,单位为周时,不能大于108周';
return; return;
} }
foreach ($val as $k=>$v) { foreach ($val as $k => $v) {
if (in_array($k, $required_keys)) { if (in_array($k, $required_keys)) {
if (empty($v)) { // 若必填项值为空,返回提示信息 if (empty($v)) { // 若必填项值为空,返回提示信息
$err[] = $required[$k].'列,第'.($key+1).'行不能为空'; $err[] = $required[$k] . '列,第' . ($key + 1) . '行不能为空';
break; break;
} }
} }
...@@ -709,7 +877,9 @@ class QuoteModel extends Model ...@@ -709,7 +877,9 @@ class QuoteModel extends Model
} }
}); });
if (!empty($err)) return [1, implode('; ', $err)]; if (!empty($err)) {
return [1, implode('; ', $err)];
}
return [0, '验证成功']; return [0, '验证成功'];
} }
...@@ -719,29 +889,31 @@ class QuoteModel extends Model ...@@ -719,29 +889,31 @@ class QuoteModel extends Model
{ {
$id = $input['id']; $id = $input['id'];
if (!$id) return [-1, '参数缺失']; if (!$id) {
return [-1, '参数缺失'];
}
try { try {
$draft_info = $this->find($id); $draft_info = $this->find($id);
if ($draft_info['currency'] == 1) { if ($draft_info['currency'] == 1) {
$currency_val = 'RMB'; $currency_val = 'RMB';
$price = ',单价:'.$draft_info['price_origin'].',含税单价:'.$draft_info['price_rmb']; $price = ',单价:' . $draft_info['price_origin'] . ',含税单价:' . $draft_info['price_rmb'];
} else { } else {
$currency_val = 'USD'; $currency_val = 'USD';
$price = ',单价:'.$draft_info['price_origin']; $price = ',单价:' . $draft_info['price_origin'];
} }
$content = '删除报价草稿,草稿报价型号:'.$draft_info['goods_name'].',品牌:'.$draft_info['brand_name'].',供应商:'.$draft_info['supplier_name'].',币种:'.$currency_val.$price; $content = '删除报价草稿,草稿报价型号:' . $draft_info['goods_name'] . ',品牌:' . $draft_info['brand_name'] . ',供应商:' . $draft_info['supplier_name'] . ',币种:' . $currency_val . $price;
$res = $this->where('id', $id)->delete(); $res = $this->where('id', $id)->delete();
$data = []; $data = [];
$data['types'] = 2; $data['types'] = 2;
$data['relation_id'] = $input['inquiry_items_id']; $data['relation_id'] = $input['inquiry_items_id'];
$data['relation_sn'] = ''; $data['relation_sn'] = '';
$data['content'] = $content; $data['content'] = $content;
$data['create_uid'] = $input['user_id']; $data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name']; $data['create_name'] = $input['user_name'];
OpLogModel::log($data); OpLogModel::log($data);
...@@ -755,71 +927,82 @@ class QuoteModel extends Model ...@@ -755,71 +927,82 @@ class QuoteModel extends Model
// 批量提交报价 // 批量提交报价
public function batchQuote($input) public function batchQuote($input)
{ {
if (!$input['inquiry_items_id']) return [-1, '参数缺失']; if (empty($input['inquiry_items_ids'])) {
return [-1, '参数缺失'];
}
// 询价明细单状态 $inquiry_items_ids = explode(",", $input['inquiry_items_ids']);
$inquiry_items_status = InquiryItemsModel::where('id', $input['inquiry_items_id'])->value('status'); $inquiry_items_ids = array_unique(array_values(array_filter($inquiry_items_ids)));
if ($inquiry_items_status == -1) return [1, '批量提交报价失败,该询价明细已关闭'];
try { try {
$map = []; foreach ($inquiry_items_ids as $inquiry_items_id){
$map['inquiry_items_id'] = $input['inquiry_items_id']; // 询价明细单状态
$map['status'] = 0; // 草稿状态 $inquiry_items_status = InquiryItemsModel::where('id', $inquiry_items_id)->value('status');
if ($inquiry_items_status == -1) {
return [1, '批量提交报价失败,该询价明细已关闭'];
}
$count = $this->where($map)->count(); $map = [];
$map['inquiry_items_id'] = $inquiry_items_id;
$map['status'] = 0; // 草稿状态
if (!$count) return [1, '当前没有导入报价单']; $count = $this->where($map)->count();
$quote_info = $this->where($map)->get()->toArray(); // 获取草稿信息 if (!$count) {
return [1, '当前没有导入报价单'];
}
$this->where($map)->update(['status' => 1]); $quote_info = $this->where($map)->get()->toArray(); // 获取草稿信息
if ($inquiry_items_status == 1) { // 询价明细为待报价时,更新为已报价 $this->where($map)->update(['status' => 1]);
InquiryItemsModel::where('id', $input['inquiry_items_id'])->update(['status' => 2]);
}
// 从询价池过来的,自动领取 if ($inquiry_items_status == 1) { // 询价明细为待报价时,更新为已报价
$InquiryItemsAssignModel = new InquiryItemsAssignModel; InquiryItemsModel::where('id', $inquiry_items_id)->update(['status' => 2]);
$where = []; }
$where['inquiry_items_id'] = $input['inquiry_items_id'];
$where['assign_uid'] = $input['user_id'];
$assign_id = $InquiryItemsAssignModel->where($where)->value('id');
if (!$assign_id) { // 从询价池过来的,自动领取
$InquiryItemsAssignModel->assign($input['inquiry_items_id'], $input['user_id']); $InquiryItemsAssignModel = new InquiryItemsAssignModel;
} $where = [];
$where['inquiry_items_id'] = $inquiry_items_id;
$where['assign_uid'] = $input['user_id'];
$assign_id = $InquiryItemsAssignModel->where($where)->value('id');
// 通知询价人,放入redis if (!$assign_id) {
RedisDB::sadd('frq_quote_urge', $input['inquiry_items_id']); $InquiryItemsAssignModel->assign($inquiry_items_id, $input['user_id']);
}
// 推送消息 // 通知询价人,放入redis
$InquiryModel = new InquiryModel; RedisDB::sadd('frq_quote_urge', $inquiry_items_id);
$inquiry_uid = $InquiryModel->where('id', $quote_info[0]['inquiry_id'])->value('create_uid'); // 询价人
$contents = $input['user_name'].'已报价,请及时查看!'; // 推送消息
$InquiryModel = new InquiryModel;
$inquiry_uid = $InquiryModel->where('id', $quote_info[0]['inquiry_id'])->value('create_uid'); // 询价人
foreach ($quote_info as $v) { $contents = $input['user_name'] . '已报价,请及时查看!';
$data = [];
$data['types'] = 2;
$data['relation_id'] = $v['id'];
$data['relation_sn'] = '';
$data['content'] = '批量提交报价,报价单号:'.$v['quote_sn'];
$data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name'];
OpLogModel::log($data); foreach ($quote_info as $v) {
$data = [];
$data['types'] = 2;
$data['relation_id'] = $v['id'];
$data['relation_sn'] = '';
$data['content'] = '批量提交报价,报价单号:' . $v['quote_sn'];
$data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name'];
if ($v['currency'] == 1) { OpLogModel::log($data);
$price = '¥'.$v['price_rmb'];
} else { if ($v['currency'] == 1) {
$price = '$'.$v['price_origin']; $price = '¥' . $v['price_rmb'];
} else {
$price = '$' . $v['price_origin'];
}
$contents .= '报价单号:' . $v['quote_sn'] . ',单价:' . $price . ';';
} }
$contents .= '报价单号:'.$v['quote_sn'].',单价:'.$price.';'; $CommonModel = new CommonModel;
$CommonModel->send_msg($inquiry_uid, trim($contents, ';'));
} }
$CommonModel = new CommonModel;
$CommonModel->send_msg($inquiry_uid, trim($contents, ';'));
} catch (Exception $e) { } catch (Exception $e) {
return [1, $e->getMessage()]; return [1, $e->getMessage()];
} }
...@@ -830,13 +1013,19 @@ class QuoteModel extends Model ...@@ -830,13 +1013,19 @@ class QuoteModel extends Model
// 修改报价 // 修改报价
public function edit($input) public function edit($input)
{ {
if (!$input['quote_id']) return [-1, '参数缺失']; if (!$input['quote_id']) {
return [-1, '参数缺失'];
}
try { try {
$info = $this->find($input['quote_id']); $info = $this->find($input['quote_id']);
if ($info['status'] == -1) return [1, '修改失败,报价已撤销,请刷新查看']; if ($info['status'] == -1) {
if ($info['status'] == 3) return [1, '修改失败,报价已确认,请刷新查看']; return [1, '修改失败,报价已撤销,请刷新查看'];
}
if ($info['status'] == 3) {
return [1, '修改失败,报价已确认,请刷新查看'];
}
$quote_info = $input['quote_info']; $quote_info = $input['quote_info'];
...@@ -850,26 +1039,26 @@ class QuoteModel extends Model ...@@ -850,26 +1039,26 @@ class QuoteModel extends Model
} }
$brand = json_decode($quote_info['brand_s'], true); $brand = json_decode($quote_info['brand_s'], true);
$quote_info['brand_id'] = $brand[0]['brand_id']; $quote_info['brand_id'] = $brand[0]['brand_id'];
$quote_info['brand_name'] = $brand[0]['brand_name']; $quote_info['brand_name'] = $brand[0]['brand_name'];
unset($quote_info['brand_s']); unset($quote_info['brand_s']);
$params = []; $params = [];
$params['spu_name'] = strtoupper($quote_info['goods_name']); $params['spu_name'] = strtoupper($quote_info['goods_name']);
$params['brand_name'] = $quote_info['brand_name']; $params['brand_name'] = $quote_info['brand_name'];
$SearchModel = new SearchModel; $SearchModel = new SearchModel;
$res = $SearchModel->getClassName(json_encode([$params])); // 获取型号分类 $res = $SearchModel->getClassName(json_encode([$params])); // 获取型号分类
if (isset($res[$params['spu_name']."#".strtoupper($params["brand_name"])])) { if (isset($res[$params['spu_name'] . "#" . strtoupper($params["brand_name"])])) {
$classInfo = $res[$params['spu_name']."#".strtoupper($params["brand_name"])]; $classInfo = $res[$params['spu_name'] . "#" . strtoupper($params["brand_name"])];
$quote_info['class_id2'] = $classInfo['class_id2']; $quote_info['class_id2'] = $classInfo['class_id2'];
$quote_info['class_id2_name'] = $classInfo['class_id2_name']; $quote_info['class_id2_name'] = $classInfo['class_id2_name'];
} }
$delivery_time = $quote_info['delivery_time'].$quote_info['delivery_time_unit']; $delivery_time = $quote_info['delivery_time'] . $quote_info['delivery_time_unit'];
$quote_info['delivery_time'] = $quote_info['delivery_time_unit'] == '天' ? $quote_info['delivery_time'] : $quote_info['delivery_time'] * 7; $quote_info['delivery_time'] = $quote_info['delivery_time_unit'] == '天' ? $quote_info['delivery_time'] : $quote_info['delivery_time'] * 7;
unset($quote_info['delivery_time_unit']); unset($quote_info['delivery_time_unit']);
...@@ -877,19 +1066,20 @@ class QuoteModel extends Model ...@@ -877,19 +1066,20 @@ class QuoteModel extends Model
$this->where('id', $input['quote_id'])->update($quote_info); $this->where('id', $input['quote_id'])->update($quote_info);
if ($quote_info['currency'] == 1) { if ($quote_info['currency'] == 1) {
$price_log = '含税单价:¥'.$quote_info['price_rmb']; $price_log = '含税单价:¥' . $quote_info['price_rmb'];
} else { } else {
$price_log = '单价:'.array_get(Config('quote.currency_sign'), $quote_info['currency'], '¥').$quote_info['price_origin']; $price_log = '单价:' . array_get(Config('quote.currency_sign'), $quote_info['currency'],
'¥') . $quote_info['price_origin'];
} }
$content = '修改报价,报价单号:'.$input['quote_sn'].',型号:'.$quote_info['goods_name'].','.$price_log.',批次:'.$quote_info['batch'].',货期:'.$delivery_time; $content = '修改报价,报价单号:' . $input['quote_sn'] . ',型号:' . $quote_info['goods_name'] . ',' . $price_log . ',批次:' . $quote_info['batch'] . ',货期:' . $delivery_time;
$data = []; $data = [];
$data['types'] = 2; $data['types'] = 2;
$data['relation_id'] = $input['quote_id']; $data['relation_id'] = $input['quote_id'];
$data['relation_sn'] = $input['quote_sn']; $data['relation_sn'] = $input['quote_sn'];
$data['content'] = $content; $data['content'] = $content;
$data['create_uid'] = $input['user_id']; $data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name']; $data['create_name'] = $input['user_name'];
OpLogModel::log($data); OpLogModel::log($data);
...@@ -898,7 +1088,7 @@ class QuoteModel extends Model ...@@ -898,7 +1088,7 @@ class QuoteModel extends Model
$InquiryModel = new InquiryModel; $InquiryModel = new InquiryModel;
$inquiry_uid = $InquiryModel->where('id', $input['inquiry_id'])->value('create_uid'); // 询价人 $inquiry_uid = $InquiryModel->where('id', $input['inquiry_id'])->value('create_uid'); // 询价人
$contents = $input['user_name'].$content; $contents = $input['user_name'] . $content;
$CommonModel->send_msg($inquiry_uid, $contents); $CommonModel->send_msg($inquiry_uid, $contents);
} catch (Exception $e) { } catch (Exception $e) {
...@@ -915,40 +1105,40 @@ class QuoteModel extends Model ...@@ -915,40 +1105,40 @@ class QuoteModel extends Model
$curr_zero_time = strtotime(date('Y-m-d', time())); // 当日0点 $curr_zero_time = strtotime(date('Y-m-d', time())); // 当日0点
switch ($input['time_day']) { switch ($input['time_day']) {
case 1: case 1:
for ($i = 0; $i < 24; $i++) { for ($i = 0; $i < 24; $i++) {
$start_time = $curr_zero_time + $i * 3600; $start_time = $curr_zero_time + $i * 3600;
$end_time = $start_time + 3600; $end_time = $start_time + 3600;
$data['today_quote'][] = $this->getTodayQoutCount($input, $start_time, $end_time); $data['today_quote'][] = $this->getTodayQoutCount($input, $start_time, $end_time);
$data['today_no_quote'][] = $this->getTodayNoQoutCount($input, $start_time, $end_time); $data['today_no_quote'][] = $this->getTodayNoQoutCount($input, $start_time, $end_time);
$data['x_axis_data'][] = $i.'点'; $data['x_axis_data'][] = $i . '点';
} }
break; break;
case 7: case 7:
for ($i = 7; $i > 0; $i--) { for ($i = 7; $i > 0; $i--) {
$start_time = $curr_zero_time - $i * 86400; $start_time = $curr_zero_time - $i * 86400;
$end_time = $start_time + 86399; $end_time = $start_time + 86399;
$data['today_quote'][] = $this->getTodayQoutCount($input, $start_time, $end_time); $data['today_quote'][] = $this->getTodayQoutCount($input, $start_time, $end_time);
$data['today_no_quote'][] = $this->getTodayNoQoutCount($input, $start_time, $end_time); $data['today_no_quote'][] = $this->getTodayNoQoutCount($input, $start_time, $end_time);
$data['x_axis_data'][] = date('Y-m-d', $curr_zero_time - $i * 86400); $data['x_axis_data'][] = date('Y-m-d', $curr_zero_time - $i * 86400);
} }
break; break;
case 30: case 30:
for ($i = 30; $i > 0; $i--) { for ($i = 30; $i > 0; $i--) {
$start_time = $curr_zero_time - $i * 86400; $start_time = $curr_zero_time - $i * 86400;
$end_time = $start_time + 86399; $end_time = $start_time + 86399;
$data['today_quote'][] = $this->getTodayQoutCount($input, $start_time, $end_time); $data['today_quote'][] = $this->getTodayQoutCount($input, $start_time, $end_time);
$data['today_no_quote'][] = $this->getTodayNoQoutCount($input, $start_time, $end_time); $data['today_no_quote'][] = $this->getTodayNoQoutCount($input, $start_time, $end_time);
$data['x_axis_data'][] = date('Y-m-d', $curr_zero_time - $i * 86400); $data['x_axis_data'][] = date('Y-m-d', $curr_zero_time - $i * 86400);
} }
break; break;
} }
return [0, '', $data]; return [0, '', $data];
} }
...@@ -956,19 +1146,20 @@ class QuoteModel extends Model ...@@ -956,19 +1146,20 @@ class QuoteModel extends Model
// 当日报价数 // 当日报价数
public function getTodayQoutCount($input, $start_time, $end_time) public function getTodayQoutCount($input, $start_time, $end_time)
{ {
return $this->where('create_uid', $input['user_id'])->whereBetween('create_time', [$start_time, $end_time])->count(); return $this->where('create_uid', $input['user_id'])->whereBetween('create_time',
[$start_time, $end_time])->count();
} }
// 当日未报价数 // 当日未报价数
public function getTodayNoQoutCount($input, $start_time, $end_time) public function getTodayNoQoutCount($input, $start_time, $end_time)
{ {
return $this->from('inquiry_items as it') return $this->from('inquiry_items as it')
->join('inquiry_items_assign as ia', 'it.id', '=', 'ia.inquiry_items_id') ->join('inquiry_items_assign as ia', 'it.id', '=', 'ia.inquiry_items_id')
->leftJoin('quote as q', 'it.id', '=', 'q.inquiry_items_id') ->leftJoin('quote as q', 'it.id', '=', 'q.inquiry_items_id')
->where('ia.assign_uid', $input['user_id']) // 指定或领取给当前用户 ->where('ia.assign_uid', $input['user_id'])// 指定或领取给当前用户
->whereBetween('ia.create_time', [$start_time, $end_time]) ->whereBetween('ia.create_time', [$start_time, $end_time])
->where('it.status', 1) // 未报价 ->where('it.status', 1)// 未报价
->orWhereRaw("(lie_it.status in (2, 3, 4) and lie_q.create_uid != {$input['user_id']})") // 已报价且非当前用户 ->orWhereRaw("(lie_it.status in (2, 3, 4) and lie_q.create_uid != {$input['user_id']})")// 已报价且非当前用户
->count(); ->count();
} }
...@@ -977,31 +1168,36 @@ class QuoteModel extends Model ...@@ -977,31 +1168,36 @@ class QuoteModel extends Model
{ {
$quote_id = $input['id']; $quote_id = $input['id'];
$status = $input['status']; $status = $input['status'];
if (!$quote_id) return [-1, '参数缺失']; if (!$quote_id) {
return [-1, '参数缺失'];
}
try { try {
$QuoteModel = new QuoteModel(); $QuoteModel = new QuoteModel();
$InquiryItemsModel = new InquiryItemsModel(); $InquiryItemsModel = new InquiryItemsModel();
$info = $QuoteModel->select("status","inquiry_items_id")->where("id",$quote_id)->first()->toArray(); $info = $QuoteModel->select("status", "inquiry_items_id")->where("id", $quote_id)->first()->toArray();
$inquiry_items_id = $info["inquiry_items_id"]; $inquiry_items_id = $info["inquiry_items_id"];
#更新询价明细表状态 #更新询价明细表状态
$InquiryItemsModel->where("id",$inquiry_items_id)->update(["status"=>2, 'update_time'=>time()]); #更新报价待报价 $InquiryItemsModel->where("id", $inquiry_items_id)->update([
"status" => 2,
'update_time' => time()
]); #更新报价待报价
#更新 #更新
if ($info["status"] == 2){ #撤销选中 if ($info["status"] == 2) { #撤销选中
$QuoteModel->where("inquiry_items_id",$inquiry_items_id)->whereNotIn("status",[-1,0,3]) $QuoteModel->where("inquiry_items_id", $inquiry_items_id)->whereNotIn("status", [-1, 0, 3])
->update(["status"=>1, 'update_time'=>time()]); #重启其他所有状态为 已报价 ->update(["status" => 1, 'update_time' => time()]); #重启其他所有状态为 已报价
} }
if ($info["status"] == 3){ #撤销确认 if ($info["status"] == 3) { #撤销确认
$QuoteModel->where("inquiry_items_id",$inquiry_items_id)->whereNotIn("status",[-1,0,2]) $QuoteModel->where("inquiry_items_id", $inquiry_items_id)->whereNotIn("status", [-1, 0, 2])
->update(["status"=>1, 'update_time'=>time()]); #重启其他所有状态为 已报价 ->update(["status" => 1, 'update_time' => time()]); #重启其他所有状态为 已报价
} }
$data = []; $data = [];
$data['types'] = 1; $data['types'] = 1;
$data['relation_id'] = $inquiry_items_id; $data['relation_id'] = $inquiry_items_id;
$data['content'] = '撤销报价:'.QuoteMap::$status[$status]; $data['content'] = '撤销报价:' . QuoteMap::$status[$status];
$data['create_uid'] = $input['user_id']; $data['create_uid'] = $input['user_id'];
$data['create_name'] = $input["user_name"]; $data['create_name'] = $input["user_name"];
OpLogModel::log($data); OpLogModel::log($data);
......
...@@ -3,7 +3,7 @@ namespace App\map; ...@@ -3,7 +3,7 @@ namespace App\map;
//询价枚举 //询价枚举
class InquiryMap{ class InquiryMap{
//状态 -1:已关闭 1:待报价 2:已报价 3:已选中 4:已固定 5:已确认 //状态 -1:已关闭 1:待报价 2:已报价 3:已选中 4:已领取 5:已确认
const status_close = -1; const status_close = -1;
const status_ready = 1; const status_ready = 1;
const status_replay = 2; const status_replay = 2;
...@@ -15,7 +15,7 @@ class InquiryMap{ ...@@ -15,7 +15,7 @@ class InquiryMap{
self::status_ready => "待报价", self::status_ready => "待报价",
self::status_replay => "已报价", self::status_replay => "已报价",
self::status_check => "已选中", self::status_check => "已选中",
self::status_fix => "已固定", self::status_fix => "已领取",
self::status_sure => "已确认", self::status_sure => "已确认",
]; ];
......
...@@ -41,6 +41,7 @@ $app->singleton( ...@@ -41,6 +41,7 @@ $app->singleton(
App\Exceptions\Handler::class App\Exceptions\Handler::class
); );
$app->useStoragePath(APP_STORAGE_PATH);
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Return The Application | Return The Application
......
...@@ -122,11 +122,11 @@ return [ ...@@ -122,11 +122,11 @@ return [
], ],
'mongodb' => [ 'mongodb' => [
'driver' => 'mongodb', 'driver' => 'mongodb',
'host' => get_resource_config_section('rabbit', 'rabbit')['host'], 'host' => get_resource_config_section('mongodb', 'mongo')['host'],
'database' => get_resource_config_section('rabbit', 'rabbit')['db'], 'database' => get_resource_config_section('mongodb', 'mongo')['db'],
'username' => get_resource_config_section('rabbit', 'rabbit')['user'], 'username' => get_resource_config_section('mongodb', 'mongo')['user'],
'password' => get_resource_config_section('rabbit', 'rabbit')['passwd'], 'password' => get_resource_config_section('mongodb', 'mongo')['passwd'],
'port' => get_resource_config_section('rabbit', 'rabbit')['port'], 'port' => get_resource_config_section('mongodb', 'mongo')['port'],
// 'options' => [ // 'options' => [
// 'database' => 'ichunt' // sets the authentication database required by mongo 3 // 'database' => 'ichunt' // sets the authentication database required by mongo 3
// ] // ]
......
...@@ -12,10 +12,14 @@ define('STATUS_ILLEGAL_PARAM',300); //操作被拒绝,可能是参数不合法 ...@@ -12,10 +12,14 @@ define('STATUS_ILLEGAL_PARAM',300); //操作被拒绝,可能是参数不合法
define('STATUS_ERROR',400); //列表的数据已被穷尽,没有更多数据 define('STATUS_ERROR',400); //列表的数据已被穷尽,没有更多数据
define('STATUS_UNKNOWN',500); //服务器未知错误 define('STATUS_UNKNOWN',500); //服务器未知错误
$EnvLoader = new Loader(dirname( $_SERVER['DOCUMENT_ROOT'] ) . '/.env'); $default_env_file = dirname( $_SERVER['DOCUMENT_ROOT'] ) . '/.env';
$EnvLoader->load(); $RESOURCE_CONFIG_DIR = $APP_STORAGE_PATH = '';
$RESOURCE_CONFIG_DIR = $EnvLoader->getEnvironmentVariable("RESOURCE_CONFIG_DIR"); if (file_exists($default_env_file)){
$APP_STORAGE_PATH = $EnvLoader->getEnvironmentVariable("APP_STORAGE_PATH"); $EnvLoader = new Loader($default_env_file);
$EnvLoader->load();
$RESOURCE_CONFIG_DIR = $EnvLoader->getEnvironmentVariable("RESOURCE_CONFIG_DIR");
$APP_STORAGE_PATH = $EnvLoader->getEnvironmentVariable("APP_STORAGE_PATH");
}
// 定义资源配置文件目录 // 定义资源配置文件目录
define('RESOURCE_CONFIG_DIR' , ($RESOURCE_CONFIG_DIR) ? $RESOURCE_CONFIG_DIR : '/data2/liexin_config'); define('RESOURCE_CONFIG_DIR' , ($RESOURCE_CONFIG_DIR) ? $RESOURCE_CONFIG_DIR : '/data2/liexin_config');
......
<?php <?php
return [ return [
'quote_status' => [ // 报价状态 'quote_status' => [ // 报价状态
-1 => '已撤销',
0 => '草稿', 0 => '草稿',
1 => '已报价', 1 => '已报价',
2 => '已选中', 2 => '已选中',
......
...@@ -18,7 +18,6 @@ ini_set('mongo.long_as_object', 1); ...@@ -18,7 +18,6 @@ ini_set('mongo.long_as_object', 1);
| loading any of our classes later on. It feels nice to relax. | loading any of our classes later on. It feels nice to relax.
| |
*/ */
require __DIR__.'/../bootstrap/autoload.php'; require __DIR__.'/../bootstrap/autoload.php';
/* /*
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment