e06076205b69d0fc8babf8ac6a849f5b73b14405.svn-base 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. package cn.com.goldenwater.dcproj.service.impl.plansd;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.dao.AttAdBaseDao;
  4. import cn.com.goldenwater.dcproj.dao.AttInspTypeDao;
  5. import cn.com.goldenwater.dcproj.dao.BisInspAllDao;
  6. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao;
  7. import cn.com.goldenwater.dcproj.dao.BisInspPlanDpDao;
  8. import cn.com.goldenwater.dcproj.dao.BisInspPlanDtlAddvcdDao;
  9. import cn.com.goldenwater.dcproj.dao.BisInspPlanDtlDao;
  10. import cn.com.goldenwater.dcproj.dao.BisInspPlanDtlPtypDao;
  11. import cn.com.goldenwater.dcproj.dao.BisInspPlanYearDao;
  12. import cn.com.goldenwater.dcproj.dao.BisInspPlandpRlDao;
  13. import cn.com.goldenwater.dcproj.dto.BisInspPlanDtlDto;
  14. import cn.com.goldenwater.dcproj.model.AttAdBase;
  15. import cn.com.goldenwater.dcproj.model.AttInspType;
  16. import cn.com.goldenwater.dcproj.model.BisInspAll;
  17. import cn.com.goldenwater.dcproj.model.BisInspPlan;
  18. import cn.com.goldenwater.dcproj.model.BisInspPlanDp;
  19. import cn.com.goldenwater.dcproj.model.BisInspPlanDtl;
  20. import cn.com.goldenwater.dcproj.model.BisInspPlanDtlAddvcd;
  21. import cn.com.goldenwater.dcproj.model.BisInspPlanDtlPtyp;
  22. import cn.com.goldenwater.dcproj.model.BisInspPlanYear;
  23. import cn.com.goldenwater.dcproj.model.BisInspPlandpRl;
  24. import cn.com.goldenwater.dcproj.model.OlBisInspOrg;
  25. import cn.com.goldenwater.dcproj.param.AttInspTypeParam;
  26. import cn.com.goldenwater.dcproj.param.BisInspAllParam;
  27. import cn.com.goldenwater.dcproj.param.BisInspPlanDpParam;
  28. import cn.com.goldenwater.dcproj.param.BisInspPlanDtlAddvcdParam;
  29. import cn.com.goldenwater.dcproj.param.BisInspPlanDtlParam;
  30. import cn.com.goldenwater.dcproj.param.BisInspPlanDtlPtypParam;
  31. import cn.com.goldenwater.dcproj.param.BisInspPlanYearParam;
  32. import cn.com.goldenwater.dcproj.param.BisInspPlandpRlParam;
  33. import cn.com.goldenwater.dcproj.service.AttAdBaseService;
  34. import cn.com.goldenwater.dcproj.service.BisInspPlanDpService;
  35. import cn.com.goldenwater.dcproj.service.BisInspPlanDtlService;
  36. import cn.com.goldenwater.dcproj.service.BisInspPlanService;
  37. import cn.com.goldenwater.dcproj.service.BisInspPlandpRlService;
  38. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  39. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  40. import cn.com.goldenwater.dcproj.utils.Constant;
  41. import cn.com.goldenwater.dcproj.utils.StringUtils;
  42. import cn.com.goldenwater.id.util.UuidUtil;
  43. import org.apache.commons.collections.CollectionUtils;
  44. import org.apache.poi.ss.usermodel.Cell;
  45. import org.apache.poi.ss.usermodel.CellStyle;
  46. import org.apache.poi.ss.usermodel.HorizontalAlignment;
  47. import org.apache.poi.ss.usermodel.Row;
  48. import org.apache.poi.ss.usermodel.Sheet;
  49. import org.apache.poi.ss.usermodel.VerticalAlignment;
  50. import org.apache.poi.ss.usermodel.Workbook;
  51. import org.apache.poi.ss.usermodel.WorkbookFactory;
  52. import org.springframework.beans.factory.annotation.Autowired;
  53. import org.springframework.beans.factory.annotation.Value;
  54. import org.springframework.stereotype.Service;
  55. import org.springframework.transaction.annotation.Transactional;
  56. import javax.servlet.http.HttpServletResponse;
  57. import java.io.File;
  58. import java.io.FileInputStream;
  59. import java.io.IOException;
  60. import java.io.InputStream;
  61. import java.io.OutputStream;
  62. import java.net.URLEncoder;
  63. import java.text.SimpleDateFormat;
  64. import java.util.ArrayList;
  65. import java.util.Arrays;
  66. import java.util.Calendar;
  67. import java.util.Date;
  68. import java.util.HashMap;
  69. import java.util.HashSet;
  70. import java.util.List;
  71. import java.util.Map;
  72. import java.util.Objects;
  73. import java.util.Optional;
  74. import java.util.Set;
  75. import java.util.stream.Collectors;
  76. /**
  77. * @author hjp
  78. * @date 2022-8-9
  79. */
  80. @Service
  81. @Transactional(rollbackFor = Exception.class)
  82. public class BisInspPlanDtlServiceImpl extends AbstractCrudService<BisInspPlanDtl, BisInspPlanDtlParam> implements BisInspPlanDtlService {
  83. @Value("${export.templatePath}")
  84. private String templatePath;
  85. @Autowired
  86. private BisInspPlanDtlDao bisInspPlanDtlDao;
  87. @Autowired
  88. private BisInspPlanDtlAddvcdDao bisInspPlanDtlAddvcdDao;
  89. @Autowired
  90. private BisInspPlanDtlPtypDao bisInspPlanDtlPtypDao;
  91. @Autowired
  92. private BisInspPlandpRlDao bisInspPlandpRlDao;
  93. @Autowired
  94. private AttAdBaseDao attAdBaseDao;
  95. @Autowired
  96. private AttInspTypeDao attInspTypeDao;
  97. @Autowired
  98. private BisInspPlanDpDao bisInspPlanDpDao;
  99. @Autowired
  100. private BisInspPlanService bisInspPlanService;
  101. @Autowired
  102. private OlBisInspOrgService olBisInspOrgService;
  103. @Autowired
  104. private BisInspAllDao bisInspAllDao;
  105. @Autowired
  106. private BisInspPlanYearDao bisInspPlanYearDao;
  107. @Autowired
  108. private BisInspAllRlationPersDao bisInspAllRlationPersDao;
  109. @Autowired
  110. private BisInspPlanDpService bisInspPlanDpService;
  111. @Autowired
  112. private BisInspPlandpRlService bisInspPlandpRlService;
  113. @Autowired
  114. private AttAdBaseService attAdBaseService;
  115. private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
  116. public BisInspPlanDtlServiceImpl(BisInspPlanDtlDao bisInspPlanDtlDao) {
  117. super(bisInspPlanDtlDao);
  118. this.bisInspPlanDtlDao = bisInspPlanDtlDao;
  119. }
  120. @Override
  121. public int insert(BisInspPlanDtl bisInspPlanDtl) {
  122. String uuid = UuidUtil.uuid(); // 生成uuid
  123. bisInspPlanDtl.setId(uuid);
  124. bisInspPlanDtl.setIntm(new Date());
  125. bisInspPlanDtl.setUptm(new Date());
  126. bisInspPlanDtl.setDataStat("0");
  127. return this.bisInspPlanDtlDao.insert(bisInspPlanDtl);
  128. }
  129. @Override
  130. public int update(BisInspPlanDtl bisInspPlanDtl) {
  131. bisInspPlanDtl.setUptm(new Date());
  132. return this.bisInspPlanDtlDao.update(bisInspPlanDtl);
  133. }
  134. @Override
  135. public int delete(String id) {
  136. return this.bisInspPlanDtlDao.delete(id);
  137. }
  138. /**
  139. * 针对 分解表的子表数据进行更新处理
  140. *
  141. * @param bisInspPlanDtlDto 对象
  142. */
  143. @Override
  144. public void updatePostProcessing(BisInspPlanDtlDto bisInspPlanDtlDto) {
  145. //清空
  146. bisInspPlanDtlPtypDao.deleteBy(new BisInspPlanDtlPtypParam(bisInspPlanDtlDto.getId()));
  147. bisInspPlanDtlAddvcdDao.deleteBy(new BisInspPlanDtlAddvcdParam(bisInspPlanDtlDto.getId()));
  148. bisInspPlandpRlDao.deleteBy(new BisInspPlandpRlParam(bisInspPlanDtlDto.getPlanId(), Constant.STRING_ONE));
  149. //开展检查实施处室(单位)
  150. List<String> rlIds = bisInspPlanDtlDto.getPlanDpRlIds();
  151. //自定义 开展检查实施处室(单位) 添加
  152. String planDpRlNames = bisInspPlanDtlDto.getPlanDpRlNames();
  153. Map<String,BisInspPlandpRl> rlList = new HashMap<>();
  154. if (CollectionUtils.isNotEmpty(rlIds)) {
  155. for (String planDpId : rlIds) {
  156. rlList.put(planDpId + "-" + Constant.STRING_ONE, new BisInspPlandpRl(bisInspPlanDtlDto.getId(), planDpId, Constant.STRING_ONE, bisInspPlanDtlDto.getPersId()));
  157. }
  158. }
  159. if (StringUtils.isNotBlank(planDpRlNames)){
  160. Set<String> dpRlNames = Arrays.stream(StringUtils.split(planDpRlNames, ",")).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
  161. String province = AdLevelUtil.getAddvcd(olBisInspOrgService.getRlProvince(bisInspPlanDtlDto.getOrgId()));
  162. List<BisInspPlanDp> list = new ArrayList<>();
  163. dpRlNames.forEach(dpRlName -> list.add(new BisInspPlanDp(dpRlName, Constant.STRING_TWO, bisInspPlanDtlDto.getPersId(), province)));
  164. if(list.size()>0){
  165. bisInspPlanDpService.batchInsert(list);
  166. }
  167. if (CollectionUtils.isNotEmpty(list)) {
  168. list.forEach(dp -> {
  169. rlList.put(dp.getId() + "-" + Constant.STRING_ZERO, new BisInspPlandpRl(bisInspPlanDtlDto.getPlanId(), dp.getId(), Constant.STRING_ZERO, bisInspPlanDtlDto.getPersId()));
  170. rlList.put(dp.getId() + "-" + Constant.STRING_ONE, new BisInspPlandpRl(bisInspPlanDtlDto.getPlanId(), dp.getId(), Constant.STRING_ONE, bisInspPlanDtlDto.getPersId()));
  171. });
  172. }
  173. }
  174. if (rlList.size() > 0) {
  175. bisInspPlandpRlService.batchInsert(new ArrayList<>(rlList.values()));
  176. }
  177. //检查行政区
  178. List<String> dAdCodes = bisInspPlanDtlDto.getdAdCodes();
  179. if (CollectionUtils.isNotEmpty(dAdCodes)) {
  180. List<BisInspPlanDtlAddvcd> list = new ArrayList<>();
  181. for (String dAdCode : dAdCodes) {
  182. AttAdBase byAdcode = attAdBaseDao.getByAdcode(dAdCode);
  183. if (Objects.nonNull(byAdcode)) {
  184. //更新
  185. list.add(new BisInspPlanDtlAddvcd(bisInspPlanDtlDto.getId(), byAdcode.getAdCode(), byAdcode.getAdName(), byAdcode.getAdGrad(), bisInspPlanDtlDto.getPersId()));
  186. }
  187. }
  188. if(list.size()>0){
  189. bisInspPlanDtlAddvcdDao.batchInsert(list);
  190. }
  191. }
  192. //督查类型
  193. if (StringUtils.equals(Constant.STRING_ONE, bisInspPlanDtlDto.getOnlineChk())) {
  194. Set<String> ptypIds = new HashSet<>(bisInspPlanDtlDto.getPtypIds());
  195. if (CollectionUtils.isNotEmpty(ptypIds)) {
  196. List<AttInspType> typeList = attInspTypeDao.findList(new AttInspTypeParam());
  197. List<BisInspPlanDtlPtyp> list = new ArrayList<>();
  198. for (String ptypId : ptypIds) {
  199. AttInspType attInspType = typeList.stream().filter(t -> StringUtils.equals(t.getCode(), ptypId)).findAny().orElse(null);
  200. if (Objects.nonNull(attInspType)) {
  201. //更新
  202. list.add(new BisInspPlanDtlPtyp(bisInspPlanDtlDto.getId(), attInspType.getName(), attInspType.getCode(), bisInspPlanDtlDto.getPersId()));
  203. }
  204. }
  205. if (CollectionUtils.isNotEmpty(list)){
  206. bisInspPlanDtlPtypDao.batchInsert(list);
  207. Calendar calendar = Calendar.getInstance();
  208. BisInspPlanYear planYear = bisInspPlanYearDao.get(bisInspPlanDtlDto.getPlanId());
  209. if (Objects.isNull(planYear)){
  210. return;
  211. }
  212. String batchName = calendar.get(Calendar.YEAR) + "年" + (StringUtils.isBlank(planYear.getChkName()) ? "" : planYear.getChkName()) + "督查";
  213. //创建批次
  214. for (BisInspPlanDtlPtyp ptyp : list) {
  215. AttInspType by = attInspTypeDao.get(ptyp.getPtype());
  216. if (Objects.isNull(by)){
  217. continue;
  218. }
  219. BisInspPlan bisInspPlan = new BisInspPlan();
  220. bisInspPlan.setGuid(by.getCode() + bisInspPlanDtlDto.getOrgId());
  221. bisInspPlan.setPrsnTitle(batchName);
  222. //判断父级节点下有创建好的批次就无需创建
  223. BisInspAllParam bisInspAllParam = new BisInspAllParam();
  224. bisInspAllParam.setId(bisInspPlan.getGuid());
  225. bisInspAllParam.setPnm(batchName);
  226. bisInspAllParam.setIsPlan(Constant.STRING_ONE);
  227. List<BisInspAll> eList = bisInspAllDao.findList(bisInspAllParam);
  228. if (eList != null && eList.size() > 0){
  229. continue;
  230. }
  231. bisInspPlan.setLeadDep(null);
  232. bisInspPlan.setPalnSttm(bisInspPlanDtlDto.getStTm());
  233. bisInspPlan.setPalnEntm(bisInspPlanDtlDto.getEnTm());
  234. bisInspPlan.setChkType(null);
  235. bisInspPlan.setChkForm(null);
  236. bisInspPlan.setIsPlan(Constant.STRING_ONE);
  237. bisInspPlan.setYearTaskId(bisInspPlanDtlDto.getId());
  238. bisInspPlan.setOrgId(bisInspPlanDtlDto.getOrgId());
  239. bisInspPlan.setProvince(olBisInspOrgService.getProvince(bisInspPlanDtlDto.getOrgId()));
  240. OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(bisInspPlanDtlDto.getOrgId());
  241. Optional.ofNullable(olBisInspOrg).ifPresent(o -> bisInspPlan.setOrgName(o.getOrgNm()));
  242. Optional.ofNullable(bisInspAllRlationPersDao.get(bisInspPlanDtlDto.getPersId())).ifPresent(b -> bisInspPlan.setPlanDpId(b.getPlanDpId()));
  243. bisInspPlanService.addBisInspPlan(bisInspPlan);
  244. }
  245. }
  246. }
  247. }
  248. }
  249. @Override
  250. public List<BisInspPlanDtlDto> findDtlList(BisInspPlanDtlParam param) {
  251. List<BisInspPlanDtlDto> list = bisInspPlanDtlDao.findDtlList(param);
  252. if (CollectionUtils.isNotEmpty(list)) {
  253. List<BisInspPlanDp> dpList = bisInspPlanDpDao.findList(new BisInspPlanDpParam());
  254. list.forEach(l -> {
  255. //检查行政区
  256. Optional.ofNullable(bisInspPlanDtlAddvcdDao.findList(new BisInspPlanDtlAddvcdParam(l.getId()))).ifPresent(a -> {
  257. l.setdAdName(a.stream().map(BisInspPlanDtlAddvcd::getAdName).collect(Collectors.joining(",")));
  258. l.setdAdCodes(a.stream().map(m->m.getAdCode().substring(0,4)).collect(Collectors.toList()));
  259. // l.setdAdCodes(a.stream().map(BisInspPlanDtlAddvcd::getAdCode).collect(Collectors.toList()));
  260. });
  261. //督查类型
  262. Optional.ofNullable(bisInspPlanDtlPtypDao.findList(new BisInspPlanDtlPtypParam(l.getId()))).ifPresent(b -> {
  263. l.setpTypeNames(b.stream().map(BisInspPlanDtlPtyp::getNm).collect(Collectors.joining(",")));
  264. l.setPtypIds(b.stream().map(BisInspPlanDtlPtyp::getPtype).collect(Collectors.toList()));
  265. });
  266. //参加处室(单位)
  267. Optional.ofNullable(bisInspPlandpRlDao.findByPlanDpIdList(new BisInspPlandpRlParam(l.getPlanId(), Constant.STRING_ONE))).ifPresent(c -> {
  268. l.setPlanJoinDpRlNames(dpList.stream().filter(dp -> c.stream().anyMatch(id -> Objects.equals(dp.getId(), id))).map(BisInspPlanDp::getDpName).collect(Collectors.joining(",")));
  269. l.setPlanJoinDpRlIds(c);
  270. });
  271. //开展检查实施处室(单位)
  272. Optional.ofNullable(bisInspPlandpRlDao.findByPlanDpIdList(new BisInspPlandpRlParam(l.getId(), Constant.STRING_ONE))).ifPresent(c -> {
  273. l.setPlanDpRlNames(dpList.stream().filter(dp -> c.stream().anyMatch(id -> Objects.equals(dp.getId(), id))).map(BisInspPlanDp::getDpName).collect(Collectors.joining(",")));
  274. l.setPlanDpRlIds(c);
  275. });
  276. //是否重复 true 重复 false 没重复
  277. if (CollectionUtils.isNotEmpty(l.getdAdCodes()) && Objects.nonNull(l.getStTm()) && Objects.nonNull(l.getEnTm())) {
  278. l.setItRedundant(CollectionUtils.isNotEmpty(
  279. bisInspPlanDtlAddvcdDao.getByAdCodeAndTm(l.getdAdCodes().stream().collect(Collectors.joining("','", "'", "'")),
  280. l.getStTm(),
  281. l.getEnTm()
  282. )));
  283. }
  284. //是否重复 true 重复 false 没重复
  285. // if (CollectionUtils.isNotEmpty(l.getdAdCodes()) && Objects.nonNull(l.getChkName()) && Objects.nonNull(l.getEnTm())) {
  286. // l.setItRedundant(CollectionUtils.isNotEmpty(
  287. // bisInspPlanDtlAddvcdDao.getByAdCodeAnd(l.getdAdCodes().stream().collect(Collectors.joining("','", "'", "'")),
  288. // l.getChkName(),
  289. // l.getEnTm()
  290. // )));
  291. // }
  292. });
  293. }
  294. if (CollectionUtils.isNotEmpty(list)){
  295. //过滤
  296. if (StringUtils.isNotBlank(param.getIsItRedundant())){
  297. list = list.stream().filter(l -> l.getItRedundant() == StringUtils.equals(param.getIsItRedundant(),Constant.STRING_ONE)).collect(Collectors.toList());
  298. }
  299. // 过滤 牵头处室(单位) add lxf 2022/10/25
  300. if(StringUtils.isNotBlank(param.getLeadDepId())){
  301. BisInspPlanYearParam bisInspPlanYearParam = new BisInspPlanYearParam();
  302. bisInspPlanYearParam.setLeadDepId(param.getLeadDepId());
  303. List<BisInspPlanYear> inspPlanYearList = bisInspPlanYearDao.findList(bisInspPlanYearParam);
  304. if(null != inspPlanYearList){
  305. List<String> idList = inspPlanYearList.stream().map(m -> m.getId()).collect(Collectors.toList());
  306. list = list.stream().filter( l -> idList.contains(l.getPlanId()) ).collect(Collectors.toList());
  307. }
  308. }
  309. }
  310. return list;
  311. }
  312. @Override
  313. public void export(HttpServletResponse response, BisInspPlanDtlParam bisInspPlanDtlParam) {
  314. String templateFilePath = templatePath + File.separator + "planDtlCheckSd.xls";
  315. File file = new File(templateFilePath);
  316. if (file.exists()) {
  317. try {
  318. InputStream inputStream = new FileInputStream(file);
  319. Workbook workbook = WorkbookFactory.create(inputStream);
  320. exportFile(workbook, bisInspPlanDtlParam);
  321. writeToResponse(response, workbook, "山东详细检查计划.xls");
  322. } catch (Exception e) {
  323. e.printStackTrace();
  324. }
  325. }
  326. }
  327. private void exportFile(Workbook xssfWorkbook, BisInspPlanDtlParam bisInspPlanDtlParam) {
  328. List<BisInspPlanDtlDto> list = findDtlList(bisInspPlanDtlParam);
  329. Sheet sheet = xssfWorkbook.getSheetAt(0);
  330. String title = "详细检查计划";
  331. if (bisInspPlanDtlParam.getChkYear() != null ) {
  332. if(null != bisInspPlanDtlParam.getMonthStr() && "".equals(bisInspPlanDtlParam.getMonthStr())){
  333. title = bisInspPlanDtlParam.getChkYear() +"年"+ String.valueOf(Integer.parseInt(bisInspPlanDtlParam.getMonthStr()))+"月"+ title;
  334. }else{
  335. title = bisInspPlanDtlParam.getChkYear() +"年" + title;
  336. }
  337. }
  338. CellStyle styleContent = xssfWorkbook.createCellStyle();
  339. styleContent.setAlignment(HorizontalAlignment.CENTER);
  340. styleContent.setVerticalAlignment(VerticalAlignment.CENTER);
  341. setCellValue(sheet, 0, 1, title);
  342. if (list != null && list.size() > 0) {
  343. for (int i = 0; i < list.size(); i++) {
  344. Row row = sheet.createRow(3 + i);
  345. int cols = 16;
  346. for (int j = 0; j <= cols; j++) {
  347. Cell cell = row.createCell(j);
  348. cell.setCellStyle(styleContent);
  349. }
  350. }
  351. for (int i = 0; i < list.size(); i++) {
  352. BisInspPlanDtlDto planDtlDto = list.get(i);
  353. setAllCell(sheet, i, planDtlDto);
  354. }
  355. }
  356. }
  357. private void setAllCell(Sheet sheet, int i, BisInspPlanDtlDto planDtlDto) {
  358. setCellValue(sheet, 3 + i, 0, String.valueOf(i+1));
  359. setCellValue(sheet, 3 + i, 1, String.valueOf(planDtlDto.getChkYear()));
  360. AttAdBase byAdcode = attAdBaseService.getByAdcode(planDtlDto.getDdAdCode());
  361. setCellValue(sheet, 3 + i, 2, byAdcode.getAdName());
  362. setCellValue(sheet, 3 + i, 3, byAdcode.getLabelFromAdGrad());
  363. setCellValue(sheet, 3 + i, 4, planDtlDto.getChkName());
  364. setCellValue(sheet, 3 + i, 5, planDtlDto.getNm());
  365. setCellValue(sheet, 3 + i, 6, planDtlDto.getChkContent());
  366. setCellValue(sheet, 3 + i, 7, simpleDateFormat.format(planDtlDto.getStTm()));
  367. setCellValue(sheet, 3 + i, 8, simpleDateFormat.format(planDtlDto.getEnTm()));
  368. setCellValue(sheet, 3 + i, 9, String.valueOf(null == planDtlDto.getChkPrjSize() ? 0:planDtlDto.getChkPrjSize()));
  369. setCellValue(sheet, 3 + i, 10, planDtlDto.getDpName());
  370. setCellValue(sheet, 3 + i, 11, planDtlDto.getPlanJoinDpRlNames());
  371. setCellValue(sheet, 3 + i, 12, planDtlDto.getPlanDpRlNames());
  372. setCellValue(sheet, 3 + i, 13, planDtlDto.getChkType());
  373. setCellValue(sheet, 3 + i, 14, "1".equals(planDtlDto.getOnlineChk())?"线上(水利监督信息系统)":"线下");
  374. setCellValue(sheet, 3 + i, 15, null == planDtlDto.getItRedundant()? "否":planDtlDto.getItRedundant()?"是":"否");
  375. setCellValue(sheet, 3 + i, 16, planDtlDto.getNote());
  376. }
  377. private void setCellValue(Sheet sheet, int rownum, int cellnum, String value) {
  378. Cell cell = sheet.getRow(rownum).getCell(cellnum);
  379. cell.setCellValue(value);
  380. }
  381. private void writeToResponse(HttpServletResponse response, Workbook workbook, String name) throws IOException {
  382. // 修改模板内容导出新模板
  383. response.setContentType("application/x-msdownload");
  384. String fileNameURL = URLEncoder.encode(name, "UTF-8");
  385. response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";filename*=utf-8''" + fileNameURL);
  386. OutputStream out = response.getOutputStream();
  387. workbook.write(out);
  388. out.flush();
  389. out.close();
  390. }
  391. }