Преглед на файлове

第一次雷鑫系统管理部分提交

yanhang преди 4 месеца
родител
ревизия
2416334bb2

+ 7 - 7
projects-service/src/main/java/com/rtrh/projects/modules/msglog/service/impl/PhoneMsgLogServiceImpl.java

@@ -37,19 +37,19 @@ public class PhoneMsgLogServiceImpl implements IPhoneMsgLogService {
 	@Override
 	public Page pageQueryLog(Page page, String tel, String subName, String userName) {
 		StringBuffer sql = new StringBuffer();
-		sql.append(" SELECT a.id,sub_id, a.content,a.success, a.tel, a.user_name userName, b.sub_name subName, ");
+		sql.append(" SELECT a.id, a.sub_id,a.content,a.success, a.tel, a.user_name userName, b.sub_name subName, ");
 		sql.append(" DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s') createTime,DATE_FORMAT(b.begin_date,'%Y-%m-%d') beginDate, DATE_FORMAT(b.end_date,'%Y-%m-%d') endDate, ");
 		sql.append(" b.amt_total amtTotal ");
 		sql.append(" FROM phone_msg_log a LEFT JOIN sub_info b ON a.sub_id = b.id ");
 		sql.append(" WHERE a.logic_delete_flag = 0 ");
-		if(StringUtil.isNotEmpty(tel)) {
-			sql.append(" AND a.tel LIKE '%" + tel+"%' ");
+		if (StringUtil.isNotEmpty(tel)) {
+			sql.append(" AND a.tel LIKE '%" + tel + "%' ");
 		}
-		if(StringUtil.isNotEmpty(subName)) {
-			sql.append(" AND a.user_name LIKE '%"+ userName+"%' ");
+		if (StringUtil.isNotEmpty(subName)) {
+			sql.append(" AND a.user_name LIKE '%" + userName + "%' ");
 		}
-		if(StringUtil.isNotEmpty(subName)) {
-			sql.append(" AND b.sub_name LIKE '%"+subName+"%' ");
+		if (StringUtil.isNotEmpty(subName)) {
+			sql.append(" AND b.sub_name LIKE '%" + subName + "%' ");
 		}
 		sql.append(" ORDER BY a.create_time desc ");
 		return phoneMsgLogDao.queryForListBySql(sql.toString(), page);

+ 5 - 3
projects-service/src/main/java/com/rtrh/projects/modules/projects/dao/SubInfoDao.java

@@ -565,6 +565,8 @@ public class SubInfoDao extends EntityServiceImpl<SubInfo> {
 		return (List<Map<String, Object>>) this.queryForObjListBySql(sql.toString());
 	}
 
+
+
 	public Page pageTZ(Page page, LoginUserVO vo, SubInfoQueryTzVO queryVO) {
 		StringBuffer sql = new StringBuffer();
 		if(StringUtil.isEmpty(queryVO.getYear())) {
@@ -612,10 +614,10 @@ public class SubInfoDao extends EntityServiceImpl<SubInfo> {
 
 
 		//20230816  增加联系人,负责人信息。  用于导出。
-		sql.append(" select if(us.id is NULL,0,1) as usersub,sum(sa.amt) yearAmt,sum(src.amt) yearAmtSj,sum(src.amt_rt) yearAmtRt,a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
-		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature,a.subject_id, a.content,");
+		sql.append(" select if(us.id is NULL,0,1) as usersub,sum(sa.amt) yearAmt,sum(src.amt) yearAmtSj,sum(src.amt_rt) yearAmtRt,a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.subject_id,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
+		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature, a.content,");
 		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
-		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp,a.status_tg statusTg ");
 		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
 			sql.append(", g.amt amtSource, t.title amtSourceName ");
 

+ 4 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/ProjectStatusEnum.java

@@ -9,7 +9,6 @@ public enum ProjectStatusEnum {
 	HZBA("4", "核准备案中"),//去除
 	JHBZ("5", "计划编制"),//去除
 */	DKG("2", "新建中"),
-
 	YKG("3", "在建中"),
 	STOP("8","暂时停工"),
 	//用于其他地方的使用
@@ -34,6 +33,10 @@ public enum ProjectStatusEnum {
 	}
 
 	public static ProjectStatusEnum getEnumByKey(String key) {
+		// 如果 key 是 "7",则将其重新赋值为 "3"
+		if ("7".equals(key)) {
+			key = "3";
+		}
 		for(ProjectStatusEnum sys : ProjectStatusEnum.values()) {
 			if(sys.key.equals(key)) {
 				return sys;

+ 2 - 2
projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoController.java

@@ -1344,8 +1344,8 @@ public class SubInfoController extends BaseController {
 
         //总完成投资
         BigDecimal allEndAmt = BigDecimal.ZERO;
-       BigDecimal totalAmt = (BigDecimal) (subInfo.get("amt_total"));
-        // BigDecimal totalAmt = new BigDecimal(((Float) subInfo.get("amt_total")).toString());
+        BigDecimal totalAmt = (BigDecimal) (subInfo.get("amt_total"));    //这个原始用法出现问题,类型错误报错
+//        BigDecimal totalAmt = new BigDecimal(((Float) subInfo.get("amt_total")).toString());
         List<RptCont> allRpt = subRptContService.getListBySub(subId, null, RptContKindEnum.MONTH);
         if (CollectionUtil.isNotEmpty(allRpt)) {
             double sum = allRpt.stream().mapToDouble(new ToDoubleFunction<RptCont>() {

+ 163 - 181
projects/src/main/webapp/vmodules/annualPlan/list.jsp

@@ -29,11 +29,11 @@
 
             <div class="layui-collapse">
                 <div class="layui-colla-item">
-<%--                    <h2 class="layui-colla-title">筛选</h2>--%>
+                    <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
                     <div class="layui-colla-content layui-show">
                         <form class="layui-form" lay-filter="searchForm">
-<%--                            <input name="neTemp" type="hidden" value="${neTemp }"/>--%>
-<%--                            <input name="isZj" type="hidden" value="${isZj }"/>--%>
+                            <%--                            <input name="neTemp" type="hidden" value="${neTemp }"/>--%>
+                            <%--                            <input name="isZj" type="hidden" value="${isZj }"/>--%>
                             <div class="layui-row">
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
@@ -53,22 +53,25 @@
                                 </div>
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
-                                        <label class="layui-form-label">建设性质</label>
+                                        <label class="layui-form-label ">项目属地</label>
                                         <div class="layui-input-block">
-                                            <select name="xmxz">
+                                            <select name="jsdd">
                                                 <option value="">请选择</option>
-                                                <c:forEach items="${JSXZ}" var="js">
-                                                    <option value="${js.code }">${js.title }</option>
+                                                <c:forEach items="${JSDD }" var="hy">
+                                                    <c:if test="${subjectId == hy.code}">
+                                                        <option value="${hy.code }" selected="selected">${hy.title }</option>
+                                                    </c:if>
+                                                    <c:if test="${indusKind != hy.title}">
+                                                        <option value="${hy.code }">${hy.title }</option>
+                                                    </c:if>
                                                 </c:forEach>
                                             </select>
                                         </div>
                                     </div>
                                 </div>
-                            </div>
-                            <div class="layui-row">
-                             	<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                             		<div class="layui-form-item">
-                                        <label class="layui-form-label ">所属行业</label>
+                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label ">行业类别</label>
                                         <div class="layui-input-block">
                                             <select name="hyfl" lay-search="">
                                                 <option value="">请选择</option>
@@ -84,24 +87,17 @@
                                         </div>
                                     </div>
                                 </div>
+                            </div>
+                            <div class="layui-row">
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
-                                        <label class="layui-form-label ">建设地点</label>
-                                        <div class="layui-input-block">
-                                            <select name="jsdd">
-                                                <option value="">请选择</option>
-                                                <c:forEach items="${JSDD }" var="hy">
-                                                    <c:if test="${subjectId == hy.code}">
-                                                        <option value="${hy.code }" selected="selected">${hy.title }</option>
-                                                    </c:if>
-                                                    <c:if test="${indusKind != hy.title}">
-                                                        <option value="${hy.code }">${hy.title }</option>
-                                                    </c:if>
-                                                </c:forEach>
-                                            </select>
+                                        <label class="layui-form-label">年度</label>
+                                        <div class="layui-input-block time_box">
+                                            <input type="text" id="year" name="year" class="layui-input">
                                         </div>
                                     </div>
                                 </div>
+
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
                                         <label class="layui-form-label">项目状态</label>
@@ -115,88 +111,45 @@
                                     </div>
                                 </div>
                             </div>
+
                             <div class="layui-row">
-                              <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">是否锁定</label>
-                                        <div class="layui-input-block">
-                                            <select name="isLock">
-                                                <option value="">所有</option>
-                                                <option value="1">锁定</option>
-                                                <option value="0">正常</option>
-                                            </select>
-                                        </div>
-                                    </div>
-                                </div>
-                              <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">金额范围(万元)</label>
-                                        <div class="layui-input-block">
-                                            <input name="minMoney" class="layui-input" style="display: inline;width: 92px" value="${minMoney }">
-                                            <span>--</span>
-                                            <input name="maxMoney" class="layui-input" style="display: inline;width: 92px" value="${maxMoney }">
-                                        </div>
-                                    </div>
-                                </div>
-                              <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">项目单位名称</label>
-                                        <div class="layui-input-block">
-                                            <input name="unitName" class="layui-input" style="width:90%" value="${unitName }">
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
 
-                              <div class="layui-row">
-                               <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">年份</label>
-                                        <div class="layui-input-block time_box">
-                                            <input type="text" id="year" name="year" class="layui-input">
-                                        </div>
-                                    </div>
-                                </div>
 
                                 <div>
-                                 <button type="button" class="layui-btn layui-btn-normal" @click="search">查询</button>
-                                 <button type="button" class="layui-btn layui-btn-export" @click="exportExcel">导出</button>
+                                    <button type="button" class="layui-btn layui-btn-normal" @click="search">查询</button>
+                                    <button type="button" class="layui-btn layui-btn-export" @click="exportExcel">导出</button>
 
-                                 <c:if test="${checkEdit==true}">
-                                 	<button type="button" class="layui-btn" @click="toLock">批量锁定</button>
-                                    <button type="button" class="layui-btn" @click="toBackLockAll">批量解锁</button>
-                                 </c:if>
                                 </div>
-                              </div>
-<%--                            <div class="layui-row">--%>
-<%--                                <c:if test="${currUser.statusProj == 1 }" >--%>
-<%--                                    <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">--%>
-<%--                                        <div class="layui-form-item">--%>
-<%--                                            <label class="layui-form-label " >行业单位:</label>--%>
-<%--                                            <div class="layui-input-block">--%>
-<%--                                                <select name="hydw" lay-search>--%>
-<%--                                                    <option value="">--请选择--</option>--%>
-<%--                                                    <c:forEach items="${HYDW }" var="hy">--%>
-<%--                                                        <option value="${ hy.id}">${hy.title }</option>--%>
-<%--                                                    </c:forEach>--%>
-<%--                                                </select>--%>
-<%--                                            </div>--%>
-<%--                                        </div>--%>
-<%--                                    </div>--%>
-<%--                                </c:if>--%>
-
-<%--                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md6">--%>
-<%--                                    <div class="layui-form-item">--%>
-<%--                                        <label class="layui-form-label ">年份</label>--%>
-<%--                                        <div class="layui-input-block time_box">--%>
-<%--                                            <input type="text" id="year" name="year" class="layui-input">--%>
-<%--                                            <button type="button" class="layui-btn layui-btn-normal" @click="search"><i class="layui-icon layui-icon-search"></i>查询</button>--%>
-<%--                                            <button type="button" class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button>--%>
-<%--                                        </div>--%>
-<%--                                    </div>--%>
-<%--                                </div>--%>
-<%--                                <span style="color: red;float: right;">带*号的条件可在导出时使用,其中年份仅限导出使用,年份不选择默认为当前年份</span>--%>
-<%--                            </div>--%>
+                            </div>
+                            <%--                            <div class="layui-row">--%>
+                            <%--                                <c:if test="${currUser.statusProj == 1 }" >--%>
+                            <%--                                    <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">--%>
+                            <%--                                        <div class="layui-form-item">--%>
+                            <%--                                            <label class="layui-form-label " >行业单位:</label>--%>
+                            <%--                                            <div class="layui-input-block">--%>
+                            <%--                                                <select name="hydw" lay-search>--%>
+                            <%--                                                    <option value="">--请选择--</option>--%>
+                            <%--                                                    <c:forEach items="${HYDW }" var="hy">--%>
+                            <%--                                                        <option value="${ hy.id}">${hy.title }</option>--%>
+                            <%--                                                    </c:forEach>--%>
+                            <%--                                                </select>--%>
+                            <%--                                            </div>--%>
+                            <%--                                        </div>--%>
+                            <%--                                    </div>--%>
+                            <%--                                </c:if>--%>
+
+                            <%--                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md6">--%>
+                            <%--                                    <div class="layui-form-item">--%>
+                            <%--                                        <label class="layui-form-label ">年份</label>--%>
+                            <%--                                        <div class="layui-input-block time_box">--%>
+                            <%--                                            <input type="text" id="year" name="year" class="layui-input">--%>
+                            <%--                                            <button type="button" class="layui-btn layui-btn-normal" @click="search"><i class="layui-icon layui-icon-search"></i>查询</button>--%>
+                            <%--                                            <button type="button" class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button>--%>
+                            <%--                                        </div>--%>
+                            <%--                                    </div>--%>
+                            <%--                                </div>--%>
+                            <%--                                <span style="color: red;float: right;">带*号的条件可在导出时使用,其中年份仅限导出使用,年份不选择默认为当前年份</span>--%>
+                            <%--                            </div>--%>
                         </form>
                     </div>
                 </div>
@@ -243,16 +196,15 @@
     <div class="toolBar">
         <span lay-event="toDetail">项目信息</span>
         {{# if(d.unit_id == "${currUnitId}"|| "${checkEdit}"=="true") { }}
-        <span lay-event="yearPlan">年度计划录入</span>
+
         {{#}}}
 
         {{# if("${checkEdit}"=="true") { }}
 
         {{# if(d.is_lock == "1") { }}
-        <span lay-event="toBackLock">解除锁定</span>
+
 
         {{#} else { }}
-        <span lay-event="toSetLock">锁定</span>
         {{#} }}
         {{#}}}
     </div>
@@ -308,7 +260,7 @@
                 <%--}else{--%>
                 <%--    this.loadTable();--%>
                 <%--}--%>
-                 this.getData();
+                this.getData();
                 window.showImage = this.showImage;
             },
             getData : function(){
@@ -345,7 +297,7 @@
             amtYear: function(obj) {
                 var self = this;
                 if (obj.data.amt_year==undefined){
-                	obj.data.amt_year="";
+                    obj.data.amt_year="";
                 }
                 // obj.data.status_reason="";
                 layui.form.val("amtYearForm", obj.data);
@@ -415,12 +367,12 @@
             toDetail : function(obj){
                 //详情
                 var index = layer.open({
-					type: 2,
-					title: "",
-					area: ['1000px', '800px'],
-					content: App.getUrl("//subject/subInfo/detailView?layer=true&subId="+ obj.data.sub_id),
-				});
-				layui.layer.full(index);
+                    type: 2,
+                    title: "",
+                    area: ['1000px', '800px'],
+                    content: App.getUrl("//subject/subInfo/detailView?layer=true&subId="+ obj.data.sub_id),
+                });
+                layui.layer.full(index);
             },
 
             exportExcel:function (){
@@ -442,7 +394,57 @@
 
                 console.log(subId);
                 param.xmlx = this.kind.getValue("value").sort().join(",");
-                window.location.href=App.getUrl("/annualPlan/exportExcel?subId="+subId+"&year="+param.year+"&status="+param.status+"&xmlx="+param.xmlx+"&xmxz="+param.xmxz+"&hyfl="+param.hyfl+"&unitName="+param.unitName+"&subName="+param.subName+"&jsdd="+param.jsdd+"&minMoney="+param.minMoney+"&maxMoney="+param.maxMoney);
+                if (param.year=="" || param.year==undefined){
+                    year=""
+                }else {
+                    year=param.year
+                }
+                if (param.status=="" || param.status==undefined){
+                    status=""
+                }else {
+                    year=param.status
+                }
+                if (param.xmlx=="" || param.xmlx==undefined){
+                    xmlx=""
+                }else {
+                    xmlx=param.xmlx
+                }
+                if (param.xmxz=="" || param.xmxz==undefined){
+                    xmxz=""
+                }else {
+                    xmxz=param.xmxz
+                }
+                if (param.hyfl=="" || param.hyfl==undefined){
+                    hyfl=""
+                }else {
+                    hyfl=param.hyfl
+                }
+                if (param.unitName=="" || param.unitName==undefined){
+                    unitName=""
+                }else {
+                    unitName=param.unitName
+                }
+                if (param.subName=="" || param.subName==undefined){
+                    subName=""
+                }else {
+                    subName=param.subName
+                }
+                if (param.minMoney=="" || param.minMoney==undefined){
+                    minMoney=""
+                }else {
+                    minMoney=param.minMoney
+                }
+                if (param.jsdd=="" || param.jsdd==undefined){
+                    jsdd=""
+                }else {
+                    jsdd=param.jsdd
+                }
+                if (param.maxMoney=="" || param.maxMoney==undefined){
+                    maxMoney=""
+                }else {
+                    maxMoney=param.maxMoney
+                }
+                window.location.href=App.getUrl("/annualPlan/exportExcel?subId="+subId+"&year="+param.year+"&status="+param.status+"&xmlx="+xmlx+"&xmxz="+xmxz+"&hyfl="+hyfl+"&unitName="+unitName+"&subName="+subName+"&jsdd="+jsdd+"&minMoney="+minMoney+"&maxMoney="+maxMoney);
             },
             loadTable : function(){
                 var self = this;
@@ -451,75 +453,55 @@
                     even: true,
                     autoSort: false,
                     cols: [[ // 设置表头
-                        {checkbox:true ,fixed: 'left', width:40, align: 'center'},
-                        {type: 'numbers', fixed: 'left',title:'序号', align: 'center',width:50,templet: function(row) {
+                        {checkbox:true ,fixed: 'left', width:50, align: 'center'},
+                        {type: 'numbers', fixed: 'left',title:'序号', align: 'center',width:200,templet: function(row) {
                                 if(row.numbers != null) {
                                     return '<span title="' + row.numbers + '">' + row.numbers + '</span>';
                                 }
                                 return "";
                             }},
-                        {field: 'title', title: '项目名称', fixed: 'left', width:300,fixed: 'left',templet: function(row) {
+                        {field: 'title', title: '项目名称', fixed: 'left', width:280,fixed: 'left',templet: function(row) {
                                 if(row.title != null) {
                                     return '<span title="' + row.title + '">' + row.title + '</span>';
                                 }
                                 return "";
                             }},
-                        {field: 'year', title: '年', width:60,templet: function(row) {
-                        	if(row.year != null) {
-            					return '<span title="' + row.year + '">' + row.year + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'begin_date', title: '开始日期', width: 100,templet: function(row) {
-                        	if(row.begin_date != null) {
-            					return '<span title="' + row.begin_date + '">' + row.begin_date + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'end_date', title: '结束日期', width: 100,templet: function(row) {
-                        	if(row.end_date != null) {
-            					return '<span title="' + row.end_date + '">' + row.end_date + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'main_desc', title: '监管单位', width: 150,templet: function(row) {
-                        	if(row.main_desc != null) {
-            					return '<span title="' + row.main_desc + '">' + row.main_desc + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'unit_name', title: '项目单位',width: 160,templet: function(row) {
-                        	if(row.unit_name != null) {
-            					return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'amt', title: '项目总金额(万元)', width: 150,templet: function(row) {
-                        	if(row.amt != null) {
-            					return '<span title="' + row.amt + '">' + row.amt + '</span>';
-                        	}
-                        	return "";
-            			}},
+                        {field: 'amt', title: '总投资(万元)', width: 150,templet: function(row) {
+                                if(row.amt != null) {
+                                    return '<span title="' + row.amt + '">' + row.amt + '</span>';
+                                }
+                                return "";
+                            }},
+                        {field: 'begin_date', title: '计划开工日期', width: 200,templet: function(row) {
+                                if(row.begin_date != null) {
+                                    return '<span title="' + row.begin_date + '">' + row.begin_date + '</span>';
+                                }
+                                return "";
+                            }},
+                        {field: 'end_date', title: '计划投产日期', width: 200,templet: function(row) {
+                                if(row.end_date != null) {
+                                    return '<span title="' + row.end_date + '">' + row.end_date + '</span>';
+                                }
+                                return "";
+                            }},
+                        {field: 'unit_name', title: '项目单位',width: 200,templet: function(row) {
+                                if(row.unit_name != null) {
+                                    return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
+                                }
+                                return "";
+                            }},
                         {field: 'amt_jh', sort: true, title: '年度计划月累计金额(万元)', width: 200,templet: function(row) {
-                        	if(row.amt_jh != null) {
-            					return '<span title="' + row.amt_jh + '">' + row.amt_jh + '</span>';
-                        	}
-                        	return "";
-            			}},
-        /*                {field: 'amt_year', title: '年度计划金额(万元)', width:140,templet: function(row) {
-                        	if(row.amt_year != null) {
-            					return '<span title="' + row.amt_year + '">' + row.amt_year + '</span>';
-                        	}
-                        	return "";
-            			}},*/
-                        {field: 'is_lock', title: '是否锁定', width: 70,templet: function(row) {
-                                if(row.is_lock == "1") {
-                                    return '<span>锁定</span>';
-                                }else{
-                                    return '<span>正常</span>';
+                                if(row.amt_jh != null) {
+                                    return '<span title="' + row.amt_jh + '">' + row.amt_jh + '</span>';
                                 }
                                 return "";
                             }},
+                        /*                {field: 'amt_year', title: '年度计划金额(万元)', width:140,templet: function(row) {
+                                            if(row.amt_year != null) {
+                                                return '<span title="' + row.amt_year + '">' + row.amt_year + '</span>';
+                                            }
+                                            return "";
+                                        }},*/
                         {title: '操作', width: 200, toolbar: '#toolBar', fixed:'right'}
                     ]],
                     fixed:true,
@@ -531,22 +513,22 @@
                             $($(".layui-table-fixed-l .layui-table-body tbody tr")[index]).height($(val).height());
                             $($(".layui-table-fixed-r .layui-table-body tbody tr")[index]).height($(val).height());
                         })
-                       }
-                    });
+                    }
+                });
                 layui.table.on('tool('+this.tableName+')', function(obj){
                     var event = obj.event;
                     self[event].call(this, obj);
                 });
                 layui.table.reload("table1",{
-					initSort: {
-						field: 'amt_jh',
-						type: self.orderType
-					}
-				})
-				layui.table.on("sort(test)", function(obj) {
-					self.orderType = obj.type;
-					self.getData();
-				});
+                    initSort: {
+                        field: 'amt_jh',
+                        type: self.orderType
+                    }
+                })
+                layui.table.on("sort(test)", function(obj) {
+                    self.orderType = obj.type;
+                    self.getData();
+                });
             },
             loadPage : function(totalCount){
                 var self = this;
@@ -639,8 +621,8 @@
                 });
             },
             search : function(){
-               this.pageNo = 1;
-               this.getData();
+                this.pageNo = 1;
+                this.getData();
             },
             closeWin : function(){
                 window.history.back(-1);

+ 3 - 3
projects/src/main/webapp/vmodules/leftMenu.jsp

@@ -572,19 +572,19 @@
                             code: '917',
                             txt: 'A项目年度计划',
                             // url: 'annualPlan/index'
-                            url: 'register/underConstruction'
+                            url: 'annualPlan/index'
                         },
                         {
                             txt: 'B项目周报',
                             code: '406',
                             // url: 'weekReport/view'
-                            url: 'register/underConstruction'
+                            url: 'weekReport/view'
                         },
                         {
                             txt: 'C项目月报',
                             code: '407',
                             // url: 'monthReport/view'
-                            url: 'register/underConstruction'
+                            url: 'monthReport/view'
                         },
                         {
                             txt: 'D每个月项目转换情况',

+ 198 - 0
projects/src/main/webapp/vmodules/msgLog/sendMsg.jsp

@@ -0,0 +1,198 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+         pageEncoding="UTF-8" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>编辑重大事件记录</title>
+    <jsp:include page="../common/common-meta-include.jsp"></jsp:include>
+    <jsp:include page="../common/common-css-include.jsp"></jsp:include>
+</head>
+<style>
+    body {
+        background-color: #ffffff;
+    }
+
+    .layuimini-main {
+        padding: 0;
+    }
+
+    .layui-form-item {
+        display: flex;
+    }
+
+    .layui-input-block {
+        flex: 1;
+    }
+</style>
+<body>
+<div id="app">
+</div>
+<template id="template">
+    <div class="layuimini-container">
+        <div class="layuimini-main">
+            <div class="layui-form " lay-filter="formData">
+                <div class="layui-form-item">
+                    <input type="hidden" id="id" name="id" value="${subId}">
+                </div>
+                <div class="layui-row">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">短信内容</label>
+                        <div class="layui-input-block">
+                            <textarea rows="5" name="joinPerson" disabled="disabled" readonly="readonly"
+                                      v-model="obj.content" class="layui-textarea"
+                                      placeholder="请填入短信内容"></textarea>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-row">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">用户选择</label>
+                        <div class="layui-input-block">
+                            <select name="phone" lay-verify="required" lay-search lay-filter="phone">
+                                <option value="">--请选择--</option>
+                                <c:forEach items="${Users}" var="user">
+                                    <option value="${user.id}">${user.title}</option>
+                                </c:forEach>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <%--            <div class="layui-row">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label required">会议主题</label>
+                                <div class="layui-input-block">
+                                    <input type="text" name="title" v-model="obj.meetingTitle" lay-verify="required"
+                                           lay-reqtext="请输入会议主题" autocomplete="off" placeholder="请输入会议主题"
+                                           class="layui-input">
+                                </div>
+                            </div>
+                        </div>--%>
+            <%--            <div class="layui-row">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <input type="text" name="remark" v-model="obj.remark" autocomplete="off"
+                                           placeholder="请输入备注" class="layui-input">
+                                </div>
+                            </div>
+                        </div>--%>
+            <%--       <div class="layui-form-item">
+                       <label class="layui-form-label"></label>
+                       <div class="layui-input-block">
+                           <button type="button" class="layui-btn-submit" style="margin-top: 40px" lay-submit
+                                   lay-filter="save">发送
+                           </button>
+                           <input type="button" value="取消" class="layui-btn" @click="closePane"/>
+                       </div>
+                   </div>--%>
+
+            <div class="layui-row">
+                <div class="layui-form-item" style="text-align: right; padding: 0 67px 10px;justify-content: flex-end;">
+                    <%--           <button type="button" class="layui-btn-submit" style="margin-top: 40px" lay-submit
+                                       lay-filter="save">发送
+                               </button>
+                               <button type="button" class="layui-btn-submit" style="margin-top: 40px"
+                                       @click="closePane">取消
+                               </button>--%>
+                    <input type="button" value="取消" class="layui-btn btn btn1" @click="closePane"/>
+                    <input type="button" value="发送" class="layui-btn btn btn1" lay-submit lay-filter="save"/>
+                </div>
+            </div>
+
+            <div style="width:100%;height:20px"></div>
+        </div>
+    </div>
+    </div>
+</template>
+<jsp:include page="../common/common-js-include.jsp"></jsp:include>
+<script type="text/html" id="rowRoolBar">
+    <span style="width: 30px;" lay-event="delPlans">删除</span>
+</script>
+<script type="text/html" id="subRoolBar">
+    <span style="width: 30px;" lay-event="delSub">删除</span>
+</script>
+<script type="text/html" id="subTableToolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="addSubInfo"> 添加关联项目
+        </button>
+    </div>
+</script>
+<script type="text/javascript">
+    new Vue({
+        el: "#app",
+        template: "#template",
+        data: {
+            obj: {
+                kind: "",
+                content: "${content}",
+            },
+            userList: [
+                <c:forEach items="${Users}" var="li" varStatus="lis">
+                {
+                    id: '${li.id}',
+                    phone: '${li.simCode}',
+                    Title: '${li.title}'
+                },
+                </c:forEach>
+            ],
+            phone: "",
+        },
+        mounted: function () {
+            this.init();
+        },
+        methods: {
+            init: function () {
+                var self = this;
+                layui.form.on("submit(save)", function () {
+                    self.save();
+                });
+                layui.form.on("select(phone)", function (data) {
+                    var obj = self.userList.find(item => {
+                        return item.id === data.value;
+                    });
+                    if (obj) {
+                        self.phone = obj.phone;
+                    } else {
+                        self.phone = "";
+                    }
+                })
+                top.window.addSubInfo = this.addSub;
+            },
+            save: function () {
+                //发送短信
+                var self = this;
+                if(!self.phone){
+                    App.msg.info("人员未选择或者选择的人员没有设置电话号码!");
+                    return;
+                }
+                App.msg.confirm("确认发送逾期短信到该联系人?", function () {
+                    App.postJson("/api/msgLog/sendDueMsg", {
+                        subId: "${subId}",
+                        kind: "${kind}",
+                        item: "${item}",
+                        phone: self.phone,
+                    }, function (res) {
+                        App.msg.success("发送成功");
+                        var index = top.layer.getFrameIndex(window.name);
+                        top.layer.close(index);
+                    })
+                })
+            },
+            closePane: function () {
+                var index = top.layer.getFrameIndex(window.name);
+                top.layer.close(index);
+            },
+            addSub: function (data) {
+
+            },
+            addSubInfo: function () {
+
+            },
+        }
+    })
+</script>
+</body>
+</html>

+ 75 - 129
projects/src/main/webapp/vmodules/project/monthReport.jsp

@@ -167,47 +167,6 @@
                         <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
                         <div class="layui-colla-content layui-show">
                             <form class="layui-form">
-                                <div class="layui-row">
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">项目状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="projStatus" lay-verify="required">
-                                                    <option value="0">请选择</option>
-                                                    <option value="1">未开工</option>
-                                                    <option value="2">已开工</option>
-                                                    <!-- <option value="4">年度计划完成</option> -->
-                                                    <option value="3">项目竣工</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label  ">月报期间</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startTime" name="title" placeholder="请选择时间"
-                                                       autocomplete="off" class="layui-input">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endTime" name="title"
-                                                       placeholder="请选择结束时间"
-                                                       autocomplete="off" class="layui-input">
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label  ">月报状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="isDo">
-                                                    <option value="0">全部</option>
-                                                    <option value="1">已做</option>
-                                                    <option value="2">未做</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
                                 <div class="layui-row">
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
@@ -220,26 +179,22 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label  ">金额(万元)</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startAmt" style="width: 150px;" name="startAmt"
-                                                       placeholder="请输入最小金额" autocomplete="off"
-                                                       class="layui-input"
-                                                       value="${minAmt}">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endAmt" name="endAmt" style="width: 150px;"
-                                                       placeholder="请输入最大金额" autocomplete="off"
-                                                       class="layui-input"
-                                                       value="${maxAmt}">
-                                                <!-- <button class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button> -->
+                                            <label class="layui-form-label   ">项目属地</label>
+                                            <div class="layui-input-block">
+                                                <select name="jsdd">
+                                                    <option value="">请选择</option>
+                                                    <c:forEach items="${JSDD }" var="js">
+                                                        <option value="${js.code }">${js.title }</option>
+                                                    </c:forEach>
+                                                </select>
                                             </div>
                                         </div>
                                     </div>
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label   ">所属行业</label>
+                                            <label class="layui-form-label   ">行业类别</label>
                                             <div class="layui-input-block">
                                                 <select name="hyfl" lay-search="">
                                                     <option value="">请选择</option>
@@ -256,46 +211,46 @@
                                             </div>
                                         </div>
                                     </div>
-                                </div>
-                                <div class="layui-row">
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
+
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label   ">建设地点</label>
-                                            <div class="layui-input-block">
-                                                <select name="jsdd">
-                                                    <option value="">请选择</option>
-                                                    <c:forEach items="${JSDD }" var="js">
-                                                        <option value="${js.code }">${js.title }</option>
-                                                    </c:forEach>
-                                                </select>
+                                            <label class="layui-form-label  ">月报期间</label>
+                                            <div class="layui-input-block time_box">
+                                                <input type="text" id="startTime" name="title" placeholder="请选择时间"
+                                                       autocomplete="off" class="layui-input">
+                                                <span class="split_txt">至</span>
+                                                <input type="text" id="endTime" name="title"
+                                                       placeholder="请选择结束时间"
+                                                       autocomplete="off" class="layui-input">
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label  ">实际投资</label>
+                                            <label class="layui-form-label  ">月报状态</label>
                                             <div class="layui-input-block">
-                                                <select name="amtSj">
-                                                    <option value="">所有</option>
+                                                <select name="isDo">
+                                                    <option value="0">所有</option>
                                                     <option value="1">已做</option>
                                                     <option value="2">未做</option>
                                                 </select>
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label  ">预测投资</label>
+                                            <label class="layui-form-label">项目状态</label>
                                             <div class="layui-input-block">
-                                                <select name="amtYc">
-                                                    <option value="">所有</option>
-                                                    <option value="1">已</option>
-                                                    <option value="2">未做</option>
+                                                <select name="projStatus" lay-verify="required">
+                                                    <option value="0">所有</option>
+                                                    <option value="1">已开工</option>
+                                                    <option value="2">已停工</option>
                                                 </select>
                                             </div>
                                         </div>
                                     </div>
                                 </div>
+
                                 <div class="layui-row">
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md12">
                                         <div class="layui-form-item">
@@ -369,7 +324,7 @@
                         <label class="layui-form-label label-longer required">本月实际投资(万元)</label>
                         <div class="layui-input-block">
                             <input type="number" id="amt" name="amt" placeholder="请输入金额" class="layui-input">
-                            <span style="color: red">注:本月实际投资严格按照统金额填写</span>
+                            <span style="color: red">注:本月实际投资严格按照统金额填写</span>
                         </div>
                     </div>
                     <div class="layui-form-item">
@@ -791,17 +746,37 @@
                     layui.layer.msg("必须选择月报期间");
                     return;
                 }
+                if (this.endAmt=="" || this.endAmt==undefined){
+                    endAmt=""
+                }else {
+                    endAmt=this.endAmt
+                }
+                if (this.startAmt=="" || this.startAmt==undefined){
+                    startAmt=""
+                }else {
+                    startAmt=this.startAmt
+                }
+                if (this.amtSj=="" || this.amtSj==undefined){
+                    amtSj=""
+                }else {
+                    amtSj=this.amtSj
+                }
+                if (this.amtYc=="" || this.amtYc==undefined){
+                    amtYc=""
+                }else {
+                    amtYc=this.amtYc
+                }
                 var param = {
                     startMonth: this.startMonth + "-01",
                     endMonth: this.endMonth + "-01",
                     status: $("[name='projStatus']").val(),
                     subName: $("[name='proName']").val(),
                     isDo: $("[name='isDo']").val(),
-                    startAmt: $("[name='startAmt']").val(),
-                    endAmt: $("[name='endAmt']").val(),
+                    startAmt: startAmt,
+                    endAmt: endAmt,
                     hyfl: $("[name='hyfl']").val(),
-                    amtSj: $("[name='amtSj']").val(),
-                    amtYc: $("[name='amtYc']").val(),
+                    amtSj: amtSj,
+                    amtYc: amtYc,
                     jsdd: $("[name='jsdd']").val()
                 };
                 App.common.utils.downFile(App.getUrl("/monthReport/exportExcel"), "GET", param, "项目月报.xlsx", "项目月报导出失败");
@@ -828,51 +803,20 @@
                                 return "<a title=" + row.sub_name + ">" + row.sub_name + "</a>";
                             }
                         },
-                        {field: 'indus_kind', title: '行业分类', width: 120},
-                        {field: 'subject_id', title: '建设地点', width: 100},
-                        {field: 'year', title: '年度', width: 60},
-                        {field: 'kj_month', title: '月报期间', minWidth: 80},
-                        {
-                            field: 'amt', sort: true, title: '本月实际投资', minWidth: 150, templet: function (row) {
-                                if (row.amt != null && row.amt + '' != '') {
-                                    return '<span>' + row.amt + '万元</span>';
-                                } else {
-                                    return "";
-                                }
-                            }
-                        },
-                        // {field: 'amt_last', title: '下月预测投资', minWidth: 150, templet : function(row){
-                        // 		if(row.amt_last != null && row.amt_last+'' != ''){
-                        // 			return '<span>'+row.amt_last+'万元</span>';
-                        // 		}else{
-                        // 			return "";
-                        // 		}
-                        // 	}},
-                        <c:if test="${isAdmin}">
-                        {
-                            field: 'amt_rt', title: '入统金额', width: 80, templet: function (row) {
-                                if (row.amt_rt != null && row.amt_rt + '' != '') {
-                                    return '<span>' + row.amt_rt + '万元</span>';
-                                } else {
+                        {field: 'amt', title: '总投资', minWidth: 100, templet : function(row){
+                                if(row.amt){
+                                    return '<span>'+row.amt+'万元</span>';
+                                }else{
                                     return "";
                                 }
-                            }
-                        },
-                        {
-                            field: 'amt_rt', title: '差额', width: 80, templet: function (row) {
-                                if (row.amt_rt != null && row.amt_rt + '' != '') {
-                                    return '<span>' + (parseInt(row.amt || 0) - parseInt(row.amt_rt)) + '万元</span>';
-                                } else {
-                                    if (row.amt != null && row.amt + '' != '') {
-                                        return '<span>' + (row.amt || 0) + '万元</span>';
-                                    } else {
-                                        return "";
-                                    }
+                            }},
+                        {field: 'kj_month', title: '月报期间', minWidth: 80},
+                        {field: 'unit_name', title: '项目单位',width: 200,templet: function(row) {
+                                if(row.unit_name != null) {
+                                    return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
                                 }
-                            }
-                        },
-                        </c:if>
-                        /* {field: 'sub_plan_content', title: '阶段内容', minWidth: 100}, */
+                                return "";
+                            }},
                         {
                             field: 'content', title: '项目进展情况', minWidth: 200, templet: function (row) {
                                 if (row.content != null) {
@@ -898,18 +842,20 @@
                                 return "";
                             }
                         },
+
+                        /* {field: 'sub_plan_content', title: '阶段内容', minWidth: 100}, */
+
+
+
                         {
                             title: '操作', fixed: 'right', width: 113, align: 'center', templet: function (row) {
                                 var temp = "";
                                 if (row.unit_id === '${unitId}' || '${checkEdit}' == "true") {
-                                    temp = '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>编辑</span></div>';
+                                    temp = '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
 
-                                    if ('${isAdmin}' == "true") {
-                                        temp = temp + '<div class="toolBar"><span onClick=\'onEditRt(' + JSON.stringify(row) + ')\'>固投金额设置</span></div>';
-                                    }
 
                                 } else {
-                                    temp = '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>查看</span></div>';
+                                    temp = '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
                                 }
                                 return temp;
                             }
@@ -1307,7 +1253,7 @@
                         self.yuebaoInfo.content = $("[name='ybContent']").val();
                         self.yuebaoInfo.reason = $("[name='ybReason']").val();
                         self.yuebaoInfo.amt = $("[name='amt']").val();
-                         self.yuebaoInfo.amtLast = $("[name='amtLast']").val();
+                        self.yuebaoInfo.amtLast = $("[name='amtLast']").val();
                         // self.yuebaoInfo.amtRt = $("[name='amtRt']").val();
                         self.yuebaoInfo.numBl = $("[name='numBl']").val();
                         // self.yuebaoInfo.subPlanId = $("[name='subPlanId']").val();

+ 66 - 82
projects/src/main/webapp/vmodules/project/weekReport.jsp

@@ -81,44 +81,6 @@
                         <div class="layui-colla-content layui-show">
                             <form class="layui-form">
                                 <div class="layui-row">
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">项目状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="projStatus" lay-verify="required">
-                                                    <option value="0">请选择</option>
-                                                    <option value="1">未开工</option>
-                                                    <option value="2">已开工</option>
-                                                    <!-- <option value="4">年度计划完成</option> -->
-                                                    <option value="3">项目竣工</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">周报期间</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startTime" name="title" placeholder="请选择开始时间"
-                                                       autocomplete="off" class="layui-input" style="width: 200px;">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endTime" name="title" placeholder="请选择结束时间"
-                                                       autocomplete="off" class="layui-input" style="width: 200px;">
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">周报状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="isDo">
-                                                    <option value="0">全部</option>
-                                                    <option value="1">已做</option>
-                                                    <option value="2">未做</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
                                             <label class="layui-form-label">项目名称</label>
@@ -128,24 +90,22 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label">金额(万元)</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startAmt" style="width: 150px;" name="startAmt"
-                                                       placeholder="请输入最小金额" autocomplete="off" class="layui-input"
-                                                       value="${minAmt}">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endAmt" name="endAmt" style="width: 150px;"
-                                                       placeholder="请输入最大金额" autocomplete="off" class="layui-input"
-                                                       value="${maxAmt}">
-                                                <!-- <button class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button> -->
+                                            <label class="layui-form-label ">项目属地</label>
+                                            <div class="layui-input-block">
+                                                <select name="jsdd">
+                                                    <option value="">请选择</option>
+                                                    <c:forEach items="${JSDD }" var="js">
+                                                        <option value="${js.code }">${js.title }</option>
+                                                    </c:forEach>
+                                                </select>
                                             </div>
                                         </div>
                                     </div>
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label ">所属行业</label>
+                                            <label class="layui-form-label ">行业类别</label>
                                             <div class="layui-input-block">
                                                 <select name="hyfl" lay-search="">
                                                     <option value="">请选择</option>
@@ -162,19 +122,45 @@
                                             </div>
                                         </div>
                                     </div>
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">周报期间</label>
+                                            <div class="layui-input-block time_box">
+                                                <input type="text" id="startTime" name="title" placeholder="请选择开始时间"
+                                                       autocomplete="off" class="layui-input" style="width: 200px;">
+                                                <span class="split_txt">至</span>
+                                                <input type="text" id="endTime" name="title" placeholder="请选择结束时间"
+                                                       autocomplete="off" class="layui-input" style="width: 200px;">
+                                            </div>
+                                        </div>
+                                    </div>
+
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label ">建设地点</label>
+                                            <label class="layui-form-label">项目状态</label>
                                             <div class="layui-input-block">
-                                                <select name="jsdd">
-                                                    <option value="">请选择</option>
-                                                    <c:forEach items="${JSDD }" var="js">
-                                                        <option value="${js.code }">${js.title }</option>
-                                                    </c:forEach>
+                                                <select name="projStatus" lay-verify="required">
+                                                    <option value="0">所有</option>
+                                                    <option value="1">已开工</option>
+                                                    <option value="2">已停工</option>
                                                 </select>
                                             </div>
                                         </div>
                                     </div>
+
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">周报状态</label>
+                                            <div class="layui-input-block">
+                                                <select name="isDo">
+                                                    <option value="0">所有</option>
+                                                    <option value="1">已做</option>
+                                                    <option value="2">未做</option>
+                                                </select>
+                                            </div>
+                                        </div>
+                                    </div>
+
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
                                         <div class="layui-form-item">
                                             <button type="button" class="layui-btn layui-btn-normal" @click="onSearch">
@@ -581,16 +567,13 @@
                                 return "";
                             }
                         },
-                        {field: 'indus_kind', title: '行业分类', width: 120},
-                        {field: 'subject_id', title: '建设地点', width: 100},
-                        {
-                            field: 'year', title: '年度', minWidth: 50, templet: function (row) {
-                                if (row.year != null) {
-                                    return '<span title="' + row.year + '">' + row.year + '</span>';
+                        {field: 'amt', title: '总投资', minWidth: 100, templet : function(row){
+                                if(row.amt){
+                                    return '<span>'+row.amt+'万元</span>';
+                                }else{
+                                    return "";
                                 }
-                                return "";
-                            }
-                        },
+                            }},
                         {
                             field: 'kj_month', title: '周报期间', minWidth: 200, templet: function (row) {
                                 if (row.kj_month != null) {
@@ -599,21 +582,12 @@
                                 return "";
                             }
                         },
-                        /* {field: 'amt', title: '本周实际投资', minWidth: 100, templet : function(row){
-                            if(row.amt){
-                                return '<span>'+row.amt+'万元</span>';
-                            }else{
-                                return "";
-                            }
-                        }}, */
-                        {
-                            field: 'sub_plan_content', title: '阶段内容', minWidth: 100, templet: function (row) {
-                                if (row.sub_plan_content != null) {
-                                    return '<span title="' + row.sub_plan_content + '">' + row.sub_plan_content + '</span>';
+                        {field: 'unit_name', title: '项目单位',width: 200,templet: function(row) {
+                                if(row.unit_name != null) {
+                                    return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
                                 }
                                 return "";
-                            }
-                        },
+                            }},
                         {
                             field: 'content', title: '项目进展情况', minWidth: 320, templet: function (row) {
                                 if (row.content != null) {
@@ -644,9 +618,9 @@
                         {
                             title: '操作', width: 130,type:'string', align: 'center', fixed: 'right', templet: function (row) {
                                 if (row.unit_id === '${unitId}') {
-                                    return '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>编辑</span></div>';
+                                    return '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
                                 } else {
-                                    return '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>查看</span></div>';
+                                    return '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
                                 }
                             }
                         }
@@ -751,6 +725,16 @@
                     layui.layer.msg("必须选择周报期间");
                     return;
                 }
+                if (this.startAmt=="" || this.startAmt==undefined){
+                    startAmt=""
+                }else {
+                    startAmt=this.startAmt
+                }
+                if (this.endAmt=="" || this.endAmt==undefined){
+                    endAmt=""
+                }else {
+                    endAmt=this.endAmt
+                }
                 /* var sm = this.startMonth.replace(/\-/g, "");
                 var em = this.endMonth.replace(/\-/g, ""); */
                 var param = {
@@ -759,8 +743,8 @@
                     status: $("[name='projStatus']").val(),
                     subName: $("[name='proName']").val(),
                     isDo: $("[name='isDo']").val(),
-                    startAmt: $("[name='startAmt']").val(),
-                    endAmt: $("[name='endAmt']").val(),
+                    startAmt: startAmt,
+                    endAmt: endAmt,
                     hyfl: $("[name='hyfl']").val(),
                     jsdd: $("[name='jsdd']").val()
                 };

+ 1597 - 0
projects/src/main/webapp/vmodules/statics/SubInfoDao.java

@@ -0,0 +1,1597 @@
+package com.rtrh.projects.modules.projects.dao;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.rtrh.projects.modules.projects.mapper.SubInfoMapper;
+import com.rtrh.projects.modules.system.vo.PersonInfoVO;
+import org.hibernate.criterion.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.google.common.base.CaseFormat;
+import com.rtrh.common.util.DateUtil;
+import com.rtrh.common.util.StringUtil;
+import com.rtrh.core.repository.Page;
+import com.rtrh.core.repository.hibernate.EntityServiceImpl;
+import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
+import com.rtrh.projects.modules.projects.mapper.StaticsMapper;
+import com.rtrh.projects.modules.projects.po.SubInfo;
+import com.rtrh.projects.modules.projects.vo.HistoryVO;
+import com.rtrh.projects.modules.projects.vo.SubInfoQueryTzVO;
+import com.rtrh.projects.modules.system.dao.TSystableDao;
+import com.rtrh.projects.modules.system.enums.JUnitKind;
+import com.rtrh.projects.modules.system.enums.SysTableKind;
+import com.rtrh.projects.modules.system.enums.UserKindUnitEnum;
+import com.rtrh.projects.modules.system.po.TSystable;
+import com.rtrh.projects.modules.system.vo.LoginUserVO;
+
+import cn.hutool.core.collection.CollectionUtil;
+
+import javax.annotation.Resource;
+
+
+@Service
+public class SubInfoDao extends EntityServiceImpl<SubInfo> {
+
+	@Autowired
+	private TSystableDao tSystableDao;
+	@Autowired
+	private StaticsMapper staicsMapper;
+	@Resource
+	private SubInfoMapper subInfoMapper;
+
+	public Page pageYqInfo(Page page, LoginUserVO vo, String projName, String startTime, String endTime, String overStatus, String year, String beginMonth, String endMonth, Boolean onlySub, String hyfl, String subjectId, String zjly, Boolean containHide, Boolean blSub){
+		StringBuffer sql = new StringBuffer();
+		List<TSystable> list = tSystableDao.getSysDataByKind(SysTableKind.YQTS);
+		//延期天数
+		Integer yqts = 0;
+		if(CollectionUtil.isNotEmpty(list) && list.size() > 0) {
+			yqts = Integer.valueOf(list.get(0).getCode());
+		}
+		String yearBeginDate = null;
+		String yearEndDate = null;
+		if(StringUtil.isNotEmpty(year)) {
+			Calendar yCalendar = Calendar.getInstance();
+			yCalendar.set(Calendar.YEAR, Integer.valueOf(year));
+			yCalendar.set(Calendar.DAY_OF_MONTH, 1);
+			if(StringUtil.isNotEmpty(beginMonth)) {
+				yCalendar.set(Calendar.MONTH, Integer.valueOf(beginMonth) -1);
+			} else {
+				yCalendar.set(Calendar.MONTH, 0);
+			}
+			yearBeginDate = DateUtil.getDateStr(yCalendar.getTime(), DateUtil.FORMAT_DATE);
+			if(StringUtil.isNotEmpty(endMonth)) {
+				yCalendar.set(Calendar.MONTH, Integer.valueOf(endMonth) -1);
+				yCalendar.set(Calendar.DAY_OF_MONTH, 31);
+			} else {
+				yCalendar.set(Calendar.MONTH, 11);
+				yCalendar.set(Calendar.DAY_OF_MONTH, 31);
+			}
+			yearEndDate = DateUtil.getDateStr(yCalendar.getTime(), DateUtil.FORMAT_DATE);
+		}
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		calendar.add(Calendar.DAY_OF_MONTH, yqts);
+		String ybDayStr = DateUtil.getDateStr(calendar.getTime(), DateUtil.FORMAT_DATE);
+		sql.append("select if(us.id is NULL,0,1) as usersub,tem.* FROM ( ");
+			/*if(!Boolean.TRUE.equals(onlySub)) {
+				sql.append(" SELECT a.id, c.title zgdw, d.title as sbdw,b.sub_name as subName,a.kind, e.title, DATE_FORMAT(a.date_plan,'%Y-%m-%d') as `endDate`,DATEDIFF(CURDATE(),a.date_plan) overDays, b.id as subId, b.name_zrr as nameZrr, b.tel, b.name_lead nameLead, b.tel_Lead telLead ");
+				sql.append(" FROM sub_pre_new a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+				sql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+				sql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+				sql.append(" LEFT JOIN sub_pre_flow e ON a.pre_flow_id = e.id  ");
+				sql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+				sql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+				sql.append(" WHERE a.logic_delete_flag = 0 AND (b.`status` = 1) AND b.logic_delete_flag = 0 AND NOT ISNULL(a.date_plan) AND ISNULL(a.date_confirm) ");
+				if(yearBeginDate != null) {
+					sql.append(" and (");
+					sql.append(" (b.begin_date <= '").append(yearBeginDate).append("' and b.end_date >= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.begin_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.end_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" ) ");
+				}
+				if(StringUtil.isNotEmpty(projName)) {
+					sql.append(" AND b.sub_name LIKE '%" + projName + "%' ");
+				}
+				if(StringUtil.isNotEmpty(startTime)) {
+					sql.append(" and a.date_plan >= '" + startTime + "' ");
+				}
+				if(StringUtil.isNotEmpty(endTime)) {
+					sql.append(" and a.date_plan <= '" + endTime + "' ");
+				}
+				if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+					//项目单位
+					sql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+					if(Boolean.TRUE.equals(vo.getIsUnit())) {
+						//单位用户,看单位全部的
+					} else {
+						//个人用户,看自己申报的
+						sql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+					}
+				} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+					//政府单位
+					if(Objects.equals("0", vo.getStatusProj())) {
+						//看自己部门监管的或者监管单位或审批的
+						//sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"') ");
+						sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.sub_unit = '"+ vo.getUnitId()+"' ) ");
+					} else {
+						//看所有的
+					}
+				}
+				if(Objects.equals("0", overStatus)) {
+					//还未过期,但快过期了
+					sql.append("AND a.date_plan > CURDATE() AND a.date_plan <= '" + ybDayStr+"' ");
+				} else if(Objects.equals("1", overStatus)) {
+					//已过期的
+					sql.append(" AND DATE_ADD(a.date_plan, INTERVAL a.num2 DAY) <= CURDATE() ");
+				} else if(Objects.equals("2", overStatus)) {
+					//已过期和快过期的
+					sql.append(" AND (").append("( a.date_plan > CURDATE() AND a.date_plan <= '" + ybDayStr+"') ");
+					sql.append(" OR DATE_ADD(a.date_plan, INTERVAL a.num2 DAY) <= CURDATE())");
+				}
+				sql.append(" GROUP BY a.id ");
+				sql.append( "UNION ");
+			}*/
+		sql.append(" SELECT b.id, c.title zgdw,d.title as sbdw, b.sub_name as subName, '4' as kind, '项目进度整体延期' as content, b.end_date as `endDate`,DATEDIFF(CURDATE(),b.end_date) overDays,b.id as subId, b.name_zrr as nameZrr, b.tel, b.name_lead nameLead, b.tel_Lead telLead ");
+		sql.append(" FROM sub_info b ");
+		sql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+		sql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+		sql.append(" LEFT JOIN sub_manage f ON f.sub_id = b.id ");
+		sql.append(" LEFT JOIN sub_verify h ON h.sub_id = b.id AND h.logic_delete_flag = 0 ");
+
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" LEFT JOIN sub_source g ON g.sub_id = a.id  and g.logic_delete_flag=0");
+		}
+
+		sql.append(" WHERE (b.`status` >= '1' and b.`status` <= '7' ) AND b.logic_delete_flag = 0 ");
+		if(yearBeginDate != null) {
+			sql.append(" and (");
+			sql.append(" (b.begin_date <= '").append(yearBeginDate).append("' and b.end_date >= '").append(yearEndDate).append("') ");
+			sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+			sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.begin_date <= '").append(yearEndDate).append("') ");
+			sql.append(" or (b.end_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+			sql.append(" ) ");
+		}
+		if(StringUtil.isNotEmpty(projName)) {
+			sql.append(" AND b.sub_name LIKE '%" + projName + "%' ");
+		}
+		if(StringUtil.isNotEmpty(startTime)) {
+			sql.append(" and b.end_date >= '" + startTime + "' ");
+		}
+		if(StringUtil.isNotEmpty(endTime)) {
+			sql.append(" and b.end_date <= '" + endTime + "' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" and g.source_id = '" + zjly+ "' ");
+		}
+
+/*		if (Objects.equals(Boolean.TRUE,containHide)){
+			sql.append(" and b.is_hide =  '1' ");
+		}*/
+
+		if(StringUtil.isNotEmpty(subjectId)) {
+			sql.append(" and a.subject_id = '"+ subjectId+"' ");
+		}
+
+		if(StringUtil.isNotEmpty(hyfl)) {
+			sql.append(" and a.indus_kind = '" + hyfl + "' ");
+		}
+
+
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		if(Objects.equals("0", overStatus)) {
+			//还未过期,但快过期了
+			sql.append("AND b.end_date > CURDATE() AND b.end_date <= '" + ybDayStr+"' ");
+		} else if(Objects.equals("1", overStatus)) {
+			//已过期的
+			sql.append(" AND b.end_date <= CURDATE() ");
+		} else if(Objects.equals("2", overStatus)) {
+			//已过期和快过期的
+			sql.append(" AND (").append("( b.end_date > CURDATE() AND b.end_date <= '" + ybDayStr+"') ");
+			sql.append(" OR b.end_date <= CURDATE())");
+		}
+		sql.append(" GROUP BY b.id ");
+			/*if(!Boolean.TRUE.equals(onlySub)) {
+				sql.append(" UNION ");
+				sql.append(" SELECT a.id, c.title zgdw,d.title as sbdw, b.sub_name as subName, '5' as kind, a.title as content, a.date_conf as `endDate`,DATEDIFF(CURDATE(),a.date_conf) overDays,b.id as subId, b.name_zrr as nameZrr, b.tel, b.name_lead nameLead, b.tel_Lead telLead ");
+				sql.append(" FROM sub_q_info a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+				sql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+				sql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+				sql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+				sql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+				sql.append(" WHERE a.`status` = 0 AND b.logic_delete_flag = 0 and a.logic_delete_flag = 0 ");
+				if(yearBeginDate != null) {
+					sql.append(" and (");
+					sql.append(" (b.begin_date <= '").append(yearBeginDate).append("' and b.end_date >= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.begin_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.end_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" ) ");
+				}
+				if(StringUtil.isNotEmpty(projName)) {
+					sql.append(" AND b.sub_name LIKE '%" + projName + "%' ");
+				}
+				if(StringUtil.isNotEmpty(startTime)) {
+					sql.append(" and a.date_conf >= '" + startTime + "' ");
+				}
+				if(StringUtil.isNotEmpty(endTime)) {
+					sql.append(" and a.date_conf <= '" + endTime + "' ");
+				}
+				if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+					//项目单位
+					sql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+					if(Boolean.TRUE.equals(vo.getIsUnit())) {
+						//单位用户,看单位全部的
+					} else {
+						//个人用户,看自己申报的
+						sql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+					}
+				} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+					//政府单位
+					if(Objects.equals("0", vo.getStatusProj())) {
+						//看自己部门监管的或者监管单位或审批的
+						sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.unit_id = '"+vo.getUnitId()+"') ");
+					} else {
+						//看所有的
+					}
+				}
+				if(Objects.equals("0", overStatus)) {
+					//还未过期,但快过期了
+					sql.append("AND a.date_conf > CURDATE() AND a.date_conf <= '" + ybDayStr+"' ");
+				} else if(Objects.equals("1", overStatus)) {
+					//已过期的
+					sql.append(" AND a.date_conf <= CURDATE() ");
+				} else if(Objects.equals("2", overStatus)) {
+					//已过期和快过期的
+					sql.append(" AND (").append("( a.date_conf > CURDATE() AND a.date_conf <= '" + ybDayStr+"') ");
+					sql.append(" OR a.date_conf <= CURDATE())");
+				}
+				sql.append(" GROUP BY a.id ");
+			}*/
+		sql.append(" ) as tem ");
+
+		if (Objects.equals(Boolean.TRUE,blSub)){
+			sql.append(" inner JOIN sec_user_sub us ON tem.subId = us.sub_id AND us.logic_delete_flag =0  ");
+		}else{
+			sql.append(" LEFT JOIN sec_user_sub us ON tem.subId = us.sub_id AND us.logic_delete_flag =0  AND us.user_id='"+vo.getId()+"' ");
+		}
+
+		sql.append(" ORDER BY usersub desc,tem.endDate, subId ASC ");
+		return this.queryForListBySql(sql.toString(), page);
+	}
+
+	@SuppressWarnings("unchecked")
+	public Map<String,Object> getSubAmountForWorkBentch(LoginUserVO vo){
+		/*StringBuffer preBaseSql = new StringBuffer();
+		preBaseSql.append(" SELECT count(1) as num ");
+		preBaseSql.append(" FROM sub_pre_new a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+		preBaseSql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+		preBaseSql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+		preBaseSql.append(" WHERE a.logic_delete_flag = 0 AND (b.`status` = 1) AND b.logic_delete_flag = 0 AND NOT ISNULL(a.date_plan) AND ISNULL(a.date_confirm) ");*/
+
+		StringBuffer planBaseSql = new StringBuffer();
+		planBaseSql.append(" SELECT count(1) as num ");
+		planBaseSql.append(" FROM sub_info b ");
+		planBaseSql.append(" LEFT JOIN sub_manage f ON f.sub_id = b.id ");
+		planBaseSql.append(" LEFT JOIN sub_verify h ON h.sub_id = b.id AND h.logic_delete_flag = 0 ");
+		planBaseSql.append(" WHERE b.logic_delete_flag = 0 AND (b.`status` >= '1' and b.`status` <= '7') ");
+
+		/*StringBuffer questionBaseSql = new StringBuffer();
+		questionBaseSql.append(" SELECT count(1) as num ");
+		questionBaseSql.append(" FROM sub_q_info a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+		questionBaseSql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+		questionBaseSql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+		questionBaseSql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+		questionBaseSql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+		questionBaseSql.append(" WHERE a.`status` = 0 AND b.logic_delete_flag = 0 ");*/
+
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			//preBaseSql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			planBaseSql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			//questionBaseSql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				//preBaseSql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+				planBaseSql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+				//questionBaseSql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//preBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' ) ");
+				//planBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' ) ");
+				//questionBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' or a.unit_id = '"+vo.getUnitId()+"') ");
+				//preBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.sub_unit = '"+ vo.getUnitId()+"' ) ");
+				planBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' ) ");
+				//questionBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.unit_id = '"+vo.getUnitId()+"') ");
+			} else {
+				//看所有的
+			}
+		}
+
+		List<TSystable> list = tSystableDao.getSysDataByKind(SysTableKind.YQTS);
+		//延期天数
+		Integer yqts = 0;
+		if(CollectionUtil.isNotEmpty(list) && list.size() > 0) {
+			yqts = Integer.valueOf(list.get(0).getCode());
+		}
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		calendar.add(Calendar.DAY_OF_MONTH, yqts);
+		String ybDayStr = DateUtil.getDateStr(calendar.getTime(), DateUtil.FORMAT_DATE);
+
+
+		//sub_pre已过期
+		//String subPreOver = preBaseSql.toString()+ " AND a.date_plan <= CURDATE() ";
+		//sub_pre待过期
+		//String subPreWillOver = preBaseSql.toString() + " AND a.date_plan > CURDATE() AND a.date_plan <= '"+ybDayStr+"' ";
+		//sub_plan已过期
+		String subPlanOver = planBaseSql.toString()+ " AND b.end_date <= CURDATE() ";
+		//sub_plan待过期
+		String subPlanWillOver = planBaseSql.toString() + " AND b.end_date > CURDATE() AND b.end_date <= '"+ybDayStr+"' ";
+		//sub_q_info已过期
+		//String questionOver = questionBaseSql.toString()+ " AND a.date_conf <= CURDATE() ";
+		//sub_q_info待过期
+		//String questionWillOver = questionBaseSql.toString() + " AND a.date_conf > CURDATE() AND a.date_conf <= '"+ybDayStr+"' ";
+
+		//Map<String, BigInteger> subPreOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPreOver+" GROUP BY a.id) as tem ");
+		//Map<String, BigInteger> subPreWillOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPreWillOver+" GROUP BY a.id) as tem ");
+		Map<String, BigInteger> subPlanOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPlanOver+" GROUP BY b.id) as tem ");
+		Map<String, BigInteger> subPlanWillOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPlanWillOver+" GROUP BY b.id) as tem ");
+		//Map<String, BigInteger> questionOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+questionOver+" GROUP BY a.id) as tem ");
+		//Map<String, BigInteger> questionWillOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+questionWillOver+" GROUP BY a.id) as tem ");
+		Map<String, Object> result= new HashMap<>();
+		//result.put("isOver", subPreOverNum.getOrDefault("num", BigInteger.ZERO).add(subPlanOverNum.getOrDefault("num", BigInteger.ZERO))/*.add(questionOverNum.getOrDefault("num", BigInteger.ZERO))*/);
+		//result.put("willOver", subPreWillOverNum.getOrDefault("num", BigInteger.ZERO).add(subPlanWillOverNum.getOrDefault("num", BigInteger.ZERO))/*.add(questionWillOverNum.getOrDefault("num", BigInteger.ZERO))*/);
+		result.put("isOver", subPlanOverNum.getOrDefault("num", BigInteger.ZERO));
+		result.put("willOver", subPlanWillOverNum.getOrDefault("num", BigInteger.ZERO));
+		return result;
+	}
+
+	public Map<String,Object> getSubInfoById(String id, String queryYear){
+		StringBuffer sql = new StringBuffer();
+
+
+		String subInfoTableName = "sub_info";
+/*
+		if(StringUtil.isNotEmpty(queryYear)&&(!queryYear.equals("undefined"))) {
+			HistoryVO historyVO = new HistoryVO();
+			historyVO.setYear(queryYear);
+			staicsMapper.historyLib(historyVO);
+			subInfoTableName = historyVO.getResult();
+		}
+*/
+
+		//20231205  增加项目 今年  年度计划投资,年度实际投资
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMM");
+		Date date=new Date();
+		String  yearMonth= simpleDateFormat.format(date);
+		String year=yearMonth.substring(0,4);
+		Integer numBeginMonth=Integer.parseInt(year+"01");
+		Integer numEndMonth=Integer.parseInt(yearMonth);
+		Calendar calendar_1=Calendar.getInstance();
+		calendar_1.set(Calendar.DAY_OF_MONTH,5);
+		calendar_1.set(Calendar.HOUR_OF_DAY,23);
+		String month=yearMonth.substring(2,yearMonth.length());
+		if (calendar_1.getTime().getTime()>date.getTime()){
+			numEndMonth=numEndMonth-2;
+		}else{
+			numEndMonth=numEndMonth-1;
+		}
+
+
+		//每年1月份, 投资为0  2月5号之前 投资为0
+		if ("01".equals(month)||("02".equals(month)&&calendar_1.getTime().getTime()>date.getTime())){
+			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,'0' AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, d.title as manageName, e.title subjectId ");
+
+		}else {
+			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,IF (sa.yearAmt != 0,ROUND((src.yearAmtSj - sa.yearAmt) * 100 / sa.yearAmt,2),NULL) AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, d.title as manageName, e.title subjectId ");
+		}
+		sql.append(" from "+subInfoTableName+" a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit d ON a.manage_id = d.id ");
+		sql.append(" LEFT JOIN j_unit f ON a.main_id = f.id ");
+		sql.append(" left join t_systable c on a.indus_kind = c.id ");
+		sql.append(" left join t_systable e on a.subject_id = e.id ");
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id  AND us.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_q_info sqi ON sqi.sub_id=a.id AND sqi.logic_delete_flag=0 AND sqi.`status`='0' AND sqi.kind = "+ JUnitKind.ZFDW.getCode()+" ");
+
+
+		//20231219  增加项目 今年  年度计划投资,年度实际投资
+//		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy");
+//		Date date=new Date();
+//		String  year= simpleDateFormat.format(date);
+
+		sql.append(" LEFT JOIN ( SELECT sum(amt) yearAmt, sa.sub_id FROM sub_amtplan sa WHERE sa.logic_delete_flag = 0 AND sa.y_month >='"+numBeginMonth+"' AND sa.y_month <= '"+numEndMonth+"'  GROUP BY sa.sub_id ) sa ON sa.sub_id=a.id   ");
+		sql.append(" LEFT JOIN ( SELECT sum(amt) yearAmtSj,sum( amt_rt) yearAmtRt,src.sub_id FROM sub_rpt_cont src WHERE src.logic_delete_flag = 0 AND src.kj_month >= '"+numBeginMonth+"' AND src.kj_month <= '"+numEndMonth+"'   GROUP BY src.sub_id ) src ON src.sub_id=a.id    ");
+
+		sql.append(" where a.id = ?");
+		sql.append(" GROUP BY a.id ");
+
+		return (Map<String,Object>)this.queryForObjectBySql(sql.toString(), id);
+	}
+
+	/**
+	 * 查询过程管理列表
+	 * @param page
+	 * @param vo
+	 * @param subName
+	 * @param kind
+	 * @param propKind
+	 * @param indusKind
+	 * @param status
+	 * @param beginDateStart
+	 * @param beginDateEnd
+	 * @return
+	 */
+	public Page pageGc(Page page, LoginUserVO vo,String subName, String kind,
+					   String propKind, String indusKind, String status, String beginDate, String endDate) {
+		StringBuffer sql = new StringBuffer();
+
+		sql.append(" select if(us.id is NULL,0,1) as usersub,a.id,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal,a.amt_year as amtYear, a.reason, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as manageName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_tg statusTg ");
+		sql.append(" ,(select src.num_bl FROM sub_rpt_cont as src where src.sub_id =a.id and src.logic_delete_flag = 0 and src.kind = '1' and not isnull(src.num_bl) order by kj_month desc limit 1) as numBl ");
+		sql.append(" from sub_info a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.manage_id = c.id ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id AND us.logic_delete_flag = 0 AND us.user_id = '"+vo.getId()+"' ");
+		sql.append(" where a.logic_delete_flag = 0 ");
+		sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+		if(!Boolean.TRUE.equals(vo.getIsUnit())) {
+			sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+		}
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		} else {
+			sql.append(" AND (a.`status` = '6' or a.`status` = 7 or a.`status` = '8' )");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '" + subName + "' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			//遍历
+			String [] kinds=kind.split(",");
+			String sqlTemp="";
+			for (String temp:kinds){
+
+				sqlTemp=sqlTemp+ " INSTR (a.kind,'"+temp+"')>0  OR ";
+			}
+			//去掉最后的 OR
+			String sqlCheck=sqlTemp.substring(0,sqlTemp.length()-3);
+
+			sql.append(" AND ( "+sqlCheck+" )");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDate) && StringUtil.isNotEmpty(endDate)) {
+			sql.append(" and (");
+			sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" ) ");
+		}
+		sql.append(" GROUP BY a.id ");
+		sql.append(" order by usersub desc,a.begin_date,a.create_time desc");
+		return this.queryForListBySql(sql.toString(), page);
+	}
+
+
+	public List<Map<String,Object>> queryProcessProjects(LoginUserVO vo,String subName, String kind,
+														 String propKind, String indusKind, String status, String beginDate, String endDate, Boolean containHide) {
+		StringBuffer sql = new StringBuffer();
+
+		sql.append(" select a.id,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal,a.amt_year as amtYear, a.reason, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as manageName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh ");
+
+		//关联问题数量
+		sql.append(" ,(select count(*) FROM sub_q_info as sqi WHERE sqi.sub_id=a.id AND sqi.logic_delete_flag=0  and sqi.status = 0) as problemNum ");
+
+
+		sql.append(" from sub_info a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.manage_id = c.id ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" where a.logic_delete_flag = 0  ");
+		sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+		if(!Boolean.TRUE.equals(vo.getIsUnit())) {
+			sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+		}
+	/*	if(Boolean.FALSE.equals(containHide)) {
+			sql.append(" AND (isnull(a.is_hide) or a.is_hide = '0') ");
+		}*/
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		} else {
+			sql.append(" AND (a.`status` = 'A' or a.`status`= '1' or a.`status` = '6' or a.`status` = 7 or a.`status` = '8' )");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '" + subName + "' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			sql.append(" and a.kind = '" + kind + "' ");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDate) && StringUtil.isNotEmpty(endDate)) {
+			sql.append(" and (");
+			sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" ) ");
+		}
+		sql.append(" GROUP BY a.id ");
+		sql.append(" order by a.begin_date,a.create_time desc");
+		return (List<Map<String, Object>>) this.queryForObjListBySql(sql.toString());
+	}
+
+	public Page pageQueryNew(Page page, LoginUserVO vo, SubInfoQueryTzVO queryVO) {
+		List<Map<String, String>> maps = null;
+		if(StringUtil.isEmpty(queryVO.getYear())) {
+			queryVO.setYear(String.valueOf(cn.hutool.core.date.DateUtil.thisYear()));
+		}
+
+		if (queryVO.getBeginDate() == null) {
+			queryVO.setBeginDate("1900-01-01 00:00:00");
+		}
+		if (StringUtil.isNotEmpty(queryVO.getIsFix())){
+			queryVO.setQueryTimeType("4");
+		}
+
+		String yearStr = queryVO.getBeginDate().substring(0, 4);
+		HistoryVO historyVO = new HistoryVO();
+		historyVO.setYear(yearStr);
+
+
+		String beginYearMonth=yearStr+"01";
+		String endYearMonth=yearStr+"12";
+
+		//拼接月份
+		if (StringUtil.isNotEmpty(queryVO.getBeginDate())){
+			beginYearMonth=queryVO.getBeginDate().substring(0, 4)+queryVO.getBeginDate().substring(5,7);
+		}
+
+		if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+			endYearMonth=queryVO.getEndDate().substring(0, 4)+queryVO.getEndDate().substring(5,7);
+		}
+		PageHelper.startPage(page.getPageNo(), page.getPageSize());
+		if("2".equals(queryVO.getType())){
+			maps = subInfoMapper.pageQueryNew(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId(), queryVO.getType());
+		}else if("JSDD".equals(queryVO.getType())){
+			maps = subInfoMapper.pageQueryJSDD(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId(), queryVO.getType());
+		}else if("HYFL".equals(queryVO.getType())){
+			maps = subInfoMapper.pageQueryHYFL(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId(), queryVO.getType());
+		}else if("PLD".equals(queryVO.getType())){
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+			String lastMonth= "";
+			if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+				LocalDate currentDate = LocalDate.parse(queryVO.getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}else{
+				LocalDate currentDate = LocalDate.now();
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}
+			endYearMonth=lastMonth.substring(0, 4)+lastMonth.substring(5,7);
+			maps = subInfoMapper.pageQueryPLD(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+
+		}else if("ZB".equals(queryVO.getType())){
+			LocalDate today = LocalDate.now();
+			DayOfWeek dayOfWeek = today.getDayOfWeek();
+
+			LocalDate startOfWeek;
+			LocalDate endOfWeek;
+
+			if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) {
+				// 获取本周周一
+				startOfWeek = today.with(DayOfWeek.MONDAY);
+				// 获取本周周日
+				endOfWeek = today.with(DayOfWeek.SUNDAY);
+			} else {
+				// 获取上周周一
+				startOfWeek = today.minusWeeks(1).with(DayOfWeek.MONDAY);
+				// 获取上周周日
+				endOfWeek = today.minusWeeks(1).with(DayOfWeek.SUNDAY);
+			}
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+			String startDate = startOfWeek.format(formatter);
+			String endDate = endOfWeek.format(formatter);
+			if ("2".equals(queryVO.getFixCat()) && (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY || dayOfWeek == DayOfWeek.MONDAY)){
+				maps = subInfoMapper.pageQueryZB(beginYearMonth,endYearMonth,startDate,endDate,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+			}else{
+				maps = subInfoMapper.pageQueryZB(beginYearMonth,endYearMonth,startDate,endDate,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+			}
+		}else if("YB".equals(queryVO.getType())){
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+			String lastMonth= "";
+			if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+				LocalDate currentDate = LocalDate.parse(queryVO.getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}else{
+				LocalDate currentDate = LocalDate.now();
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}
+			endYearMonth=lastMonth.substring(0, 4)+lastMonth.substring(5,7);
+			// 获取当前日期
+			LocalDate currentDate = LocalDate.now();
+			// 获取当前月份
+			int currentMonth = currentDate.getMonthValue();
+			if(currentMonth == 1){
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+				queryVO.setYear(String.valueOf(currentDate.getYear()-1));
+				beginYearMonth=lastMonth.substring(0, 4)+"01";
+				endYearMonth=lastMonth.substring(0, 4)+"12";
+			}
+
+			maps = subInfoMapper.pageQueryYB(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+		}
+		PageInfo<Map<String, String>> pageInfo = new PageInfo<>(maps);
+		page.setList(maps);
+		page.setTotalCount(pageInfo.getTotal());
+		return page;
+	}
+
+	public Page pageTZ(Page page, LoginUserVO vo, SubInfoQueryTzVO queryVO) {
+		StringBuffer sql = new StringBuffer();
+		if(StringUtil.isEmpty(queryVO.getYear())) {
+			queryVO.setYear(String.valueOf(cn.hutool.core.date.DateUtil.thisYear()));
+		}
+
+		if (queryVO.getBeginDate() == null) {
+			queryVO.setBeginDate("1900-01-01 00:00:00");
+		}
+		if (StringUtil.isNotEmpty(queryVO.getIsFix())){
+			queryVO.setQueryTimeType("4");
+		}
+
+		String yearStr = queryVO.getBeginDate().substring(0, 4);
+		HistoryVO historyVO = new HistoryVO();
+		historyVO.setYear(yearStr);
+/*		staicsMapper.historyLib(historyVO);*/
+		String subInfoTableName = "";
+
+		 subInfoTableName = "sub_info";
+
+
+		String beginYearMonth=yearStr+"01";
+		String endYearMonth=yearStr+"12";
+
+		//拼接月份
+		if (StringUtil.isNotEmpty(queryVO.getBeginDate())){
+			beginYearMonth=queryVO.getBeginDate().substring(0, 4)+queryVO.getBeginDate().substring(5,7);
+		}
+
+		if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+			endYearMonth=queryVO.getEndDate().substring(0, 4)+queryVO.getEndDate().substring(5,7);
+		}
+
+
+
+
+		//3为计划投资  去掉 计划投资为0的    4为实际投资,去掉实际投资为 0的
+		if ("3".equals(queryVO.getAmtType())||"4".equals(queryVO.getAmtType())||"5".equals(queryVO.getAmtType())){
+
+			queryVO.setBeginDate(yearStr+"-01-01");
+			queryVO.setEndDate(yearStr+"-12-31");
+			sql.append(" select *  from ( ");
+		}
+
+
+		//20230816  增加联系人,负责人信息。  用于导出。
+		sql.append(" select if(us.id is NULL,0,1) as usersub,sum(sa.amt) yearAmt,sum(src.amt) yearAmtSj,sum(src.amt_rt) yearAmtRt,a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.subject_id,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
+		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp,a.status_tg statusTg ");
+		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+			sql.append(", g.amt amtSource, t.title amtSourceName ");
+
+		}
+		if(Boolean.TRUE.equals(queryVO.getApp())) {
+			sql.append(", NOT ISNULL(sc.id) as isAttention ");
+		} else {
+			//sql.append(", (select sp.end_date FROM sub_plan as sp where sp.sub_id =a.id and sp.logic_delete_flag = 0 and sp.status_sp = '1' ) as planDate, ");
+			sql.append(" ,IFNULL((select sum(amt) from sub_amtplan sa where sa.sub_id = a.id and sa.y_month >= '"+beginYearMonth+"'  and sa.y_month <= '"+endYearMonth+"'    and not isnull(sa.amt) group by sa.sub_id) , 0) as yearPlanAmt, ");
+			sql.append(" IFNULL((select sum(amt) from sub_rpt_cont src where src.sub_id = a.id and src.kj_month >= '"+beginYearMonth+"'  and src.kj_month <= '"+endYearMonth+"'     and not isnull(src.amt) group by src.sub_id), 0) as yearEndAmt, ");
+			sql.append(" IFNULL((select sum(amt_rt) from sub_rpt_cont src5 where src5.sub_id = a.id and src5.kj_month >= '"+beginYearMonth+"' and src.kj_month <= '"+endYearMonth+"'    and not isnull(src5.amt_rt) group by src5.sub_id), 0) as yearRtAmt ");
+			//sql.append(" (select count(1) from sub_start ss where  ss.sub_id = a.id and ss.logic_delete_flag = 0 ) as hasStart, ");
+			//sql.append(" (select count(1) from sub_completed sc where sc.sub_id = a.id and sc.logic_delete_flag = 0) as hasEnd ");
+
+		}
+		sql.append(" from "+subInfoTableName+" a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.main_id = c.id ");
+		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+			sql.append(" LEFT JOIN sub_source g ON g.sub_id = a.id  and g.logic_delete_flag=0");
+			sql.append(" LEFT JOIN t_systable t ON t.id = g.source_id  and t.logic_delete_flag=0");
+		}
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			sql.append(" LEFT JOIN sub_verify e ON a.id = e.sub_id AND e.logic_delete_flag = 0 ");
+			sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		}
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id AND us.logic_delete_flag =0  AND us.user_id='"+vo.getId()+"' ");
+		if(Boolean.TRUE.equals(queryVO.getBlSub())) {
+			//是否分管先项目
+			sql.append(" INNER JOIN sec_user_sub sus ON a.id = sus.sub_id AND sus.logic_delete_flag = 0 ");
+		}
+		if(Boolean.TRUE.equals(queryVO.getApp())) {
+			//是app查询则加上关注条件
+			sql.append(" LEFT JOIN sub_concern sc ON a.id = sc.sub_id and sc.user_id = '"+ vo.getId()+"' ");
+		}
+
+//		//判断项目状态如果  查询在建已开工数    关联开工表
+//		if(ProjectStatusEnum.YKG.getKey().equals(queryVO.getStatus())){
+//			sql.append(" LEFT JOIN sub_start ss on ss.sub_id = a.id  and ss.logic_delete_flag = 0  ");
+//		}
+//
+//		//判断项目状态如果  查询在建已开工数    关联开工表
+//		if(ProjectStatusEnum.END.getKey().equals(queryVO.getStatus())){
+//			sql.append(" LEFT JOIN sub_completed scd on scd.sub_id = a.id  and scd.logic_delete_flag = 0  ");
+//		}
+
+
+
+		//20231205  增加项目 今年  年度计划投资,年度实际投资
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy");
+		Date date=new Date();
+		String  year= simpleDateFormat.format(date);
+
+		sql.append(" LEFT JOIN sub_amtplan sa ON sa.sub_id=a.id  and   sa.y_month like '"+year+"%' ");
+		sql.append(" LEFT JOIN sub_rpt_cont src ON src.sub_id=a.id  and  src.kj_month like '"+year+"%'  ");
+
+
+		sql.append(" where a.logic_delete_flag = 0 ");
+		//2024-01-05修改该查询为大屏穿透专用,强制限定只能查询is_hide = 1的项目
+
+		//2024-05-08 添加参数用于查询储备项目。
+/*		if (queryVO.getIsCb()!=null){
+			if (queryVO.getIsCb()){
+				sql.append(" and ( a.is_hide = '0' or a.is_hide  is null )  ");
+			}else{
+				sql.append(" and a.is_hide = '1' ");
+			}
+		}
+		else{
+			sql.append(" and a.is_hide = '1' ");
+		}*/
+
+
+
+		sql.append(" AND a.status != '" + ProjectStatusEnum.TEMPSAVE.getKey()+"' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		}
+		else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or e.depart_id = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+				if(StringUtil.isNotEmpty(queryVO.getHydw())) {
+					sql.append(" AND ( a.unit_id = '"+ queryVO.getHydw()+"' or a.main_id = '"+queryVO.getHydw()+"' or d.manage_id = '"+queryVO.getHydw()+"' or e.unit_id = '"+queryVO.getHydw()+"' ) ");
+				}
+			}
+		}
+		if(StringUtil.isNotEmpty(queryVO.getKindNature())) {
+			sql.append(" AND a.kind_nature  = '"+ queryVO.getKindNature()+"' ");
+		}
+		//是否在建
+		if(Objects.equals("1", queryVO.getIsZj())) {
+			//2024/6/3 在建包含 停工项目
+//			sql.append(" and a.`status` <> '" + ProjectStatusEnum.STOP.getKey()+"' ");
+			sql.append(" and a.`status` <> '"+ ProjectStatusEnum.END.getKey()+"' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getOtherStatus())) {
+
+
+
+			//判断项目状态如果  查询在建已开工数
+
+//			if(ProjectStatusEnum.YKG.getKey().equals(queryVO.getOtherStatus())){
+//
+////				sql.append(" and ss.status = 9 " );
+////				if (StringUtil.isNotEmpty(queryVO.getBeginDate())&&StringUtil.isNotEmpty(queryVO.getEndDate())){
+////					sql.append(" and  ss.date_sq >= "+queryVO.getBeginDate()+ " and ss.date_sq <=" + queryVO.getEndDate() );
+////				}
+//
+////				sql.append(" and a.prop_kind = '1'  ");  //查询在建
+//				sql.append(" AND (a.`status`='7' OR a.`status` = '8' OR a.`status` ='A')  ");
+//			}
+//			else{
+
+				String[] split = queryVO.getOtherStatus().split(",");
+				sql.append("and (");
+				for(String st : split) {
+					sql.append(" a.`status` = '"+ st +"' or ");
+				}
+				sql.delete(sql.length()-3, sql.length());
+				sql.append(")");
+//			}
+
+		}
+		else if(StringUtil.isNotEmpty(queryVO.getStatus())) {
+
+//			//判断项目状态如果  查询在建已开工数    关联开工表
+//			if(ProjectStatusEnum.YKG.getKey().equals(queryVO.getStatus())){
+//
+//				sql.append(" and a.prop_kind = '1'  ");  //查询在建
+//				sql.append(" AND (a.`status`='7' OR a.`status` = '8' OR a.`status` ='A')  ");
+////				sql.append(" and ss.status = 9 " );
+////				if (StringUtil.isNotEmpty(queryVO.getBeginDate())&&StringUtil.isNotEmpty(queryVO.getEndDate())){
+////					sql.append(" and  ss.date_sq >= "+queryVO.getBeginDate()+ " and ss.date_sq <=" + queryVO.getEndDate() );
+////				}
+//			} else{
+
+				sql.append(" and a.`status` = '" + queryVO.getStatus() + "' ");
+
+//			}
+
+		} else {
+			sql.append(" AND a.status != '" + ProjectStatusEnum.TEMPSAVE.getKey()+"' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getSubName())) {
+			sql.append(" and a.sub_name like '" + queryVO.getSubName() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getKind())) {
+			//遍历
+			String [] kinds=queryVO.getKind().split(",");
+			String sqlTemp="";
+			for (String temp:kinds){
+
+				sqlTemp=sqlTemp+ " INSTR (a.kind,'"+temp+"')>0  OR ";
+			}
+			//去掉最后的 OR
+			String sqlCheck=sqlTemp.substring(0,sqlTemp.length()-3);
+
+			sql.append(" AND ( "+sqlCheck+" )");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getPropKind())) {
+			if(queryVO.getPropKind().indexOf(",") > 0) {
+				sql.append(" and a.prop_kind IN (");
+				for(String propKind : queryVO.getPropKind().split(",")) {
+					sql.append("'").append(propKind).append("',");
+				}
+				sql.delete(sql.length()-1, sql.length());
+				sql.append(") ");
+			}else {
+				sql.append(" and a.prop_kind = '" + queryVO.getPropKind() + "' ");
+			}
+
+		}
+		if(StringUtil.isNotEmpty(queryVO.getIndusKind())) {
+			sql.append(" and a.indus_kind = '" + queryVO.getIndusKind() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getLight())) {
+			sql.append(" AND ( a.status_fgw IN (" + queryVO.getLight()+" ) ");
+			if(queryVO.getLight().contains("0")) {
+				sql.append(" or isnull(a.status_fgw) ");
+			}
+			sql.append(" ) ");
+		}
+
+		if(StringUtil.isNotEmpty(queryVO.getAbc())) {
+			sql.append(" and a.abc = '" + queryVO.getAbc() + "' ");
+		}
+
+		//20240307 判断是否逾期
+		if (StringUtil.isNotEmpty(queryVO.getIsYq())){
+
+			if ("1".equals(queryVO.getIsYq())){
+				sql.append(" and (a.`status` = '7' or a.`status` = '8' ) ");
+				sql.append(" AND a.end_date <= CURDATE() ");
+			}
+
+		}
+
+		//查询年固定资产投资项目
+		if (StringUtil.isNotEmpty(queryVO.getIsFix())) {
+			if (queryVO.getIsFix().equals("1")) {
+				if (queryVO.getFixCat().contains(",")) {
+					sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  (");
+					String[] ary = queryVO.getFixCat().split(",");
+					sql.append(" f.cat='" + ary[0] + "'");
+					for (int i = 1; i < ary.length; i++) {
+						sql.append(" or f.cat='" + ary[i] + "'");
+					}
+					sql.append(") )");
+				} else {
+					sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  f.cat='" + queryVO.getFixCat() + "') ");
+				}
+			}
+			if (queryVO.getIsFix().equals("0")) {
+				sql.append(" and not exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "') ");
+			}
+			if (queryVO.getIsFix().equals("2")) {
+				if (StringUtil.isNotEmpty(queryVO.getFixCat())) {
+					if (queryVO.getFixCat().contains(",")) {
+						sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  (");
+						String[] ary = queryVO.getFixCat().split(",");
+						sql.append(" f.cat='" + ary[0] + "'");
+						for (int i = 1; i < ary.length; i++) {
+							sql.append(" or f.cat='" + ary[i] + "'");
+						}
+						sql.append(") )");
+					} else {
+						sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  f.cat='" + queryVO.getFixCat() + "') ");
+					}
+				} else {
+					sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "') ");
+				}
+			}
+		}
+
+		//20230530 增加资金来源
+		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+			sql.append(" and g.source_id = '" + queryVO.getZjly() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getSubjectId())) {
+			sql.append(" and a.subject_id = '"+ queryVO.getSubjectId()+"' ");
+		}
+		if(StringUtil.isEmpty(queryVO.getQueryTimeType())) {
+			if(StringUtil.isNotEmpty(queryVO.getBeginDate()) && StringUtil.isNotEmpty(queryVO.getEndDate())) {
+				sql.append(" and (");
+				sql.append(" (a.begin_date <= '").append(queryVO.getBeginDate()).append("' and a.end_date >= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" or (a.begin_date >= '").append(queryVO.getBeginDate()).append("' and a.end_date <= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" or (a.begin_date >= '").append(queryVO.getBeginDate()).append("' and a.begin_date <= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" or (a.end_date >= '").append(queryVO.getBeginDate()).append("' and a.end_date <= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" ) ");
+			}
+		}
+		else {
+			switch (queryVO.getQueryTimeType()) {
+				case "1":
+					//计划开工日期
+					if(StringUtil.isNotEmpty(queryVO.getBeginDate())) {
+						sql.append("AND a.begin_date >= '"+ queryVO.getBeginDate()+"' ");
+					}
+					if(StringUtil.isNotEmpty(queryVO.getEndDate())) {
+						sql.append(" AND a.begin_date <= '" + queryVO.getEndDate()+"' ");
+					}
+					break;
+				case "2":
+					//计划结束日期
+					if(StringUtil.isNotEmpty(queryVO.getBeginDate())) {
+						sql.append("AND a.end_date >= '"+ queryVO.getBeginDate()+"' ");
+					}
+					if(StringUtil.isNotEmpty(queryVO.getEndDate())) {
+						sql.append(" AND a.end_date <= '" + queryVO.getEndDate()+"' ");
+					}
+					break;
+				case "3":
+					//创建时间
+					if(StringUtil.isNotEmpty(queryVO.getBeginDate())) {
+						sql.append("AND a.create_time >= '"+ queryVO.getBeginDate()+"' ");
+					}
+					if(StringUtil.isNotEmpty(queryVO.getEndDate())) {
+						sql.append(" AND a.create_time <= '" + queryVO.getEndDate()+"' ");
+					}
+					break;
+				default:
+					break;
+			}
+		}
+		if(StringUtil.isNotEmpty(queryVO.getStartAmt())) {
+			sql.append(" and a.amt_total >= '" + queryVO.getStartAmt() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getEndAmt())) {
+			sql.append(" and a.amt_total < '" + queryVO.getEndAmt() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getSbdw())) {
+			sql.append(" AND b.title like '%" + queryVO.getSbdw()+"%' ");
+		}
+		if(queryVO.getEndBl() != null|| queryVO.getEndBlPlus() !=null) {
+			//先查询存在计划投资金额的项目
+			StringBuffer planAmtSubIdQuery = new StringBuffer();
+			planAmtSubIdQuery.append(" SELECT sub_id,SUM(amt) as planAmt from sub_amtplan WHERE y_month RLIKE '"+queryVO.getYear()+"' and not isnull(amt) GROUP BY sub_id ");
+			List<Map<String, Object>> planAmtData = (List<Map<String, Object>>)this.queryForObjListBySql(planAmtSubIdQuery.toString());
+			Map<String, Object> bigSubMap = new HashMap<>();
+			if(CollectionUtil.isNotEmpty(planAmtData)) {
+				//筛选金额不为0的项目
+				bigSubMap.putAll(planAmtData.stream().filter(item->{
+					return BigDecimal.ZERO.compareTo(new BigDecimal(String.valueOf(item.get("planAmt")))) != 0;
+				}).collect(Collectors.toMap(i->String.valueOf(i.get("sub_id")), i->i.get("planAmt"), (a,b)->b)));
+			}
+			if(CollectionUtil.isNotEmpty(bigSubMap)) {
+				//再查询实际投资金额的项目
+				StringBuffer endAmtSubIdQuery = new StringBuffer();
+				endAmtSubIdQuery.append(" SELECT sub_id, SUM(amt) as endAmt from sub_rpt_cont where kj_month RLIKE '"+queryVO.getYear()+"' and not isnull(amt) GROUP BY sub_id ");
+				List<Map<String, Object>> endAmtData = (List<Map<String, Object>>)this.queryForObjListBySql(endAmtSubIdQuery.toString());
+				if(CollectionUtil.isNotEmpty(endAmtData)) {
+					List<String> moreThanSubId = endAmtData.stream().filter(item->{
+						//先筛选同时存在计划金额和实际金额的项目,并排除实际金额为0的数据
+						return bigSubMap.containsKey(String.valueOf(item.get("sub_id"))) && !Objects.equals(0, item.get("endAmt"));
+					}).filter(item->{
+						//筛选完成率大于查询条件的项目
+						BigDecimal planAmt = new BigDecimal(String.valueOf(bigSubMap.get(String.valueOf(item.get("sub_id")))));
+						BigDecimal endAmtValue = new BigDecimal(String.valueOf(item.get("endAmt")));
+
+						//判断两个比例都存在
+						if (queryVO.getEndBl() != null && queryVO.getEndBlPlus() !=null){
+							Boolean filter = endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBl()) >= 0  && endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBlPlus()) <= 0;
+							return filter;
+						}else if (queryVO.getEndBl()!=null){
+							Boolean filter = endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBl()) >= 0 ;
+							return filter;
+						}else if (queryVO.getEndBlPlus() !=null){
+							Boolean filter = endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBlPlus()) <= 0 ;
+							return filter;
+						}else{
+							return false;
+						}
+					}).map(item->{return String.valueOf(item.get("sub_id"));}).collect(Collectors.toList());
+					if(CollectionUtil.isNotEmpty(moreThanSubId)) {
+						//满足条件的项目id加入查询
+						sql.append(" AND a.id IN (");
+						for(String inId : moreThanSubId) {
+							sql.append("'").append(inId).append("',");
+						}
+						sql.delete(sql.length()-1, sql.length());
+						sql.append(" ) ");
+					} else {
+						sql.append(" AND a.id = '不存在' ");
+					}
+				} else {
+					sql.append(" AND a.id = '不存在' ");
+				}
+			} else {
+				//不存在
+				sql.append(" AND a.id = '不存在' ");
+			}
+		}
+
+		sql.append(" GROUP BY a.id ");
+		if(page != null) {
+			if(StringUtil.isNotEmpty(page.getOrderBy()) && page.getOrderType() != null) {
+
+//				if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+//					sql.append("order by  g.amt desc ");
+//
+//				}else{
+					sql.append(" order by usersub desc ,").append(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, page.getOrderBy())).append(" ").append(page.getOrderType().name());
+//				}
+			} else {
+				if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+					sql.append("order by  g.amt desc ");
+
+				}else{
+					sql.append(" order by usersub desc ,a.begin_date,a.create_time desc");
+				}
+			}
+			//3为计划投资  去掉 计划投资为0的    4为实际投资,去掉实际投资为 0的  5为入统金额
+			if ("3".equals(queryVO.getAmtType())||"4".equals(queryVO.getAmtType())||"5".equals(queryVO.getAmtType())){
+
+				sql.append(" ) t ");
+
+//				if ("3".equals(queryVO.getAmtType())){
+//					sql.append(" where t.yearAmt > 0  ");
+//				}else if ("4".equals(queryVO.getAmtType())){
+//					sql.append(" where t.yearAmtSj > 0  ");
+//				}else{
+//					sql.append(" where t.yearAmtRt > 0  ");
+//				}
+			}
+			return this.queryForListBySql(sql.toString(), page);
+		} else {
+			page = new Page();
+
+			if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+				sql.append("order by  g.amt desc ");
+
+			}else{
+				sql.append(" order by usersub desc ,a.begin_date,a.create_time desc");
+			}
+
+
+		}
+
+
+
+		//3为计划投资  去掉 计划投资为0的    4为实际投资,去掉实际投资为 0的
+		if ("3".equals(queryVO.getAmtType())||"4".equals(queryVO.getAmtType())||"5".equals(queryVO.getAmtType())){
+
+			sql.append(" ) t ");
+
+//			if ("3".equals(queryVO.getAmtType())){
+//				sql.append(" where t.yearAmt > 0  ");
+//			}else if ("4".equals(queryVO.getAmtType())){
+//				sql.append(" where t.yearAmtSj > 0  ");
+//			}else{
+//				sql.append(" where t.yearAmtRt > 0  ");
+//			}
+		}
+
+
+		page.setList(this.queryForObjListBySql(sql.toString()));
+		return page;
+	}
+
+
+	public  Page pageDel(Page page,String subName){
+		StringBuffer sql = new StringBuffer();
+		sql.append(" select a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.subject_id,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
+		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp,a.status_tg statusTg ");
+
+		//20231205  增加项目 今年  年度计划投资,年度实际投资
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy");
+		Date date=new Date();
+		String  year= simpleDateFormat.format(date);
+
+		sql.append(" ,IFNULL((select sum(amt) from sub_amtplan sa where sa.sub_id = a.id and sa.y_month rlike '"+year+"' and not isnull(sa.amt) group by sa.sub_id) , 0) as yearPlanAmt, ");
+		sql.append(" IFNULL((select sum(amt) from sub_rpt_cont src where src.sub_id = a.id and src.kj_month rlike '"+year+"' and not isnull(src.amt) group by src.sub_id), 0) as yearEndAmt ");
+
+		sql.append(" from sub_info a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.main_id = c.id ");
+
+
+		sql.append(" where a.logic_delete_flag=0  ");
+
+		if (StringUtil.isNotEmpty(subName)){
+			sql.append(" and a.sub_name like '%"+subName+"%' ");
+
+		}
+		return this.queryForListBySql(sql.toString(), page);
+	}
+
+	/**
+	 * 资金计划统计分析
+	 * @param vo
+	 * @param subName
+	 * @param kind
+	 * @param propKind
+	 * @param indusKind
+	 * @param status
+	 * @param beginDateStart
+	 * @param beginDateEnd
+	 * @return
+	 */
+	public List<Map<String,Object>> queryProjectsAmt(LoginUserVO vo,String subName, String kind,
+													 String propKind, String indusKind, String subjectId, String status, String beginDate, String endDate, Boolean containHide, String zjly){
+		StringBuffer sql = new StringBuffer();
+
+		sql.append(" select if(us.id is NULL,0,1) as usersub,a.id,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal,a.amt_year as amtYear, a.reason, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as manageName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh ");
+		sql.append(" ,(select sp.end_date FROM sub_plan as sp where sp.sub_id =a.id and sp.logic_delete_flag = 0 and sp.status_sp = '1' ) as planDate ");
+
+		sql.append(" from sub_info a ");
+
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.manage_id = c.id ");
+		sql.append(" LEFT JOIN sub_verify e ON e.sub_id = a.id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id AND us.logic_delete_flag =0  AND us.user_id='"+vo.getId()+"' ");
+		sql.append(" where a.logic_delete_flag = 0 and a.status <> '0' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or e.depart_id = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		//是否包含隐藏
+/*		if(Boolean.FALSE.equals(containHide)) {
+			sql.append(" and (isnull(a.is_hide) or a.is_hide = '0') ");
+		}*/
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '%" + subName + "%' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			//遍历
+			String [] kinds=kind.split(",");
+			String sqlTemp="";
+			for (String temp:kinds){
+
+				sqlTemp=sqlTemp+ " INSTR (a.kind,'"+temp+"')>0  OR ";
+			}
+			//去掉最后的 OR
+			String sqlCheck=sqlTemp.substring(0,sqlTemp.length()-3);
+
+			sql.append(" AND ( "+sqlCheck+" )");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(subjectId)) {
+			sql.append(" and a.subject_id = '" + subjectId +"' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '" + zjly+"' ");
+		}
+		if(StringUtil.isNotEmpty(beginDate) && StringUtil.isNotEmpty(endDate)) {
+			sql.append(" and (");
+			sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" ) ");
+		}
+		//sql.append(" and (a.`status` in('2','7','9') or (a.`status`='1' and a.status_sp='9' )  or a.`status` = '0') ");
+		sql.append(" GROUP BY a.id ");
+		sql.append(" order by usersub desc, a.begin_date,a.create_time desc");
+		return (List<Map<String,Object>>)this.queryForObjListBySql(sql.toString());
+	}
+
+
+	public List<Map<String,Object>> queryProjectsIndusKind(LoginUserVO vo,String subName, String kind,
+														   String propKind, String indusKind, String status, String beginDateStart, String beginDateEnd, Boolean containHide, String zjly){
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT  COUNT(*) num,title  FROM ( ");
+		sql.append(" SELECT a.id, b.title,a.indus_kind ");
+		sql.append(" FROM sub_info a ");
+		sql.append(" LEFT JOIN sub_verify e ON e.sub_id = a.id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN t_systable b on a.indus_kind=b.id ");
+		sql.append(" where a.logic_delete_flag = 0 and a.status <> '0' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId() +"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+/*		if(Boolean.FALSE.equals(containHide)) {
+			sql.append(" and (isnull(a.is_hide) or a.is_hide = '0') ");
+		}*/
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '" + subName + "' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			sql.append(" and a.kind = '" + kind + "' ");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDateStart)) {
+			sql.append(" and a.end_date >= '" + beginDateStart + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDateEnd)) {
+			sql.append(" and a.end_date <= '" + beginDateEnd + "' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" GROUP BY a.id ) tem ");
+		sql.append(" GROUP BY indus_kind ");
+		return (List<Map<String,Object>>)this.queryForObjListBySql(sql.toString());
+	}
+
+
+	public List<Map<String,Object>> queryProjectsBuildAddreee(LoginUserVO vo, String indusKind, String year, String zjly){
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT sum(amt) amtTotal,title,subject_id subjectId ");
+		sql.append(" FROM ( ");
+		sql.append(" SELECT src.id, src.amt, b.title, a.subject_id ");
+		sql.append(" FROM sub_rpt_cont src LEFT JOIN sub_info a ON src.sub_id = a.id ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_verify e ON a.id = e.sub_id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN t_systable b on a.subject_id=b.code AND b.kind = 'JSDD' ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id ");
+		sql.append(" where src.logic_delete_flag = 0 AND a.logic_delete_flag = 0 AND src.kind = '1' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(year)) {
+			sql.append(" and src.kj_month LIKE '" + year + "%' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" ANd ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" GROUP BY src.id ) tem ");
+		sql.append(" WHERE not ISNULL(amt) ");
+		sql.append(" GROUP BY subject_id ");
+		return (List<Map<String,Object>>)this.queryForObjListBySql(sql.toString());
+	}
+
+
+	/**
+	 1.状态不等与0,7,8,9 状态不管
+	 2.政府 个人 查自己的项目
+	 3.单位查整个单位项目
+	 4.1-政府机构用户 2-申请单位用户
+	 */
+	public Page querysubInfo(Page page, LoginUserVO loginUser,String subName,String status) {
+
+		DetachedCriteria detachedCriteria=DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.eq("logicDeleteFlag", 0);
+		criterion = Restrictions.and(criterion,
+				Restrictions.or(Restrictions.eq("createUserId", loginUser.getId()), Restrictions.eq("unitId", loginUser.getUnitId())));
+
+		if(StringUtil.isNotEmpty(subName)) {
+			criterion = Restrictions.and(criterion, Restrictions.like("subName", subName, MatchMode.ANYWHERE));
+		}
+
+		if(StringUtil.isNotEmpty(status)) {
+			criterion = Restrictions.and(criterion, Restrictions.eq("status",status));
+		}
+		detachedCriteria.add(criterion);
+		detachedCriteria.addOrder( Order.desc("createTime"));
+		return this.pagedQuery(page,detachedCriteria);
+	}
+
+
+
+	public Page queryInfo(Page page, String subjectId,String subName,String status) {
+
+		DetachedCriteria detachedCriteria=DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.eq("logicDeleteFlag", 0);
+		if(StringUtil.isNotEmpty(subjectId)) {
+			criterion = Restrictions.and(criterion, Restrictions.eq("subjectId", subjectId));
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			criterion = Restrictions.and(criterion, Restrictions.like("subName", subName, MatchMode.ANYWHERE));
+		}
+		if(StringUtil.isNotEmpty(status)) {
+			criterion = Restrictions.and(criterion, Restrictions.eq("status",status));
+		}
+		detachedCriteria.add(criterion);
+		detachedCriteria.addOrder( Order.desc("createTime"));
+		return this.pagedQuery(page,detachedCriteria);
+	}
+
+
+
+	public Map<String, Object> amtStatics(LoginUserVO loginUser, String year, String indusKind, String subjectId, String zjly) {
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT ");
+		sql.append(" ifnull(sum(if(amt_total < 10000,1,0)),0) numAmt1, ");
+		sql.append(" ifnull(sum(if(amt_total >= 10000 AND amt_total < 50000, 1,0 )),0) numAmt2, ");
+		sql.append(" ifnull(sum(if(amt_total >= 50000 AND amt_total < 100000, 1,0)),0) numAmt3, ");
+		sql.append(" ifnull(sum(if(amt_total >= 100000, 1,0)),0) numAmt4 ");
+		sql.append(" FROM ");
+		sql.append(" ( select a.id, a.amt_total from sub_info a ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_verify e ON a.id = e.sub_id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" WHERE a.logic_delete_flag = 0 and a.status <> '"+ProjectStatusEnum.TEMPSAVE.getKey()+"' ");
+		if(Objects.equals(loginUser.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ loginUser.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(loginUser.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ loginUser.getId() +"' ");
+			}
+		} else if(Objects.equals(loginUser.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", loginUser.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ loginUser.getUnitId()+"' or a.main_id = '"+loginUser.getUnitId()+"' or d.manage_id = '"+loginUser.getUnitId()+"' or a.approve_departid = '"+loginUser.getDepartId()+"' or a.approve_departid2 = '"+loginUser.getDepartId()+"' or e.unit_id = '"+loginUser.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		String beginDate = year + "-01-01";
+		String endDate = year + "-12-31";
+		sql.append(" and (");
+		sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" ) ");
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" AND a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(subjectId)){
+			sql.append(" AND a.subject_id = '" + subjectId +"' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" GROUP BY a.id ");
+		sql.append(" ) as tem ");
+		List<Map<String, Object>> list = (List<Map<String, Object>>)this.queryForObjListBySql(sql.toString());
+		return CollectionUtil.isNotEmpty(list) ? list.get(0) : new HashMap<>();
+	}
+
+	/**
+	 * 查询在建项目,为统计app首页在建
+	 * @param userVO
+	 * @return
+	 */
+	public Map<String, BigDecimal> findBuilding(String year, String indusKind, String subjectId, LoginUserVO userVO, String zjly) {
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT IFNULL(SUM(1),0) total, SUM(if(`status` = '7', 1, 0)) as doing, SUM(if(`status` = '8',1,0)) as stop, SUM(if(`status` = 'A', 1,0)) as end ");
+		sql.append(" FROM ( ");
+		sql.append(" SELECT a.id, a.`status` ");
+		sql.append(" FROM sub_info a ");
+		sql.append(" LEFT JOIN sub_manage b ON a.id = b.sub_id AND b.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_verify c ON a.id = c.sub_id AND c.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" WHERE a.logic_delete_flag = 0");
+		String beginDate = year + "-01-01";
+		String endDate = year + "-12-31";
+		sql.append(" and (");
+		sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" ) ");
+		if(Objects.equals(userVO.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ userVO.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(userVO.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ userVO.getId() +"' ");
+			}
+		} else if(Objects.equals(userVO.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", userVO.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				sql.append(" AND ( a.unit_id = '"+ userVO.getUnitId()+"' or a.main_id = '"+userVO.getUnitId()+"' or b.manage_id = '"+userVO.getUnitId()+"' or a.approve_departid = '"+userVO.getDepartId()+"' or a.approve_departid2 = '"+userVO.getDepartId()+"' or c.unit_id = '"+userVO.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" AND a.indus_kind = '"+ indusKind+"' ");
+		}
+		if(StringUtil.isNotEmpty(subjectId)) {
+			sql.append(" AND a.subject_id = '" + subjectId+ "' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" AND a.prop_kind = '1' and (a.`status` = '7' or a.`status` = '8' or a.`status` = 'A') ");//新建项目
+		sql.append(" GROUP BY a.id ");
+		sql.append(" ) as tmp ");
+		List<?> list = queryForObjListBySql(sql.toString());
+		return CollectionUtil.isNotEmpty(list) ? (Map<String, BigDecimal>)list.get(0) : Collections.emptyMap();
+	}
+
+	public SubInfo getBySubName(String subName) {
+		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.and(Restrictions.eq("logicDeleteFlag", 0),
+				Restrictions.eq("subName", subName));
+		detachedCriteria.add(criterion);
+		List<SubInfo> list = find(detachedCriteria);
+		return CollectionUtil.isNotEmpty(list) ? list.get(0) : null;
+
+	}
+
+	public List<SubInfo> findFixList(SubInfoQueryTzVO queryTzVO){
+		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.and(
+				Restrictions.eq("logicDeleteFlag", 0),
+				Restrictions.eq("isHide", "1"),
+				Restrictions.eq("isFix", "1"),
+				Restrictions.eq("stateFix", queryTzVO.getStateFix())
+		);
+		detachedCriteria.add(criterion);
+
+		List<SubInfo> list = find(detachedCriteria);
+		return list;
+	}
+
+	public Map<String,Object> beginCount(SubInfoQueryTzVO queryTzVO){
+		return  subInfoMapper.beginCount(queryTzVO.getSubjectId(),queryTzVO.getStatus());
+	}
+}