250c6beb79dcea5fc6b238433433ba7ad5a597f9.svn-base 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. package cn.com.goldenwater.dcproj.service.impl;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.dao.ChkSafeProdLedgerDao;
  4. import cn.com.goldenwater.dcproj.dao.ChkSafeSelsProjDao;
  5. import cn.com.goldenwater.dcproj.dao.OlBisInspOrgDao;
  6. import cn.com.goldenwater.dcproj.model.ChkSafeProdLedger;
  7. import cn.com.goldenwater.dcproj.model.ChkSafeSelsProj;
  8. import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
  9. import cn.com.goldenwater.dcproj.param.ChkSafeSelsProjParam;
  10. import cn.com.goldenwater.dcproj.service.ChkSafeProdLedgerService;
  11. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  12. import cn.com.goldenwater.dcproj.utils.expExcel.ExcelExport;
  13. import cn.com.goldenwater.dcproj.utils.expExcel.ExportAbstract;
  14. import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil;
  15. import cn.com.goldenwater.id.util.UuidUtil;
  16. import com.github.pagehelper.PageHelper;
  17. import com.github.pagehelper.PageInfo;
  18. import io.swagger.annotations.ApiModelProperty;
  19. import org.apache.commons.lang3.ArrayUtils;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.apache.poi.ss.usermodel.Cell;
  22. import org.apache.poi.ss.usermodel.Sheet;
  23. import org.apache.poi.ss.usermodel.Workbook;
  24. import org.apache.poi.ss.usermodel.WorkbookFactory;
  25. import org.slf4j.Logger;
  26. import org.slf4j.LoggerFactory;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.beans.factory.annotation.Value;
  29. import org.springframework.stereotype.Service;
  30. import org.springframework.transaction.annotation.Transactional;
  31. import javax.servlet.http.HttpServletResponse;
  32. import java.beans.BeanInfo;
  33. import java.beans.Introspector;
  34. import java.beans.PropertyDescriptor;
  35. import java.io.File;
  36. import java.io.FileInputStream;
  37. import java.io.FileNotFoundException;
  38. import java.io.IOException;
  39. import java.io.OutputStream;
  40. import java.lang.reflect.Field;
  41. import java.lang.reflect.Method;
  42. import java.math.BigDecimal;
  43. import java.math.RoundingMode;
  44. import java.net.URLEncoder;
  45. import java.text.ParseException;
  46. import java.text.SimpleDateFormat;
  47. import java.time.LocalDateTime;
  48. import java.util.ArrayList;
  49. import java.util.Calendar;
  50. import java.util.Date;
  51. import java.util.HashMap;
  52. import java.util.List;
  53. import java.util.Map;
  54. import java.util.Objects;
  55. import java.util.stream.Collectors;
  56. @Service
  57. @Transactional
  58. public class ChkSafeProdLedgerServiceImpl extends AbstractCrudService<ChkSafeProdLedger, ChkSafeProdLedger> implements ChkSafeProdLedgerService {
  59. private Logger logger = LoggerFactory.getLogger(getClass());
  60. @Autowired
  61. private ChkSafeProdLedgerDao chkSafeProdLedgerDao;
  62. @Value("${export.templatePath}")
  63. private String templatePath;
  64. @Autowired
  65. private ChkSafeSelsProjDao chkSafeSelsProjDao;
  66. @Autowired
  67. private OlBisInspOrgDao olBisInspOrgDao;
  68. /**
  69. * 导出模板
  70. * 水务行业安全大检查情况表
  71. */
  72. private String templateName = "chkSafeProdLedgerExport.xls";
  73. public ChkSafeProdLedgerServiceImpl(ChkSafeProdLedgerDao chkSafeProdLedgerDao) {
  74. super(chkSafeProdLedgerDao);
  75. this.chkSafeProdLedgerDao = chkSafeProdLedgerDao;
  76. }
  77. @Override
  78. public int insert(ChkSafeProdLedger chkSafeProdLedger) {
  79. String uuid = UuidUtil.uuid(); // 生成uuid
  80. chkSafeProdLedger.setId(uuid);
  81. chkSafeProdLedger.setIntm(new Date());
  82. chkSafeProdLedger.setUptm(chkSafeProdLedger.getIntm());
  83. chkSafeProdLedger.setDataStat("0");
  84. chkSafeProdLedger.setChkSubmitDttm(chkSafeProdLedger.getIntm());
  85. try {
  86. LocalDateTime localDateTime = convertDateToLocalDateTime(chkSafeProdLedger.getIntm());
  87. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
  88. chkSafeProdLedger.setChkMnth(sdf.parse(String.format("%d-%d-1",localDateTime.getYear(),localDateTime.getMonthValue())));
  89. } catch (ParseException e) {
  90. }
  91. chkSafeProdLedger.setFillRepoStat("1");
  92. return this.chkSafeProdLedgerDao.insert(chkSafeProdLedger);
  93. }
  94. @Override
  95. public int update(ChkSafeProdLedger chkSafeProdLedger) {
  96. chkSafeProdLedger.setUptm(new Date());
  97. return this.chkSafeProdLedgerDao.update(chkSafeProdLedger);
  98. }
  99. @Override
  100. public int batchReportByIds(String[] ids){
  101. return this.chkSafeProdLedgerDao.batchReportByIds(ids , new Date());
  102. }
  103. @Override
  104. public int insertBatchFile(List<ChkSafeProdLedger> safeProdLedgerList){
  105. return this.chkSafeProdLedgerDao.insertBatchFile(safeProdLedgerList);
  106. }
  107. @Override
  108. public PageInfo<Map<String,Object>> findSummaryPage(ChkSafeProdLedger param){
  109. // 市级汇总
  110. param.setFillRepoStat("2");
  111. param.setDataStat("0");
  112. param.setAdCode(null);
  113. PageHelper.startPage(param);
  114. List<Map<String,Object>> list = findSummaryList(param);
  115. PageInfo<Map<String,Object>> pageInfo = new PageInfo(list);
  116. return pageInfo;
  117. }
  118. /**
  119. * 导出统计表
  120. * @param chkSafeProdLedger
  121. * @param response
  122. */
  123. @Override
  124. public void export(ChkSafeProdLedger chkSafeProdLedger, HttpServletResponse response){
  125. // 查询导出的数据
  126. List<ChkSafeProdLedger> chkSafeProdLedgerList = findList(chkSafeProdLedger);
  127. List<String> columns = new ArrayList<String>() {{
  128. if("2".equals(chkSafeProdLedger.getFillRepoStat())){
  129. // 市级 导出 显示 行政区
  130. add("adName");
  131. }
  132. add("chkProjType");
  133. add("chkDttm");
  134. add("leadDep");
  135. add("leadDepRespPers");
  136. add("chkOrg");
  137. add("chkOrgRespPers");
  138. add("chkOrgRespPersMobi");
  139. add("chkResult");
  140. add("chkDgerPblm");
  141. add("chkHandSugg");
  142. add("chkHandEdtm");
  143. add("chkRectImplInfo");
  144. add("chkRectImplInfoDesc");
  145. add("chkAcceTm");
  146. add("chkAccePers");
  147. add("chkFillUnit");
  148. add("chkSubmitDept");
  149. if(!"2".equals(chkSafeProdLedger.getFillRepoStat())){
  150. // 区县导出显示 上报状态
  151. add("fillRepoStat");
  152. }
  153. }};
  154. exportExcel(chkSafeProdLedgerList, response, "成都市安全生产监督检查台账列表", columns, ChkSafeProdLedger.class);
  155. }
  156. public void exportExcel(List<?> result, HttpServletResponse response, String fileName, List<String> list, Class cla) {
  157. if (list == null || list.size() == 0) {
  158. ExportUtil.exportExcel(result, response, fileName);
  159. return;
  160. }
  161. List<Map<String, Object>> mapList = new ArrayList<>();
  162. result.forEach(worker -> mapList.add(transBean2Map(worker)));
  163. ExportAbstract export = new ExcelExport();
  164. if (StringUtils.isBlank(fileName)) {
  165. fileName = "结果列表";
  166. }
  167. export.setFileName(fileName);
  168. export.setExport_ps_export(true);
  169. export.setExport_ps_type(ExportAbstract.XLS);
  170. export.setExport_bzip(false);
  171. export.setTitle(fileName);
  172. ArrayList<Object> cols = new ArrayList<Object>();
  173. Field[] fields = cla.getDeclaredFields();
  174. Class clazz = cla.getSuperclass();
  175. if (clazz != null && clazz != Objects.class) {
  176. fields = ArrayUtils.addAll(fields, clazz.getDeclaredFields());
  177. }
  178. for (String name : list) {
  179. for (Field field : fields) {
  180. if (name.equals(field.getName()) && field.getAnnotation(ApiModelProperty.class) != null) {
  181. field.setAccessible(true);
  182. cols.add(field.getName() + "[" + ExportUtil.fileFormat(field.getAnnotation(ApiModelProperty.class).value()) + "]");
  183. break;
  184. }
  185. }
  186. }
  187. if (cols.size() < 1) {
  188. cols.add("name[名称]");
  189. cols.add("code[编码]");
  190. }
  191. export.setCols(cols);
  192. export.setGroupable(false);
  193. // 设置视图指标
  194. export.setLevel(1);
  195. export.setLocksize(0);
  196. try {
  197. export.Export(response);
  198. // 导出表头
  199. export.ExportHeadForCustom(response);
  200. export.ContinueExport(mapList);
  201. export.EndExport();
  202. } catch (Exception e) {
  203. e.printStackTrace();
  204. }
  205. }
  206. private Map<String, Object> transBean2Map(Object obj) {
  207. if (obj == null) {
  208. return null;
  209. }
  210. Map<String, Object> map = new HashMap<String, Object>();
  211. try {
  212. BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
  213. PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
  214. ChkSafeSelsProjParam chkSafeSelsProjParam = new ChkSafeSelsProjParam();
  215. chkSafeSelsProjParam.setUseScope("2");
  216. chkSafeSelsProjParam.setDataStat("0");
  217. List<ChkSafeSelsProj> projTypeList = this.chkSafeSelsProjDao.findLedgerRootList();
  218. String key="";
  219. for (PropertyDescriptor property : propertyDescriptors) {
  220. key = property.getName();
  221. // 过滤class属性
  222. if (!"class".equals(key)) {
  223. // 得到property对应的getter方法
  224. Method getter = property.getReadMethod();
  225. Object value = getter.invoke(obj);
  226. map.put(key, value);
  227. if("chkProjType".equals(key)){
  228. if(null != value && StringUtils.isNotBlank(value.toString())){
  229. map.put(key, formatProjType(value.toString(),projTypeList));
  230. }
  231. }else if("chkResult".equals(key)){
  232. if(null != value && StringUtils.isNotBlank(value.toString())){
  233. map.put(key, formatChkResult(value.toString()));
  234. }
  235. }else if("chkRectImplInfo".equals(key)){
  236. if(null != value && StringUtils.isNotBlank(value.toString())){
  237. map.put(key, formatChkRectImplInfo(value.toString()));
  238. }
  239. }else if("chkMnth".equals(key)){
  240. if(null != value && StringUtils.isNotBlank(value.toString())){
  241. LocalDateTime localDateTime = convertDateToLocalDateTime((Date)value);
  242. if(null != localDateTime){
  243. String dateStr = String.format("%d年%d月",localDateTime.getYear(),localDateTime.getMonthValue());
  244. map.put(key, dateStr);
  245. }
  246. }
  247. }else if("chkDttm".equals(key)){
  248. if(null != value && StringUtils.isNotBlank(value.toString())){
  249. LocalDateTime localDateTime = convertDateToLocalDateTime((Date)value);
  250. if(null != localDateTime){
  251. String dateStr = String.format("%d年%d月%d日",localDateTime.getYear(),localDateTime.getMonthValue(),localDateTime.getDayOfMonth());
  252. map.put(key, dateStr);
  253. }
  254. }
  255. }else if("chkHandEdtm".equals(key)){
  256. if(null != value && StringUtils.isNotBlank(value.toString())){
  257. LocalDateTime localDateTime = convertDateToLocalDateTime((Date)value);
  258. if(null != localDateTime){
  259. String dateStr = String.format("%d年%d月%d日",localDateTime.getYear(),localDateTime.getMonthValue(),localDateTime.getDayOfMonth());
  260. map.put(key, dateStr);
  261. }
  262. }
  263. }else if("chkAcceTm".equals(key)){
  264. if(null != value && StringUtils.isNotBlank(value.toString())){
  265. LocalDateTime localDateTime = convertDateToLocalDateTime((Date)value);
  266. if(null != localDateTime){
  267. String dateStr = String.format("%d年%d月%d日",localDateTime.getYear(),localDateTime.getMonthValue(),localDateTime.getDayOfMonth());
  268. map.put(key, dateStr);
  269. }
  270. }
  271. }else if("chkSubmitDttm".equals(key)){
  272. if(null != value && StringUtils.isNotBlank(value.toString())){
  273. LocalDateTime localDateTime = convertDateToLocalDateTime((Date)value);
  274. if(null != localDateTime){
  275. String dateStr = String.format("%d年%d月%d日",localDateTime.getYear(),localDateTime.getMonthValue(),localDateTime.getDayOfMonth());
  276. map.put(key, dateStr);
  277. }
  278. }
  279. }else if("fillRepoStat".equals(key)){
  280. if(null != value && StringUtils.isNotBlank(value.toString())){
  281. map.put(key, "2".equals(value.toString())?"已上报":"未上报");
  282. }
  283. }
  284. }
  285. }
  286. } catch (Exception e) {
  287. System.out.println("transBean2Map Error " + e);
  288. }
  289. return map;
  290. }
  291. private String formatProjType(String projType , List<ChkSafeSelsProj> projList){
  292. try {
  293. if(cn.com.goldenwater.dcproj.utils.StringUtils.isBlank(projType)){
  294. return null;
  295. }
  296. String formatStr = projList.stream().filter(f->projType.equals(f.getId())).map(m->m.getProjType()).collect(Collectors.joining());
  297. return formatStr;
  298. } catch (Exception e) {
  299. return null;
  300. }
  301. }
  302. private String formatChkRectImplInfo(String chkRectImplInfo){
  303. switch (chkRectImplInfo){
  304. case "0":
  305. chkRectImplInfo = "未整改";
  306. break;
  307. case "1":
  308. chkRectImplInfo = "正在整改";
  309. break;
  310. case "2":
  311. chkRectImplInfo = "完成整改";
  312. break;
  313. default:
  314. break;
  315. }
  316. return chkRectImplInfo;
  317. }
  318. private String formatChkResult(String chkResult){
  319. switch (chkResult){
  320. case "0":
  321. chkResult = "无隐患";
  322. break;
  323. case "1":
  324. chkResult = "有隐患";
  325. break;
  326. default:
  327. break;
  328. }
  329. return chkResult;
  330. }
  331. private LocalDateTime convertDateToLocalDateTime(Date date){
  332. Calendar calendar = Calendar.getInstance();
  333. calendar.setTime(date);
  334. LocalDateTime localDateTime = LocalDateTime.of(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH)+1, calendar.get(Calendar.DAY_OF_MONTH),0,0,0);
  335. return localDateTime;
  336. }
  337. /**
  338. * 导出 市级汇总 成都市水务行业安全大检查情况统计
  339. *
  340. * @param safeProdLedger 筛选查询参数
  341. * @param response
  342. */
  343. @Override
  344. public void exportSummary(ChkSafeProdLedger safeProdLedger, HttpServletResponse response) {
  345. logger.debug("ChkSafeStatList 导出");
  346. // 读取导出模板
  347. String fileName = templatePath + File.separator + templateName ;
  348. File file = new File(fileName);
  349. if(file.exists()){
  350. // 模板存在
  351. try {
  352. FileInputStream inputStream = new FileInputStream(file);
  353. Workbook workbook = WorkbookFactory.create(inputStream);
  354. exportFile(workbook, safeProdLedger);
  355. writeToResponse(response, workbook, "成都市安全生产监督检查台账汇总.xls");
  356. } catch (FileNotFoundException e) {
  357. e.printStackTrace();
  358. } catch (IOException e) {
  359. e.printStackTrace();
  360. }
  361. }else {
  362. logger.error("导出模板不存在");
  363. }
  364. }
  365. @Override
  366. public List<Map<String,Object>> findSummaryList(ChkSafeProdLedger param){
  367. List<Map<String,Object>> list = this.chkSafeProdLedgerDao.summaryList(param);
  368. if(null != list && list.size()>0){
  369. List<Date> dateList = list.stream().map(m->(Date)m.get("chkMnth")).collect(Collectors.toList());
  370. param.setChkMnthList(dateList);
  371. // 从总数中拆分出 市级、市县区级
  372. String curOrgId = param.getOrgId();
  373. OlBisInspOrg inspOrg = olBisInspOrgDao.get(curOrgId);
  374. String province = inspOrg.getRlcode();
  375. List<OlBisInspOrg> bisInspOrgListAll = olBisInspOrgDao.getByPid(curOrgId,province);
  376. // 获取 市级的 行政区划代码列表
  377. String cityCodes = bisInspOrgListAll.stream().filter(f->f.getAdCode().startsWith("51019")).map(m-> AdLevelUtil.getAddvcd(m.getAdCode())).collect(Collectors.joining(","));
  378. param.setAdCode(cityCodes);
  379. List<Map<String,Object>> cityList = this.chkSafeProdLedgerDao.summaryList(param);
  380. // 获取 县级的 行政区划代码列表
  381. String countyCodes = bisInspOrgListAll.stream().filter(f->!f.getAdCode().startsWith("51019")).map(m->AdLevelUtil.getAddvcd(m.getAdCode())).collect(Collectors.joining(","));
  382. param.setAdCode(countyCodes);
  383. List<Map<String,Object>> countyList = this.chkSafeProdLedgerDao.summaryList(param);
  384. for(int i=0;i<list.size();i++){
  385. Map<String, Object> totalMap = list.get(i);
  386. Date itemDate = (Date)totalMap.get("chkMnth");
  387. logger.info("totalMap:"+totalMap.toString());
  388. // 算出总数百分比
  389. if("0".equals(totalMap.get("pblmNum").toString())){
  390. totalMap.put("percent","0");
  391. }else{
  392. totalMap.put("percent",new BigDecimal(totalMap.get("rectDoNum").toString()).multiply(new BigDecimal(100)).divide(new BigDecimal(totalMap.get("pblmNum").toString()), 2, RoundingMode.HALF_UP).toString().concat("%"));
  393. }
  394. Map<String, Object> cityMap = cityList.stream().filter(f->itemDate.compareTo((Date)f.get("chkMnth")) == 0).findFirst().orElse(null);
  395. Map<String, Object> countyMap = countyList.stream().filter(f->itemDate.compareTo((Date)f.get("chkMnth")) == 0).findFirst().orElse(null);
  396. if(null == cityMap){
  397. totalMap.put("cityChkNum","0");
  398. totalMap.put("cityPblmNum","0");
  399. totalMap.put("cityRectNotNum","0");
  400. totalMap.put("cityRectDoNum","0");
  401. totalMap.put("cityPercent","0");
  402. }else{
  403. totalMap.put("cityChkNum",cityMap.get("chkNum"));
  404. Object pblmNum = cityMap.get("pblmNum");
  405. totalMap.put("cityPblmNum",pblmNum);
  406. totalMap.put("cityRectNotNum",cityMap.get("rectNotNum"));
  407. Object rectDoNum = cityMap.get("rectDoNum");
  408. totalMap.put("cityRectDoNum",rectDoNum);
  409. if("0".equals(pblmNum.toString())){
  410. totalMap.put("cityPercent",0);
  411. }else {
  412. totalMap.put("cityPercent",new BigDecimal(rectDoNum.toString()).multiply(new BigDecimal(100)).divide(new BigDecimal(pblmNum.toString()), 2, RoundingMode.HALF_UP).toString().concat("%"));
  413. }
  414. }
  415. if(null == countyMap){
  416. totalMap.put("countyChkNum","0");
  417. totalMap.put("countyPblmNum","0");
  418. totalMap.put("countyRectNotNum","0");
  419. totalMap.put("countyRectDoNum","0");
  420. totalMap.put("countyPercent","0");
  421. }else {
  422. totalMap.put("countyChkNum",countyMap.get("chkNum"));
  423. Object pblmNum = countyMap.get("pblmNum");
  424. totalMap.put("countyPblmNum",pblmNum);
  425. totalMap.put("countyRectNotNum",countyMap.get("rectNotNum"));
  426. Object rectDoNum = countyMap.get("rectDoNum");
  427. totalMap.put("countyRectDoNum",rectDoNum);
  428. if("0".equals(pblmNum.toString())){
  429. totalMap.put("countyPercent",0);
  430. }else {
  431. totalMap.put("countyPercent",new BigDecimal(rectDoNum.toString()).multiply(new BigDecimal(100)).divide(new BigDecimal(pblmNum.toString()), 2, RoundingMode.HALF_UP).toString().concat("%"));
  432. }
  433. }
  434. }
  435. }
  436. return list;
  437. }
  438. /**
  439. * 把数据写入excel
  440. * @param xssfWorkbook
  441. * @param safeProdLedger
  442. */
  443. private void exportFile(Workbook xssfWorkbook,ChkSafeProdLedger safeProdLedger){
  444. // 查询统计数据 总数
  445. safeProdLedger.setAdCode(null);
  446. List<Map<String,Object>> resultList = findSummaryList(safeProdLedger);
  447. // 获取模板表格
  448. Sheet sheet = xssfWorkbook.getSheetAt(0);
  449. // 设置 表格数据
  450. if(null != resultList && resultList.size()>0){
  451. // 把查询结果 写入到模板中
  452. for (int i=0;i<resultList.size();i++){
  453. setAllCell(sheet,i, resultList.get(i));
  454. }
  455. }
  456. }
  457. /**
  458. * 设置 行 内容
  459. * @param sheet
  460. * @param rowNum
  461. * @param totalMap
  462. */
  463. private void setAllCell(Sheet sheet,int rowNum, Map<String,Object> totalMap){
  464. setCellValue(sheet,3+rowNum,0,String.valueOf(rowNum+1) );
  465. String chkDttm = String.valueOf(totalMap.get("chkMnth"));
  466. if(chkDttm.contains("-")){
  467. String[] chkDttmArray = chkDttm.split("-");
  468. setCellValue(sheet,3+rowNum,1,String.format("%s年%d月", chkDttmArray[0],Integer.parseInt(chkDttmArray[1])));
  469. }else{
  470. return ;
  471. }
  472. // 市级
  473. setCellValue(sheet,3+rowNum,2,String.valueOf(totalMap.get("cityChkNum")) );
  474. setCellValue(sheet,3+rowNum,3,String.valueOf(totalMap.get("cityPblmNum")) );
  475. setCellValue(sheet,3+rowNum,4,String.valueOf(totalMap.get("cityRectDoNum")) );
  476. setCellValue(sheet,3+rowNum,5,String.valueOf(totalMap.get("cityRectNotNum")) );
  477. setCellValue(sheet,3+rowNum,6,String.valueOf(totalMap.get("cityPercent")) );
  478. // 县级
  479. setCellValue(sheet,3+rowNum,7,String.valueOf(totalMap.get("countyChkNum")) );
  480. setCellValue(sheet,3+rowNum,8,String.valueOf(totalMap.get("countyPblmNum")) );
  481. setCellValue(sheet,3+rowNum,9,String.valueOf(totalMap.get("countyRectDoNum")) );
  482. setCellValue(sheet,3+rowNum,10,String.valueOf(totalMap.get("countyRectNotNum")) );
  483. setCellValue(sheet,3+rowNum,11,String.valueOf(totalMap.get("countyPercent")) );
  484. // 总数
  485. setCellValue(sheet,3+rowNum,12,String.valueOf(totalMap.get("chkNum")) );
  486. setCellValue(sheet,3+rowNum,13,String.valueOf(totalMap.get("pblmNum")) );
  487. setCellValue(sheet,3+rowNum,14,String.valueOf(totalMap.get("rectDoNum")) );
  488. setCellValue(sheet,3+rowNum,15,String.valueOf(totalMap.get("rectNotNum")) );
  489. setCellValue(sheet,3+rowNum,16,String.valueOf(totalMap.get("percent")) );
  490. }
  491. /**
  492. * 设置 单元格的值
  493. * @param sheet
  494. * @param rownum
  495. * @param cellnum
  496. * @param value
  497. */
  498. private void setCellValue(Sheet sheet, int rownum, int cellnum, String value) {
  499. Cell cell = sheet.getRow(rownum).getCell(cellnum);
  500. cell.setCellValue(value);
  501. }
  502. private void writeToResponse(HttpServletResponse response, Workbook workbook, String name) throws IOException {
  503. // 修改模板内容导出新模板
  504. response.setContentType("application/x-msdownload");
  505. String fileNameURL = URLEncoder.encode(name, "UTF-8");
  506. response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";filename*=utf-8''" + fileNameURL);
  507. OutputStream out = response.getOutputStream();
  508. workbook.write(out);
  509. out.flush();
  510. out.close();
  511. }
  512. }