cc65a079 康伟

Merge remote-tracking branch 'origin/master'

2 个父辈 a1a800b9 529473f1
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 4 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 import com.baomidou.mybatisplus.core.toolkit.Constants; 5 import com.baomidou.mybatisplus.core.toolkit.Constants;
6 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 import com.skua.modules.common.vo.DepartVO;
7 import com.skua.tool.annotation.Anonymous; 8 import com.skua.tool.annotation.Anonymous;
8 import org.apache.ibatis.annotations.Param; 9 import org.apache.ibatis.annotations.Param;
9 10
...@@ -59,4 +60,6 @@ public interface CommonSqlMapper { ...@@ -59,4 +60,6 @@ public interface CommonSqlMapper {
59 String getChildDeparts(@Param(value="departId") String departId); 60 String getChildDeparts(@Param(value="departId") String departId);
60 61
61 String getChildDepartByUserId(@Param(value="userId") String userId); 62 String getChildDepartByUserId(@Param(value="userId") String userId);
63
64 List<DepartVO> getChildDepartList(@Param(value="departId") String departId);
62 } 65 }
......
...@@ -121,4 +121,28 @@ ...@@ -121,4 +121,28 @@
121 from sys_user_depart 121 from sys_user_depart
122 where user_id = #{userId} 122 where user_id = #{userId}
123 </select> 123 </select>
124
125 <select id="getChildDepartList" resultType="com.skua.modules.common.vo.DepartVO">
126 SELECT
127 id as depart_id,
128 depart_name
129 FROM
130 sys_depart
131 WHERE
132 depart_type = '1'
133 AND (
134 parent_id IN
135 <foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
136 '${item}'
137 </foreach>
138 OR id IN
139 <foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
140 '${item}'
141 </foreach>
142 OR parent_id IN ( SELECT id FROM sys_depart WHERE parent_id IN
143 <foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
144 '${item}'
145 </foreach>
146 ))
147 </select>
124 </mapper> 148 </mapper>
......
...@@ -3,6 +3,8 @@ package com.skua.modules.common.service; ...@@ -3,6 +3,8 @@ package com.skua.modules.common.service;
3 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 3 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 4 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 import com.skua.modules.common.vo.DepartVO;
7
6 import java.util.List; 8 import java.util.List;
7 import java.util.Map; 9 import java.util.Map;
8 10
...@@ -47,4 +49,6 @@ public interface ICommonSqlService { ...@@ -47,4 +49,6 @@ public interface ICommonSqlService {
47 String getChildDepartId( String departId); 49 String getChildDepartId( String departId);
48 50
49 String getChildFactorys(String departId); 51 String getChildFactorys(String departId);
52
53 List<DepartVO> getChildDepartList(String departId);
50 } 54 }
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 import com.skua.modules.common.mapper.CommonSqlMapper; 6 import com.skua.modules.common.mapper.CommonSqlMapper;
7 import com.skua.modules.common.service.ICommonSqlService; 7 import com.skua.modules.common.service.ICommonSqlService;
8 import com.skua.modules.common.vo.DepartVO;
8 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
9 10
10 import javax.annotation.Resource; 11 import javax.annotation.Resource;
...@@ -96,4 +97,10 @@ public class CommonSqlServiceImpl implements ICommonSqlService { ...@@ -96,4 +97,10 @@ public class CommonSqlServiceImpl implements ICommonSqlService {
96 return commonSqlMapper.getChildFactorys(departId); 97 return commonSqlMapper.getChildFactorys(departId);
97 } 98 }
98 99
100 @Override
101 public List<DepartVO> getChildDepartList(String departId) {
102 List<DepartVO> list = commonSqlMapper.getChildDepartList(departId);
103 return list;
104 }
105
99 } 106 }
......
1 package com.skua.modules.common.vo;
2
3 import io.swagger.annotations.ApiModelProperty;
4 import lombok.Data;
5
6 @Data
7 public class DepartVO {
8
9 @ApiModelProperty(value = "机构编码")
10 private String departId;
11 @ApiModelProperty(value = "机构名称")
12 private String departName;
13
14 }
15
...@@ -115,6 +115,7 @@ public class AjhMeetingSendController { ...@@ -115,6 +115,7 @@ public class AjhMeetingSendController {
115 LocalDateTime nowTime = LocalDateTime.now(); 115 LocalDateTime nowTime = LocalDateTime.now();
116 List<AjhMeetingSend> list = ajhMeetingSendService.list(); 116 List<AjhMeetingSend> list = ajhMeetingSendService.list();
117 List<AjhMeetingSend> newList = new ArrayList<>(); 117 List<AjhMeetingSend> newList = new ArrayList<>();
118 if(list.size() > 0){
118 for (AjhMeetingSend ajhMeetingSend : list) { 119 for (AjhMeetingSend ajhMeetingSend : list) {
119 if(ConvertUtils.isNotEmpty(ajhMeetingSend.getMeetStartTime())&& 120 if(ConvertUtils.isNotEmpty(ajhMeetingSend.getMeetStartTime())&&
120 ConvertUtils.isNotEmpty(ajhMeetingSend.getMeetEndTime())){ 121 ConvertUtils.isNotEmpty(ajhMeetingSend.getMeetEndTime())){
...@@ -134,6 +135,7 @@ public class AjhMeetingSendController { ...@@ -134,6 +135,7 @@ public class AjhMeetingSendController {
134 } 135 }
135 ajhMeetingSendService.updateBatchById(newList); 136 ajhMeetingSendService.updateBatchById(newList);
136 } 137 }
138 }
137 139
138 @AutoLog(value = "会议记录-数量统计") 140 @AutoLog(value = "会议记录-数量统计")
139 @ApiOperation(value="会议记录-数量统计", notes="会议记录-数量统计") 141 @ApiOperation(value="会议记录-数量统计", notes="会议记录-数量统计")
......
...@@ -94,7 +94,7 @@ public class AjhMeetingSend { ...@@ -94,7 +94,7 @@ public class AjhMeetingSend {
94 @Dict(dicCode = "accept_flag") 94 @Dict(dicCode = "accept_flag")
95 private String acceptFlag; 95 private String acceptFlag;
96 /**发布状态(0未发布,1已发布,2已撤销)*/ 96 /**发布状态(0未发布,1已发布,2已撤销)*/
97 @Excel(name = "发布状态(0未发布,1已发布,2已撤销)", width = 15 ,dicCode = "meet_status" ,orderNum = "10") 97 @Excel(name = "发布状态", width = 15 ,dicCode = "meet_status" ,orderNum = "10")
98 @ApiModelProperty(value = "发布状态(0未发布,1已发布,2已撤销)") 98 @ApiModelProperty(value = "发布状态(0未发布,1已发布,2已撤销)")
99 @Dict(dicCode = "meet_status") 99 @Dict(dicCode = "meet_status")
100 private String sendStatus; 100 private String sendStatus;
......
...@@ -6,6 +6,11 @@ import java.util.List; ...@@ -6,6 +6,11 @@ import java.util.List;
6 import java.util.Map; 6 import java.util.Map;
7 import java.util.Set; 7 import java.util.Set;
8 8
9 import com.skua.common.constant.ReportConstant;
10 import com.skua.modules.common.service.ICommonSqlService;
11 import com.skua.modules.common.vo.DepartVO;
12 import com.skua.modules.dataAnalysis.service.IFactoryCenterService;
13 import com.skua.tool.util.DateUtils;
9 import org.apache.commons.lang.StringUtils; 14 import org.apache.commons.lang.StringUtils;
10 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.jdbc.core.JdbcTemplate; 16 import org.springframework.jdbc.core.JdbcTemplate;
...@@ -20,6 +25,8 @@ import com.skua.modules.custom.handle.ICustomHandle; ...@@ -20,6 +25,8 @@ import com.skua.modules.custom.handle.ICustomHandle;
20 import com.skua.modules.custom.service.IFCustomReportDatasetService; 25 import com.skua.modules.custom.service.IFCustomReportDatasetService;
21 import com.skua.modules.custom.vo.FCustomReportDatasetVO; 26 import com.skua.modules.custom.vo.FCustomReportDatasetVO;
22 27
28 import javax.annotation.Resource;
29
23 /** 30 /**
24 * <pre> 31 * <pre>
25 * 运营日报自定义逻辑 32 * 运营日报自定义逻辑
...@@ -31,41 +38,94 @@ import com.skua.modules.custom.vo.FCustomReportDatasetVO; ...@@ -31,41 +38,94 @@ import com.skua.modules.custom.vo.FCustomReportDatasetVO;
31 public class YyrbReportHandle implements ICustomHandle{ 38 public class YyrbReportHandle implements ICustomHandle{
32 @Autowired 39 @Autowired
33 private IFCustomReportDatasetService fCustomReportDatasetService; 40 private IFCustomReportDatasetService fCustomReportDatasetService;
41 @Autowired
42 private ICommonSqlService commonSqlService;
43
34 @Override 44 @Override
35 public Map<String, List<Map<String, ValueEntity>>> buildDataMap(String reportId, String startTime, String endTime, 45 public Map<String, List<Map<String, ValueEntity>>> buildDataMap(String reportId, String startTime, String endTime,
36 String departId,String indexCode) { 46 String departId,String indexCode) {
37 //主库数据源 47 String departIds = "";
38 JdbcTemplate masterDB = (JdbcTemplate)SpringContextUtils.getBean("master"); 48 List<DepartVO> departList = commonSqlService.getChildDepartList(departId);
39 49 for (DepartVO departVO : departList) {
50 departIds = departVO.getDepartId() + "," + departIds;
51 }
52 String[] departIdArray = departIds.split(",");
53 Map<String,List<Map<String,ValueEntity>>> resMap = new HashMap<String,List<Map<String,ValueEntity>>>();
40 Map<String,List<Map<String,ValueEntity>>> dataMap = new HashMap<String,List<Map<String,ValueEntity>>>(); 54 Map<String,List<Map<String,ValueEntity>>> dataMap = new HashMap<String,List<Map<String,ValueEntity>>>();
41 //获取数据集
42 List<FCustomReportDatasetVO> dataSetList = fCustomReportDatasetService.getDataset(reportId);
43 for(FCustomReportDatasetVO fv : dataSetList) {
44 String dataSetId = fv.getDatasetId();
45 //获取填报数据及报表数据项信息,组装报表所需数据机构 55 //获取填报数据及报表数据项信息,组装报表所需数据机构
46 List<Map<String,ValueEntity>> list = new ArrayList<Map<String,ValueEntity>>(); 56 List<Map<String,ValueEntity>> list = new ArrayList<Map<String,ValueEntity>>();
47 //根据数据集id获取数据项及填报数据 57 //根据数据集id获取数据项及填报数据
48 List<FCustomReportDatasetVO> dataFieldList = fCustomReportDatasetService.getDataField(dataSetId); 58 List<FCustomReportDatasetVO> dataFieldList1 = fCustomReportDatasetService.getDataField(ReportConstant.view3a24);
49 Map<String,String> dataFieldDict = new HashMap<String,String>(); 59 Map<String,String> dataFieldDict = new HashMap<String,String>();
50 for(FCustomReportDatasetVO dataField : dataFieldList) { 60 for(FCustomReportDatasetVO dataField : dataFieldList1) {
61 dataFieldDict.put(dataField.getDatasetId(), dataField.getDatasetName());
62 }
63 List<FCustomReportDatasetVO> dataFieldList2 = fCustomReportDatasetService.getDataField(ReportConstant.view2119);
64 for(FCustomReportDatasetVO dataField : dataFieldList2) {
51 dataFieldDict.put(dataField.getDatasetId(), dataField.getDatasetName()); 65 dataFieldDict.put(dataField.getDatasetId(), dataField.getDatasetName());
52 } 66 }
53 //添加厂站、时间字段 67 //添加厂站、时间字段
54 dataFieldDict.put("depart_name", "厂站名称"); 68 dataFieldDict.put("depart_name", "机构名称");
55 dataFieldDict.put("time", "时间"); 69 dataFieldDict.put("time", "时间");
56 dataFieldDict.put("paramTime", "参数时间"); 70 dataFieldDict.put("paramDepart", "参数机构");
57 71 dataFieldDict.put("depart_id", "机构编码");
58 //获取填报数据 72 //获取填报数据
59 //String dataViewName = "view_"+dataSetId.substring(0,4); 73 String dataViewName3a24 = ReportViewUtil.buildView(ReportConstant.view3a24,"", departIds, startTime, endTime);
60 String dataViewName = ReportViewUtil.buildView(dataSetId,"", departId, startTime, endTime); 74 String dataViewName2119 = ReportViewUtil.buildView(ReportConstant.view2119,"", departIds, startTime, endTime);
61 //结果集 75 //结果集
62 List<Map<String, Object>> valueMapList = fCustomReportDatasetService.queryReportValue(dataViewName,startTime,endTime,departId); 76 List<Map<String, Object>> szMapList = fCustomReportDatasetService.querySzYyrbReport(dataViewName2119, startTime, endTime, departIds);
63 for(Map<String,Object> valueMap : valueMapList) { 77 list = changeDataList(szMapList,list,startTime,dataFieldDict);
78 dataMap.put("水质水量报表", list);
79
80 List<Map<String, Object>> nhMapList = fCustomReportDatasetService.queryNhYyrbReport(dataViewName3a24, startTime, endTime, departIds);
81 list = changeDataList(nhMapList,list,startTime,dataFieldDict);
82 dataMap.put("能耗报表", list);
83
84 List<Map<String,ValueEntity>> dList = new ArrayList<>();
85 for (DepartVO departVO : departList) {
86 String departStr = departVO.getDepartId();
87 Map<String,ValueEntity> newDataMap = new HashMap<>();
88 ValueEntity codeEntity = new ValueEntity();
89 codeEntity.setValue(departStr);
90 newDataMap.put("机构编码", codeEntity);
91 ValueEntity nameEntity = new ValueEntity();
92 nameEntity.setValue(departVO.getDepartName());
93 newDataMap.put("机构名称", nameEntity);
94 for (Map.Entry<String, List<Map<String,ValueEntity>>> entry : dataMap.entrySet()) {
95 List<Map<String,ValueEntity>> dataList = entry.getValue();
96 for (Map<String,ValueEntity> dMap: dataList) {
97 if(departStr.equals(dMap.get("机构编码").getValue())){
98 newDataMap.putAll(dMap);
99 }
100 }
101 }
102 dList.add(newDataMap);
103 }
104 resMap.put("综合数据源", dList);
105 return resMap;
106 }
107
108 @Override
109 public String buildWaterQualityAlarmValue(String reportId, String departId, String json) {
110 return json;
111 }
112
113 /**
114 * 构造LIST
115 * @param szMapList
116 * @param list
117 * @param startTime
118 * @param dataFieldDict
119 * @return
120 */
121 private List<Map<String, ValueEntity>> changeDataList(List<Map<String, Object>> szMapList, List<Map<String, ValueEntity>> list,
122 String startTime, Map<String, String> dataFieldDict) {
123 for(Map<String,Object> valueMap : szMapList) {
64 Map<String,ValueEntity> handleMap = new HashMap<String,ValueEntity>(); 124 Map<String,ValueEntity> handleMap = new HashMap<String,ValueEntity>();
65 //添加时间参数 125 //添加时间参数
66 ValueEntity startTimeValueEntity = new ValueEntity(); 126 ValueEntity startTimeValueEntity = new ValueEntity();
67 startTimeValueEntity.setValue(startTime); 127 startTimeValueEntity.setValue(startTime);
68 handleMap.put("参数时间", startTimeValueEntity); 128 handleMap.put("参数机构", startTimeValueEntity);
69 Set<String> keySet = valueMap.keySet(); 129 Set<String> keySet = valueMap.keySet();
70 for(String key : keySet) { 130 for(String key : keySet) {
71 if(!StringUtils.isEmpty(dataFieldDict.get(key))) { 131 if(!StringUtils.isEmpty(dataFieldDict.get(key))) {
...@@ -76,110 +136,7 @@ public class YyrbReportHandle implements ICustomHandle{ ...@@ -76,110 +136,7 @@ public class YyrbReportHandle implements ICustomHandle{
76 } 136 }
77 list.add(handleMap); 137 list.add(handleMap);
78 } 138 }
79 dataMap.put(fv.getDatasetName(), list); 139 return list;
80 }
81
82 List<Map<String,ValueEntity>> bzList = new ArrayList<Map<String,ValueEntity>>();
83 Map<String,ValueEntity> bzMap = new HashMap<String,ValueEntity>();
84 bzList.add(bzMap);
85 dataMap.put("水质标准", bzList);
86 //添加进出水标准及污泥含水率
87 //获取污泥含水率
88 List<Map<String, Object>> moistureRateList = masterDB.queryForList("select moisture_rate from sys_factory_info where depart_id='"+departId+"'");
89 Map<String,Object> moistureRateMap = new HashMap<String,Object>();
90 if(moistureRateList!=null&&moistureRateList.size()>0) {
91 moistureRateMap = moistureRateList.get(0);
92 }
93 String wnhsl = ConvertUtils.getString(moistureRateMap.get("moisture_rate"), "-");
94
95 ValueEntity wnhslValueEntity = new ValueEntity();
96 wnhslValueEntity.setValue(wnhsl=="-"?"-":"≤"+wnhsl);
97 bzMap.put("污泥含水率", wnhslValueEntity);
98
99 //获取进水
100 Map<String,Object> inLevelMap = new HashMap<String,Object>();
101 List<Map<String, Object>> inLevelList = masterDB.queryForList("select index_code,upper from water_quality_in_level where depart_id='"+departId+"'");
102 if(inLevelList!=null&&inLevelList.size()>0) {
103 for(Map<String,Object> map :inLevelList) {
104 inLevelMap.put(String.valueOf(map.get("index_code")), map.get("upper"));
105 }
106 }
107 String jscod = ConvertUtils.getString(inLevelMap.get("JSCOD"), "-");
108 ValueEntity jscodValueEntity = new ValueEntity();
109 jscodValueEntity.setValue(jscod=="-"?"-":"≤"+jscod);
110 bzMap.put("进水化学需氧量 CODcr", jscodValueEntity);
111 String jsbod = ConvertUtils.getString(inLevelMap.get("JSBOD"), "-");
112 ValueEntity jsbodValueEntity = new ValueEntity();
113 jsbodValueEntity.setValue(jsbod=="-"?"-":"≤"+jsbod);
114 bzMap.put("进水五日生化需氧量BOD5", jsbodValueEntity);
115
116 String jsss = ConvertUtils.getString(inLevelMap.get("JSSS"), "-");
117 ValueEntity jsssValueEntity = new ValueEntity();
118 jsssValueEntity.setValue(jsss=="-"?"-":"≤"+jsss);
119 bzMap.put("进水悬浮固体SS", jsssValueEntity);
120
121 String jsnh3n = ConvertUtils.getString(inLevelMap.get("JSNH3N"), "-");
122 ValueEntity jsnh3nValueEntity = new ValueEntity();
123 jsnh3nValueEntity.setValue(jsnh3n=="-"?"-":"≤"+jsnh3n);
124 bzMap.put("进水氨氮NH₃-N", jsnh3nValueEntity);
125
126 String jstn = ConvertUtils.getString(inLevelMap.get("JSTN"), "-");
127 ValueEntity jstnValueEntity = new ValueEntity();
128 jstnValueEntity.setValue(jstn=="-"?"-":"≤"+jstn);
129 bzMap.put("进水总氮TN", jstnValueEntity);
130
131 String jstp = ConvertUtils.getString(inLevelMap.get("JSTP"), "-");
132 ValueEntity jstpValueEntity = new ValueEntity();
133 jstpValueEntity.setValue(jstp=="-"?"-":"≤"+jstp);
134 bzMap.put("进水总磷TP", jstpValueEntity);
135
136
137
138 //获取出水
139 Map<String,Object> outLevelMap = new HashMap<String,Object>();
140 List<Map<String, Object>> outLevelList = masterDB.queryForList("select a.id,b.alarm_param_code as index_code,b.alarm_param_upper_limit as upper,alarm_param_lower_limit from alarm_level_standard_config a left join alarm_param_standard_config b\r\n" +
141 "on a.id=b.alarm_level_standard_id where a.alarm_standard_level_code=(select out_level from sys_factory_info where depart_id='"+departId+"')");
142 if(outLevelList!=null&&outLevelList.size()>0) {
143 for(Map<String,Object> map :outLevelList) {
144 outLevelMap.put(String.valueOf(map.get("index_code")), map.get("upper"));
145 }
146 }
147
148 String cscod = ConvertUtils.getString(outLevelMap.get("CSCOD"), "-");
149 ValueEntity cscodValueEntity = new ValueEntity();
150 cscodValueEntity.setValue(cscod=="-"?"-":"≤"+cscod);
151 bzMap.put("出水化学需氧量 CODcr", cscodValueEntity);
152
153 String csbod = ConvertUtils.getString(outLevelMap.get("CSBOD"), "-");
154 ValueEntity csbodValueEntity = new ValueEntity();
155 csbodValueEntity.setValue(csbod=="-"?"-":"≤"+csbod);
156 bzMap.put("出水五日生化需氧量BOD5", csbodValueEntity);
157
158 String csss = ConvertUtils.getString(outLevelMap.get("CSSS"), "-");
159 ValueEntity csssValueEntity = new ValueEntity();
160 csssValueEntity.setValue(csss=="-"?"-":"≤"+csss);
161 bzMap.put("出水悬浮固体SS", csssValueEntity);
162
163 String csnh3n = ConvertUtils.getString(outLevelMap.get("CSNH3N"), "-");
164 ValueEntity csnh3nValueEntity = new ValueEntity();
165 csnh3nValueEntity.setValue(csnh3n=="-"?"-":"≤"+csnh3n);
166 bzMap.put("出水氨氮NH₃-N", csnh3nValueEntity);
167
168 String cstn = ConvertUtils.getString(outLevelMap.get("CSTN"), "-");
169 ValueEntity cstnValueEntity = new ValueEntity();
170 cstnValueEntity.setValue(cstn=="-"?"-":"≤"+cstn);
171 bzMap.put("出水总氮TN", cstnValueEntity);
172
173 String cstp = ConvertUtils.getString(outLevelMap.get("CSTP"), "-");
174 ValueEntity cstpValueEntity = new ValueEntity();
175 cstpValueEntity.setValue(cstp=="-"?"-":"≤"+cstp);
176 bzMap.put("出水总磷TP", cstpValueEntity);
177
178 return dataMap;
179 }
180 @Override
181 public String buildWaterQualityAlarmValue(String reportId, String departId, String json) {
182 return json;
183 } 140 }
184 141
185 } 142 }
......
...@@ -136,4 +136,12 @@ public interface FCustomReportDatasetMapper extends BaseMapper<FCustomReportData ...@@ -136,4 +136,12 @@ public interface FCustomReportDatasetMapper extends BaseMapper<FCustomReportData
136 List<Map<String, Object>> queryNhYyybReport(@Param(value="dataViewName3a24") String dataViewName3a24, 136 List<Map<String, Object>> queryNhYyybReport(@Param(value="dataViewName3a24") String dataViewName3a24,
137 @Param(value="startTime") String startTime, @Param(value="endTime") String endTime, 137 @Param(value="startTime") String startTime, @Param(value="endTime") String endTime,
138 @Param(value="departId") String departId); 138 @Param(value="departId") String departId);
139
140 List<Map<String, Object>> querySzYyrbReport(@Param(value="dataViewName2119") String dataViewName2119,
141 @Param(value="startTime")String startTime, @Param(value="endTime")String endTime,
142 @Param(value="departId") String departId);
143
144 List<Map<String, Object>> queryNhYyrbReport(@Param(value="dataViewName3a24") String dataViewName3a24,
145 @Param(value="startTime") String startTime, @Param(value="endTime") String endTime,
146 @Param(value="departId") String departId);
139 } 147 }
......
...@@ -515,8 +515,8 @@ ...@@ -515,8 +515,8 @@
515 515
516 <select id="querySzYynbReport" resultType="java.util.HashMap"> 516 <select id="querySzYynbReport" resultType="java.util.HashMap">
517 SELECT 517 SELECT
518 ROUND( SUM( v.JSL ), 2 ) AS `JSL`, 518 ROUND( SUM( v.JSL )/10000, 2 ) AS `JSL`,
519 ROUND( SUM( v.CSL ), 2 ) AS `CSL`, 519 ROUND( SUM( v.CSL )/10000, 2 ) AS `CSL`,
520 ROUND( AVG( v.JSPH ), 2 ) AS `JSPH`, 520 ROUND( AVG( v.JSPH ), 2 ) AS `JSPH`,
521 ROUND( AVG( v.CSPH ), 2 ) AS `CSPH`, 521 ROUND( AVG( v.CSPH ), 2 ) AS `CSPH`,
522 ROUND( AVG( v.JSCOD ), 2 ) AS `JSCOD`, 522 ROUND( AVG( v.JSCOD ), 2 ) AS `JSCOD`,
...@@ -547,41 +547,41 @@ ...@@ -547,41 +547,41 @@
547 547
548 <select id="queryNhYynbReport" resultType="java.util.HashMap"> 548 <select id="queryNhYynbReport" resultType="java.util.HashMap">
549 SELECT 549 SELECT
550 SUM(v3.PFS) AS PFS, 550 ROUND(SUM(v3.PFS),2) AS PFS,
551 SUM(v3.FHTY) AS FHTY, 551 ROUND(SUM(v3.FHTY),2) AS FHTY,
552 SUM(v3.RYXNJ) AS RYXNJ, 552 ROUND(SUM(v3.RYXNJ),2) AS RYXNJ,
553 SUM(v3.YWL) AS YWL, 553 ROUND(SUM(v3.YWL),2) AS YWL,
554 SUM(v3.GXCLJ) AS GXCLJ, 554 ROUND(SUM(v3.GXCLJ),2) AS GXCLJ,
555 SUM(v3.CH3COONA) AS CH3COONA, 555 ROUND(SUM(v3.CH3COONA),2) AS CH3COONA,
556 SUM(v3.HXT) AS HXT, 556 ROUND(SUM(v3.HXT),2) AS HXT,
557 SUM(v3.FECL3) AS FECL3, 557 ROUND(SUM(v3.FECL3),2) AS FECL3,
558 SUM(v3.SH) AS SH, 558 ROUND(SUM(v3.SH),2) AS SH,
559 SUM(v3.CH3COOH) AS CH3COOH, 559 ROUND(SUM(v3.CH3COOH),2) AS CH3COOH,
560 SUM(v3.FESO4G) AS FESO4G, 560 ROUND(SUM(v3.FESO4G),2) AS FESO4G,
561 SUM(v3.FESO4Y) AS FESO4Y, 561 ROUND(SUM(v3.FESO4Y),2) AS FESO4Y,
562 SUM(v3.H2O2) AS H2O2, 562 ROUND(SUM(v3.H2O2),2) AS H2O2,
563 SUM(v3.GFFDL) AS GFFDL, 563 ROUND(SUM(v3.GFFDL),2) AS GFFDL,
564 SUM(v3.QY) AS QY, 564 ROUND(SUM(v3.QY),2) AS QY,
565 SUM(v3.GFCZL) AS GFCZL, 565 ROUND(SUM(v3.GFCZL),2) AS GFCZL,
566 SUM(v3.WNHSL) AS WNHSL, 566 ROUND(SUM(v3.WNHSL),2) AS WNHSL,
567 SUM(v3.WFCSL) AS WFCSL, 567 ROUND(SUM(v3.WFCSL),2) AS WFCSL,
568 SUM(v3.WFCZL) AS WFCZL, 568 ROUND(SUM(v3.WFCZL),2) AS WFCZL,
569 SUM(v3.DLJZ) AS DLJZ, 569 ROUND(SUM(v3.DLJZ),2) AS DLJZ,
570 SUM(v3.GFSYL) AS GFSYL, 570 ROUND(SUM(v3.GFSYL),2) AS GFSYL,
571 SUM(v3.WNL) AS WNL, 571 ROUND(SUM(v3.WNL),2) AS WNL,
572 SUM(v3.DLFZ) AS DLFZ, 572 ROUND(SUM(v3.DLFZ),2) AS DLFZ,
573 SUM(v3.DLPZ) AS DLPZ, 573 ROUND(SUM(v3.DLPZ),2) AS DLPZ,
574 SUM(v3.DLGZ) AS DLGZ, 574 ROUND(SUM(v3.DLGZ),2) AS DLGZ,
575 SUM(v3.DLHJ) AS DLHJ, 575 ROUND(SUM(v3.DLHJ)/10000,2) AS DLHJ,
576 SUM(v3.YSL) AS YSL, 576 ROUND(SUM(v3.YSL),2) AS YSL,
577 SUM(v3.PAMZ) AS PAMZ, 577 ROUND(SUM(v3.PAMZ),2) AS PAMZ,
578 SUM(v3.PAMF) AS PAMF, 578 ROUND(SUM(v3.PAMF),2) AS PAMF,
579 SUM(v3.PAMRJ) AS PAMRJ, 579 ROUND(SUM(v3.PAMRJ),2) AS PAMRJ,
580 SUM(v3.SCLPAMZ) AS SCLPAMZ, 580 ROUND(SUM(v3.SCLPAMZ),2) AS SCLPAMZ,
581 SUM(v3.SCLPAMF) AS SCLPAMF, 581 ROUND(SUM(v3.SCLPAMF),2) AS SCLPAMF,
582 SUM(v3.NACLO) AS NACLO, 582 ROUND(SUM(v3.NACLO),2) AS NACLO,
583 SUM(v3.PACGT) AS PACGT, 583 ROUND(SUM(v3.PACGT),2) AS PACGT,
584 SUM(v3.PACYT) AS PACYT, 584 ROUND(SUM(v3.PACYT),2) AS PACYT,
585 v3.BZ AS BZ, 585 v3.BZ AS BZ,
586 v3.depart_id AS depart_id, 586 v3.depart_id AS depart_id,
587 LEFT(v3.time,7) AS time 587 LEFT(v3.time,7) AS time
...@@ -598,8 +598,8 @@ ...@@ -598,8 +598,8 @@
598 598
599 <select id="querySzYyybReport" resultType="java.util.HashMap"> 599 <select id="querySzYyybReport" resultType="java.util.HashMap">
600 SELECT 600 SELECT
601 ROUND( SUM( v.JSL ), 2 ) AS `JSL`, 601 ROUND( SUM( v.JSL )/10000, 2 ) AS `JSL`,
602 ROUND( SUM( v.CSL ), 2 ) AS `CSL`, 602 ROUND( SUM( v.CSL )/10000, 2 ) AS `CSL`,
603 ROUND( AVG( v.JSPH ), 2 ) AS `JSPH`, 603 ROUND( AVG( v.JSPH ), 2 ) AS `JSPH`,
604 ROUND( AVG( v.CSPH ), 2 ) AS `CSPH`, 604 ROUND( AVG( v.CSPH ), 2 ) AS `CSPH`,
605 ROUND( AVG( v.JSCOD ), 2 ) AS `JSCOD`, 605 ROUND( AVG( v.JSCOD ), 2 ) AS `JSCOD`,
...@@ -629,41 +629,41 @@ ...@@ -629,41 +629,41 @@
629 629
630 <select id="queryNhYyybReport" resultType="java.util.HashMap"> 630 <select id="queryNhYyybReport" resultType="java.util.HashMap">
631 SELECT 631 SELECT
632 SUM(v3.PFS) AS PFS, 632 ROUND(SUM(v3.PFS),2) AS PFS,
633 SUM(v3.FHTY) AS FHTY, 633 ROUND(SUM(v3.FHTY),2) AS FHTY,
634 SUM(v3.RYXNJ) AS RYXNJ, 634 ROUND(SUM(v3.RYXNJ),2) AS RYXNJ,
635 SUM(v3.YWL) AS YWL, 635 ROUND(SUM(v3.YWL),2) AS YWL,
636 SUM(v3.GXCLJ) AS GXCLJ, 636 ROUND(SUM(v3.GXCLJ),2) AS GXCLJ,
637 SUM(v3.CH3COONA) AS CH3COONA, 637 ROUND(SUM(v3.CH3COONA),2) AS CH3COONA,
638 SUM(v3.HXT) AS HXT, 638 ROUND(SUM(v3.HXT),2) AS HXT,
639 SUM(v3.FECL3) AS FECL3, 639 ROUND(SUM(v3.FECL3),2) AS FECL3,
640 SUM(v3.SH) AS SH, 640 ROUND(SUM(v3.SH),2) AS SH,
641 SUM(v3.CH3COOH) AS CH3COOH, 641 ROUND(SUM(v3.CH3COOH),2) AS CH3COOH,
642 SUM(v3.FESO4G) AS FESO4G, 642 ROUND(SUM(v3.FESO4G),2) AS FESO4G,
643 SUM(v3.FESO4Y) AS FESO4Y, 643 ROUND(SUM(v3.FESO4Y),2) AS FESO4Y,
644 SUM(v3.H2O2) AS H2O2, 644 ROUND(SUM(v3.H2O2),2) AS H2O2,
645 SUM(v3.GFFDL) AS GFFDL, 645 ROUND(SUM(v3.GFFDL),2) AS GFFDL,
646 SUM(v3.QY) AS QY, 646 ROUND(SUM(v3.QY),2) AS QY,
647 SUM(v3.GFCZL) AS GFCZL, 647 ROUND(SUM(v3.GFCZL),2) AS GFCZL,
648 SUM(v3.WNHSL) AS WNHSL, 648 ROUND(SUM(v3.WNHSL),2) AS WNHSL,
649 SUM(v3.WFCSL) AS WFCSL, 649 ROUND(SUM(v3.WFCSL),2) AS WFCSL,
650 SUM(v3.WFCZL) AS WFCZL, 650 ROUND(SUM(v3.WFCZL),2) AS WFCZL,
651 SUM(v3.DLJZ) AS DLJZ, 651 ROUND(SUM(v3.DLJZ),2) AS DLJZ,
652 SUM(v3.GFSYL) AS GFSYL, 652 ROUND(SUM(v3.GFSYL),2) AS GFSYL,
653 SUM(v3.WNL) AS WNL, 653 ROUND(SUM(v3.WNL),2) AS WNL,
654 SUM(v3.DLFZ) AS DLFZ, 654 ROUND(SUM(v3.DLFZ),2) AS DLFZ,
655 SUM(v3.DLPZ) AS DLPZ, 655 ROUND(SUM(v3.DLPZ),2) AS DLPZ,
656 SUM(v3.DLGZ) AS DLGZ, 656 ROUND(SUM(v3.DLGZ),2) AS DLGZ,
657 SUM(v3.DLHJ) AS DLHJ, 657 ROUND(SUM(v3.DLHJ)/10000,2) AS DLHJ,
658 SUM(v3.YSL) AS YSL, 658 ROUND(SUM(v3.YSL),2) AS YSL,
659 SUM(v3.PAMZ) AS PAMZ, 659 ROUND(SUM(v3.PAMZ),2) AS PAMZ,
660 SUM(v3.PAMF) AS PAMF, 660 ROUND(SUM(v3.PAMF),2) AS PAMF,
661 SUM(v3.PAMRJ) AS PAMRJ, 661 ROUND(SUM(v3.PAMRJ),2) AS PAMRJ,
662 SUM(v3.SCLPAMZ) AS SCLPAMZ, 662 ROUND(SUM(v3.SCLPAMZ),2) AS SCLPAMZ,
663 SUM(v3.SCLPAMF) AS SCLPAMF, 663 ROUND(SUM(v3.SCLPAMF),2) AS SCLPAMF,
664 SUM(v3.NACLO) AS NACLO, 664 ROUND(SUM(v3.NACLO),2) AS NACLO,
665 SUM(v3.PACGT) AS PACGT, 665 ROUND(SUM(v3.PACGT),2) AS PACGT,
666 SUM(v3.PACYT) AS PACYT, 666 ROUND(SUM(v3.PACYT),2) AS PACYT,
667 v3.BZ AS BZ, 667 v3.BZ AS BZ,
668 v3.depart_id AS depart_id, 668 v3.depart_id AS depart_id,
669 v3.time 669 v3.time
...@@ -677,4 +677,90 @@ ...@@ -677,4 +677,90 @@
677 AND v3.time &lt;= #{endTime} 677 AND v3.time &lt;= #{endTime}
678 GROUP BY v3.time 678 GROUP BY v3.time
679 </select> 679 </select>
680
681 <select id="querySzYyrbReport" resultType="java.util.HashMap">
682 SELECT
683 ROUND( SUM( v.JSL )/10000, 2 ) AS `JSL`,
684 ROUND( SUM( v.CSL )/10000, 2 ) AS `CSL`,
685 ROUND( AVG( v.JSPH ), 2 ) AS `JSPH`,
686 ROUND( AVG( v.CSPH ), 2 ) AS `CSPH`,
687 ROUND( AVG( v.JSCOD ), 2 ) AS `JSCOD`,
688 ROUND( AVG( v.CSCOD ), 2 ) AS `CSCOD`,
689 ROUND( AVG( v.CSTN ), 2 ) AS `CSTN`,
690 ROUND( AVG( v.JSZD ), 2 ) AS `JSZD`,
691 ROUND( AVG( v.JSZL ), 2 ) AS `JSZL`,
692 ROUND( AVG( v.CSZL ), 2 ) AS `CSZL`,
693 ROUND( AVG( v.JSAD ), 2 ) AS `JSAD`,
694 ROUND( AVG( v.CSAD ), 2 ) AS `CSAD`,
695 ROUND( AVG( v.JSSS ), 2 ) AS `JSSS`,
696 ROUND( AVG( v.CSSS ), 2 ) AS `CSSS`,
697 v.BZ,
698 v.depart_id,
699 d.depart_name as depart_name,
700 v.time
701 FROM
702 ${dataViewName2119} v
703 LEFT JOIN sys_depart d ON v.depart_id = d.id
704 WHERE
705 v.depart_id IN
706 <foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
707 '${item}'
708 </foreach>
709 AND v.time &gt;= #{startTime}
710 AND v.time &lt;= #{endTime}
711 GROUP BY v.depart_id
712 </select>
713
714 <select id="queryNhYyrbReport" resultType="java.util.HashMap">
715 SELECT
716 ROUND(SUM(v3.PFS),2) AS PFS,
717 ROUND(SUM(v3.FHTY),2) AS FHTY,
718 ROUND(SUM(v3.RYXNJ),2) AS RYXNJ,
719 ROUND(SUM(v3.YWL),2) AS YWL,
720 ROUND(SUM(v3.GXCLJ),2) AS GXCLJ,
721 ROUND(SUM(v3.CH3COONA),2) AS CH3COONA,
722 ROUND(SUM(v3.HXT),2) AS HXT,
723 ROUND(SUM(v3.FECL3),2) AS FECL3,
724 ROUND(SUM(v3.SH),2) AS SH,
725 ROUND(SUM(v3.CH3COOH),2) AS CH3COOH,
726 ROUND(SUM(v3.FESO4G),2) AS FESO4G,
727 ROUND(SUM(v3.FESO4Y),2) AS FESO4Y,
728 ROUND(SUM(v3.H2O2),2) AS H2O2,
729 ROUND(SUM(v3.GFFDL),2) AS GFFDL,
730 ROUND(SUM(v3.QY),2) AS QY,
731 ROUND(SUM(v3.GFCZL),2) AS GFCZL,
732 ROUND(SUM(v3.WNHSL),2) AS WNHSL,
733 ROUND(SUM(v3.WFCSL),2) AS WFCSL,
734 ROUND(SUM(v3.WFCZL),2) AS WFCZL,
735 ROUND(SUM(v3.DLJZ),2) AS DLJZ,
736 ROUND(SUM(v3.GFSYL),2) AS GFSYL,
737 ROUND(SUM(v3.WNL),2) AS WNL,
738 ROUND(SUM(v3.DLFZ),2) AS DLFZ,
739 ROUND(SUM(v3.DLPZ),2) AS DLPZ,
740 ROUND(SUM(v3.DLGZ),2) AS DLGZ,
741 ROUND(SUM(v3.DLHJ)/10000,2) AS DLHJ,
742 ROUND(SUM(v3.YSL),2) AS YSL,
743 ROUND(SUM(v3.PAMZ),2) AS PAMZ,
744 ROUND(SUM(v3.PAMF),2) AS PAMF,
745 ROUND(SUM(v3.PAMRJ),2) AS PAMRJ,
746 ROUND(SUM(v3.SCLPAMZ),2) AS SCLPAMZ,
747 ROUND(SUM(v3.SCLPAMF),2) AS SCLPAMF,
748 ROUND(SUM(v3.NACLO),2) AS NACLO,
749 ROUND(SUM(v3.PACGT),2) AS PACGT,
750 ROUND(SUM(v3.PACYT),2) AS PACYT,
751 v3.BZ AS BZ,
752 v3.depart_id AS depart_id,
753 d.depart_name as depart_name,
754 v3.time
755 FROM ${dataViewName3a24} v3
756 LEFT JOIN sys_depart d ON v3.depart_id = d.id
757 WHERE
758 v3.depart_id IN
759 <foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
760 '${item}'
761 </foreach>
762 AND v3.time &gt;= #{startTime}
763 AND v3.time &lt;= #{endTime}
764 GROUP BY v3.depart_id
765 </select>
680 </mapper> 766 </mapper>
......
...@@ -136,4 +136,8 @@ public interface IFCustomReportDatasetService extends IService<FCustomReportData ...@@ -136,4 +136,8 @@ public interface IFCustomReportDatasetService extends IService<FCustomReportData
136 List<Map<String, Object>> querySzYyybReport(String dataViewName2119, String startTime, String endTime, String departId); 136 List<Map<String, Object>> querySzYyybReport(String dataViewName2119, String startTime, String endTime, String departId);
137 137
138 List<Map<String, Object>> queryNhYyybReport(String dataViewName3a24, String startTime, String endTime, String departId); 138 List<Map<String, Object>> queryNhYyybReport(String dataViewName3a24, String startTime, String endTime, String departId);
139
140 List<Map<String, Object>> querySzYyrbReport(String dataViewName2119, String startTime, String endTime, String departId);
141
142 List<Map<String, Object>> queryNhYyrbReport(String dataViewName3a24, String startTime, String endTime, String departId);
139 } 143 }
......
...@@ -454,6 +454,18 @@ public class FCustomReportDatasetServiceImpl extends ServiceImpl<FCustomReportDa ...@@ -454,6 +454,18 @@ public class FCustomReportDatasetServiceImpl extends ServiceImpl<FCustomReportDa
454 return list; 454 return list;
455 } 455 }
456 456
457 @Override
458 public List<Map<String, Object>> querySzYyrbReport(String dataViewName2119, String startTime, String endTime, String departId) {
459 List<Map<String, Object>> list = mapper.querySzYyrbReport(dataViewName2119, startTime, endTime, departId);
460 return list;
461 }
462
463 @Override
464 public List<Map<String, Object>> queryNhYyrbReport(String dataViewName3a24, String startTime, String endTime, String departId) {
465 List<Map<String, Object>> list = mapper.queryNhYyrbReport(dataViewName3a24, startTime, endTime, departId);
466 return list;
467 }
468
457 /**转换为Map<部门编号,JnhbReportData> */ 469 /**转换为Map<部门编号,JnhbReportData> */
458 private Map<String,JnhbReportData> convertJnhbReportDataMap(List<JnhbReportData> dataList){// Map<部门编号,JnhbReportData> 470 private Map<String,JnhbReportData> convertJnhbReportDataMap(List<JnhbReportData> dataList){// Map<部门编号,JnhbReportData>
459 Map<String,JnhbReportData> dataMap = new HashMap<>(); 471 Map<String,JnhbReportData> dataMap = new HashMap<>();
......
...@@ -728,10 +728,13 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService { ...@@ -728,10 +728,13 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
728 Map<String, Object> maptb = factoryCenterMapper.getDhData(startDateTb, endDateTb, statisticsParam.getDepartId(), dataView3a24tb, dataView2119tb); 728 Map<String, Object> maptb = factoryCenterMapper.getDhData(startDateTb, endDateTb, statisticsParam.getDepartId(), dataView3a24tb, dataView2119tb);
729 if(maptb!=null){ 729 if(maptb!=null){
730 zdhTb = Double.parseDouble(maptb.get("zdh").toString()); 730 zdhTb = Double.parseDouble(maptb.get("zdh").toString());
731 rjdhTb = Double.parseDouble(maptb.get("rjdh").toString()); 731 if(zdhTb > 0.0){
732
733 zdhTb = Double.parseDouble(df.format(100*(zdh - zdhTb)/zdhTb)); 732 zdhTb = Double.parseDouble(df.format(100*(zdh - zdhTb)/zdhTb));
733 }
734 rjdhTb = Double.parseDouble(maptb.get("rjdh").toString());
735 if(rjdhTb > 0.0){
734 rjdhTb = Double.parseDouble(df.format(100*(rjdh - rjdhTb)/rjdhTb)); 736 rjdhTb = Double.parseDouble(df.format(100*(rjdh - rjdhTb)/rjdhTb));
737 }
735 if(maptb.get("dsdh")!=null){ 738 if(maptb.get("dsdh")!=null){
736 dsdhTb = Double.parseDouble(maptb.get("dsdh").toString()); 739 dsdhTb = Double.parseDouble(maptb.get("dsdh").toString());
737 dsdhTb = Double.parseDouble(df.format(100*(dsdh - dsdhTb)/dsdhTb)); 740 dsdhTb = Double.parseDouble(df.format(100*(dsdh - dsdhTb)/dsdhTb));
...@@ -743,9 +746,13 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService { ...@@ -743,9 +746,13 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
743 Map<String, Object> maphb = factoryCenterMapper.getDhData(startDateHb, endDateHb, statisticsParam.getDepartId(), dataView3a24hb, dataView2119hb); 746 Map<String, Object> maphb = factoryCenterMapper.getDhData(startDateHb, endDateHb, statisticsParam.getDepartId(), dataView3a24hb, dataView2119hb);
744 if(maphb!=null){ 747 if(maphb!=null){
745 zdhHb = Double.parseDouble(maphb.get("zdh").toString()); 748 zdhHb = Double.parseDouble(maphb.get("zdh").toString());
746 rjdhHb = Double.parseDouble(maphb.get("rjdh").toString()); 749 if(zdhHb > 0.0){
747 zdhHb = Double.parseDouble(df.format(100*(zdh - zdhHb)/zdhHb)); 750 zdhHb = Double.parseDouble(df.format(100*(zdh - zdhHb)/zdhHb));
751 }
752 rjdhHb = Double.parseDouble(maphb.get("rjdh").toString());
753 if(rjdhHb > 0.0){
748 rjdhHb = Double.parseDouble(df.format(100*(rjdh - rjdhHb)/rjdhHb)); 754 rjdhHb = Double.parseDouble(df.format(100*(rjdh - rjdhHb)/rjdhHb));
755 }
749 if(maphb.get("dsdh")!=null){ 756 if(maphb.get("dsdh")!=null){
750 dsdhHb = Double.parseDouble(maphb.get("dsdh").toString()); 757 dsdhHb = Double.parseDouble(maphb.get("dsdh").toString());
751 dsdhHb = Double.parseDouble(df.format(100*(dsdh - dsdhHb)/dsdhHb)); 758 dsdhHb = Double.parseDouble(df.format(100*(dsdh - dsdhHb)/dsdhHb));
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!