Kaynağa Gözat

Merge branch 'master' of http://8.137.121.180:10880/longping/subject_gxj

Wayne 4 ay önce
ebeveyn
işleme
1e284debed
20 değiştirilmiş dosya ile 608 ekleme ve 729 silme
  1. 30 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/NullValueEnum.java
  2. 26 19
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml
  3. 7 7
      projects-service/src/main/java/com/rtrh/projects/modules/projects/po/SubInfoGxj.java
  4. 47 16
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java
  5. 13 4
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java
  6. 28 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/StatisticsVO.java
  7. 24 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoBaseDetailVo.java
  8. 5 20
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoCbVO.java
  9. 11 12
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoTcVO.java
  10. 6 20
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoXjVO.java
  11. 8 22
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoZjVO.java
  12. 4 2
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoZkVO.java
  13. 72 139
      projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoExportController.java
  14. 241 432
      projects/src/main/webapp/vmodules/subject/subInfo/editSubInfo.jsp
  15. 2 1
      projects/src/main/webapp/vmodules/subject/subInfo/tz/cb.jsp
  16. 6 6
      projects/src/main/webapp/vmodules/subject/subInfo/tz/cb_sum.jsp
  17. 36 5
      projects/src/main/webapp/vmodules/subject/subInfo/tz/end.jsp
  18. 20 4
      projects/src/main/webapp/vmodules/subject/subInfo/tz/main.jsp
  19. 16 9
      projects/src/main/webapp/vmodules/subject/subInfo/tz/new.jsp
  20. 6 10
      projects/src/main/webapp/vmodules/subject/subInfo/tz/xmzk.jsp

+ 30 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/NullValueEnum.java

@@ -0,0 +1,30 @@
+package com.rtrh.projects.modules.projects.enums;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 空值枚举
+ */
+@Getter
+@AllArgsConstructor
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
+public enum NullValueEnum {
+
+    UNKNOWN_INDUS_KIND("UNKNOWN_INDUS_KIND", "未知行业"),
+    UNKNOWN_CATEGORY("UNKNOWN_CATEGORY", "未知分类");
+
+    private final String code;
+    private final String desc;
+
+    public static NullValueEnum getEnum(String code) {
+        return Arrays.stream(values()).filter(x -> x.code.equals(code)).findFirst().orElse(null);
+    }
+    public static String getMessage(String code) {
+        NullValueEnum anEnum = getEnum(code);
+        return anEnum != null ? getEnum(code).desc : null;
+    }
+}

+ 26 - 19
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml

@@ -153,7 +153,7 @@
         s.name_lead AS nameLead,
         s.tel_lead AS telLead,
         s.status AS status,
-        s.is_rg AS isRg,
+        s.is_rg AS boolRg,
         s.rg_date AS rgDate,
         s.create_user_id AS createUserId,
         s.create_user_name AS createUserName,
@@ -165,12 +165,12 @@
         s.status_lamp AS statusLamp,
         s.kind_nature AS kindNature
         <if test="vo.status!=null and vo.status==3 and vo.month!=null and vo.month!=''">
-            ,src.yearAmtSj
+            ,src.yearPlanAmt
         </if>
         from sub_info s
         <if test="vo.status!=null and vo.status==3 and vo.month!=null and vo.month!=''">
             LEFT JOIN
-            (SELECT sub_id,sum(amt) AS yearAmtSj FROM sub_rpt_cont WHERE logic_delete_flag = 0 AND kj_month >= #{vo.month} GROUP BY sub_id) src
+            (SELECT SUM(amt) yearPlanAmt,sub_id FROM sub_amtplan WHERE y_month RLIKE #{vo.month} AND NOT ISNULL(amt) GROUP BY sub_id) src
             ON s.id=src.sub_id
         </if>
         <where>
@@ -188,14 +188,14 @@
                 and s.subject_id = #{vo.subjectId}
             </if>
             <if test="vo.indusKind!=null and vo.indusKind!=''">
-                and s.indus_kind like CONCAT(#{vo.indusKind}, '%')
-            </if>
-            <if test="vo.iks!=null">
-                and s.indus_kind IN
-                <foreach collection="vo.iks" open="(" close=")" separator="," item="item">
-                    (#{item})
-                </foreach>
+                <if test='vo.indusKind != "@com.rtrh.projects.modules.projects.enums.NullValueEnum@UNKNOWN_INDUS_KIND.code"'>
+                    and s.indus_kind like CONCAT(#{vo.indusKind}, '%')
+                </if>
+                <if test='vo.indusKind.toString() == "@com.rtrh.projects.modules.projects.enums.NullValueEnum@UNKNOWN_INDUS_KIND.code"'>
+                    AND ISNULL(s.indus_kind)
+                </if>
             </if>
+
             <if test="vo.startAmt!=null and vo.startAmt!=''">
                 and s.amt_total >= #{vo.startAmt}
             </if>
@@ -206,16 +206,23 @@
                 and s.unit_desc = #{vo.sbdw}
             </if>
             <if test="vo.abc!=null and vo.abc!=''">
-                and s.abc = #{vo.abc}
+                <choose>
+                    <when test='vo.abc.toString() =="UNKNOWN_CATEGORY"'>
+                        and s.abc is null
+                    </when>
+                    <otherwise>
+                        and s.abc = #{vo.abc}
+                    </otherwise>
+                </choose>
             </if>
             <if test="vo.status!=null and vo.status!=''">
                 and s.status = #{vo.status}
                 <if test="vo.status==3">
                     <if test="vo.yearMixAmt!=null and vo.yearMixAmt!=''">
-                        and src.yearAmtSj >=#{vo.yearMixAmt}
+                        and src.yearPlanAmt >=#{vo.yearMixAmt}
                     </if>
-                    <if test="vo.yearMixAmt!=null and vo.yearMixAmt!=''">
-                        and src.yearAmtSj &lt;=#{vo.yearMaxAmt}
+                    <if test="vo.yearMaxAmt!=null and vo.yearMaxAmt!=''">
+                        and src.yearPlanAmt &lt;=#{vo.yearMaxAmt}
                     </if>
                     <if test="vo.beginDate!=null and vo.beginDate!=''">
                         and s.end_date >= #{vo.beginDate}
@@ -224,7 +231,7 @@
                         and s.end_date &lt;= #{vo.endDate}
                     </if>
                 </if>
-                <if test="vo.status=='2'">
+                <if test='vo.status==2'>
                     <if test="vo.beginDate!=null and vo.beginDate!=''">
                         and s.begin_date >= #{vo.beginDate}
                     </if>
@@ -232,12 +239,12 @@
                         and s.begin_date &lt;= #{vo.endDate}
                     </if>
                 </if>
-                <if test="vo.status=='9'">
+                <if test='vo.status==9'>
                     <if test="vo.beginDate!=null and vo.beginDate!=''">
-                        and s.rg_date >= #{vo.beginDate}
+                        and s.rt_date >= #{vo.beginDate}
                     </if>
                     <if test="vo.endDate!=null and vo.endDate!=''">
-                        and s.rg_date &lt;= #{vo.endDate}
+                        and s.rt_date &lt;= #{vo.endDate}
                     </if>
                 </if>
             </if>
@@ -245,7 +252,7 @@
     </select>
     <select id="queryStatistics" resultType="com.rtrh.projects.modules.projects.po.SubInfoGxj">
         select
-            status,abc,subject_id subjectId,indus_kind indusKind
+            status,abc,subject_id subjectId,indus_kind indusKind,is_rg AS boolRg
         from sub_info
         <where>
             logic_delete_flag = 0

+ 7 - 7
projects-service/src/main/java/com/rtrh/projects/modules/projects/po/SubInfoGxj.java

@@ -2,11 +2,10 @@ package com.rtrh.projects.modules.projects.po;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.rtrh.projects.modules.system.po.TableBaseColomn;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
+import lombok.*;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -17,8 +16,8 @@ import java.util.Date;
  * @author jiangpengli
  * @since 2024-12-17
  */
-@Getter
-@Setter
+@Data
+@EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 public class SubInfoGxj extends TableBaseColomn implements Serializable {
 
@@ -47,7 +46,7 @@ public class SubInfoGxj extends TableBaseColomn implements Serializable {
     private String indusName;
 
     // 总金额
-    private Float amtTotal;
+    private BigDecimal amtTotal;
 
     // abc类型
     private String abc;
@@ -122,7 +121,7 @@ public class SubInfoGxj extends TableBaseColomn implements Serializable {
     private String statusName;
 
     // 1-入规 0未入规
-    private Boolean isRg;
+    private Boolean boolRg;
 
     // 实际入轨日期
     @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
@@ -159,6 +158,7 @@ public class SubInfoGxj extends TableBaseColomn implements Serializable {
     private Long preProceNum;
     private Long preEndNum;
     private String yearAmtSj;
+    private String yearPlanAmt;
 
     private String preContent;
 }

+ 47 - 16
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java

@@ -16,8 +16,7 @@ import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import com.rtrh.projects.modules.projects.dao.*;
 import com.rtrh.projects.modules.projects.dto.SubFixCbSearch;
-import com.rtrh.projects.modules.projects.enums.RptContKindEnum;
-import com.rtrh.projects.modules.projects.enums.SubInfoStatusEnum;
+import com.rtrh.projects.modules.projects.enums.*;
 import com.rtrh.projects.modules.projects.po.*;
 import com.rtrh.projects.modules.projects.service.SubPreNewService;
 import com.rtrh.projects.modules.projects.vo.*;
@@ -26,6 +25,7 @@ import com.rtrh.projects.modules.system.dao.JUnitDao;
 import com.rtrh.projects.modules.system.enums.SysTableKind;
 import com.rtrh.projects.modules.system.po.JUnit;
 import com.rtrh.projects.modules.system.po.TSystable;
+import com.rtrh.projects.modules.system.service.ISubInduService;
 import com.rtrh.projects.modules.system.service.TSysTableService;
 import com.rtrh.projects.modules.utils.DateUtils;
 import com.rtrh.projects.vo.projects.SubFixGetBeginRateVo;
@@ -40,8 +40,6 @@ import com.google.common.base.CaseFormat;
 import com.rtrh.common.util.StringUtil;
 import com.rtrh.core.repository.Page;
 import com.rtrh.projects.modules.hik.service.IHikApiService;
-import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
-import com.rtrh.projects.modules.projects.enums.SubIsHideStatusEnum;
 import com.rtrh.projects.modules.projects.mapper.StaticsMapper;
 import com.rtrh.projects.modules.projects.mapper.SubInfoMapper;
 import com.rtrh.projects.modules.projects.service.SubInfoQueryService;
@@ -88,6 +86,9 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
     @Autowired
     private SubPreNewService subPreNewService;
 
+    @Autowired
+    private ISubInduService subInduService;
+
     @Override
     public Map<String, Integer> getWarningBySubId(String subId) {
 
@@ -165,7 +166,7 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
 
     @Override
     public List<SubInfoGxj> queryAll(LoginUserVO loginUser, SubInfoQueryTzVO queryVO) {
-        queryVO.setMonth(DateUtil.thisYear() + "01");
+        queryVO.setMonth(DateUtil.thisYear() +"");
         List<SubInfoGxj> data = subInfoMapper.queryPage(queryVO);
         if (CollectionUtil.isEmpty(data)) {
             return new ArrayList<>();
@@ -247,10 +248,9 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
         if (StringUtils.isNotBlank(queryVO.getEndAmt())) {
             queryVO.setEndAmt(new BigDecimal(queryVO.getEndAmt()).multiply(new BigDecimal("10000")).toString());
         }
-        Optional.ofNullable(queryVO.getIndusKinds()).ifPresent(s -> {
-            String[] split = s.split(",");
-            queryVO.setIks(Arrays.asList(split));
-        });
+        if (StringUtils.isNotBlank(queryVO.getIndusKinds())){
+            queryVO.setIndusKind(queryVO.getIndusKinds());
+        }
 
 
         PageHelper.startPage(page.getPageNo(), page.getPageSize());
@@ -279,7 +279,7 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
             num = list.stream().filter(e -> queryVO.getStatus().equals(e.getStatus())).count();
         }
         // abc类统计
-        Map<String, Long> abc = list.stream().collect(Collectors.groupingBy(e -> StringUtils.defaultIfBlank(e.getAbc(), "."), Collectors.counting()));
+        Map<String, Long> abc = list.stream().collect(Collectors.groupingBy(e -> StringUtils.defaultIfBlank(e.getAbc(), NullValueEnum.UNKNOWN_CATEGORY.getCode()), Collectors.counting()));
         // 建设地点统计
         List<TSystable> jsddDict = tSysTableService.getByKind(SysTableKind.JSDD);
         Map<String, String> jsddNameMap = jsddDict.stream().collect(Collectors.toMap(TSystable::getCode, TSystable::getTitle));
@@ -292,25 +292,56 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
                     .setNum(v));
         });
         // 行业统计
-        List<TSystable> hyflDict = tSysTableService.getByKind(SysTableKind.HYFL);
-        Map<String, String> hyflNameMap = hyflDict.stream().collect(Collectors.toMap(TSystable::getCode, TSystable::getTitle));
+        List<SubIndu> hyflDict = subInduService.queryParentAll();
+        Map<String, String> hyflNameMap = hyflDict.stream().collect(Collectors.toMap(SubIndu::getCode, SubIndu::getTitle));
+        hyflNameMap.put(NullValueEnum.UNKNOWN_INDUS_KIND.getCode(), NullValueEnum.UNKNOWN_INDUS_KIND.getDesc());
         Map<String, Long> indusKind = list.stream()
-                .collect(Collectors.groupingBy(e -> StringUtils.defaultIfBlank(e.getIndusKind(), "."), Collectors.counting()));
+                .collect(Collectors.groupingBy(e -> {
+                            if (StringUtils.isNotBlank(e.getIndusKind()) && e.getIndusKind().length() >= 2) {
+                                return e.getIndusKind().substring(0, 2);
+                            }
+                            return NullValueEnum.UNKNOWN_INDUS_KIND.getCode();
+                        },
+                        Collectors.counting()));
         List<StatisticsVO.KvNum> hyflList = new ArrayList<>();
         indusKind.forEach((k, v) -> {
             hyflList.add(new StatisticsVO.KvNum()
                     .setCode(k)
-                    .setName(hyflNameMap.getOrDefault(k, ""))
+                    .setName(hyflNameMap.getOrDefault(k, k))
                     .setNum(v));
         });
-        return new StatisticsVO()
+        StatisticsVO vo = new StatisticsVO()
                 .setNum(num)
                 .setANum(abc.getOrDefault("A", 0L))
                 .setBNum(abc.getOrDefault("B", 0L))
                 .setCNum(abc.getOrDefault("C", 0L) + abc.getOrDefault("c", 0L))
-                .setNNum(abc.getOrDefault(".", 0L))
+                .setNNum(abc.getOrDefault(NullValueEnum.UNKNOWN_CATEGORY.getCode(), 0L))
                 .setJsddData(jsddList)
                 .setHyflData(hyflList);
+
+        // 查询所有状态统计 开工数、开复工率、投产率 等
+        queryVO.setStatus(null);
+        List<SubInfoGxj> listTotal = subInfoMapper.queryStatistics(queryVO);
+        Map<String, Long> collect1 = listTotal.stream().collect(Collectors.groupingBy(SubInfoGxj::getStatus, Collectors.counting()));
+        Long zjNum1 = collect1.getOrDefault(SubInfoStatusEnum.ZJ.getCode(), 0L);
+        Long tcNum1 = collect1.getOrDefault(SubInfoStatusEnum.TC.getCode(), 0L);
+        Long xjNum1 = collect1.getOrDefault(SubInfoStatusEnum.XJ.getCode(), 0L);
+        // 开工数、开复工率、投产率
+        Long kgNum = zjNum1 + tcNum1;
+        vo.setYkgNum(kgNum);
+        BigDecimal total = BigDecimal.valueOf(zjNum1 + tcNum1 + xjNum1);
+        BigDecimal kfgRate = BigDecimal.ZERO;
+        if (total.compareTo(BigDecimal.ZERO) != 0) {
+            kfgRate = BigDecimal.valueOf(zjNum1 + tcNum1).divide(total, 2, RoundingMode.HALF_UP);
+        }
+        vo.setKfgRate(kfgRate);
+        vo.setTcRate(BigDecimal.valueOf(tcNum1).divide(BigDecimal.valueOf(zjNum1 + tcNum1 + xjNum1), 2, RoundingMode.HALF_UP));
+        // 已入规、未入规、入规率
+        long rgNum = listTotal.stream().filter(SubInfoGxj::getBoolRg).count();
+        vo.setYrgNum(rgNum);
+        vo.setWrgNum(listTotal.size() - rgNum);
+        vo.setRgRate(listTotal.size() == 0 ? new BigDecimal("0") : BigDecimal.valueOf(rgNum).divide(BigDecimal.valueOf(xjNum1 + zjNum1 + tcNum1), 2, RoundingMode.HALF_UP));
+        return vo;
     }
 
     @Override

+ 13 - 4
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.stream.Collectors;
 
 import com.rtrh.core.vo.Message;
 import com.rtrh.projects.modules.projects.dao.*;
+import com.rtrh.projects.modules.projects.enums.*;
 import com.rtrh.projects.modules.projects.mapper.SubInfoMapper;
 import com.rtrh.projects.modules.projects.po.*;
 import com.rtrh.projects.modules.projects.service.*;
@@ -56,6 +57,7 @@ import com.rtrh.projects.modules.projects.enums.StatusEnum;
 import com.rtrh.projects.modules.projects.enums.SubIsHideStatusEnum;
 import com.rtrh.projects.modules.projects.enums.SubPlanStatusEnum;
 import com.rtrh.projects.modules.projects.enums.SubqestionStatus;
+import com.rtrh.projects.modules.projects.vo.export.SubInfoExportVO;
 import com.rtrh.projects.modules.system.SysConstant;
 import com.rtrh.projects.modules.system.dao.JDepartDao;
 import com.rtrh.projects.modules.system.dao.JUnitDao;
@@ -4750,7 +4752,7 @@ public class SubInfoServiceImpl implements SubInfoService {
     @Override
     public boolean rg(MoveDbParamVo vo){
         return subInfoDao.updateBySql(
-                "update sub_info set rg_date = ? where id = ?",
+                "update sub_info set rg_date = ?,is_rg=1 where id = ?",
                 vo.getRgDate(),
                 vo.getId()
         ) > 0;
@@ -5043,10 +5045,17 @@ public class SubInfoServiceImpl implements SubInfoService {
     public boolean moveDb(MoveDbParamVo vo) {
         SubInfo subinfo = subInfoDao.findById(vo.getId());
         if (StringUtils.isNotBlank(subinfo.getStatus())){
-            // todo 移库时间
             if (Integer.parseInt(vo.getStatus()) > Integer.parseInt(subinfo.getStatus())){
-                int i = subInfoDao.updateBySql("update sub_info set status='" + vo.getStatus() + "' where id='" + vo.getId() + "'");
-                return i > 0;
+                Map<String,String> map = new HashMap<String,String>(){{
+                    put(SubInfoStatusEnum.XJ.getCode(),"xj_date");
+                    put(SubInfoStatusEnum.ZJ.getCode(),"zj_date");
+                    put(SubInfoStatusEnum.TC.getCode(),"tc_date");
+                }};
+                if (SubInfoStatusEnum.CB.getCode().equals(subinfo.getStatus())){
+                    String sql = String.format("update sub_info set status='%s',%s=now() where id='%s'", vo.getStatus(), map.get(vo.getStatus()), vo.getId());
+                    int i = subInfoDao.updateBySql(sql);
+                    return i > 0;
+                }
             }else {
                 return false;
             }

+ 28 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/StatisticsVO.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Setter
@@ -32,8 +33,34 @@ public class StatisticsVO {
      * C类数量
      */
     private Long cNum;
+    /**
+     * abc 类为空
+     */
     private Long nNum;
-
+    /**
+     * 已开工
+     */
+    private Long ykgNum;
+    /**
+     * 开复工率
+     */
+    private BigDecimal kfgRate;
+    /**
+     * 已入规
+     */
+    private Long yrgNum;
+    /**
+     * 未入规
+     */
+    private Long wrgNum;
+    /**
+     * 入规率
+     */
+    private BigDecimal rgRate;
+    /**
+     * 投产率
+     */
+    private BigDecimal tcRate;
     /**
      * 行业分类数据
      */

+ 24 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoBaseDetailVo.java

@@ -0,0 +1,24 @@
+package com.rtrh.projects.modules.projects.vo.export;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SubInfoBaseDetailVo {
+    @Excel(name = "序号", orderNum = "0")
+    private String index;
+
+    @Excel(name = "项目名称", orderNum = "1", width = 20.0)
+    private String subName;
+
+    @Excel(name = "项目所在地", orderNum = "2", width = 15.0)
+    private String subjectName;
+
+    @Excel(name = "项目建设内容", orderNum = "3", width = 70.0)
+    private String content;
+
+    @Excel(name = "计划总投资(亿元)", orderNum = "4", width = 20.0)
+    private BigDecimal amtTotal;
+}

+ 5 - 20
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoCbVO.java

@@ -2,29 +2,14 @@ package com.rtrh.projects.modules.projects.vo.export;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import lombok.Data;
-
-import java.math.BigDecimal;
+import lombok.EqualsAndHashCode;
 
 @Data
-public class SubInfoCbVO {
-    @Excel(name = "序号")
-    private String index;
-
-    @Excel(name = "项目名称",width = 20.0)
-    private String subName;
-
-    @Excel(name = "项目所在地",width = 15.0)
-    private String subjectName;
-
-    @Excel(name = "项目建设内容",width = 70.0)
-    private String content;
-
-    @Excel(name = "计划总投资(亿元)",width = 20.0)
-    private BigDecimal amtTotal;
-
-    @Excel(name = "进展情况")
+@EqualsAndHashCode(callSuper = true)
+public class SubInfoCbVO extends SubInfoBaseDetailVo {
+    @Excel(name = "进展情况", orderNum = "5", width = 30.0)
     private String progress;
 
-    @Excel(name = "备注")
+    @Excel(name = "备注",orderNum = "6", width = 30.0)
     private String remark;
 }

+ 11 - 12
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoTcVO.java

@@ -1,7 +1,6 @@
 package com.rtrh.projects.modules.projects.vo.export;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -9,27 +8,27 @@ import java.util.Date;
 
 @Data
 public class SubInfoTcVO {
-    @Excel(name = "序号")
+    @Excel(name = "序号", orderNum = "0")
     private String index;
 
-    @Excel(name = "项目名称",width = 20.0)
+    @Excel(name = "项目名称", orderNum = "1", width = 20.0)
     private String subName;
 
-    @Excel(name = "项目所在地",width = 15.0)
+    @Excel(name = "项目所在地", orderNum = "2", width = 15.0)
     private String subjectName;
 
-    @Excel(name = "项目建设内容",width = 70.0)
+    @Excel(name = "项目基本情况", orderNum = "3", width = 70.0)
     private String content;
 
-    @Excel(name = "计划总投资(亿元)",width = 20.0)
-    private Float amtTotal;
+    @Excel(name = "计划总投资(亿元)", orderNum = "4", width = 20.0)
+    private BigDecimal amtTotal;
 
-    @Excel(name = "预计开工时间",format = "yyyy-MM-dd",width = 15.0)
-    private Date beginDate;
+    @Excel(name = "升规入统时间",format = "yyyy年MM月",orderNum = "5",width = 15.0)
+    private Date rtDate;
 
-    @Excel(name = "前期手续办理情况")
-    private String preContent;
+    @Excel(name = "进展情况", orderNum = "6", width = 30.0)
+    private String progress;
 
-    @Excel(name = "备注")
+    @Excel(name = "备注", orderNum = "7", width = 30.0)
     private String remark;
 }

+ 6 - 20
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoXjVO.java

@@ -1,35 +1,21 @@
 package com.rtrh.projects.modules.projects.vo.export;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
-public class SubInfoXjVO {
-    @Excel(name = "序号")
-    private String index;
+@EqualsAndHashCode(callSuper = true)
+public class SubInfoXjVO extends SubInfoBaseDetailVo{
 
-    @Excel(name = "项目名称",width = 20.0)
-    private String subName;
-
-    @Excel(name = "项目所在地",width = 15.0)
-    private String subjectName;
-
-    @Excel(name = "项目建设内容",width = 50.0)
-    private String content;
-
-    @Excel(name = "计划总投资(亿元)",width = 70.0)
-    private Float amtTotal;
-
-    @Excel(name = "预计开工时间",format = "yyyy-MM-dd",width = 15.0)
+    @Excel(name = "预计开工时间", format = "yyyy年MM月", width = 15.0, orderNum = "5")
     private Date beginDate;
 
-    @Excel(name = "前期手续办理情况")
+    @Excel(name = "前期手续办理情况", orderNum = "6", width = 50.0)
     private String preContent;
 
-    @Excel(name = "备注")
+    @Excel(name = "备注", orderNum = "7",width = 30.0)
     private String remark;
 }

+ 8 - 22
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoZjVO.java

@@ -1,38 +1,24 @@
 package com.rtrh.projects.modules.projects.vo.export;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
-public class SubInfoZjVO {
-    @Excel(name = "序号")
-    private String index;
+@EqualsAndHashCode(callSuper = true)
+public class SubInfoZjVO extends SubInfoBaseDetailVo {
 
-    @Excel(name = "项目名称",width = 20.0)
-    private String subName;
-
-    @Excel(name = "项目所在地",width = 15.0)
-    private String subjectName;
-
-    @Excel(name = "项目建设内容",width = 70.0)
-    private String content;
-
-    @Excel(name = "计划总投资(亿元)",width = 20.0)
-    private Float amtTotal;
-
-    @Excel(name = "建成投产时间",format = "yyyy-MM-dd",width = 15.0)
+    @Excel(name = "建成投产时间", format = "yyyy年MM月", width = 15.0, orderNum = "5")
     private Date endDate;
 
-    @Excel(name = "年度投资")
-    private String yearAmtSj;
+    @Excel(name = "年度投资", orderNum = "6")
+    private String yearPlanAmt;
 
-    @Excel(name = "进展情况")
+    @Excel(name = "进展情况", width = 30.0, orderNum = "7")
     private String progress;
 
-    @Excel(name = "备注")
+    @Excel(name = "备注", width = 30.0, orderNum = "8")
     private String remark;
 }

+ 4 - 2
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoZkVO.java

@@ -3,12 +3,14 @@ package com.rtrh.projects.modules.projects.vo.export;
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
-public class SubInfoZkVO {
+@EqualsAndHashCode(callSuper = true)
+public class SubInfoZkVO extends SubInfoBaseDetailVo {
     @Excel(name = "序号")
     private String index;
 
@@ -22,7 +24,7 @@ public class SubInfoZkVO {
     private String content;
 
     @Excel(name = "计划总投资(亿元)",width = 20.0)
-    private Float amtTotal;
+    private BigDecimal amtTotal;
 
     @Excel(name = "状态",width = 10.0)
     private String statusName;

+ 72 - 139
projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoExportController.java

@@ -46,6 +46,7 @@ import com.rtrh.projects.outapi.result.JsonResult;
 import com.rtrh.projects.web.util.SheetData;
 import com.rtrh.projects.web.util.SheetHead;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.streaming.SXSSFSheet;
@@ -876,110 +877,14 @@ public class SubInfoExportController extends BaseController {
                 .collect(Collectors.groupingBy(e -> StringUtils.defaultIfBlank(e.getIndusKind(), "未知行业")));
         Workbook workbook;
         if (SubInfoStatusEnum.CB.getCode().equals(queryVO.getStatus())) {
-            List<SubInfoCbVO> exportList = new ArrayList<>();
-            // 合计行
-            SubInfoCbVO hjCount = new SubInfoCbVO();
-            hjCount.setIndex(String.format("合计(%s个)",list.size()));
-            exportList.add(hjCount);
-
-            int index = 1;
-            List<Integer> allSize = new ArrayList<>();
-            for (Map.Entry<String, List<SubInfoGxj>> entry : groupMap.entrySet()){
-                String key = entry.getKey();
-                List<SubInfoGxj> value = entry.getValue();
-                List<SubInfoCbVO> hyList = new ArrayList<>();
-                // 行业合计行
-                SubInfoCbVO hyCount = new SubInfoCbVO();
-                hyCount.setIndex(String.format("%s、%s( %s个 )",toChineseNumber(index), hyDictMap.getOrDefault(key, key), value.size()));
-                // 每条数据行
-                hyList.add(hyCount);
-                for (int i = 0; i < value.size(); i++) {
-                    SubInfoGxj subInfoGxj = value.get(i);
-                    SubInfoCbVO vo = new SubInfoCbVO();
-                    BeanUtils.copyProperties(subInfoGxj,vo);
-                    vo.setIndex(i + 1 + "");
-                    hyList.add(vo);
-                }
-                // 添加前计算合并行
-                allSize.add(exportList.size() + 2);
-                exportList.addAll(hyList);
-                index++;
-            }
-            ExportParams exportParams = getExportParams();
-            exportParams.setTitle("“四个一批”工业项目表(储备项目库)");
-            exportParams.setSheetName("储备项目库");
-            workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoCbVO.class, exportList);
-            extracted(response, list, workbook, allSize);
+            ExportParams exportParams = new ExportParams("“四个一批”工业项目表(储备项目库)", "储备项目库", ExcelType.XSSF);
+            exportDetail(response, exportParams, SubInfoCbVO.class, list, hyDictMap, groupMap);
         }else if (SubInfoStatusEnum.XJ.getCode().equals(queryVO.getStatus())){
-            List<SubInfoXjVO> exportList = new ArrayList<>();
-            // 合计行
-            SubInfoXjVO hjCount = new SubInfoXjVO();
-            hjCount.setIndex(String.format("合计(%s个)",list.size()));
-            exportList.add(hjCount);
-
-            int index = 1;
-            List<Integer> allSize = new ArrayList<>();
-            for (Map.Entry<String, List<SubInfoGxj>> entry : groupMap.entrySet()){
-                String key = entry.getKey();
-                List<SubInfoGxj> value = entry.getValue();
-                List<SubInfoXjVO> hyList = new ArrayList<>();
-                // 行业合计行
-                SubInfoXjVO hyCount = new SubInfoXjVO();
-                hyCount.setIndex(String.format("%s、%s( %s个 )",toChineseNumber(index), hyDictMap.getOrDefault(key, key), value.size()));
-                // 每条数据行
-                hyList.add(hyCount);
-                for (int i = 0; i < value.size(); i++) {
-                    SubInfoGxj subInfoGxj = value.get(i);
-                    SubInfoXjVO vo = new SubInfoXjVO();
-                    BeanUtils.copyProperties(subInfoGxj,vo);
-                    vo.setIndex(i + 1 + "");
-                    hyList.add(vo);
-                }
-                // 添加前计算合并行
-                allSize.add(exportList.size() + 2);
-                exportList.addAll(hyList);
-                index++;
-            }
-            ExportParams exportParams = getExportParams();
-            exportParams.setTitle("“四个一批”工业项目表(新建项目库)");
-            exportParams.setSheetName("新建项目库");
-            workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoXjVO.class, exportList);
-            extracted(response, list, workbook, allSize);
+            ExportParams exportParams = new ExportParams("“四个一批”工业项目表(新建项目库)","新建项目库",ExcelType.XSSF);
+            exportDetail(response, exportParams, SubInfoXjVO.class, list, hyDictMap, groupMap);
         }else if (SubInfoStatusEnum.ZJ.getCode().equals(queryVO.getStatus())){
-            List<SubInfoZjVO> exportList = new ArrayList<>();
-            // 合计行
-            SubInfoZjVO hjCount = new SubInfoZjVO();
-            hjCount.setIndex(String.format("合计(%s个)",list.size()));
-            exportList.add(hjCount);
-
-            int index = 1;
-            List<Integer> allSize = new ArrayList<>();
-            for (Map.Entry<String, List<SubInfoGxj>> entry : groupMap.entrySet()){
-                String key = entry.getKey();
-                List<SubInfoGxj> value = entry.getValue();
-                List<SubInfoZjVO> hyList = new ArrayList<>();
-                // 行业合计行
-                SubInfoZjVO hyCount = new SubInfoZjVO();
-                hyCount.setIndex(String.format("%s、%s( %s个 )",toChineseNumber(index), hyDictMap.getOrDefault(key, key), value.size()));
-                // 每条数据行
-                hyList.add(hyCount);
-                for (int i = 0; i < value.size(); i++) {
-                    SubInfoGxj subInfoGxj = value.get(i);
-                    SubInfoZjVO vo = new SubInfoZjVO();
-                    BeanUtils.copyProperties(subInfoGxj,vo);
-                    vo.setIndex(i + 1 + "");
-                    hyList.add(vo);
-                }
-                // 添加前计算合并行
-                allSize.add(exportList.size() + 2);
-                exportList.addAll(hyList);
-                index++;
-            }
-            ExportParams exportParams = getExportParams();
-            exportParams.setTitle("“四个一批”工业项目表(在建项目库)");
-            exportParams.setSheetName("在建项目库");
-            workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoZjVO.class, exportList);
-            extracted(response, list, workbook, allSize);
+            ExportParams exportParams = new ExportParams("“四个一批”工业项目表(在建项目库)","在建项目库",ExcelType.XSSF);
+            exportDetail(response, exportParams, SubInfoZjVO.class, list, hyDictMap, groupMap);
         }else if(SubInfoStatusEnum.TC.getCode().equals(queryVO.getStatus())) {
             List<SubInfoTcVO> exportList = new ArrayList<>();
             // 合计行
@@ -1002,6 +907,8 @@ public class SubInfoExportController extends BaseController {
                     SubInfoGxj subInfoGxj = value.get(i);
                     SubInfoTcVO vo = new SubInfoTcVO();
                     BeanUtils.copyProperties(subInfoGxj,vo);
+                    BigDecimal divide = subInfoGxj.getAmtTotal() != null ? subInfoGxj.getAmtTotal().divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP) : BigDecimal.ZERO;
+                    vo.setAmtTotal(divide);
                     vo.setIndex(i + 1 + "");
                     hyList.add(vo);
                 }
@@ -1010,9 +917,8 @@ public class SubInfoExportController extends BaseController {
                 exportList.addAll(hyList);
                 index++;
             }
-            ExportParams exportParams = getExportParams();
-            exportParams.setTitle("“四个一批”工业项目表(投产项目库)");
-            exportParams.setSheetName("投产项目库");
+            list.clear();
+            ExportParams exportParams = new ExportParams("“四个一批”工业项目表(投产项目库)","投产项目库",ExcelType.XSSF);
             workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoTcVO.class, exportList);
             extracted(response, list, workbook, allSize);
         }else {
@@ -1037,6 +943,7 @@ public class SubInfoExportController extends BaseController {
                     SubInfoGxj subInfoGxj = value.get(i);
                     SubInfoZkVO vo = new SubInfoZkVO();
                     BeanUtils.copyProperties(subInfoGxj,vo);
+                    vo.setAmtTotal(convertAmount(subInfoGxj.getAmtTotal()));
                     vo.setIndex(i + 1 + "");
                     hyList.add(vo);
                 }
@@ -1045,9 +952,8 @@ public class SubInfoExportController extends BaseController {
                 exportList.addAll(hyList);
                 index++;
             }
-            ExportParams exportParams = getExportParams();
-            exportParams.setTitle("“四个一批”工业项目表(项目总库)");
-            exportParams.setSheetName("项目总库");
+            list.clear();
+            ExportParams exportParams = new ExportParams("“四个一批”工业项目表(项目总库)", "项目总库", ExcelType.XSSF);
             workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoZkVO.class, exportList);
             // workbook = ExcelExportUtil.exportBigExcel(exportParams, SubInfoZkVO.class, new IExcelExportServer() {
             //     /**
@@ -1075,6 +981,51 @@ public class SubInfoExportController extends BaseController {
         }
     }
 
+    private <K extends SubInfoBaseDetailVo> void exportDetail(HttpServletResponse response,ExportParams exportParams,Class<K> clazz, List<SubInfoGxj> list, Map<String, String> hyDictMap, Map<String, List<SubInfoGxj>> groupMap) {
+        List<K> exportList = new ArrayList<>();
+        // 合计行
+        K hjCount = BeanUtils.instantiateClass(clazz);
+        hjCount.setIndex(String.format("合计(%s个)", list.size()));
+        BigDecimal total = list.stream().reduce(BigDecimal.ZERO, (a, b) -> a.add(b.getAmtTotal()), BigDecimal::add);
+        hjCount.setAmtTotal(convertAmount(total));
+        exportList.add(hjCount);
+
+        int index = 1;
+        List<Integer> allSize = new ArrayList<>();
+        for (Map.Entry<String, List<SubInfoGxj>> entry : groupMap.entrySet()) {
+            String key = entry.getKey();
+            List<SubInfoGxj> value = entry.getValue();
+            List<K> hyList = new ArrayList<>();
+            // 行业合计行
+            K hyCount = BeanUtils.instantiateClass(clazz);
+            hyCount.setIndex(String.format("%s、%s( %s个 )", toChineseNumber(index), hyDictMap.getOrDefault(key, key), value.size()));
+            BigDecimal reduce = value.stream().reduce(BigDecimal.ZERO, (a, b) -> a.add(b.getAmtTotal()), BigDecimal::add);
+            hyCount.setAmtTotal(convertAmount(reduce));
+            // 每条数据行
+            hyList.add(hyCount);
+            for (int i = 0; i < value.size(); i++) {
+                SubInfoGxj subInfoGxj = value.get(i);
+                K vo = BeanUtils.instantiateClass(clazz);
+                BeanUtils.copyProperties(subInfoGxj, vo);
+                vo.setAmtTotal(convertAmount(subInfoGxj.getAmtTotal()));
+                vo.setIndex(i + 1 + "");
+                hyList.add(vo);
+            }
+            // 添加前计算合并行
+            allSize.add(exportList.size() + 2);
+            exportList.addAll(hyList);
+            index++;
+        }
+        list.clear();
+        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, clazz, exportList);
+        extracted(response, list, workbook, allSize);
+    }
+
+    // 转换金额
+    private BigDecimal convertAmount(BigDecimal amount) {
+        return amount == null ? BigDecimal.ZERO : amount.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP);
+    }
+
     private void extracted(HttpServletResponse response, List<SubInfoGxj> list, Workbook workbook, List<Integer> allSize) {
         response.setContentType("application/xlsx;charset=utf-8");
         response.setHeader("Content-Disposition", "attachment; filename=" + URLEncodeUtil.encode("项目明细表") + System.currentTimeMillis() + ".xlsx");
@@ -1094,22 +1045,17 @@ public class SubInfoExportController extends BaseController {
             }
         }
         // 设置自适应行高,i为需要自适应行高的起始行号, 起始行号为3 但是因为下标从0开始3需要减一,因为表格是循环生成,需要一行一行设置自适应高度
-        for (int i = 2; i <= list.size() + 1; i++) {
+        for (int i = 2; i <= list.size() + 3; i++) {
             sheet.getRow(i).setHeight((short) -1);
         }
         try (OutputStream outputStream = response.getOutputStream()) {
             workbook.write(outputStream);
+            workbook.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 
-    private ExportParams getExportParams() {
-        ExportParams exportParams = new ExportParams();
-        exportParams.setType(ExcelType.XSSF);
-        return exportParams;
-    }
-
     /**
      * 创建非居中且加粗的单元格样式
      */
@@ -1128,20 +1074,6 @@ public class SubInfoExportController extends BaseController {
         return cellStyle;
     }
 
-    private <T> Workbook exportExcel(List<SubInfoGxj> list, Class<T> clazz, String title, String sheetName) {
-        ExportParams exportParams = getExportParams();
-        exportParams.setTitle(title);
-        exportParams.setSheetName(sheetName);
-        exportParams.setType(ExcelType.XSSF);
-        List<T> voList = list.stream()
-                .map(e -> {
-                    T vo = BeanUtils.instantiateClass(clazz);
-                    BeanUtils.copyProperties(e, vo);
-                    return vo;
-                })
-                .collect(Collectors.toList());
-        return ExcelExportUtil.exportExcel(exportParams, clazz, voList);
-    }
     private ExcelExportEntity getExcelExportEntity(String name, Object key, int width) {
         ExcelExportEntity excelExportEntity = new ExcelExportEntity(name, key, width);
         excelExportEntity.setWidth(width);
@@ -1202,19 +1134,21 @@ public class SubInfoExportController extends BaseController {
 
 
             // 3.导出
-            ExportParams exportParams = getExportParams();
-            exportParams.setTitle("哈密市“四个一批”工业项目库总体情况");
-            exportParams.setSheetName("项目库总体情况");
-
+            ExportParams exportParams = new ExportParams("哈密市“四个一批”工业项目库总体情况", "项目库总体情况", ExcelType.XSSF);
             Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, dataList);
             response.setContentType("application/xlsx;charset=utf-8");
             response.setHeader("Content-Disposition", "attachment; filename=" + URLEncodeUtil.encode("项目库总体情况") + System.currentTimeMillis() + ".xlsx");
 
             try (OutputStream outputStream = response.getOutputStream()) {
                 workbook.write(outputStream);
-                workbook.close();
             } catch (IOException e) {
                 e.printStackTrace();
+            }finally {
+                try {
+                    workbook.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
             }
         }else {
             // 处理数据
@@ -1289,9 +1223,7 @@ public class SubInfoExportController extends BaseController {
                 BigDecimal reduce = list.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add);
                 exportData.add(new SubInfoTotalInfoVO("合计", "合计", list.size(), reduce.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP)));
                 // 4.导出
-                ExportParams exportParams = getExportParams();
-                exportParams.setTitle("项目库基本情况");
-                exportParams.setSheetName("项目库基本情况");
+                ExportParams exportParams = new ExportParams("项目库基本情况","项目库基本情况", ExcelType.XSSF);
                 int mergeTotalStartRow = exportData.size() + 1;
                 Workbook workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoTotalInfoVO.class, exportData);
                 response.setContentType("application/xlsx;charset=utf-8");
@@ -1321,7 +1253,8 @@ public class SubInfoExportController extends BaseController {
             List<Object> list1 = new ArrayList<>();
             Map<String,Object> columnMap = new LinkedHashMap<>();
             columnMap.put("count", value.size());
-            columnMap.put("amt", value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add));
+            BigDecimal reduce = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add);
+            columnMap.put("amt", name.equals(SubInfoStatusEnum.TC.getDesc() + "项目") ? "/" : reduce.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
             list1.add(columnMap);
             map.put(key, list1);
         });
@@ -1337,7 +1270,7 @@ public class SubInfoExportController extends BaseController {
         List<Object> list = new ArrayList<>();
         Map<String, Object> hjMap = new LinkedHashMap<>();
         hjMap.put("count", cb.size());
-        hjMap.put("amt", cbAmtSum);
+        hjMap.put("amt", name.equals(SubInfoStatusEnum.TC.getDesc() + "项目") ? "/" : cbAmtSum.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
         list.add(hjMap);
 
         rowMap.put("hj", list);

+ 241 - 432
projects/src/main/webapp/vmodules/subject/subInfo/editSubInfo.jsp

@@ -106,17 +106,17 @@
             <%--				<button class="btn btn1" :class="{active: tabActive === 1}" @click="onChangeActive(1)">项目信息</button>--%>
             <%--				<button class="btn btn2" :class="{active: tabActive === 2}" @click="onChangeActive(2)">监管单位</button>--%>
             <%--			</div>--%>
-            <div class="layui-collapse">
-                <div class="layui-colla-item">
-                    <h2 class="layui-colla-title return">
-                        <button class="btn" @click="addManage" v-if="tabActive === 2"
-                                style="margin: 0 10px 0 0; padding: 3px 8px 5px; background: #3362c9"><i
-                                class="layui-icon layui-icon-addition"></i>新增监管单位
-                        </button>
-                        <button class="btn" @click="closeWin">返回</button>
-                    </h2>
-                </div>
-            </div>
+<%--            <div class="layui-collapse">--%>
+<%--                <div class="layui-colla-item">--%>
+<%--                    <h2 class="layui-colla-title return">--%>
+<%--                        <button class="btn" @click="addManage" v-if="tabActive === 2"--%>
+<%--                                style="margin: 0 10px 0 0; padding: 3px 8px 5px; background: #3362c9"><i--%>
+<%--                                class="layui-icon layui-icon-addition"></i>新增监管单位--%>
+<%--                        </button>--%>
+<%--                        <button class="btn" @click="closeWin">返回</button>--%>
+<%--                    </h2>--%>
+<%--                </div>--%>
+<%--            </div>--%>
         </div>
         <form class="layui-form" lay-filter="formData" style="padding: 0 20px">
             <div class="layui-colla-content layui-show" style="height: auto;">
@@ -536,187 +536,28 @@
                 </div>
             </div>
         </form>
-
-<%--        <div id="amtSourceEdit" style="display: none; padding: 10px 0 0;">--%>
-<%--            <div class="layuimini-main">--%>
-
-<%--                <div class="layui-form" lay-filter="amtSourceEdit" action=""--%>
-<%--                     onkeydown="if(event.keyCode==13){return false;}">--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class="layui-col-xs11 layui-col-sm11">--%>
-<%--                            <div class='layui-form-item'>--%>
-<%--                                <label class="layui-form-label required" style="width: 90px">资金来源</label>--%>
-<%--                                <div class="layui-input-block">--%>
-<%--                                    <select id="testAmt" name="testAmt" lay-filter="testAmt">--%>
-<%--                                        <option value="">请选择</option>--%>
-<%--                                        <c:forEach items="${ZJLY }" var="zj">--%>
-<%--                                            <option value="${zj.id }">${zj.title }</option>--%>
-<%--                                        </c:forEach>--%>
-<%--                                    </select>--%>
-<%--                                </div>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class="layui-col-xs11 layui-col-sm11">--%>
-<%--                            <div class='layui-form-item'>--%>
-<%--                                <label class="layui-form-label required" style="width: 90px">金额(万元)</label>--%>
-<%--                                <div class="layui-input-block">--%>
-<%--                                    <input id="zjAmt" min="0" class="layui-input" type="number"/>--%>
-<%--                                </div>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class="layui-col-xs11 layui-col-sm11">--%>
-<%--                            <div class='layui-form-item'>--%>
-<%--                                <label class="layui-form-label required" style="width: 90px">到位金额(万元)</label>--%>
-<%--                                <div class="layui-input-block">--%>
-<%--                                    <input id="zjAmtSj" min="0" class="layui-input" type="number"/>--%>
-<%--                                </div>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class="layui-form-item">--%>
-<%--                            <label class="layui-form-label" style="width: 90px"></label>--%>
-<%--                            <div class="layui-input-block">--%>
-<%--                                <button class="layui-btn-submit" @click="closePane">取消</button>--%>
-<%--                                <button class="layui-btn-submit" style="margin-left: 10px" lay-submit--%>
-<%--                                        lay-filter="amtConfirm">确定--%>
-<%--                                </button>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                </div>--%>
-
-<%--            </div>--%>
-<%--        </div>--%>
-<%--        <div id="planEdit" style="display: none; padding: 10px 0 0;">--%>
-<%--            <form class="layui-form" lay-filter="planEdit">--%>
-<%--                <div class="table_box">--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class='layui-form-item'>--%>
-<%--                            <label class="layui-form-label required">结束时间</label>--%>
-<%--                            <div class="layui-input-block" style="padding: 0 10px 0 0;">--%>
-<%--                                <input type="text" id="planEndDate" readonly="readonly" required lay-verify="required"--%>
-<%--                                       class="layui-input" v-model="planEditInfo.endDate">--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class='layui-form-item'>--%>
-<%--                            <label class="layui-form-label required">工作内容</label>--%>
-<%--                            <div class="layui-input-block" style="padding: 0 10px 0 0;">--%>
-<%--                                <textarea v-model="planEditInfo.content" class="layui-textarea" required--%>
-<%--                                          lay-verify="required"></textarea>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class='layui-form-item'>--%>
-<%--                            <label class="layui-form-label required">进度权重</label>--%>
-<%--                            <div class="layui-input-block" style="padding: 0 10px 0 0;">--%>
-<%--                                <input type="number" min="1" max="10" required lay-verify="required" class="layui-input"--%>
-<%--                                       v-model="planEditInfo.numRate">--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                    <div class="layui-row">--%>
-<%--                        <div class="layui-form-item" style="text-align: right; padding: 0 67px 10px;">--%>
-<%--                            <input type="button" value="取消" class="layui-btn btn btn1" @click="closePane"/>--%>
-<%--                            <input type="button" value="保存" class="layui-btn btn btn1" lay-submit--%>
-<%--                                   lay-filter="planConfirm"/>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                </div>--%>
-<%--            </form>--%>
-<%--        </div>--%>
-<%--        <div id="manageEdit" style="display: none">--%>
-<%--            <div class="layuimini-main">--%>
-<%--                <form class="layui-form" lay-filter="manageEdit">--%>
-<%--                    <div class="table_box">--%>
-<%--                        <div class="layui-row">--%>
-<%--                            <div class="layui-form-item">--%>
-<%--                                <label class="layui-form-label required">监管单位</label>--%>
-<%--                                <div class="layui-input-block" id="gzsm">--%>
-<%--                                    <select name="manageId" required lay-verify="required" lay-filter="manageId"--%>
-<%--                                            v-model="currObjData.manageId" lay-search>--%>
-<%--                                        <option value="">--请选择--</option>--%>
-<%--                                        <c:forEach items="${unit }" var="un">--%>
-<%--                                            <option value="${un.id }" nameLead="${un.nameLead}"--%>
-<%--                                                    tel="${un.tel}">${un.title }</option>--%>
-<%--                                        </c:forEach>--%>
-<%--                                    </select>--%>
-<%--                                </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="departId" lay-filter="departId" v-model="currObjData.departId">--%>
-<%--                                        <option value="">--请选择--</option>--%>
-<%--                                    </select>--%>
-<%--                                </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="nameLead" required lay-verify="required" placeholder="请输入"--%>
-<%--                                           autocomplete="off" class="layui-input" v-model="currObjData.nameLead">--%>
-<%--                                </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="tel" required lay-verify="required" placeholder="请输入"--%>
-<%--                                           autocomplete="off" class="layui-input" v-model="currObjData.tel">--%>
-<%--                                </div>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                        <div class="layui-row">--%>
-<%--                            <div class="layui-form-item">--%>
-<%--                                <label class="layui-form-label"></label>--%>
-<%--                                <div class="layui-input-block">--%>
-<%--                                    <button type="button" class="layui-btn-submit" @click="closePane">取消</button>--%>
-<%--                                    <button type="button" class="layui-btn-submit" style="margin-left: 10px" lay-submit--%>
-<%--                                            lay-filter="manageConfirm">保存--%>
-<%--                                    </button>--%>
-<%--                                </div>--%>
-<%--                            </div>--%>
-<%--                        </div>--%>
-<%--                    </div>--%>
-<%--                </form>--%>
-<%--            </div>--%>
-
-<%--        </div>--%>
     </div>
 </template>
-<script type="text/text" id="amtToolBar">
-	<div class="toolBar">
-		<span javascript:void(0); lay-event="delAmt">删除</span>
-	</div>
+<%--<script type="text/text" id="amtToolBar">--%>
+<%--	<div class="toolBar">--%>
+<%--		<span javascript:void(0); lay-event="delAmt">删除</span>--%>
+<%--	</div>--%>
 
 
 
 
-</script>
-<script type="text/html" id="planToolBar">
-    <div class="toolBar">
-        <span title="编辑" lay-event="planEdit">编辑</span>
-        {{#if(d.id == null || d.statusSp == '0') { }}
-        <span title="删除" lay-event="delPlan">删除</span>
-        {{#}}}
-    </div>
-</script>
-<script type="text/html" id="manageToolBar">
-    <div class="toolBar"><span title="删除" lay-event="delManage">删除</span></div>
-</script>
+<%--</script>--%>
+<%--<script type="text/html" id="planToolBar">--%>
+<%--    <div class="toolBar">--%>
+<%--        <span title="编辑" lay-event="planEdit">编辑</span>--%>
+<%--        {{#if(d.id == null || d.statusSp == '0') { }}--%>
+<%--        <span title="删除" lay-event="delPlan">删除</span>--%>
+<%--        {{#}}}--%>
+<%--    </div>--%>
+<%--</script>--%>
+<%--<script type="text/html" id="manageToolBar">--%>
+<%--    <div class="toolBar"><span title="删除" lay-event="delManage">删除</span></div>--%>
+<%--</script>--%>
 <script type="text/javascript">
     new Vue({
         el: "#app",
@@ -804,42 +645,15 @@
                         }
                     }
                 });
-                layui.laydate.render({
-                    elem: "#planEndDate",
-                    type: "date",
-                    theme: layDateTheme,
-                    done: function (value) {
-                        self.planEditInfo.endDate = value;
-                    }
-                });
-                // layui.form.on("submit(amtConfirm)", function (obj) {
-                //     var amt = $("#zjAmt").val();
-                //     if (!isNumber(amt) || Number(amt) < 0) {
-                //         App.msg.warn("请填写正数的金额");
-                //         return;
-                //     }
-                //     var amtSj = $("#zjAmtSj").val();
-                //     if (!isNumber(amtSj) || Number(amtSj) < 0) {
-                //         App.msg.warn("请填写正数的到位金额");
-                //         return;
-                //     }
-                //     //获取选择的值。
-                //     if (self.amtSource.filter((item, index) => {
-                //         return item.sourceId == self.testAmt;
-                //     }).length > 0) {
-                //         //存在,阻断
-                //         App.msg.warn("该类型已被选择");
-                //     } else {
-                //         self.amtSource.push({
-                //             sourceId: self.testAmt,
-                //             sourceName: self.testAmtName,
-                //             amt: amt,
-                //             amtSj: amtSj
-                //         });
-                //         self.initAmtSource();
-                //         self.closePane();
+                // layui.laydate.render({
+                //     elem: "#planEndDate",
+                //     type: "date",
+                //     theme: layDateTheme,
+                //     done: function (value) {
+                //         self.planEditInfo.endDate = value;
                 //     }
                 // });
+
                 layui.form.on("select(subjectId)", function (data) {
                     var ztdw = $("#subjectId option:checked").attr("ztdw");
                     self.subInfo.subjectId = data.value;
@@ -858,11 +672,6 @@
                 <c:forEach items="${XMLX}" var="xm">
                 kind.push({value: "${xm.code}", name: "${xm.title}"});
                 </c:forEach>
-                /*				this.kindSelect = layui.xmSelect.render({
-                                    el:'#kind',
-                                    language:'zn',
-                                    data: kind
-                                });*/
                 layui.form.on("select(indusKind)", function (data) {
                     self.subInfo.indusKind = data.value;
                 });
@@ -912,32 +721,32 @@
                 layui.form.on("submit(saveSubInfo)", function (obj) {
                     self.saveSubInfo();
                 });
-                layui.form.on("submit(savePlan)", function (obj) {
-                    self.savePlan();
-                });
-                layui.form.on("submit(saveManage)", function (obj) {
-                    self.saveManage();
-                });
-                layui.form.on("submit(manageConfirm)", function (obj) {
-                    if (self.manageList.filter(item => {
-                        return item.manageId === self.currObjData.manageId;
-                    }).length > 0) {
-                        App.msg.warn("该监管单位已存在");
-                        return;
-                    }
-                    self.addManageData();
-                });
+                // layui.form.on("submit(savePlan)", function (obj) {
+                //     self.savePlan();
+                // });
+                // layui.form.on("submit(saveManage)", function (obj) {
+                //     self.saveManage();
+                // });
+                // layui.form.on("submit(manageConfirm)", function (obj) {
+                //     if (self.manageList.filter(item => {
+                //         return item.manageId === self.currObjData.manageId;
+                //     }).length > 0) {
+                //         App.msg.warn("该监管单位已存在");
+                //         return;
+                //     }
+                //     self.addManageData();
+                // });
 
-                layui.form.on("select(manageId)", function (data) {
-                    self.currObjData.manageId = data.value;
-                    self.currObjData.manageName = this.innerText;
-                    self.currObjData.nameLead = $("select[name='manageId']").find("option:selected").eq(0).attr("nameLead");
-                    self.currObjData.tel = $("select[name='manageId']").find("option:selected").eq(0).attr("tel");
-                    self.currObjData.departId = "";
-                    $("input[name='nameLead']").val(self.currObjData.nameLead);
-                    $("input[name='tel']").val(self.currObjData.tel);
-                    self.setJgDept(data.value);
-                });
+                // layui.form.on("select(manageId)", function (data) {
+                //     self.currObjData.manageId = data.value;
+                //     self.currObjData.manageName = this.innerText;
+                //     self.currObjData.nameLead = $("select[name='manageId']").find("option:selected").eq(0).attr("nameLead");
+                //     self.currObjData.tel = $("select[name='manageId']").find("option:selected").eq(0).attr("tel");
+                //     self.currObjData.departId = "";
+                //     $("input[name='nameLead']").val(self.currObjData.nameLead);
+                //     $("input[name='tel']").val(self.currObjData.tel);
+                //     self.setJgDept(data.value);
+                // });
                 layui.form.on("select(departId)", function (data) {
                     self.currObjData.departId = data.value;
                     self.currObjData.departName = this.innerText;
@@ -958,45 +767,45 @@
                 });
                 this.getForm();
             },
-            initAmtSource: function () {
-                var self = this;
-                layui.table.render({
-                    elem: '#amtSource', // 指定原始表格元素选择器(推荐id选择器)
-                    even: true,
-                    cols: [[ // 设置表头
-                        {type: 'numbers', title: '序号'},
-                        {field: 'sourceName', title: '资金来源'},
-                        {field: 'amt', title: '资金(万元)', edit: 'text'},
-                        {field: 'amtSj', title: '到位资金(万元)', edit: 'text'},
-                        {title: '操作', align: 'center', toolbar: '#amtToolBar'}
-                    ]],
-                    limit: self.amtSource.length,
-                    data: self.amtSource
-                });
-                layui.table.on("tool(amtSource)", function (obj) {
-                    self[obj.event].call(this, obj);
-                });
-            },
-            delAllAmt: function () {
-                for (var i = 0; i < this.amtSource.length; i++) {
-                    if (this.amtSource[i].id) {
-                        this.amtSource[i].logicDeleteFlag = 1;
-                        this.delAmtSource.push(this.amtSource[i]);
-                    }
-                }
-                this.amtSource = [];
-            },
-            delAmt: function (obj) {
-                if (obj.data.id) {
-                    obj.data.logicDeleteFlag = 1;
-                    this.delAmtSource.push(obj.data);
-                    obj.del();
-                } else {
-                    obj.del();
-                }
-                this.amtSource = layui.table.getData("amtSource");
-                this.initAmtSource();
-            },
+            // initAmtSource: function () {
+            //     var self = this;
+            //     layui.table.render({
+            //         elem: '#amtSource', // 指定原始表格元素选择器(推荐id选择器)
+            //         even: true,
+            //         cols: [[ // 设置表头
+            //             {type: 'numbers', title: '序号'},
+            //             {field: 'sourceName', title: '资金来源'},
+            //             {field: 'amt', title: '资金(万元)', edit: 'text'},
+            //             {field: 'amtSj', title: '到位资金(万元)', edit: 'text'},
+            //             {title: '操作', align: 'center', toolbar: '#amtToolBar'}
+            //         ]],
+            //         limit: self.amtSource.length,
+            //         data: self.amtSource
+            //     });
+            //     layui.table.on("tool(amtSource)", function (obj) {
+            //         self[obj.event].call(this, obj);
+            //     });
+            // },
+            // delAllAmt: function () {
+            //     for (var i = 0; i < this.amtSource.length; i++) {
+            //         if (this.amtSource[i].id) {
+            //             this.amtSource[i].logicDeleteFlag = 1;
+            //             this.delAmtSource.push(this.amtSource[i]);
+            //         }
+            //     }
+            //     this.amtSource = [];
+            // },
+            // delAmt: function (obj) {
+            //     if (obj.data.id) {
+            //         obj.data.logicDeleteFlag = 1;
+            //         this.delAmtSource.push(obj.data);
+            //         obj.del();
+            //     } else {
+            //         obj.del();
+            //     }
+            //     this.amtSource = layui.table.getData("amtSource");
+            //     // this.initAmtSource();
+            // },
             getForm: function () {
                 var id = $("#id").val();
                 var self = this;
@@ -1011,10 +820,10 @@
                             /*		self.kindSelect.setValue(self.subInfo.kind.split(","));*/
                             self.amtSource = res.data.subSource || [];
                             //	alert(JSON.stringify(self.amtSource))
-                            self.initAmtSource();
-                            var total = self.subInfo.amtTotal;
+                            // self.initAmtSource();
+                            // var total = self.subInfo.amtTotal;
 
-                            self.chooseTotal(total, ${queryType});
+                            <%--self.chooseTotal(total, ${queryType});--%>
                             setTimeout(function () {
                                 layui.form.render();
                             }, 200);
@@ -1026,27 +835,27 @@
                             self.loadPlanTable();
                         }
                     }); */
-                    App.postJson("/api/subject/subInfo/getManageList", {subId: id}, function (res) {
-                        if (res.success) {
-                            self.manageList = res.data;
-                            self.loadManageTable();
-                        }
-                    });
-                }
-            },
-            chooseTotal(totalInvestment, queryType) {
-                if (totalInvestment >= 500 && queryType == '1') {
-                    var select = document.getElementById('isFix'); // 获取下拉框的DOM元素
-                    // 根据值的大小显示或隐藏下拉框
-                    if (totalInvestment >= 500) {
-                        select.style.display = 'block'; // 显示下拉框
-                        layui.form.render('select'); // 更新下拉框的渲染
-                    } else {
-                        select.style.display = 'none'; // 隐藏下拉框
-                        layui.form.render('select'); // 更新下拉框的渲染
-                    }
+                    // App.postJson("/api/subject/subInfo/getManageList", {subId: id}, function (res) {
+                    //     if (res.success) {
+                    //         self.manageList = res.data;
+                    //         self.loadManageTable();
+                    //     }
+                    // });
                 }
             },
+            // chooseTotal(totalInvestment, queryType) {
+            //     if (totalInvestment >= 500 && queryType == '1') {
+            //         var select = document.getElementById('isFix'); // 获取下拉框的DOM元素
+            //         // 根据值的大小显示或隐藏下拉框
+            //         if (totalInvestment >= 500) {
+            //             select.style.display = 'block'; // 显示下拉框
+            //             layui.form.render('select'); // 更新下拉框的渲染
+            //         } else {
+            //             select.style.display = 'none'; // 隐藏下拉框
+            //             layui.form.render('select'); // 更新下拉框的渲染
+            //         }
+            //     }
+            // },
             addAmt: function () {
                 var self = this;
                 $("#zjAmt").val("");
@@ -1075,8 +884,8 @@
                     return;
                 }
                 var saveUrl = "/api/subject/subInfo/saveEditSubInfo";
-                var saveAmtSource = this.amtSource.concat(this.delAmtSource);
-                this.subInfo.subSource = saveAmtSource;
+                // var saveAmtSource = this.amtSource.concat(this.delAmtSource);
+                // this.subInfo.subSource = saveAmtSource;
 
                 App.msg.confirm("确认提交项目信息吗?", function () {
                     console.log(self.subInfo)
@@ -1089,7 +898,7 @@
                                     self.subInfo = resc.data;
                                     /*	self.kindSelect.setValue(self.subInfo.kind.split(","));*/
                                     self.amtSource = resc.data.subSource || [];
-                                    self.initAmtSource();
+                                    // self.initAmtSource();
                                     self.delAmtSource = [];
                                     setTimeout(function () {
                                         layui.form.render();
@@ -1101,124 +910,124 @@
                     });
                 })
             },
-            sort: function () {
-                var beginDate = $("#beginDate").val();
-                this.planList.sort(function (a, b) {
-                    var date1 = new Date(a.endDate);
-                    var date2 = new Date(b.endDate);
-                    return date1.getTime() > date2.getTime() ? 1 : -1;
-                });
-                for (var i = 0; i < this.planList.length; i++) {
-                    if (i == 0) {
-                        this.planList[i].beginDate = beginDate;
-                    } else {
-                        var endDate = new Date(this.planList[i - 1].endDate);
-                        endDate = endDate.addDays(1);
-                        this.planList[i].beginDate = layui.util.toDateString(endDate, "yyyy-MM-dd");
-                    }
-                }
-                this.loadPlanTable();
-            },
-            addManage: function () {
-                var self = this;
-                this.currObjData = {
-                    manageId: "",
-                    departId: "",
-                    nameLead: "",
-                    tel: ""
-                };
-                $("select[name='manageId']").next().find("input").eq(0).val("")
-                this.setJgDept("");
-                layui.form.render();
-                layui.use('form', function () {
-                    layui.form.render('select');
-                })
-
-                this.planEditPanl = layer.open({
-                    title: "新增监管单位",
-                    type: 1,
-                    content: $("#manageEdit"),
-                    area: ['500px', 'auto']
-                })
-            },
-            loadManageTable: function () {
-                var self = this;
-                layui.table.render({
-                    elem: '#manageList', // 指定原始表格元素选择器(推荐id选择器)
-                    even: true,
-                    cols: [[ // 设置表头
-                        {type: 'numbers', title: '序号', align: 'center'},
-                        {field: 'manageName', title: '监管单位'},
-                        {field: 'departName', title: '责任科室'},
-                        {field: 'nameLead', title: '责任领导',},
-                        {field: 'tel', title: '联系电话'},
-                        {title: '操作', align: 'center', toolbar: '#manageToolBar'}
-                    ]],
-                    data: self.manageList
-                });
-                layui.table.on("tool(manageList)", function (obj) {
-                    self[obj.event].call(this, obj);
-                })
-            },
-            setJgDept: function (unitId) {
-                $("select[name='departId']").html("<option value=''>--请选择--</option>");
-                layui.form.render();
-                if (unitId != '') {
-                    App.postJson("/api/jdepart/listByUnit", {unitId: unitId}, function (res) {
-                        for (var i = 0; i < res.data.length; i++) {
-                            let cuData = res.data[i];
-                            $("select[name='departId']")
-                                .append("<option value='" + cuData.id + "' tel='" + cuData.tel + "' nameLead='" + cuData.nameLead + "'>" + cuData.title + "</option>");
-                        }
-                        layui.form.render();
-                    });
-                }
-            },
-            addManageData: function () {
-                this.manageList.push(this.currObjData);
-                this.loadManageTable();
-                this.closePane();
-            },
-            delManage: function (obj) {
-                var self = this;
-                App.msg.confirm("确认删除该监管单位吗?", function () {
-                    if (obj.data.id) {
-                        obj.data.logicDeleteFlag = 1;
-                        self.delManageList.push(obj.data);
-                        obj.del();
-                        self.manageList = layui.table.getData("manageList");
-                    } else {
-                        obj.del();
-                        self.manageList = layui.table.getData("manageList");
-                    }
-                })
-            },
-            saveManage: function () {
-                var manages = this.manageList;
-                var subId = this.subInfo.id;
-                for (var i = 0; i < this.delManageList.length; i++) {
-                    manages.push(this.delManageList[i]);
-                }
-                var data = {
-                    subId: subId,
-                    manage: manages
-                };
-                var self = this;
-                App.msg.confirm("确认提交监管单位信息吗?", function () {
-                    App.postJson("/api/subject/subInfo/saveEditSubInfo", {manage: data}, function (res) {
-                        if (res.success) {
-                            App.msg.warn("提交成功");
-                            App.postJson("/api/subject/subInfo/getManageList", {subId: subId}, function (resc) {
-                                if (resc.success) {
-                                    self.manageList = resc.data;
-                                    self.delManageList = [];
-                                    self.loadManageTable();
-                                }
-                            });
-                        }
-                    });
-                });
-            },
+            // sort: function () {
+            //     var beginDate = $("#beginDate").val();
+            //     this.planList.sort(function (a, b) {
+            //         var date1 = new Date(a.endDate);
+            //         var date2 = new Date(b.endDate);
+            //         return date1.getTime() > date2.getTime() ? 1 : -1;
+            //     });
+            //     for (var i = 0; i < this.planList.length; i++) {
+            //         if (i == 0) {
+            //             this.planList[i].beginDate = beginDate;
+            //         } else {
+            //             var endDate = new Date(this.planList[i - 1].endDate);
+            //             endDate = endDate.addDays(1);
+            //             this.planList[i].beginDate = layui.util.toDateString(endDate, "yyyy-MM-dd");
+            //         }
+            //     }
+            //     this.loadPlanTable();
+            // },
+            // addManage: function () {
+            //     var self = this;
+            //     this.currObjData = {
+            //         manageId: "",
+            //         departId: "",
+            //         nameLead: "",
+            //         tel: ""
+            //     };
+            //     $("select[name='manageId']").next().find("input").eq(0).val("")
+            //     this.setJgDept("");
+            //     layui.form.render();
+            //     layui.use('form', function () {
+            //         layui.form.render('select');
+            //     })
+            //
+            //     this.planEditPanl = layer.open({
+            //         title: "新增监管单位",
+            //         type: 1,
+            //         content: $("#manageEdit"),
+            //         area: ['500px', 'auto']
+            //     })
+            // },
+            // loadManageTable: function () {
+            //     var self = this;
+            //     layui.table.render({
+            //         elem: '#manageList', // 指定原始表格元素选择器(推荐id选择器)
+            //         even: true,
+            //         cols: [[ // 设置表头
+            //             {type: 'numbers', title: '序号', align: 'center'},
+            //             {field: 'manageName', title: '监管单位'},
+            //             {field: 'departName', title: '责任科室'},
+            //             {field: 'nameLead', title: '责任领导',},
+            //             {field: 'tel', title: '联系电话'},
+            //             {title: '操作', align: 'center', toolbar: '#manageToolBar'}
+            //         ]],
+            //         data: self.manageList
+            //     });
+            //     layui.table.on("tool(manageList)", function (obj) {
+            //         self[obj.event].call(this, obj);
+            //     })
+            // },
+            // setJgDept: function (unitId) {
+            //     $("select[name='departId']").html("<option value=''>--请选择--</option>");
+            //     layui.form.render();
+            //     if (unitId != '') {
+            //         App.postJson("/api/jdepart/listByUnit", {unitId: unitId}, function (res) {
+            //             for (var i = 0; i < res.data.length; i++) {
+            //                 let cuData = res.data[i];
+            //                 $("select[name='departId']")
+            //                     .append("<option value='" + cuData.id + "' tel='" + cuData.tel + "' nameLead='" + cuData.nameLead + "'>" + cuData.title + "</option>");
+            //             }
+            //             layui.form.render();
+            //         });
+            //     }
+            // },
+            // addManageData: function () {
+            //     this.manageList.push(this.currObjData);
+            //     this.loadManageTable();
+            //     this.closePane();
+            // },
+            // delManage: function (obj) {
+            //     var self = this;
+            //     App.msg.confirm("确认删除该监管单位吗?", function () {
+            //         if (obj.data.id) {
+            //             obj.data.logicDeleteFlag = 1;
+            //             self.delManageList.push(obj.data);
+            //             obj.del();
+            //             self.manageList = layui.table.getData("manageList");
+            //         } else {
+            //             obj.del();
+            //             self.manageList = layui.table.getData("manageList");
+            //         }
+            //     })
+            // },
+            // saveManage: function () {
+            //     var manages = this.manageList;
+            //     var subId = this.subInfo.id;
+            //     for (var i = 0; i < this.delManageList.length; i++) {
+            //         manages.push(this.delManageList[i]);
+            //     }
+            //     var data = {
+            //         subId: subId,
+            //         manage: manages
+            //     };
+            //     var self = this;
+            //     // App.msg.confirm("确认提交监管单位信息吗?", function () {
+            //     //     App.postJson("/api/subject/subInfo/saveEditSubInfo", {manage: data}, function (res) {
+            //     //         if (res.success) {
+            //     //             App.msg.warn("提交成功");
+            //     //             App.postJson("/api/subject/subInfo/getManageList", {subId: subId}, function (resc) {
+            //     //                 if (resc.success) {
+            //     //                     self.manageList = resc.data;
+            //     //                     self.delManageList = [];
+            //     //                     self.loadManageTable();
+            //     //                 }
+            //     //             });
+            //     //         }
+            //     //     });
+            //     // });
+            // },
             closeWin: function () {
                 var self = this;
                 if (!this.closeMark) {

+ 2 - 1
projects/src/main/webapp/vmodules/subject/subInfo/tz/cb.jsp

@@ -221,7 +221,8 @@
                         <span class="info-icon" title="C类项目:意向类项目,还处于谋划论证阶段项目">?</span>
                         <span class="lanse-first">{{beginRate.cnum}}</span>
                     </label>
-                    <label class="juli" onclick="levelList('abcs','D类','.')">
+                    <label class="juli" onclick="levelList('abcs','D类','UNKNOWN_CATEGORY')">
+                        未知分类
                         <span class="info-icon" title="ABC类未设置">?</span>
                         <span class="lanse-first">{{beginRate.nnum}}</span>
                     </label>

+ 6 - 6
projects/src/main/webapp/vmodules/subject/subInfo/tz/cb_sum.jsp

@@ -413,14 +413,14 @@
                             </div>
                         </div>
                     </label>
+                    <label class="juli" onclick="levelList('abcs','D类','UNKNOWN_CATEGORY')">
+                        未知分类
+                        <span class="info-icon" title="ABC类未设置">?</span>
+                        <span class="lanse-first">{{beginRate.nnum}}</span>
+                    </label>
                 </div>
                 <div style="display: flex;margin-bottom: 3px">
-
-                    <label @click="levelList('kindNatures',item.split(',')[1],item.split(',')[0])" class="juli"
-                           v-for="(item, index) in beginRate.tzlxList" :key="index">
-                        {{item.name}}<span class="lanse-first">{{item.num}}</span>
-                    </label>
-                    <label class="juli" @click="levelList('subjects',item.split(',')[1],item.split(',')[0])"
+                    <label class="juli" @click="levelList('subjects',item.name,item.code)"
                            v-for="(item, index) in beginRate.jsddList" :key="index">
                         {{item.name}}<span class="lanse-first">{{item.num}}</span>
                     </label>

+ 36 - 5
projects/src/main/webapp/vmodules/subject/subInfo/tz/end.jsp

@@ -419,6 +419,38 @@
                             </div>
                         </div>--%>
                     </label>
+                        <label class="juli">
+                            已入规<span class="lanse-first">{{beginRate.yrgNum}}</span>
+                            <div class="progress-div">
+                                <div class="layui-progress">
+                                    <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                                </div>
+                            </div>
+                        </label>
+                        <label class="juli">
+                            未入规<span class="lanse-first">{{beginRate.wrgNum}}</span>
+                            <div class="progress-div">
+                                <div class="layui-progress">
+                                    <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                                </div>
+                            </div>
+                        </label>
+                        <label class="juli">
+                            入规率<span class="lanse-first">{{beginRate.rgRate}}</span>
+                            <div class="progress-div">
+                                <div class="layui-progress">
+                                    <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                                </div>
+                            </div>
+                        </label>
+                        <label class="juli">
+                            投产率<span class="lanse-first">{{beginRate.tcRate}}</span>
+                            <div class="progress-div">
+                                <div class="layui-progress">
+                                    <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                                </div>
+                            </div>
+                        </label>
 <%--                    <label class="juli" style="display: none">
                         投资进度<span class="lanse-first">{{beginRate.amtRate}}%</span>
                         <div class="progress-div">
@@ -647,10 +679,10 @@
 </script>
 <script type="text/html" id="date">
     <div title="">
-        <div class="line"><span class="qianse">计划开工:</span><span class="shense">{{d.beginDate}}</span>
+        <div class="line"><span class="qianse">计划入规时间:</span><span class="shense">{{d.rtDate?d.rtDate:''}}</span>
 
         </div>
-        <div class="line"><span class="qianse">计划竣工:</span><span class="shense">{{d.endDate}}</span>
+        <div class="line"><span class="qianse">实际入规时间:</span><span class="shense">{{d.rgDate?d.rgDate:''}}</span>
 
         </div>
     </div>
@@ -780,9 +812,8 @@
                 var formatwdate = y + '-' + m + '-' + d;
                 layui.laydate.render({
                     elem: '#startTime',
-                    range: '~',
                     theme: layDateTheme,
-                    value: "2018" + "-01-01 ~ " + y + "-12-31"
+                    range: '~'
                 });
                 layui.laydate.render({
                     elem: '#dateConfirm',
@@ -1037,7 +1068,7 @@
                         {field: 'subName', fixed: 'left', title: '项目名称', minWidth: 200, templet: '#subName'},
                         {field: 'subjectName', title: '项目所在地', width: 100},
                         {field: 'content', title: '项目基本情况', minWidth: 300},
-                        {field: 'rgDate', title: '升规入统时间', minWidth: 100},
+                        {field: 'rtDate', title: '升规入统时间', minWidth: 160,templet: '#date'},
                         {field: 'progress', title: '进展情况', minWidth: 300},
                         {field: 'remark', title: '备注', minWidth: 150},
                         {title: '操作', width: 200, toolbar: '#toolBar', fixed: 'right'},

+ 20 - 4
projects/src/main/webapp/vmodules/subject/subInfo/tz/main.jsp

@@ -222,6 +222,22 @@
                                             </div>
                                         </div>
                                     </label>
+                                    <label class="juli">
+                                        已开工<span class="lanse-first">{{beginRate.ykgNum}}</span>
+                                        <div class="progress-div">
+                                            <div class="layui-progress">
+                                                <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                                            </div>
+                                        </div>
+                                    </label>
+                                    <label class="juli">
+                                        开(复)工率<span class="lanse-first">{{beginRate.kfgRate}}</span>
+                                        <div class="progress-div">
+                                            <div class="layui-progress">
+                                                <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                                            </div>
+                                        </div>
+                                    </label>
                                 </div>
                 <%--         &lt;%&ndash;           <label class="juli">--%>
                 <%--                        未开工项目数<span class="lanse-first">{{beginRate.noNum}}</span>--%>
@@ -339,7 +355,7 @@
                     <label class="juli"
                            @click="levelList('indusKinds',item.name?item.name:item.code,item.code)"
                            v-for="(item, index) in beginRate.hyflList" :key="index">
-                        {{item.name}}<span class="lanse-first">{{item.num}}</span>
+                        {{item.name?item.name:item.code}}<span class="lanse-first">{{item.num}}</span>
                     </label>
                 </div>
             </div>
@@ -667,7 +683,7 @@
 
 <script type="text/html" id="date">
     <div title="">
-        <div class="line"><span class="shense">{{d.tcDate?d.tcDate:"--"}}</span>
+        <div class="line"><span class="shense">{{d.endDate?d.endDate:"--"}}</span>
 
         </div>
 <%--        <div class="line"><span class="qianse">计划开工:</span><span class="shense">{{d.beginDate}}</span>--%>
@@ -1137,8 +1153,8 @@
                                 return (d.amtTotal / 10000).toFixed(2) + "亿元";
                             }
                         },
-                        {field: 'tcDate',  title: '建成投产时间', width: 100,templet: '#date'},
-                        {field: 'yearAmtSj', title: '年度投资', width: 100},
+                        {field: 'endDate',  title: '建成投产时间', width: 100,templet: '#date'},
+                        {field: 'yearPlanAmt', title: '年度投资(万元)', width: 100},
                         {field: 'progress',  title: '进展情况', width: 300},
                         {field: 'remark', title: '备注', width: 200},
                         {title: '操作', width: 180, toolbar: '#toolBar', fixed: 'right'},

+ 16 - 9
projects/src/main/webapp/vmodules/subject/subInfo/tz/new.jsp

@@ -225,15 +225,22 @@
                             </div>
                         </div>
                     </label>
-                    <%--                    <label class="juli">--%>
-                    <%--                        未开工项目数<span class="lanse-first">{{beginRate.noNum}}</span>--%>
-                    <%--                        <div class="progress-div">--%>
-                    <%--                            <div class="layui-progress">--%>
-                    <%--                                <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>--%>
-                    <%--                            </div>--%>
-                    <%--                        </div>--%>
-                    <%--                    </label>--%>
-
+                    <label class="juli">
+                        已开工<span class="lanse-first">{{beginRate.ykgNum}}</span>
+                        <div class="progress-div">
+                            <div class="layui-progress">
+                                <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                            </div>
+                        </div>
+                    </label>
+                    <label class="juli">
+                        开(复)工率<span class="lanse-first">{{beginRate.kfgRate}}</span>
+                        <div class="progress-div">
+                            <div class="layui-progress">
+                                <div class="layui-progress-bar" :style="'width:'+beginRate.noRate"></div>
+                            </div>
+                        </div>
+                    </label>
   <%--                  <label class="juli" onclick="levelList('abcs','A类','A')">
                         A类项目数
                         <span class="lanse-first" >{{beginRate.aNum}}</span>

+ 6 - 10
projects/src/main/webapp/vmodules/subject/subInfo/tz/xmzk.jsp

@@ -103,8 +103,8 @@
                 项目总库
             </div>
             <div class="layui-btn-container" style="margin-top: 20px;margin-left: 20px">
-                <button type="button" class="layui-btn" @click="exportDetailExcel">导出明细</button>
-                <button type="button" class="layui-btn" @click="exportTotalExcel">导出总表</button>
+<%--                <button type="button" class="layui-btn" @click="exportDetailExcel">导出明细</button>--%>
+                <button type="button" class="layui-btn" @click="exportTotalExcel">导出</button>
                 <button type="button" class="layui-btn" @click="exportMoreExcel">自定义导出</button>
             </div>
             <div class="layui-collapse">
@@ -811,7 +811,6 @@
                 // });
 
                 // 表格分页数据
-                param.status = 1;
                 App.postJson("/api/subInfo/query/queryPage", param, function (res) {
                     self.dataList = res.rows;
                     self.loadPage(res.total);
@@ -870,12 +869,10 @@
             },
             getStatusName: function (status) {
                 const statusMap = {
-                    '0': '暂存',
-                    '1': '项目前期',
-                    '6': '待开工',
-                    '7': '施工中',
-                    '8': '暂停施工',
-                    'A': '已竣工'
+                    '1': '储备',
+                    '2': '新建',
+                    '3': '在建',
+                    '9': '投产'
                 };
                 return statusMap[status] || '未知状态';
             },
@@ -886,7 +883,6 @@
                 });
             },
             loadTable: function () {
-                // 状态名称映射
                 this.dataList.forEach(item => {
                     item.statusName = this.getStatusName(item.status);
                 });