123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807 |
- <?php
- namespace JinDouYun\Model\Finance;
- use JinDouYun\Dao\Finance\DPaid;
- use JinDouYun\Dao\Finance\DPaidOffset;
- use JinDouYun\Model\MBaseModel;
- use Mall\Framework\Core\ErrorCode;
- use Mall\Framework\Core\StatusCode;
- use Mall\Framework\Core\ResultWrapper;
- use JinDouYun\Dao\Finance\DPay;
- use JinDouYun\Dao\Finance\DPayReceiptIndex;
- use JinDouYun\Model\Finance\MSupplierBalanceDetail;
- use JinDouYun\Model\Finance\MSupplierBalance;
- class MPay extends MBaseModel
- {
- private $objDPay;
- private $objDPaid;
- private $objDPaidOffset;
- private $objDPayReceiptIndex;
- private $objMSupplierBalanceDetail;
- private $objMSupplierBalance;
- private $enterpriseId;
- private $userCenterId;
- public function __construct($enterpriseId, $userCenterId)
- {
- parent::__construct($enterpriseId, $userCenterId);
- $this->enterpriseId = $enterpriseId;
- $this->userCenterId = $userCenterId;
- $this->objMSupplierBalanceDetail = new MSupplierBalanceDetail($enterpriseId, $userCenterId);
- $this->objMSupplierBalance = new MSupplierBalance($enterpriseId, $userCenterId);
- $this->objDPay = new DPay('finance');
- $this->objDPayReceiptIndex = new DPayReceiptIndex('finance');
- $this->objDPaid = new DPaid('finance');
- $this->objDPaidOffset = new DPaidOffset('finance');
- $this->objDPaidOffset->setTable('qianniao_paid_offset_'.$enterpriseId);
- $this->objDPay->setTable('qianniao_pay_receipt_' . $enterpriseId . '_' . date('Y') . '_' . ceil(date('m') / 3));
- $this->objDPayReceiptIndex->setTable('qianniao_pay_receipt_index_' . $enterpriseId);
-
- }
-
- public function tmp1()
- {
-
- $result = $this->objDPayReceiptIndex->select('id > 273');
- if ($result === false) {
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- foreach ($result as $key => $value){
- $suffix = date('Y', $value['createTime']) . '_' . ceil(date('m', $value['createTime']) / 3);
- $this->objDPay->setTable('qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix);
- echo 'qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix.PHP_EOL;
- $dbResult = $this->objDPay->get($value['payReceiptId']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if(empty($dbResult)){
- return ResultWrapper::fail($value['payReceiptId'].'对应应付不存在', ErrorCode::$contentNotExists);
- }
-
- $dbResult = $this->objDPay->update(['id'=>$value['id']], $value['payReceiptId']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
-
- $result = $this->objDPayReceiptIndex->update(['payReceiptId'=>0], $value['id']);
- if ($result === false) {
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- echo $value['id'].'操作完成'.PHP_EOL;
- }
- return ResultWrapper::success('全部更新完成');
- }
-
- public function addPay($params)
- {
- $this->objDPay->beginTransaction();
-
- $dbResult = $this->objDPay->get('createTime >='.strtotime(date('Ymd'.'0:0:0')), 'no', 'createTime desc');
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if(empty($dbResult)){
- $params['no'] = createSerialNumberByDate('');
- }else{
- $params['no'] =createSerialNumberByDate($dbResult['no']);
- }
-
- $indexData = [
- 'payReceiptId' => 0,
- 'customerId' => $params['customerId'],
- 'sourceNo' => $params['sourceNo'],
- 'auditStatus' => $params['auditStatus'],
- 'offsetStatus' => ($params['PayMoney']<0) ? 5 : 4,
- 'financeTypeId' => $params['financeTypeId'],
- 'financeType' => $params['financeType'],
- 'shopId' => $params['shopId'],
- 'createTime' => $params['createTime'],
- 'updateTime' => $params['updateTime'],
- ];
- $payReceiptId = $this->objDPayReceiptIndex->insert($indexData);
- if ($payReceiptId === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- $params['offsetStatus'] = ($params['PayMoney']<0) ? 5 : 4;
- $params['id'] = $payReceiptId;
- $payId = $this->objDPay->insert($params);
- if ($payId === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- $this->objDPay->commit();
- return ResultWrapper::success($payId);
- }
- private function createEsDocumentId($payId, $time)
- {
- $t = date('Y', $time) . '_' . ceil(date('m', $time) / 3);
- return 'EnterpriseId_' . $this->enterpriseId . '_' . $t .'_payId_' . $payId;
- }
- public function getPayInfo($params)
- {
- $suffix = date('Y', $params['createTime']) . '_' . ceil(date('m', $params['createTime']) / 3);
- $this->objDPay->setTable('qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix);
- unset($params['createTime']);
- $dbResult = $this->objDPay->get($params);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if(!empty($dbResult)){
-
- $dbResult['no'] = StatusCode::$noPrefix[18] . '-' . $dbResult['no'];
- $dbResult['purchaseNo'] = StatusCode::$noPrefix[2] . '-' . $dbResult['purchaseNo'];
- $dbResult['supplierCode'] = createCode(StatusCode::$code['supplier']['prefix'], $dbResult['supplierId'], StatusCode::$code['supplier']['length']);
- }
- return ResultWrapper::success($dbResult);
- }
-
- public function updateOffsetStatus($id,$offsetMoney,$createTime)
- {
- $suffix = date('Y', $createTime) . '_' . ceil(date('m', $createTime) / 3);
- $this->objDPay->setTable('qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix);
- $shouldPayData = $this->objDPay->get($id);
- if ($shouldPayData === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if( empty($shouldPayData) ){
- return ResultWrapper::fail('要审核的单据不存在', ErrorCode::$contentNotExists);
- }
- $updateData = [
- 'offsetMoney' => bcadd($shouldPayData['offsetMoney'],abs($offsetMoney),4),
- 'notOffsetMoney' => bcsub($shouldPayData['notOffsetMoney'], abs($offsetMoney),4),
- 'offsetStatus' => StatusCode::$delete
- ];
- switch (true)
- {
- case $updateData['notOffsetMoney'] == 0;
- $updateData['offsetStatus'] = StatusCode::$standard;
- break;
- case $updateData['notOffsetMoney'] == $shouldPayData['payMoney'];
- $updateData['offsetStatus'] = StatusCode::$delete;
- break;
- case $updateData['notOffsetMoney'] > 0 && $updateData['notOffsetMoney'] < $shouldPayData['payMoney'];
- $updateData['offsetStatus'] = StatusCode::$partion;
- break;
- }
- $beginTransactionStatus = $this->objDPay->beginTransaction();
- unset($dbResult);
- $dbResult = $this->objDPay->update($updateData, $id);
- if ($dbResult === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
-
- unset($dbResult);
- $dbResult = $this->objDPayReceiptIndex->update(['offsetStatus' => $updateData['offsetStatus']], ['payReceiptId' => $id, 'createTime'=>$createTime]);
- if ($dbResult === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- if($beginTransactionStatus){
- $this->objDPay->commit();
- }
- return ResultWrapper::success($dbResult);
- }
-
- public function updatePayStatus($params)
- {
- $suffix = date('Y', $params['createTime']) . '_' . ceil(date('m', $params['createTime']) / 3);
- $this->objDPay->setTable('qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix);
- $shouldPayData = $this->objDPay->get($params['id']);
- if ($shouldPayData === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if( empty($shouldPayData) ){
- return ResultWrapper::fail('要审核的单据不存在', ErrorCode::$contentNotExists);
- }
- if( $shouldPayData['auditStatus'] == StatusCode::$auditStatus['auditPass'] ){
- return ResultWrapper::fail('该单据已经审核过了', ErrorCode::$notAllowAccess);
- }
- $this->objDPay->beginTransaction();
- $dbResult = $this->objDPay->update(['auditStatus' => StatusCode::$auditStatus['auditPass']], $params['id']);
- if ($dbResult === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
-
- $dbResult = $this->objDPayReceiptIndex->update(['auditStatus' => StatusCode::$auditStatus['auditPass']], ['payReceiptId' => $params['id']]);
- if ($dbResult === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
-
- $supplierMoney = $this->objMSupplierBalance->getSupplierBalance($shouldPayData['supplierId']);
-
- $autoOffset = self::autoOffset($supplierMoney,$params['id'],$params['createTime']);
- if (!$autoOffset->isSuccess()) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($autoOffset->getData(), $autoOffset->getErrorCode());
- }
- $detailData = [
- 'supplierId' => $shouldPayData['supplierId'],
- 'receiptTime' => $shouldPayData['createTime'],
- 'no' => $shouldPayData['no'],
- 'financeType' => $shouldPayData['financeType'],
- 'financeTypeId' => $shouldPayData['financeTypeId'],
- 'sourceNo' => $shouldPayData['sourceNo'],
- 'salesAmount' => bcadd($shouldPayData['payMoney'], $shouldPayData['discountMoney'], 4),
- 'discountMoney' => $shouldPayData['discountMoney'],
- 'supplierAmount' => 0.00,
- 'shouldPayAmount' => $shouldPayData['payMoney'],
- 'actualPaidAmount' => 0.00,
- 'shouldPayBalance' => bcadd($supplierMoney,$shouldPayData['payMoney'],2),
- 'remark' => '应付单审核通过,应付供应商'.$shouldPayData['payMoney'].'元',
- 'createTime' => time(),
- 'updateTime' => time(),
- ];
-
- $result = $this->objMSupplierBalanceDetail->addSupplierBalanceDetail($detailData);
- if ($result->isSuccess() === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($result->getData(), $result->getErrorCode());
- }
-
-
- $changedMoney = $shouldPayData['payMoney'];
- $result = $this->objMSupplierBalance->addSupplierBalance($shouldPayData['supplierId'], $changedMoney);
- if ($result->isSuccess() === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($result->getData(), $result->getErrorCode());
- }
- $this->objDPay->commit();
-
- return ResultWrapper::success($dbResult);
- }
-
- public function getAllPay($selectParams, $isExport = false)
- {
-
- $limit = $selectParams['limit'];
- $offset = $selectParams['offset'];
- unset($selectParams['limit']);
- unset($selectParams['offset']);
-
- if($isExport){
- $limit = 9999;
- $offset = 0;
- }
- $whereSql = '';
- if (isset($selectParams['supplierId']) && !empty($selectParams['supplierId'])) {
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' supplierId = ' . $selectParams['supplierId'];
- }
-
- if (isset($selectParams['sourceNo']) && !empty($selectParams['sourceNo'])) {
- $tmpNo = explode('-',$selectParams['sourceNo']);
- if(count($tmpNo) == 3){
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' sourceNo like "%' . $tmpNo[1].'-'.$tmpNo[2].'%"';
- }else{
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' sourceNo like "%' . $selectParams['sourceNo'].'%"';
- }
- }
- if (isset($selectParams['offsetStatus']) && !empty($selectParams['offsetStatus'])) {
-
- $selectParams['offsetStatus'] = implode(',',$selectParams['offsetStatus']);
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' offsetStatus in( ' . $selectParams['offsetStatus'].')';
- }
- if (isset($selectParams['payReceiptIds']) && !empty($selectParams['payReceiptIds'])) {
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' payReceiptId in (' . implode(',', $selectParams['payReceiptIds']).')';
- }
- if (isset($selectParams['auditStatus']) && !empty($selectParams['auditStatus'])) {
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' auditStatus = ' . $selectParams['auditStatus'];
- }
- if (isset($selectParams['warehouseId']) && !empty($selectParams['warehouseId'])) {
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' warehouseId = ' . $selectParams['warehouseId'];
- }
- if ( (isset($selectParams['start']) && !empty($selectParams['start']))&&(isset($selectParams['end']) && !empty($selectParams['end'])) ) {
- $where = empty($whereSql) ? ' WHERE ' : ' AND ';
- $whereSql .= $where . ' createTime BETWEEN ' . $selectParams['start'] . ' AND '. $selectParams['end'];
- }
- $sql = 'SELECT * FROM ' .$this->objDPayReceiptIndex->get_Table().$whereSql . ' ORDER BY createTime DESC LIMIT ' . $offset . ' , ' . $limit;
- $PayReceiptIndexResult = $this->objDPayReceiptIndex->query($sql);
- if($PayReceiptIndexResult === false){
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- $tableSuffix = [];
- foreach ($PayReceiptIndexResult as $PayReceiptIndex) {
- $k = date('Y', $PayReceiptIndex['createTime']) . '_' . ceil(date('m', $PayReceiptIndex['createTime']) / 3);
- $tableSuffix[$k][] = $PayReceiptIndex['id'];
- }
- $PayReceiptResult = [];
- foreach ($tableSuffix as $suffix => $payReceiptIds) {
- $this->objDPay->setTable('qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix);
- if($isExport){
- $dbResult = $this->objDPay->exportSelect($payReceiptIds, '*', 'createTime desc');
- $tmpArray = [];
- foreach($dbResult as $key => $value){
- $tmpArray[] = $value;
- }
- $dbResult = $tmpArray;
- }else{
- $dbResult = $this->objDPay->select(['id'=>$payReceiptIds], '*', 'createTime desc');
-
- }
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if(!empty($dbResult)){
-
- foreach ($dbResult as $key => $value){
- $dbResult[$key]['no'] = StatusCode::$noPrefix[18] . '-' . $value['no'];
- $dbResult[$key]['sourceNo'] = StatusCode::$noPrefix[3] . '-' . $value['sourceNo'];
- $dbResult[$key]['purchaseNo'] = StatusCode::$noPrefix[2] . '-' . $value['purchaseNo'];
- }
- $PayReceiptResult = array_merge($PayReceiptResult, self::format($dbResult));
- }
- }
-
-
- $totalSql = 'SELECT COUNT(1) as count FROM ' .$this->objDPayReceiptIndex->get_Table() . $whereSql;
- $dbTotalResult = $this->objDPayReceiptIndex->query($totalSql);
- if ($dbTotalResult === false) {
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- if(empty($dbTotalResult)){
- return ResultWrapper::success([]);
- }
- $return = [
- 'data' => $PayReceiptResult,
- 'total' => ($dbTotalResult[0]['count']) ? intval($dbTotalResult[0]['count']) : 0,
- ];
- if($isExport){
- self::export($return['data']);
- }
- return ResultWrapper::success($return);
- }
-
- public function autoOffset($supplierMoney, $payId, $createTime)
- {
- $suffix = date('Y', $createTime) . '_' . ceil(date('m', $createTime) / 3);
- $this->objDPay->setTable('qianniao_pay_receipt_' . $this->enterpriseId . '_' . $suffix);
- $this->objDPaid->setTable('qianniao_paid_' . $this->enterpriseId . '_' . date('Y', $createTime) . '_' . ceil(date('m', $createTime) / 3));
-
- $shouldPayData = $this->objDPay->get($payId);
- if ($shouldPayData === false) {
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
- if (empty($shouldPayData)) {
- return ResultWrapper::fail('应收单id'.$payId.'数据为空', ErrorCode::$dberror);
- }
- $offsetMoney = 0;
- $notOffsetMoney = 0;
- $offsetStatus = 5;
- if ($supplierMoney < 0 && $shouldPayData['payMoney'] > 0){
- switch (true)
- {
- case bcsub(abs($supplierMoney),$shouldPayData['payMoney'],4) > 0;
- $offsetMoney = $shouldPayData['payMoney'];
- break;
- case bcsub(abs($supplierMoney),$shouldPayData['payMoney'],4) == 0;
- $offsetMoney = $shouldPayData['payMoney'];
- break;
- case bcsub(abs($supplierMoney),$shouldPayData['payMoney'],4) < 0;
- $offsetMoney = abs($supplierMoney);
- $notOffsetMoney = bcadd($supplierMoney,$shouldPayData['payMoney'],4);
- $offsetStatus = StatusCode::$partion;
- }
-
- $updateOffsetStatus = $this->objDPay->update(['offsetMoney'=>$offsetMoney,'notOffsetMoney'=>$notOffsetMoney,'offsetStatus'=>$offsetStatus],['id'=>$payId]);
- if ($updateOffsetStatus === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPay->error(), ErrorCode::$dberror);
- }
-
- unset($dbResult);
- $dbResult = $this->objDPayReceiptIndex->update(['offsetStatus' => $offsetStatus], ['payReceiptId' => $payId,'createTime'=>$createTime]);
- if ($dbResult === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- unset($dbResult);
-
- $dbResult = $this->objDPaid->query('select * from '.$this->objDPaid->get_Table().' where supplierId='.$shouldPayData['supplierId'].' and offsetStatus != '. StatusCode::$standard.' order by createTime asc');
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDPaid->error(), ErrorCode::$dberror);
- }
- $paidOffsetMoney = $shouldPayData['payMoney'];
- foreach ($dbResult as $key => $value){
- if($paidOffsetMoney<=0){
- break;
- }
- switch (true){
- case bcsub($value['notOffsetMoney'],$shouldPayData['payMoney'],2)>0:
- $paidOffset = [
- 'offsetMoney' => bcadd($paidOffsetMoney,$value['offsetMoney'],2),
- 'notOffsetMoney' => bcsub($value['notOffsetMoney'],$paidOffsetMoney,2),
- 'offsetStatus' => StatusCode::$partion,
- ];
- $paidOffsetMoney = abs(bcsub($paidOffsetMoney,$paidOffset['offsetMoney'],2));
- break;
- case bcsub($value['notOffsetMoney'],$shouldPayData['payMoney'],2) == 0:
- $paidOffset = [
- 'offsetMoney' => $value['totalFinalMoney'],
- 'notOffsetMoney' => 0,
- 'offsetStatus' => StatusCode::$standard,
- ];
- $paidOffsetMoney = abs(bcsub($value['totalFinalMoney'],$paidOffset['offsetMoney'],2));
- break;
- case bcsub($value['notOffsetMoney'],$shouldPayData['payMoney'],2) < 0:
- $paidOffset = [
- 'offsetMoney' => $value['totalFinalMoney'],
- 'notOffsetMoney' => 0,
- 'offsetStatus' => StatusCode::$standard,
- ];
- $paidOffsetMoney = abs(bcsub($value['totalFinalMoney'],$paidOffset['offsetMoney'],2));
- }
-
- $updatePaidOffset = $this->objDPaid->update($paidOffset,['id'=>$value['id']]);
- if ($updatePaidOffset === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPaid->error(), ErrorCode::$dberror);
- }
-
- $updateOffset = [
- 'payReceiptId' => $payId,
- 'paidId' => $value['id'],
- 'offsetMoney' => $offsetMoney,
- 'payCreateTime' => $shouldPayData['createTime'],
- ];
- $result = $this->objDPaidOffset->insert($updateOffset);
- if ($result === false) {
- $this->objDPay->rollBack();
- return ResultWrapper::fail($this->objDPaidOffset->error(), ErrorCode::$dberror);
- }
- }
- }
-
-
- return ResultWrapper::success(null);
- }
-
- private static function export($exportData)
- {
-
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:filename=应收单列表.csv");
- header('Cache-Control: max-age=0');
- $fp = fopen('php://output', 'a');
- $head = ['应付单编号', '源订单号', '供应商名称', '单据日期', '优惠金额', '实际应付金额', '商铺', '单据类型', '状态'];
- foreach ($head as $i => $v) {
- $head[$i] = mb_convert_encoding($v, 'GBK', 'utf-8');
- }
- fputcsv($fp, $head);
- $limit = 10000;
- $num = 0;
- foreach ($exportData as $v) {
-
- $num++;
- if ($num == $limit) {
- ob_flush();
- flush();
- }
- $rows['no'] = $v['no'];
- $rows['sourceNo'] = $v['sourceNo'];
- $rows['supplierName'] = $v['supplierName'];
- $rows['createTime'] = date('Y-m-d H:i:s', $v['createTime']);
- $rows['discountMoney'] = $v['discountMoney'];
- $rows['payMoney'] = $v['payMoney'];
- $rows['shopName'] = $v['shopName'];
- $rows['receiptTypeName'] = $v['receiptTypeId'] ? '采购订单' : '采购退货单';
- $rows['auditStatus'] = StatusCode::$auditStatus[$v['auditStatus']];
- foreach ($rows as $kk => $vv) {
- $rs[$kk] = mb_convert_encoding($vv, 'GBK', 'utf-8');
- }
- fputcsv($fp, $rs);
- $rows = [];
- }
- exit;
- }
- public function format($data)
- {
- foreach ($data as $k => $v) {
- $data[$k]['supplierCode'] = createCode(StatusCode::$code['supplier']['prefix'], $v['supplierId'], StatusCode::$code['supplier']['length']);
- }
- return $data;
- }
-
- public function setWhere($selectParams)
- {
- $defaultDSL = [
- 'from' => $selectParams['offset'],
- 'size' => $selectParams['limit'],
- 'sort' => [
- 'createTime' => [
- 'order' => 'desc'
- ],
- ],
- ];
- $dsl = [];
- $dsl['query']['bool']['must'][] = [
- 'term' => ['enterpriseId' => $this->enterpriseId],
- ];
- if (isset($selectParams['keyword'])) {
- if (!empty($selectParams['keyword'])) {
- $dsl['query']['bool']['must'][] = [
- 'multi_match' => [
- 'fields' => ['no', 'sourceNo', 'customerName'],
- 'query' => $selectParams['keyword'],
- 'fuzziness' => 'AUTO',
- ]
- ];
- }
- }
- if (!empty($selectParams['shopId'])) {
- $dsl['query']['bool']['must'][] = [
- 'term' => ['shopId' => $selectParams['shopId']],
- ];
- }
- if (!empty($selectParams['start']) && !empty($selectParams['end'])) {
- $dsl['query']['bool']['must'][] = [
- 'range' => [
- 'createTime' => [
- 'gte' => $selectParams['start'],
- 'lte' => strtotime(date('Y-m-d',$selectParams['end']).'23:59:59'),
- ]
- ]
- ];
- } else {
- if (!empty($selectParams['start'])) {
- $dsl['query']['bool']['must'][] = [
- 'range' => [
- 'createTime' => [
- 'gte' => $selectParams['start'],
- ]
- ]
- ];
- }
- if (!empty($selectParams['end'])) {
- $dsl['query']['bool']['must'][] = [
- 'range' => [
- 'createTime' => [
- 'lte' => strtotime(date('Y-m-d',$selectParams['end']).'23:59:59'),
- ]
- ]
- ];
- }
- }
- if (isset($selectParams['receiptTypeId'])) {
- if (!empty($selectParams['receiptTypeId'])) {
- $dsl['query']['bool']['filter'][] =
- ['term' => ['receiptTypeId' => $selectParams['receiptTypeId']]];
- }
- }
- if (isset($selectParams['auditStatus'])) {
- if (!empty($selectParams['auditStatus'])) {
- $dsl['query']['bool']['filter'][] =
- ['term' => ['auditStatus' => $selectParams['auditStatus']]];
- }
- }
- $dsl = array_merge($defaultDSL, $dsl);
- return $dsl;
- }
- public function search($selectParams)
- {
- $is_export = $selectParams['isExport'];
- unset($selectParams['isExport']);
- if($is_export){
- unset($selectParams['limit']);
- unset($selectParams['offset']);
- }
- $dsl = $this->setWhere($selectParams);
-
- if ($is_export) self::exportSearch($dsl);
- $result = $this->objDPay->getSearchQueryDsl($dsl);
- if (isset($result['status']) && $result['status'] == 400) {
- if ($result['error']['reason'] == 'all shards failed') {
- return ResultWrapper::success([
- 'data' => [],
- 'total' => 0
- ]);
- }
- return ResultWrapper::fail('获取应付数据失败' . $result['error']['reason'], ErrorCode::$apiNotResult);
- }
- if (!isset($result['hits']) || $result['hits']['total'] == 0) {
- return ResultWrapper::success([
- 'data' => [],
- 'total' => 0
- ]);
- }
- $total = $result['hits']['total'];
- $dbResult = $result['hits']['hits'];
- $list = [];
- foreach ($dbResult as $key => &$value) {
- $data = [];
- $data = $value['_source'];
- $list[] = $data;
- }
- $return = [
- 'data' => self::format($list),
- 'total' => ($total) ? intval($total) : 0,
- ];
- return ResultWrapper::success($return);
- }
-
- private function exportSearch($dsl)
- {
- $result = $this->objDPay->getScrollSearchQueryDsl($dsl);
- if (isset($result['status']) && $result['status'] == 400) {
- return ResultWrapper::fail('获取数据失败' . $result['error']['reason'], ErrorCode::$apiNotResult);
- }
- if (!isset($result['hits']) && $result['hits']['total'] == 0) {
- return ResultWrapper::fail('导出数据为空' . $result['error']['reason'], ErrorCode::$apiNotResult);
- }
- $dbResult = $result['hits']['hits'];
- $list = [];
- foreach ($dbResult as $key => &$value) {
- $list[] = $value['_source'];
- }
- self::export($list);
- }
-
- public function getAllAuditingPay()
- {
- $condition = [
- 'deleteStatus' => StatusCode::$standard,
- 'auditStatus' => StatusCode::$auditStatus['auditing'],
- ];
- $result = $this->objDPayReceiptIndex->select($condition);
- if ($result === false) {
- return ResultWrapper::fail($this->objDPayReceiptIndex->error(), ErrorCode::$dberror);
- }
- if(empty($result)){
- return ResultWrapper::success([]);
- }
- return ResultWrapper::success($result);
- }
- }
|