123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588 |
- <?php
- namespace app\common\model;
- use app\hander\HelpHander;
- use think\Db;
- use think\Model;
- class ContractPay extends Model
- {
- public function advancedStartContractPay($id,$orgId,$userId,$formJson){
- $formJson = json_decode($formJson,true);
- $data = [
- 'org_id' => $orgId,
- 'user_id' => $userId,
- 'apply_id' => $id,
- 'create_time' => date('Y-m-d H:i:s'),
- 'status' => 0,
- 'ispay' => 1
- ];
- $attachment = 0; //0=无附件 1=有附件
- foreach ($formJson as $k=>$v){
- if($v['componentName'] == 'ddpaycontractfield'){
- foreach ($v['components'] as $key=>$val){
- switch ($val['idx']){
- case '0':
- $data['pay_apply_id'] = $val['values2'][0]['id'];
- break;
- case '1':
- $data['money'] = $val['values'];
- break;
- // case '2':
- // $data['agent'] = $val['values'];
- // break;
- case '3':
- $data['last'] = $val['values'] == '是'?1:0;
- break;
- case '5':
- $attachment = empty($val['values'])?0:1;
- break;
- case '6':
- $data['completion'] = isset($val['values'])?$val['values']:0;;
- break;
- }
- }
- break;
- }
- }
- $payinfo = Db::name('contract')->where('apply_id',$data['pay_apply_id'])->find();
- $data['company_id'] = $payinfo['company_id'];
- $paymoney = $payinfo['pay_money'] + $data['money'];
- if($data['last'] == 1 && $paymoney != $payinfo['money'] && $attachment != 1){ // 是尾款
- $this->error = '结算价与合同价不同,必须上传附件说明';
- return false;
- }
- $ret = Db::name('contract_pay')->insert($data);
- if(!$ret){
- $this->error = '数据保存失败';
- return false;
- }
- return true;
- }
- public function advancedEndContractPay($id,$orgId,$userId,$formJson){
- $data = [
- 'update_time' => date('Y-m-d H:i:s'),
- 'status' => 1
- ];
- $info = Db::name('contract_pay')->where('apply_id',$id)->find();
- $payinfo = Db::name('contract')->where('apply_id',$info['pay_apply_id'])->find();
- if($info['completion'] > 0){
- if($payinfo['type'] == 0){ //普通合同
- $res = Db::name('contract')->where('id',$payinfo['id'])->update([
- 'completion' => round($info['completion'],2),
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- }else{ //追加合同
- $parent_apply_id = Db::name('contract')->where('id',$payinfo['id'])->value('parent_apply_id');
- $pinfo = Db::name('contract')
- ->where('apply_id',$parent_apply_id)
- ->where('status',1)
- ->find();
- $res = Db::name('contract')->where('id',$pinfo['id'])->update([
- 'completion' => round($info['completion'],2),
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- }
- if(!$res){
- return false;
- }
- }
- $paymoney = $payinfo['pay_money'] + $info['money'];
- $data['pay_money'] = $paymoney;
- $res = Db::name('contract_pay')->where('id',$info['id'])->update($data);
- if(!$res){
- $this->error = '数据修改失败';
- return false;
- }
- $ret = Db::name('contract')->where('id',$payinfo['id'])->update([
- 'finish' => $info['last'],
- 'pay_money' => $paymoney,
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- if(!$ret){
- $this->error = '数据修改失败';
- return false;
- }
- return true;
- }
- public function advancedDisagreeContractPay($id){
- $data = [
- 'update_time' => date('Y-m-d H:i:s'),
- 'status' => 2
- ];
- $ret = Db::name('contract_pay')->where('apply_id',$id)->update($data);
- return $ret?true:false;
- }
- public function advancedDelContractPay($id){
- $info = Db::name('contract_pay')->where('apply_id',$id)->find();
- $payinfo = Db::name('contract')->where('apply_id',$info['pay_apply_id'])->find();
- $data = [
- 'update_time' => date('Y-m-d H:i:s'),
- 'status' => 2
- ];
- $ret = Db::name('contract_pay')->where('apply_id',$id)->update($data);
- if($ret && $info['status'] == 1){
- $paymoney = $payinfo['pay_money'] - $info['money'];
- $res = Db::name('contract')->where('id',$payinfo['id'])->update([
- 'finish' => $info['last'] == 1?0:$payinfo['finish'],
- 'pay_money' => $paymoney,
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- if(!$res){
- return false;
- }
- if($info['completion'] > 0){
- if($payinfo['type'] == 0){ //普通合同
- $res = Db::name('contract')->where('id',$payinfo['id'])->update([
- 'completion' => $info['completion'] != $payinfo['completion']?$payinfo['completion']:0,
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- }else{ //追加合同
- $parent_apply_id = Db::name('contract')->where('id',$payinfo['id'])->value('parent_apply_id');
- $pinfo = Db::name('contract')
- ->where('apply_id',$parent_apply_id)
- ->where('status',1)
- ->find();
- $res = Db::name('contract')->where('id',$pinfo['id'])->update([
- 'completion' => $info['completion'] != $pinfo['completion']?$pinfo['completion']:0,
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- }
- if(!$res){
- return false;
- }
- }
- }
- return $ret?true:false;
- }
- public function advancedStartContractGet($id,$orgId,$userId,$formJson){
- $formJson = json_decode($formJson,true);
- $data = [
- 'org_id' => $orgId,
- 'user_id' => $userId,
- 'apply_id' => $id,
- 'create_time' => date('Y-m-d H:i:s'),
- 'status' => 0,
- 'ispay' => 2
- ];
- // $attachment = 0; //0=无附件 1=有附件
- foreach ($formJson as $k=>$v){
- if($v['componentName'] == 'ddgetcontractfield'){
- foreach ($v['components'] as $key=>$val){
- $val['values2'] = isset($val['values2'])?$val['values2']:[];
- $val['values'] = isset($val['values'])?$val['values']:'';
- switch ($val['idx']){
- case '0':
- $data['pay_apply_id'] = $val['values2'][0]['id'];
- break;
- case '1':
- $data['money'] = $val['values'];
- break;
- // case '2':
- // $data['agent'] = $val['values'];
- // break;
- case '3':
- $data['last'] = $val['values'] == '是'?1:0;
- break;
- // case '5':
- // $attachment = empty($val['values'])?0:1;
- // break;
- }
- }
- break;
- }
- }
- $payinfo = Db::name('contract')->where('apply_id',$data['pay_apply_id'])->find();
- $data['company_id'] = $payinfo['company_id'];
- // $paymoney = $payinfo['pay_money'] + $data['money'];
- // if($data['last'] == 1 && $paymoney != $payinfo['money'] && $attachment != 1){ // 是尾款
- // $this->error = '结算价与合同价不同,必须上传附件说明';
- // return false;
- // }
- $ret = Db::name('contract_pay')->insert($data);
- if(!$ret){
- $this->error = '数据保存失败';
- return false;
- }
- return true;
- }
- public function advancedEndContractGet($id,$orgId,$userId,$formJson){
- $data = [
- 'update_time' => date('Y-m-d H:i:s'),
- 'status' => 1
- ];
- $info = Db::name('contract_pay')->where('apply_id',$id)->find();
- $payinfo = Db::name('contract')->where('apply_id',$info['pay_apply_id'])->find();
- $paymoney = $payinfo['pay_money'] + $info['money'];
- $data['pay_money'] = $paymoney;
- $res = Db::name('contract_pay')->where('id',$info['id'])->update($data);
- if(!$res){
- $this->error = '数据修改失败';
- return false;
- }
- $ret = Db::name('contract')->where('id',$payinfo['id'])->update([
- 'finish' => $info['last'],
- 'pay_money' => $paymoney,
- 'update_time' => date('Y-m-d H:i:s')
- ]);
- if(!$ret){
- $this->error = '数据修改失败';
- return false;
- }
- return true;
- }
- public function advancedDisagreeContractGet($id){
- $data = [
- 'update_time' => date('Y-m-d H:i:s'),
- 'status' => 2
- ];
- $ret = Db::name('contract_pay')->where('apply_id',$id)->update($data);
- return $ret?true:false;
- }
- public function advancedDelContractGet($id){
- $info = Db::name('contract_pay')->where('apply_id',$id)->find();
- $payinfo = Db::name('contract')->where('apply_id',$info['pay_apply_id'])->find();
- $data = [
- 'update_time' => date('Y-m-d H:i:s'),
- 'status' => 2
- ];
- $ret = Db::name('contract_pay')->where('apply_id',$id)->update($data);
- if($ret && $info['status'] == 1){
- $d = [
- 'pay_money' => $payinfo['pay_money'] - $info['money'],
- 'update_time' => date('Y-m-d H:i:s')
- ];
- if($info['last'] == 1){
- $d['finish'] = 0;
- }
- $res = Db::name('contract')->where('id',$payinfo['id'])->update($d);
- if(!$res){
- return false;
- }
- }
- return $ret?true:false;
- }
- public function payLists($applyId){
- $map[] = ['status','=',1];
- // 先获取追加合同的id
- $applyids = Db::name('contract')
- ->where('status',1)
- ->where('type',1)
- ->where('parent_apply_id',$applyId)
- ->column('apply_id');
- $applyids = $applyids?$applyids:[];
- $applyids[] = $applyId;
- $map[] = ['pay_apply_id','in',$applyids];
- $lists = $this
- ->where($map)
- ->order('id asc')
- ->select();
- $lists = $lists?$lists->toArray():[];
- foreach ($lists as $k=>$v){
- $lists[$k]['company'] = Db::name('company')->where('id',$v['company_id'])->value('title');
- $info = Db::name('contract')->where('apply_id',$v['pay_apply_id'])->find();
- $lists[$k]['contract_sn'] = $info['contract_sn'];
- $lists[$k]['title'] = $info['title'];
- $lists[$k]['agent'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name');
- }
- return $lists;
- }
- public function payLists2($page,$size,$title,$contractSn,$qrStatus){
- $map[] = ['cp.status','=',1];
- if($qrStatus >= 0){
- $map[] = ['cp.qr_status','=',$qrStatus];
- }
- if($title){
- $map[] = ['c.title','like','%'.$title.'%'];
- }
- if($contractSn){
- $map[] = ['c.contract_sn','like','%'.$contractSn.'%'];
- }
- $lists = Db::name('contract_pay')
- ->alias('cp')
- ->join('contract c','c.apply_id = cp.pay_apply_id')
- ->join('apply a','a.id = cp.apply_id')
- ->where($map)
- ->page($page,$size)
- ->field('cp.*,c.title,c.contract_sn,c.type,a.approval_id')
- ->order('cp.id desc')
- ->select();
- $lists = $lists?$lists:[];
- foreach ($lists as $k=>$v){
- $lists[$k]['userName'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name');
- // 是否可打印请款单
- $lists[$k]['print'] = 0;
- if($v['ispay'] == 1 && $v['approval_id'] == 88){
- $lists[$k]['print'] = 1;
- }
- $lists[$k]['cw_user_name'] = '';
- $lists[$k]['dep_user_name'] = '';
- $lists[$k]['leaders_name'] = '';
- if($v['cw_user_id'] > 0){
- $lists[$k]['cw_user_name'] = Db::name('user_info')->where('user_id',$v['cw_user_id'])->value('name');
- }
- if($v['dep_user_id'] > 0){
- $lists[$k]['dep_user_name'] = Db::name('user_info')->where('user_id',$v['dep_user_id'])->value('name');
- }
- if($v['leaders']){
- $ids = explode(',',$v['leaders']);
- $names = [];
- foreach ($ids as $val){
- $names[] = Db::name('user_info')->where('user_id',$val)->value('name');
- }
- $lists[$k]['leaders_name'] = implode(',',$names);
- }
- }
- $total = Db::name('contract_pay')
- ->alias('cp')
- ->join('contract c','c.apply_id = cp.pay_apply_id')
- ->join('apply a','a.id = cp.apply_id')
- ->where($map)->count();
- $data = [
- 'total' => $total,
- 'list' => $lists
- ];
- return $data;
- }
- public function payPrint($applyId){
- $this->formatContractPay($applyId);
- $info = Db::name('contract_pay')->where('apply_id',$applyId)->where('status',1)->find();
- if(!$info){
- HelpHander::error('记录不存在');
- }
- $info['day'] = date('Y年m月d日');
- $info['company_name'] = Db::name('company')->where('id',$info['company_id'])->value('title');
- $info['contract_company'] = Db::name('contract')->where('apply_id',$info['pay_apply_id'])->value('company2');
- $apply = Db::name('apply')->where('id',$info['apply_id'])->find();
- $info['dep_name'] = Db::name('dep')->where('id',$apply['dep_id'])->value('name');
- $info['content'] = '';
- $formJson = json_decode($apply['form_json'],true);
- $info['pay'] = '';
- foreach ($formJson as $k=>$v){
- if($v['componentName'] == 'ddpaycontractfield'){
- foreach ($v['components'] as $key=>$val){
- $val['values'] = isset($val['values'])?$val['values']:'';
- switch ($val['idx']){
- case '4':
- $info['content'] = $val['values'];
- break;
- case '2':
- $info['pay'] = $val['values'];
- break;
- }
- }
- break;
- }
- }
- $info['user_name'] = Db::name('user_info')->where('user_id',$info['user_id'])->value('name');
- $info['cw_user_name'] = '';
- $info['dep_user_name'] = '';
- $info['leaders_name'] = '';
- if($info['cw_user_id'] > 0){
- $info['cw_user_name'] = Db::name('user_info')->where('user_id',$info['cw_user_id'])->value('name');
- $cwrecord = Db::name('apply_record')
- ->where('apply_id',$info['apply_id'])
- ->where('user_id',$info['cw_user_id'])
- ->where('status',1)
- ->where('del',0)
- ->where('type','in',[2,8])
- ->order('id desc')
- ->find();
- $info['cw_record'] = $cwrecord;
- }
- if($info['dep_user_id'] > 0){
- $info['dep_user_name'] = Db::name('user_info')->where('user_id',$info['dep_user_id'])->value('name');
- $deprecord = Db::name('apply_record')
- ->where('apply_id',$info['apply_id'])
- ->where('user_id',$info['dep_user_id'])
- ->where('status',1)
- ->where('del',0)
- ->where('type','in',[2,8])
- ->order('id desc')
- ->find();
- $info['dep_record'] = $deprecord;
- }
- if($info['leaders']){
- $ids = explode(',',$info['leaders']);
- $names = [];
- foreach ($ids as $val){
- $names[] = Db::name('user_info')->where('user_id',$val)->value('name');
- }
- $info['leaders_name'] = implode(',',$names);
- $deprecord = Db::name('apply_record')
- ->where('apply_id',$info['apply_id'])
- ->where('user_id','in',$ids)
- ->where('status',1)
- ->where('del',0)
- ->where('type','in',[2,8])
- ->order('id desc')
- ->select();
- foreach ($deprecord as $k=>$v){
- $deprecord[$k]['user_name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name');
- }
- $info['leaders_record'] = $deprecord;
- }
- $info['zr_user_name'] = '';
- $info['zr_content'] = '';
- $info['zr_time'] = '';
- if($applyId == 5573){ //特殊单子
- $info['zr_user_name'] = '冯磊';
- $info['zr_content'] = '同意';
- $info['zr_time'] = '2022-01-05 14:23:37';
- }
- return $info;
- }
- // 格式化合同支付会签的各个负责人
- public function formatContractPay($applyId){
- $info = Db::name('contract_pay')->where('apply_id',$applyId)->where('status',1)->find();
- if($info && !$info['dep_user_id']){
- $apply = Db::name('apply')->where('id',$info['apply_id'])->find();
- if($apply['approval_id'] != 88){
- return false;
- }
- $flow = json_decode($apply['flow_json'],true);
- $dnodeId = '';
- foreach ($flow as $k=>$v){
- if($v['type'] == 2 && $v['name'] == '处室负责人'){
- $dnodeId = $v['id'];
- }
- }
- $data = [
- 'cw_user_id' => 0,
- 'dep_user_id' => 0,
- 'leaders' => '',
- ];
- if($dnodeId){
- $depId = Db::name('apply_record')->where('apply_id',$info['apply_id'])->where('nodeid',$dnodeId)->where('status',1)->where('del',0)->value('user_id');
- $data['dep_user_id'] = $depId?$depId:0;
- }else{
- $data['dep_user_id'] = $apply['user_id'];
- }
- $ldep = 226; // 中心领导部门
- $ljobs = [282,161]; // 161=党委书记,主任 282=中心副主任
- $cdep = 205; // 财务处
- $users = Db::name('apply_record')
- ->alias('ar')
- ->join('user_job uj','uj.user_id = ar.user_id')
- ->join('job j','j.id = uj.job_id')
- ->where('ar.apply_id',$info['apply_id'])
- ->where('ar.status',1)
- ->where('ar.del',0)
- ->where('ar.type','in',[2,8])
- ->field('ar.user_id,j.dep_id,uj.job_id')
- ->select();
- $users = $users?$users:[];
- $lids = [];
- foreach ($users as $k=>$v){
- if($v['dep_id'] == $cdep){ // 财务处
- $data['cw_user_id'] = $v['user_id'];
- }else if($v['dep_id'] == $ldep && !in_array($v['job_id'],$ljobs)){ //中心分管领导
- $lids[] = $v['user_id'];
- }
- }
- $data['leaders'] = $lids?implode(',',$lids):'';
- Db::name('contract_pay')->where('id',$info['id'])->update($data);
- }
- }
- // 上传支付收款凭证
- public function payupdates($id,$sdFile){
- $data = [
- 'file' => $sdFile,
- 'file_time' => date('Y-m-d H:i:s'),
- 'file_status' => 1
- ];
- if($id <= 0){
- HelpHander::error('参数错误');
- }
- if(!$data['file']){
- HelpHander::error('未上传支付/收款凭证');
- }
- $info = Db::name('contract_pay')->where('id',$id)->find();
- if(!$info || $info['status'] != 1){
- HelpHander::error('记录不存在');
- }
- if($info['file_status'] == 1){
- HelpHander::error('已上传过凭证');
- }
- $ret = Db::name('contract_pay')->where('id',$id)->update($data);
- if(!$ret){
- HelpHander::error('操作失败');
- }
- return true;
- }
- // 确认
- public function payConfirm($id,$userId){
- $data = [
- 'qr_user_id' => $userId,
- 'qr_time' => date('Y-m-d H:i:s'),
- 'qr_status' => 1
- ];
- if($id <= 0){
- HelpHander::error('参数错误');
- }
- $info = Db::name('contract_pay')->where('id',$id)->find();
- if(!$info || $info['status'] != 1){
- HelpHander::error('记录不存在');
- }
- if($info['qr_status'] == 1){
- HelpHander::error('已确认过');
- }
- $ret = Db::name('contract_pay')->where('id',$id)->update($data);
- if(!$ret){
- HelpHander::error('操作失败');
- }
- return true;
- }
- }
|