1.结果如图所示:
2. 搜索模型相关代码:
<?php namespace backend\models; use Yii; use yii\base\Model; use yii\data\ActiveDataProvider; use core\models\WmsMaterialInSheet; class WmsMaterialInSheetSearch extends WmsMaterialInSheet { public static $stateList = [‘wait_mng‘=>‘待验收‘, ‘wait_in‘=>‘待入库‘, ‘already_in‘=>‘已入库‘, ‘wait_settle‘=>‘待结算‘, ‘finish‘=>‘已完成‘, ‘all‘=>‘全部单据‘, ‘is_del‘=>‘已作废‘]; public $disabled = false; /** * 是否显示更多筛选 * @var */ public $is_display; /** * 晒选类型 * @var */ public $search_type; public function rules() { return [ [[‘id‘, ‘wms_material_in_sheet_create_order_date‘, ‘wms_material_in_sheet_tare_weight‘, ‘wms_material_in_sheet_gross_weight‘, ‘wms_material_in_sheet_net_weight‘, ‘wms_material_in_sheet_unit_price‘, ‘wms_material_in_sheet_total_price‘, ‘wms_material_in_sheet_in_weight‘, ‘wms_material_in_sheet_in_weight_before‘, ‘wms_material_in_sheet_in_weight_after‘, ‘wms_material_in_sheet_delivery_man_sign_date‘, ‘wms_material_in_sheet_receiving_man_sign_date‘, ‘wms_material_in_sheet_storage_manager_sign_date‘, ‘wms_material_in_sheet_product_in_date‘, ‘common_producer_info_id‘, ‘common_producer_herb_info_id‘, ‘common_supplier_info_id‘, ‘common_producer_herb_place_info_id‘, ‘common_producer_wms_info_id‘, ‘common_producer_wms_area_info_id‘, ‘common_producer_herb_grade_info_id‘, ‘common_supplier_delivery_man_id‘, ‘common_producer_people_info_id_receiver‘, ‘common_producer_people_info_id_storage_manager‘, ‘created_at‘, ‘updated_at‘, ‘is_del‘], ‘integer‘], [[‘wms_material_in_sheet_number‘, ‘wms_material_in_sheet_batch_number‘, ‘wms_material_in_sheet_material_description‘, ‘wms_material_in_sheet_note‘, ‘common_producer_herb_info_name‘, ‘common_supplier_info_name‘, ‘common_producer_herb_place_info_name‘, ‘common_producer_herb_grade_name‘, ‘purchase_contract_id‘, ‘common_supplier_delivery_man_name‘, ‘common_supplier_delivery_man_phone‘, ‘common_supplier_delivery_man_license_plate_number‘, ‘common_producer_people_info_receiver_name‘, ‘common_producer_people_info_id_storage_manager_name‘], ‘safe‘], [[‘begin_at‘, ‘end_at‘], ‘string‘], ]; } public function attributes() { return array_merge(parent::attributes(),["begin_at","end_at"]); // TODO: Change the autogenerated stub } public function search($params) { $query = WmsMaterialInSheet::find(); if(!empty($params[‘WmsMaterialInSheetSearch‘][‘search_type‘])){ $this->search_type = $params[‘WmsMaterialInSheetSearch‘][‘search_type‘]; $query = self::searchCondition($params,$query); } $dataProvider = new ActiveDataProvider([ ‘query‘ => $query, ‘sort‘ => [ ‘defaultOrder‘ => [ ‘wms_material_in_sheet_number‘ => SORT_DESC, ] ], ]); //判断是否展开更多筛选 if(!empty($params[‘WmsMaterialInSheetSearch‘][‘is_display‘])){ $this->is_display = $params[‘WmsMaterialInSheetSearch‘][‘is_display‘]; } $this->load($params); $division_id = \core\models\Division::getTopDivisionId(Yii::$app->user->identity->division_id,true); if (!empty($division_id)) { $this->common_producer_info_id = $division_id; $this->disabled = true; } if (!$this->validate()) { return $dataProvider; } $query->andFilterWhere([ ‘id‘ => $this->id, ‘wms_material_in_sheet_create_order_date‘ => $this->wms_material_in_sheet_create_order_date, ‘wms_material_in_sheet_tare_weight‘ => $this->wms_material_in_sheet_tare_weight, ‘wms_material_in_sheet_gross_weight‘ => $this->wms_material_in_sheet_gross_weight, ‘wms_material_in_sheet_net_weight‘ => $this->wms_material_in_sheet_net_weight, ‘wms_material_in_sheet_unit_price‘ => $this->wms_material_in_sheet_unit_price, ‘wms_material_in_sheet_total_price‘ => $this->wms_material_in_sheet_total_price, ‘wms_material_in_sheet_in_weight‘ => $this->wms_material_in_sheet_in_weight, ‘wms_material_in_sheet_in_weight_before‘ => $this->wms_material_in_sheet_in_weight_before, ‘wms_material_in_sheet_in_weight_after‘ => $this->wms_material_in_sheet_in_weight_after, ‘wms_material_in_sheet_delivery_man_sign_date‘ => $this->wms_material_in_sheet_delivery_man_sign_date, ‘wms_material_in_sheet_receiving_man_sign_date‘ => $this->wms_material_in_sheet_receiving_man_sign_date, ‘wms_material_in_sheet_storage_manager_sign_date‘ => $this->wms_material_in_sheet_storage_manager_sign_date, ‘wms_material_in_sheet_product_in_date‘ => $this->wms_material_in_sheet_product_in_date, ‘wms_material_in_sheet_type‘ => $this->wms_material_in_sheet_type, ‘common_producer_info_id‘ => $this->common_producer_info_id, ‘common_producer_herb_info_id‘ => $this->common_producer_herb_info_id, ‘common_supplier_info_id‘ => $this->common_supplier_info_id, ‘common_producer_herb_place_info_id‘ => $this->common_producer_herb_place_info_id, ‘common_producer_wms_info_id‘ => $this->common_producer_wms_info_id, ‘common_producer_wms_area_info_id‘ => $this->common_producer_wms_area_info_id, ‘common_producer_herb_grade_info_id‘ => $this->common_producer_herb_grade_info_id, ‘common_supplier_delivery_man_id‘ => $this->common_supplier_delivery_man_id, ‘common_producer_people_info_id_receiver‘ => $this->common_producer_people_info_id_receiver, ‘common_producer_people_info_id_storage_manager‘ => $this->common_producer_people_info_id_storage_manager, ‘created_at‘ => $this->created_at, ‘updated_at‘ => $this->updated_at, ]); if(!empty($this->begin_at)){ $query->andWhere([‘>=‘,‘wms_material_in_sheet_product_in_date‘,strtotime($this->begin_at)]); } if(!empty($this->end_at)){ $query->andWhere([‘<‘,‘wms_material_in_sheet_product_in_date‘,strtotime($this->end_at) + 24*3600]); } $querySecondProduct = WmsMaterialInSheet::find()->andWhere([‘wms_material_in_sheet_type‘=>‘二次加工‘])->andWhere([‘wms_material_in_sheet_status‘=>0])->select([‘wms_material_in_sheet_number‘]); $query->andFilterWhere([‘like‘, ‘wms_material_in_sheet_number‘, $this->wms_material_in_sheet_number]) ->andFilterWhere([‘like‘, ‘wms_material_in_sheet_batch_number‘, $this->wms_material_in_sheet_batch_number]) ->andFilterWhere([‘like‘, ‘wms_material_in_sheet_material_description‘, $this->wms_material_in_sheet_material_description]) ->andFilterWhere([‘like‘, ‘wms_material_in_sheet_note‘, $this->wms_material_in_sheet_note]) ->andFilterWhere([‘like‘, ‘common_producer_herb_info_name‘, $this->common_producer_herb_info_name]) ->andFilterWhere([‘like‘, ‘common_supplier_info_name‘, $this->common_supplier_info_name]) ->andFilterWhere([‘like‘, ‘common_producer_herb_place_info_name‘, $this->common_producer_herb_place_info_name]) ->andFilterWhere([‘like‘, ‘common_producer_herb_grade_name‘, $this->common_producer_herb_grade_name]) ->andFilterWhere([‘like‘, ‘purchase_contract_id‘, $this->purchase_contract_id]) ->andFilterWhere([‘like‘, ‘common_supplier_delivery_man_name‘, $this->common_supplier_delivery_man_name]) ->andFilterWhere([‘like‘, ‘common_supplier_delivery_man_phone‘, $this->common_supplier_delivery_man_phone]) ->andFilterWhere([‘like‘, ‘common_supplier_delivery_man_license_plate_number‘, $this->common_supplier_delivery_man_license_plate_number]) ->andFilterWhere([‘like‘, ‘common_producer_people_info_receiver_name‘, $this->common_producer_people_info_receiver_name]) ->andFilterWhere([‘like‘, ‘common_producer_people_info_id_storage_manager_name‘, $this->common_producer_people_info_id_storage_manager_name]); $query->andFilterWhere([‘not in ‘, ‘wms_material_in_sheet_number‘ ,$querySecondProduct]); return $dataProvider; } public static function searchCondition($params,$query){ if($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘all‘){ return self::searchAll($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘is_del‘){ return self::searchIsDel($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘finish‘){ return self::searchFinish($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘wait_mng‘){ return self::searchWaitMng($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘wait_in‘){ return self::searchWaitIn($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘already_in‘){ return self::searchAlreadyIn($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘wait_settle‘){ return self::searchWaitSettle($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘retreat_finish‘){ // 领料退回已入库订单(生产领料退回入库单申请使用) return self::searchRetreatFinish($params, $query); }elseif ($params[‘WmsMaterialInSheetSearch‘][‘search_type‘]==‘retreat_wait_in‘){ // 领料退回待入库订单(生产领料退回入库单申请使用) return self::searchRetreatWaitIn($params, $query); } } public static function searchAll($params, $query){ return $query->andFilterWhere([‘or‘, [‘is_del‘=>0], [‘is_del‘=>NULL]]); } public static function searchIsDel($params, $query){ return $query->andFilterWhere([‘is_del‘=>1]); } public static function searchWaitMng($params, $query){ //搜索入库类型为采购,未质检,未入库 $query = self::searchAll($params, $query); $query = $query->andWhere([‘or‘, [‘wms_material_in_sheet_type‘=>‘‘], [‘wms_material_in_sheet_type‘=>NULL],[‘wms_material_in_sheet_type‘=>‘二次加工‘],[‘wms_material_in_sheet_type‘=>‘原始库存‘]]); $query = $query->andWhere([‘or‘, [‘wms_material_in_sheet_status‘=>0], [‘wms_material_in_sheet_status‘=>NULL]]); return $query->andWhere([‘not in‘, ‘wms_material_in_sheet_number‘, self::getAlreadyMngCodeList()]); } public static function searchWaitIn($params, $query){ $query = self::searchAll($params, $query); $query = $query->andWhere([‘or‘, [‘and‘, [‘or‘, [‘wms_material_in_sheet_type‘=>‘‘], [‘wms_material_in_sheet_type‘=>NULL], [‘wms_material_in_sheet_type‘=>‘二次加工‘],[‘wms_material_in_sheet_type‘=>‘原始库存‘]], [‘in‘, ‘wms_material_in_sheet_number‘, self::getAlreadyMngCodeList()], [‘or‘, [‘wms_material_in_sheet_status‘=>0], [‘wms_material_in_sheet_status‘=>NULL]]], //非采购类型,未入库 [‘and‘, [‘or‘, [‘wms_material_in_sheet_type‘=>‘库存调拨‘], [‘wms_material_in_sheet_type‘=>‘库存报溢‘], [‘wms_material_in_sheet_type‘=>‘生产退料‘]], [‘or‘, [‘wms_material_in_sheet_status‘=>0], [‘wms_material_in_sheet_status‘=>NULL]]] ]); return $query; } public static function searchAlreadyIn($params, $query){ $query = self::searchAll($params, $query); return $query->andFilterWhere([‘wms_material_in_sheet_status‘=>1]); } public static function searchWaitSettle($params, $query){ $query = self::searchAll($params, $query); $query = $query->andWhere([‘or‘, [‘wms_material_in_sheet_type‘=>‘‘], [‘wms_material_in_sheet_type‘=>NULL]]); $query = $query->andWhere([‘wms_material_in_sheet_status‘=>1]); return $query->andWhere([‘not in‘, ‘wms_material_in_sheet_number‘, self::getAlreadySettleCodeList2()]); } public static function searchFinish($params, $query){ $query = self::searchAll($params, $query); $query = $query->andWhere([‘or‘, [‘and‘, [‘or‘, [‘wms_material_in_sheet_type‘=>‘‘], [‘wms_material_in_sheet_type‘=>NULL]], [‘in‘, ‘wms_material_in_sheet_number‘, self::getAlreadySettleCodeList2()], [‘wms_material_in_sheet_status‘=>1]], [‘and‘, [‘or‘,[‘wms_material_in_sheet_type‘=>‘二次加工‘],[‘wms_material_in_sheet_type‘=>‘原始库存‘], [‘wms_material_in_sheet_type‘=>‘库存调拨‘], [‘wms_material_in_sheet_type‘=>‘库存报溢‘]], [‘wms_material_in_sheet_status‘=>1]] ]); return $query; } /** * 领料退回已完成单据 * @param $params * @param $query * @return mixed */ public static function searchRetreatFinish($params, $query){ $query = self::searchAll($params, $query); $query = $query->andWhere([‘wms_material_in_sheet_status‘=>1]); return $query; } /** * 领料退回待入库单据 * @param $params * @param $query * @return mixed */ public static function searchRetreatWaitIn($params, $query){ $query = self::searchAll($params, $query); $query = $query->andWhere([‘or‘, [‘wms_material_in_sheet_status‘=>0], [‘wms_material_in_sheet_status‘=>NULL]]); return $query; } public static function getAlreadyMngCodeList(){ $qualityCheckReportForMaterialList = \common\models\mongodb\QualityCheckReportForMaterial::find()->select([‘wms_material_in_sheet_number‘])->where([‘in‘, ‘wms_material_in_sheet_quality_confirm‘, [‘1‘, ‘3‘]])->asArray()->all(); $alreadyMngCodeList = \yii\helpers\ArrayHelper::getColumn($qualityCheckReportForMaterialList, ‘wms_material_in_sheet_number‘); return $alreadyMngCodeList; } public static function getAlreadySettleCodeList(){ $_querySettle = \core\models\PurchaseSettlementSheet::find(); $consition = [ \core\models\DingtalkApproval::COMPLETE_APPROVAL, ]; $_querySettleApproved = $_querySettle->alias(‘ps‘)->select(‘ps.wms_material_in_sheet_number‘) ->leftJoin(\core\models\CommonApproveStatus::tableName()." cas","ps.purchase_settlement_sheet_number = cas.batch_number") ->andWhere([‘cas.common_approve_status_current_status‘=>$consition]) ->andWhere([‘or‘, [‘ps.is_del‘=>0], [‘ps.is_del‘=>NULL]]); $purchaseSettleSheetList = $_querySettleApproved->groupBy(‘ps.wms_material_in_sheet_number‘)->all(); return \yii\helpers\ArrayHelper::getColumn($purchaseSettleSheetList, ‘wms_material_in_sheet_number‘); } public static function getAlreadySettleCodeList2() { $query = self::find(); $query->alias(‘a‘); // 结算完成query $pss_query = self::find()->alias(‘mq‘); $pss_query->leftJoin([ ‘pss‘ => \core\models\PurchaseSettlementSheet::tableName() ], ‘mq.wms_material_in_sheet_number = pss.wms_material_in_sheet_number‘); $pss_query->leftJoin([ ‘cas‘ => \core\models\CommonApproveStatus::tableName(), ], ‘pss.purchase_settlement_sheet_number = cas.batch_number‘); $pss_query->where([ ‘pss.is_del‘ => 0, ‘cas.common_approve_status_current_status‘ => \core\models\DingtalkApproval::COMPLETE_APPROVAL, ]); $pss_query->groupBy([‘pss.wms_material_in_sheet_number‘]); $pss_query->select([ ‘mq.wms_material_in_sheet_number‘, ‘sum_settle_weight‘ => ‘sum(pss.purchase_settlement_sheet_net_weight)‘, ‘in_sheet_weight‘ => ‘mq.wms_material_in_sheet_purchase_weight‘ ]); $pss_query->having(‘in_sheet_weight = sum_settle_weight‘); $query->select([ ‘a.*‘, ‘in_sheet_number_at_pss‘ => ‘pss.wms_material_in_sheet_number‘ ]); $query->leftJoin([‘pss‘ => $pss_query], ‘a.wms_material_in_sheet_number = pss.wms_material_in_sheet_number‘); $in_sheet_number_list = array_filter(\yii\helpers\ArrayHelper::getColumn($query->asArray()->all(), ‘in_sheet_number_at_pss‘)); return $in_sheet_number_list; } }
3. 页面相关代码:
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; ?> <div id="search" class="wms-material-in-sheet-search"> <?php $form = ActiveForm::begin([ ‘action‘ => [‘index‘], ‘method‘ => ‘get‘, ]); ?> <div class="operation-more"> <div> <div class="col-lg-10 common_column"> <div class="common_column"> <a class="btn btn-success" href="<?= \yii\helpers\Url::to([‘create‘, ‘ist‘=>‘origin‘, ‘apply_or_wms‘=>1]) ?>"><i class="fa fa-plus" style="margin-right: 5px;"></i>原始入库</a> <?= Html::a(‘<i class="fa fa-download" style="margin-right: 5px;"></i>‘.‘导出‘, [‘export‘, ‘common_producer_info_id‘=>$model->common_producer_info_id, ‘common_producer_herb_info_id‘=>$model->common_producer_herb_info_id, ‘begin_at‘=>$model->begin_at, ‘end_at‘=>$model->end_at, ‘search_type‘=>$model->search_type, ], [‘data-pjax‘=>0, ‘class‘ => ‘btn btn-default‘, ‘title‘=>Yii::t(‘app‘, ‘导出‘)]) ?> <?= \backend\widgets\MultiPrintWidget::widget([‘viewObject‘=>$this, ‘viewUrl‘=>\yii\helpers\Url::toRoute([‘/wms-material-in-sheet/multi-print‘])]) ?> </div> <div class="ant-divider-vertical common_column"></div> <div class="common_column"> <?= \backend\widgets\StateWidget::widget([‘stateList‘=>\backend\models\WmsMaterialInSheetSearch::$stateList, ‘model‘ => $model, ‘modelRedirectStr‘=>‘/wms-material-in-sheet/index‘, ‘searchParamKeys‘=>[‘common_producer_info_id‘, ‘common_producer_herb_info_id‘, ‘begin_at‘, ‘end_at‘]]) ?> </div> </div> <div class="col-lg-2 common_column"> <span class="button_more_content btn btn-more-float"><a href="javascript:void(0)" onclick="isdiplay(this)">更多筛选<span class="glyphicon glyphicon-chevron-down" aria-hidden="true"></span></a></span> </div> </div> <div id="sunburn_more_search" style="display: <?=$model->is_display;?>"> <div class="row row-padding"> <div class="col-lg-12 common-more"> <div class="row"> <div class="col-xs-3 common_column common_column_gap"> <?= $form->field($model, ‘common_producer_info_id‘, [ ‘template‘ => "{input}", ])->label("基地名称")->widget(\kartik\select2\Select2::classname(), [ ‘name‘ => ‘common_producer_info_id‘, ‘hideSearch‘ => false, ‘data‘ => \yii\helpers\ArrayHelper::map(core\models\CommonProducerInfo::getCommonProducerInfoList(), ‘division_id‘, ‘common_producer_info_name‘), ‘options‘ => [‘placeholder‘ => ‘请选择基地‘,‘disabled‘=>$model->disabled], ‘pluginOptions‘ => [ ‘maximumInputLength‘ => 100, ‘allowClear‘ => true, ] ]); ?> </div> <div class="col-xs-2 common_column common_column_gap"> <?= $form->field($model, ‘common_producer_herb_info_id‘, [ ‘template‘ => "{input}", ])->label("药材名称")->widget(\kartik\select2\Select2::classname(), [ ‘name‘ => ‘common_producer_herb_info_id‘, ‘hideSearch‘ => false, ‘data‘ => \yii\helpers\ArrayHelper::map(core\models\CommonProducerHerbInfo::getCommonProducerHerbInfoList(), ‘id‘, ‘common_producer_herb_info_name‘), ‘options‘ => [‘placeholder‘ => ‘请选择药材‘], ‘pluginOptions‘ => [ ‘maximumInputLength‘ => 100, ‘allowClear‘ => true, ] ]); ?> </div> <div class="col-xs-2 common_column common_column_gap"> <?= $form->field($model, ‘begin_at‘,[ ‘template‘ => "{input}", ])->label(‘起始日期‘)->widget(\kartik\datetime\DateTimePicker::classname(), [ ‘options‘ => [ ‘placeholder‘ => ‘起始日期‘, ], ‘readonly‘ => false, ‘pluginOptions‘ => [ ‘autoclose‘ => true, ‘format‘ => ‘yyyy-mm-dd‘, ‘minView‘ => 2, ‘maxView‘ => 4, ] ]) ?> </div> <div class="col-xs-2 common_column common_column_gap"> <?= $form->field($model, ‘end_at‘,[ ‘template‘ => "{input}", ])->label(‘截止日期‘)->widget(\kartik\datetime\DateTimePicker::classname(), [ ‘options‘ => [ ‘placeholder‘ => ‘截止日期‘, ], ‘readonly‘ => false, ‘pluginOptions‘ => [ ‘autoclose‘ => true, ‘format‘ => ‘yyyy-mm-dd‘, ‘minView‘ => 2, ‘maxView‘ => 4, ] ]) ?> </div> <div class="col-xs-1 common_column common_column_gap"> <div class="input-group"> <button type="submit" class="btn btn-default">查询</button> </div> </div> </div> </div> </div> </div> <div class="clearfix"></div> </div> <?php ActiveForm::end(); ?> </div> <?php $js = <<<JS $(function() { var display = ‘{$model->is_display}‘; keepIsDisplay(display); }); JS; $this->registerJs($js); ?>
原文:https://www.cnblogs.com/liuzhiqaingxyz/p/10382279.html