-- 命名空间 #namespace("Gtzz") -- 获取指定步骤的项目列表(待办) max()...group by 只显示同一个项目+步骤CODE的最后一条 #sql("getToDoStepList") select '#(person_id)' as operator_id,progress_id,subject_id,subject_name,org_code,subject_type_id,subject_type_name, step_code,step_name,action_bureau,year,check_status,is_current,begin_time, task_number,data_type,is_back_log,lixiang_time,org_name as xmdw from t_gtzz_progress as ta where is_finish_flag <3 and progress_id in ( select max(progress_id) from t_gtzz_progress where step_code in ( #for(id:step_codes) #(for.index > 0 ? ", " : "") '#(id)' #end ) and is_current = #(is_current) #if(org_code) and org_code='#(org_code)' #end #if(keyword) and ((subject_name like '%#(keyword)%') or (task_number like '%#(keyword)%') or (org_name like '%#(keyword)%')) #end #if(begin_date) and lixiang_time >= '#(begin_date)' #end #if(end_date) and lixiang_time <= '#(end_date)' #end -- 专家 #if(expert_person_id) and subject_id in (select subject_id from t_gtzz_subject_expert where progress_id=0 and step_code in ( #for(id:step_codes) #(for.index > 0 ? ", " : "") '#(id)' #end ) and person_id='#(expert_person_id)') #end -- 监理 #if(jianli_person_id) and subject_id in (select subject_id from t_gtzz_subject_jianli where step_code in ( #for(id:step_codes) #(for.index > 0 ? ", " : "") '#(id)' #end ) and person_id='#(jianli_person_id)') #end -- 已上报,不显示退回 #if(is_current==0) and check_status<>2 #end group by subject_id, step_code ) order by progress_id desc #end -- 哪些步骤有上传附件的需要 #sql("getStepDocument") select t1.step_code,t1.type_id,t2.type_name from t_gtzz_step_document as t1 inner join t_gtzz_document_type as t2 on t1.type_id=t2.type_id where 1=1 #if(step_code) and t1.step_code='#(step_code)' #end #end -- 获取指定项目的详细信息 #sql("getSubjectExtInfo") -- pay_flag:第二阶段业务完成标记(项目资金支付)(0:未完成 1:完成) -- use_flag:项目启用废除标记(0:废除,1:启用) -- delete_flag 删除标记(0:有效 1:删除) -- task_type: 0培训 1新建 2维修 3绿化 4校园文化 5软件平台 6 购买服务 7安全 8装备 -- 数据类型(0-新建 1-支付 2-续拨) -- process_node_id: 流程节点id -- process_node_name: 流程节点名称 select t1.sn,(select parent_name from t_pro_detail where task_sn=t1.sn limit 1) as subject_type_name,t1.task_number,t1.task_title,t1.task_year,t1.ex_send_org_name,t1.pay_flag,t1.use_flag,t1.delete_flag,t1.task_type,t1.create_time,t1.data_type,t1.process_node_id,t1.process_node_name, t2.itemvalue11 as xmjj, -- 项目简介 t2.itemValue20 as ztz, -- 总投资 t2.itemValue47 as zbj, -- 中标价(合同金额) t2.itemValue20211 as pfje2021, -- 批复金额2021 t2.itemValue20221 as pfje2022, -- 批复金额2022 t2.itemValue20231 as pfje2023, -- 批复金额2023 t2.itemValue20241 as pfje2024, -- 批复金额2024 t2.itemValue20251 as pfje2025 -- 批复金额2025 from t_pro_task as t1 left join t_pro_form_value as t2 on t2.task_sn=t1.sn where t1.sn='#(task_sn)' #end -- 填充项目数据 #sql("fillSubject") select t1.sn,t1.task_number,t1.task_title,t1.task_year,t1.ex_send_org_name,t1.task_type as subject_type_id , t3.subject_type_name, t3.subject_type_name,t1.create_time from t_pro_task as t1 left join t_pro_form_value as t2 on t2.task_sn=t1.sn left join t_gtzz_subject_type as t3 on t1.task_type=t3.subject_type_id where -- 只关心市直属学校的数据 t1.ex_send_org_name in (select org_name from t_gtzz_school) -- 立项通过,审批完成 and t1.use_flag=1 and t1.draft_flag=0 and t1.close_flag=1 and t1.data_type=0 -- 按申报时间倒序 order by t1.create_time desc #end -- 获取项目财务审批流水 #sql("getSubjectPreInfo") select handle_node_name,receive_user_name as send_user_name,msg_title, handle_opinion,create_time,modify_time from t_pro_message where task_sn='#(task_sn)' and DELETE_FLAG=0 order by create_time #end -- 获取指定年份的项目查询列表 #sql("getXmxcList") select * from t_gtzz_progress where progress_id in (select max(progress_id) from t_gtzz_progress group by subject_id) #if(year) and year=#(year) #end #if(org_code) and org_code='#(org_code)' #end #if(year) and year='#(year)' #end #if(subject_type_id) and subject_type_id=#(subject_type_id) #end #if(keyword) and subject_name like '%#(keyword)%' #end and step_code like '#(step_code)%' order by begin_time desc #end -- 获取符合条件的专家列表 #sql("getExpertList") select t1.*, (select group_concat(zc_name) from t_gtzz_expert_domain as t2 where t1.person_id=t2.person_id group by t2.zc_id) zc_name from t_gtzz_expert as t1 where b_use=1 #if(keyword) and t1.person_name like '%#(keyword)%' #end #if(zc_id) and t1.person_id in (select person_id from t_gtzz_expert_domain where zc_id=#(zc_id)) #end order by t1.bureau_name,t1.person_name #end -- 项目查询列表之专家分配 #sql("getSubjectListForSettingExpert") select * from ( select t1.*, (select count(1) from t_gtzz_subject_expert as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(step_code)' and t2.progress_id=0) as zj_count, (select count(1) from t_gtzz_progress as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(end_step_code)' ) as can_update from t_gtzz_subject as t1 where subject_id in (select subject_id from t_gtzz_progress where step_code>='#(start_step_code)' and step_code<='#(end_step_code)' #if(not_setting_zj) and is_current=1 #end ) #if(data_type) and t1.data_type=#(data_type) #end #if(begin_date) and t1.lixiang_time between '#(begin_date)' and '#(end_date)' #end #if(keyword) and (t1.xmmc like '%#(keyword)%' or t1.xmdw like '%#(keyword)%' or t1.task_number like '%#(keyword)%') #end order by t1.lixiang_time ) as ta where 1=1 #if(setting_zj) and ta.zj_count>0 #end #if(not_setting_zj) and ta.zj_count=0 #end #end -- 项目查询列表之监理公司分配 #sql("getFenPeiJianLiList") select * from ( select t1.*, (select progress_id from t_gtzz_progress as t2 where t1.subject_id=t2.subject_id order by progress_id desc limit 1 ) as progress_id, (select max(step_code) from t_gtzz_progress as t2 where t2.subject_id=t1.subject_id) as last_step_code, (select count(1) from t_gtzz_subject_jianli as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(step_code)' and t2.person_id='-1') as no_need_jl, (select count(1) from t_gtzz_subject_jianli as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(step_code)') as jl_count, (select count(1) from t_gtzz_progress as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(end_step_code)') as can_update from t_gtzz_subject as t1 where t1.bureau_id='#(bureau_id)' #if(data_type) and t1.data_type=#(data_type) #end #if(begin_date) and t1.lixiang_time between '#(begin_date)' and '#(end_date)' #end #if(keyword) and (t1.xmmc like '%#(keyword)%' or t1.xmdw like '%#(keyword)%' or t1.task_number like '%#(keyword)%' ) #end ) as ta where last_step_code>='0206' #if(setting_jl) and ta.jl_count>0 #end #if(not_setting_jl) and ta.jl_count=0 #end order by ta.progress_id desc #end -- 获取指定处理流水中指定流水号的上传文件类型列表 #sql("getProgressIdDocTypeList") select ta.document_type_id,count(1) as c from (select t1.progress_id,t2.* from t_gtzz_progress_file as t1 inner join t_gtzz_file as t2 on t1.file_id=t2.file_id) as ta where ta.progress_id=#(progress_id) group by ta.document_type_id #end -- 综合查询(项目) #sql("querySubject") select t1.*, (select progress_id from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as progress_id, (select step_code from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as step_code from t_gtzz_subject as t1 where 1=1 #if(keyword) and (t1.xmmc like '%#(keyword)%' or t1.task_number like '%#(keyword)%') #end #if(subject_type_ids) and t1.subject_type_id in ( #for(id:subject_type_ids) #(for.index > 0 ? ", " : "") '#(id)' #end ) #end #if(org_code) and t1.org_code='#(org_code)' #end #if(begin_date) and (t1.lixiang_time between '#(begin_date)' and '#(end_date)') #end #if(data_type) and t1.data_type=#(data_type) #end #if(sbnd) and t1.sbnd=#(sbnd) #end #if(step_code) and t1.subject_id in (select subject_id from t_gtzz_progress where is_current=#(is_current) and step_code like '#(step_code)%') #end #end -- 综合查询(项目关闭) #sql("querySubjectForClose") select *, (select progress_id from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as progress_id, (select step_code from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as step_code, (select is_finish_flag from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as is_finish_flag from t_gtzz_subject as t1 where 1=1 #if(keyword) and (t1.xmmc like '%#(keyword)%' or t1.task_number like '%#(keyword)%') #end #if(subject_type_ids) and t1.subject_type_id in ( #for(id:subject_type_ids) #(for.index > 0 ? ", " : "") '#(id)' #end ) #end #if(org_code) and t1.org_code='#(org_code)' #end #if(begin_date) and (t1.lixiang_time between '#(begin_date)' and '#(end_date)') #end #if(data_type) and t1.data_type=#(data_type) #end #if(sbnd) and t1.sbnd=#(sbnd) #end and (select t2.is_finish_flag from t_gtzz_progress as t2 where t2.subject_id=t1.subject_id order by t2.progress_id desc limit 1)=2 #end -- 综合查询(文件) #sql("queryFile") select t2.*,t3.*,concat('/FengHuang/upload/',t2.file_id,'.', t2.suffix) as url from t_gtzz_progress_file as t1 inner join t_gtzz_file as t2 on t1.file_id=t2.file_id inner join t_gtzz_progress as t3 on t1.progress_id=t3.progress_id where 1=1 #if(keyword) and((t3.subject_name like '%#(keyword)%') or (t3.task_number like '%#(keyword)%')) #end #if(document_type_ids) and t2.document_type_id in ( #for(id:document_type_ids) #(for.index > 0 ? ", " : "") '#(id)' #end ) #end #if(subject_type_ids) and t3.subject_type_id in ( #for(id:subject_type_ids) #(for.index > 0 ? ", " : "") '#(id)' #end ) #end #if(org_code) and t1.org_code='#(org_code)' #end #if(begin_date) and t2.update_ts between '#(begin_date)' and '#(end_date)' #end #if(data_type) and t3.data_type=#(data_type) #end #if(sbnd) and t3.year=#(sbnd) #end #if(step_code) and t3.step_code like '#(step_code)%' #end #end -- 四个阶段的统计信息(市、校两级兼容) #sql("tjTopFourStep") select (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 #if(org_code) and org_code='#(org_code)' #end ) as xmlx, (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 #if(org_code) and org_code='#(org_code)' #end and step_code like '02%') as zbcg, (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 #if(org_code) and org_code='#(org_code)' #end and is_finish_flag=0 and step_code like '03%') as ssys, (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 #if(org_code) and org_code='#(org_code)' #end and is_finish_flag=1) as xmbf #end -- 今年项目概览(市专用) #sql("tjSubjectSummaryCurrentYear") select sum(subject_count) as subject_count, sum(finish_count) as finish_count, sum(close_count) as close_count, sum(jz_count) as jz_count, sum(yq_count) as yq_count, ROUND(sum(money),2) as money from t_gtzz_sy_base_year where year=year(now())-1 #end -- 逾期提醒(市、校两级兼容) #sql("tjYqList") select * from t_gtzz_sy_laststep where 1=1 #if(org_code) and org_code='#(org_code)' #end and yq_count>0; #end -- 项目待办(市、校两级兼容) #sql("tjSubjectWaitStep") select t1.step_code,t1.step_name,ifnull(t2.count,0) as count from t_gtzz_step as t1 left join ( select step_code,count(1) as count from t_gtzz_sy_laststep where is_current=1 and is_finish_flag<3 #if(org_code) and org_code='#(org_code)' #end group by step_code) as t2 on t1.step_code=t2.step_code where (t1.step_code like '02%' or t1.step_code like '03%') #end -- 今年项目分布(市专用) -- year=year(now()) #sql("tjFenBu") select * from ( select org_code,org_name,sum(subject_count) as subject_count,sum(finish_count) as finish_count, sum(close_count) as close_count, sum(jz_count) as jz_count, sum(yq_count) as yq_count, ROUND(sum(money),2) as money from t_gtzz_sy_base_year where year=year(now())-1 group by org_code,org_name ) as ta order by ta.subject_count desc,money desc,finish_count desc #end -- 项目进展(学校专用) #sql("tjxmJz") select id,year,subject_id,subject_name,date_format(lixiang_time, '%Y-%m-%d') as lixiang_time,step_code,step_name, step_order_id,big_step_name, all_step_count,is_finish_flag,is_current,org_code,begin_time,end_time,duration,days_limit, date_diff_count,create_time,yq_count from t_gtzz_sy_laststep where org_code='#(org_code)' #end -- 获取结转的项目列表 #sql("getJzList") select max(progress_id) as progress_id, subject_id,org_code,org_name,subject_name,subject_type_id,subject_type_name, year,step_code,step_name,begin_time,end_time,action_bureau,input_value,radio_id, is_current,is_back_log,is_finish_flag,check_status,lixiang_time,bxlx_name,cxlx_name, jsfa_type_id,task_number,data_type,is_finish_time from t_gtzz_progress where org_code='#(org_code)' and is_finish_flag=#(is_finish_flag) group by subject_id order by progress_id #end -- 归档列表 #sql("getGdList") select org_code,org_name, sum(subject_count) as subject_count, sum(finish_count) as finish_count, sum(close_count) as close_count, sum(jz_count) as jz_count, sum(yq_count) as yq_count,ROUND(sum(money),2) as money from t_gtzz_sy_base_year where 1=1 #if(year) and year=#(year) #end #if(org_code) and org_code='#(org_code)' #end group by org_code,org_name order by sum(subject_count) desc #end -- 获取监理项目列表 #sql("getJlSubjectList") select * from (select t1.*, ifnull((select count(distinct group_question_id) from t_gtzz_jianli_question as t2 where t2.subject_id=t1.subject_id),0) as question_count, ifnull((select count(distinct group_question_id) from t_gtzz_jianli_question as t2 where t2.subject_id=t1.subject_id and t2.state_id=3),0) as finish_count, (select t4.begin_time from t_gtzz_progress as t4 where t4.subject_id=t1.subject_id and t4.step_code='0301' and t4.progress_id='#(being_date)' and ta.qd_time <='#(end_date) 23:59:59' #end #if(keyword) and (ta.subject_name like '%#(keyword)%' or ta.org_name like '%#(keyword)%') #end order by ta.begin_time desc #end -- 获取指定项目的监理流水 #sql("getSubjectQuestion") select t1.* from t_gtzz_jianli_question as t1 where t1.group_question_id=t1.progress_id and t1.subject_id=#(subject_id) #if(question_level_id) and t1.question_level_id=#(question_level_id) #end #if(question_type_id) and t1.question_type_id=#(question_type_id) #end #if(begin_date) and t1.create_time between '#(begin_date)' and '#(end_date) 23:59:59' #end #if(state_id) and t1.state_id=#(state_id) #end order by t1.progress_id desc #end -- ==========统计分析 ============================================================================================================================================ -- p_shouye_init_base_year -- 插入单位数据 -- 刷新频率:项目变更+项目单位变更 -- 策略:项目变更时更新 #sql("insertBureauData") insert into t_gtzz_sy_base_year(org_code,org_name,year) select t1.org_code,t1.org_name,t2.year from t_gtzz_school as t1 cross join (select distinct sbnd as year from t_gtzz_subject) as t2 #end -- 按年度更新项目总数 -- 策略:项目变更时更新 #sql("updateProjectCountByYear") update t_gtzz_sy_base_year as t1, (select org_code,sbnd,count(1) as subject_count from t_gtzz_subject group by org_code,sbnd) as t2 set t1.subject_count=t2.subject_count where t1.org_code=t2.org_code and t1.year=t2.sbnd; #end -- 按年度更新预算金额 #sql("updateMoneyByYear") update t_gtzz_sy_base_year p,(select org_code,sbnd, sum(ifnull(money,0)) as money from t_gtzz_subject group by org_code,sbnd) as s set p.money = s.money where p.org_code = s.org_code and p.year=s.sbnd #end -- p_shouye_init_laststep #sql("get_02_step_count") select count(1) as c from (select step_order_id from t_gtzz_step where step_code like '02%' and LENGTH(step_code)=4 group by step_order_id ) as t1 #end #sql("get_03_step_count") select count(1) as c from (select step_order_id from t_gtzz_step where step_code like '03%' and LENGTH(step_code)=4 group by step_order_id ) as t1 #end -- 按年度+单位查询完成个数、关闭个数、延期个数 #sql("getRefreshCountByYearOrgCode") select t1.id, t1.year,t1.org_code, (select count(distinct t2.subject_id) from t_gtzz_progress as t2 where t2.is_finish_flag=1 and t2.year=t1.year and t2.org_code=t1.org_code) as c1, (select count(distinct t2.subject_id) from t_gtzz_progress as t2 where t2.is_finish_flag=2 and t2.year=t1.year and t2.org_code=t1.org_code) as c2, (select ifnull(sum(t2.yq_count),0) from t_gtzz_sy_laststep as t2 where t2.year =t1.year and t2.org_code =t1.org_code) as c3 from t_gtzz_sy_base_year as t1 #end -- 0:未完成项目流程,1:已完成项目流程,2:项目流程已取消,3:项目结转,本年结束,转入明年。 #sql("laststep_1") insert into t_gtzz_sy_laststep(year,subject_id,step_code,is_finish_flag,is_current,org_code,begin_time,end_time,subject_name,lixiang_time) select year,subject_id,step_code,is_finish_flag,is_current,org_code,begin_time,end_time,subject_name,lixiang_time from t_gtzz_progress where progress_id in (select progress_id from (select max(progress_id),subject_id from t_gtzz_progress group by subject_id) as ta) #end -- 对于结束时间为空的,写入当前时间 #sql("laststep_2") update t_gtzz_sy_laststep set end_time=now() where end_time is null #end -- 补充步骤名称和内部排序号 #sql("laststep_3") update t_gtzz_sy_laststep as t1,t_gtzz_step as t2 set t1.step_name=t2.step_name,t1.days_limit=t2.days_limit where t1.step_code=t2.step_code #end #sql("laststep_4") update t_gtzz_sy_laststep as t1,t_gtzz_step as t2 set t1.step_order_id=t2.in_order_id where t1.step_code=t2.step_code and t1.step_code like '02%' #end #sql("laststep_5") update t_gtzz_sy_laststep as t1,t_gtzz_step as t2 set t1.step_order_id=#para(v_02_step_count)+t2.in_order_id where t1.step_code=t2.step_code and t1.step_code like '03%' #end -- 补充大类名称 -- 写入运行时长 -- 写入超时时长 #sql("laststep_6") update t_gtzz_sy_laststep as t1 set t1.duration=datediff(end_time,begin_time), t1.date_diff_count=days_limit-duration, t1.big_step_name=(select step_name from t_gtzz_step as t2 where substr(t1.step_code,1,2)=t2.step_code), t1.all_step_count=#para(v_02_step_count)+#para(v_03_step_count) #end #end