orgId; $map['status'] = 2; $map['advanced'] = 3; // 合同 $list = Db::name('apply') ->where($map) ->field('id,apply_sn,title,form_json') ->limit($start,$length) ->order('id desc') ->select(); // 获取补充合同单 $addlist = $this->getOtherList(4); // 获取支付合同单 $paylist = $this->getOtherList(5); foreach ($list as $k=>$v){ $formJson = json_decode($v['form_json'],true); $money = 0; $ptitle = ''; $company = ''; $addTime = ''; foreach ($formJson as $kk=>$vv){ if($vv['componentName'] == 'ddjjcontractfield'){ foreach ($vv['components'] as $kkk=>$vvv){ if($vvv['idx'] === 3){ $money = $vvv['values']; } else if($vvv['idx'] === 2){ $ptitle = $vvv['values']; } else if($vvv['idx'] === 5){ $company = $vvv['values']; } else if($vvv['idx'] === 1){ $addTime = $vvv['values']; } } break; } } $list[$k]['ptitle'] = $ptitle; $list[$k]['company'] = $company; $list[$k]['addTime'] = $addTime; $list[$k]['total_money'] = $this->getMoneyByFormJson($v['id'],$money,$addlist); $cids = $this->getApplyIds($v['id'],$addlist); $list[$k]['pay_money'] = $this->getPayMoney($cids,$paylist); $paybl = floatval($list[$k]['total_money']) > 0?round($list[$k]['pay_money']/$list[$k]['total_money'],2):0; $paybl = $paybl > 1 ? 1 : $paybl; $list[$k]['paybl'] = ($paybl*100).'%'; unset($list[$k]['form_json']); } $total = Db::name('apply')->where($map)->count(); $data = [ 'total' => $total, 'list' => $list?$list:[] ]; ajax_return_ok($data); } public function addlists(){ $applyId = input('id/d',0); $addlists = $this->getOtherList(4); // 获取原始款项 $info = Db::name('apply')->where('id',$applyId)->field('id,apply_sn,title,form_json')->find(); $formJson = json_decode($info['form_json'],true); $money = 0; $ptitle = ''; $company = ''; $addTime = ''; foreach ($formJson as $kk=>$vv){ if($vv['componentName'] == 'ddjjcontractfield'){ foreach ($vv['components'] as $kkk=>$vvv){ if($vvv['idx'] === 3){ $money = $vvv['values']; } else if($vvv['idx'] === 2){ $ptitle = $vvv['values']; } else if($vvv['idx'] === 5){ $company = $vvv['values']; } else if($vvv['idx'] === 1){ $addTime = $vvv['values']; } } break; } } $info['ptitle'] = $ptitle; $info['company'] = $company; $info['addTime'] = $addTime; $info['money'] = $money; unset($info['form_json']); $lists = [$info]; foreach ($addlists as $k=>$v){ if($applyId == $v['applyId']){ $lists[] = $v; } } ajax_return_ok($lists); } public function paylists(){ $applyId = input('id/d',0); // 获取补充合同单 $addlist = $this->getOtherList(4); $cids = $this->getApplyIds($applyId,$addlist); $paylists = $this->getOtherList(5); $lists = []; foreach ($paylists as $k=>$v){ if(in_array($v['applyId'],$cids)){ $lists[] = $v; } } ajax_return_ok($lists); } // 获取审批单的支付比例 public function getmoney(){ $applyId = input('id/d',0); $formJson = Db::name('apply')->where('id',$applyId)->value('form_json'); if(!$formJson){ ajax_return_error('记录不存在'); } $formJson = json_decode($formJson,true); $total_money = 0; foreach ($formJson as $kk=>$vv){ if($vv['componentName'] == 'ddjjcontractfield'||$vv['componentName'] == 'ddaddcontractfield'){ foreach ($vv['components'] as $kkk=>$vvv){ if($vvv['idx'] === 3){ $total_money = $vvv['values']; } } break; } } $paylists = $this->getOtherList(5); $pay_money = $this->getPayMoney([$applyId],$paylists); $paybl = 0; if($total_money){ $paybl = round($pay_money/$total_money,2); $paybl = $paybl > 1 ? 1 : $paybl; $paybl = ($paybl*100).'%'; } ajax_return_ok(['money'=>$pay_money,'paybl'=>$paybl]); } private function getOtherList($advanced){ $lists = Db::name('apply') ->where([ 'advanced' => $advanced, 'status' => 2, 'org_id' => $this->orgId ])->field('id,title,apply_sn,form_json') ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $formJson = json_decode($v['form_json'],true); $applyId = 0; $money = 0; $ptitle = ''; $company = ''; $addTime = ''; foreach ($formJson as $kk=>$vv){ if($vv['componentName'] == 'ddaddcontractfield'||$vv['componentName'] == 'ddpaycontractfield'){ foreach ($vv['components'] as $kkk=>$vvv){ if($vvv['idx'] === 9){ $applyId = $vvv['values2'][0]['id']; } else if($vvv['idx'] === 3){ $money = $vvv['values']; } else if($vvv['idx'] === 2){ $ptitle = $vvv['values']; } else if($vvv['idx'] === 5){ $company = $vvv['values']; } else if($vvv['idx'] === 1){ $addTime = $vvv['values']; } } break; } } $lists[$k]['ptitle'] = $ptitle; $lists[$k]['company'] = $company; $lists[$k]['addTime'] = $addTime; $lists[$k]['applyId'] = $applyId; $lists[$k]['money'] = $money; unset($lists[$k]['form_json']); } return $lists; } // 获取补充合同id private function getApplyIds($id,$addlist){ $cids = []; $cids[] = $id; foreach ($addlist as $k=>$v){ if($id == $v['applyId']){ $cids[] = $v['id']; } } return $cids; } // 从formJson中获取金额 private function getMoneyByFormJson($id,$money,$addlist){ $othermoney = 0; foreach ($addlist as $k=>$v){ if($id == $v['applyId']){ $othermoney += $v['money']; } } return $money + $othermoney; } private function getPayMoney($cids,$paylist){ $othermoney = 0; foreach ($paylist as $k=>$v){ if(in_array($v['applyId'],$cids)){ $othermoney += $v['money']; } } return $othermoney; } }