ActivityController.java 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215
  1. package platform.modules.government.web;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.aliyuncs.exceptions.ClientException;
  5. import com.github.pagehelper.PageInfo;
  6. import org.apache.catalina.Executor;
  7. import org.apache.commons.io.IOUtils;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.beans.BeanUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.boot.autoconfigure.AutoConfigureOrder;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.ui.ModelMap;
  14. import org.springframework.util.CollectionUtils;
  15. import org.springframework.web.bind.annotation.*;
  16. import platform.common.Constant;
  17. import platform.common.annotation.OperationLog;
  18. import platform.common.base.controller.BaseController;
  19. import platform.common.base.model.Dict;
  20. import platform.common.base.model.DictionaryItem;
  21. import platform.common.base.service.DictService;
  22. import platform.common.base.service.DictionaryItemService;
  23. import platform.common.exception.BaseException;
  24. import platform.common.util.AlibabaSMSUtil;
  25. import platform.common.util.ExportExcel;
  26. import platform.common.util.ShiroUtils;
  27. import platform.common.util.WxAppUtil;
  28. import platform.modules.build.DTO.CompanyDto;
  29. import platform.modules.build.entity.BuildInfo;
  30. import platform.modules.build.entity.Company;
  31. import platform.modules.build.service.BuildInfoService;
  32. import platform.modules.build.service.CompanyService;
  33. import platform.modules.government.dto.ActivityReview;
  34. import platform.modules.government.dto.ActivitySearchCondition;
  35. import platform.modules.government.dto.SearchCondition;
  36. import platform.modules.government.dto.StreetsBuildingsCompanies;
  37. import platform.modules.government.entity.*;
  38. import platform.modules.government.service.AttachmentService;
  39. import platform.modules.government.service.StreetService;
  40. import platform.modules.government.service.UserService;
  41. import platform.modules.request.ActivityFindRequest;
  42. import platform.modules.request.ContractReportFindRequest;
  43. import platform.modules.sys.entity.*;
  44. import platform.modules.sys.report.ActivityRegistrationExports;
  45. import platform.modules.sys.report.ActivitySignExports;
  46. import platform.modules.sys.report.ContractExport;
  47. import platform.modules.sys.service.*;
  48. import platform.modules.sys.web.ResponseMessage;
  49. import javax.servlet.http.HttpServletRequest;
  50. import javax.servlet.http.HttpServletResponse;
  51. import java.io.IOException;
  52. import java.io.InputStream;
  53. import java.io.OutputStream;
  54. import java.net.URLEncoder;
  55. import java.text.SimpleDateFormat;
  56. import java.util.*;
  57. import java.util.concurrent.ExecutorService;
  58. import java.util.concurrent.Executors;
  59. import java.util.concurrent.ThreadPoolExecutor;
  60. @Controller
  61. @RequestMapping(value = "/government/activity")
  62. public class ActivityController extends BaseController {
  63. @Autowired
  64. private ActivityService activityService;
  65. @Autowired
  66. private ActivityRegistrationService activityRegistrationService;
  67. @Autowired
  68. private ActivityFeedbackService activityFeedbackService;
  69. @Autowired
  70. private DictionaryItemService dictionaryItemService;
  71. @Autowired
  72. private StreetService streetService;
  73. @Autowired
  74. private BuildInfoService buildInfoService;
  75. @Autowired
  76. private CompanyService companyService;
  77. @Autowired
  78. private AttachmentService attachmentService;
  79. @Autowired
  80. private MessageService messageService;
  81. @Autowired
  82. private UserService userService;
  83. @Autowired
  84. private WaitToDoService waitToDoService;
  85. @OperationLog(value = "查看活动列表")
  86. @GetMapping(value = "/list")
  87. public String list(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  88. ActivitySearchCondition condition, ModelMap modelMap) throws Exception {
  89. try {
  90. log.info("分页查询活动信息,pageNum = {},condition = {}", pageNum, condition.toString(), false);
  91. PageInfo<ActivityDetail> pageInfo = activityService.findAvtivityList(pageNum, PAGESIZE, condition);
  92. log.info("分页查询活动信息列表结果! pageInfo = {}", pageInfo);
  93. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  94. modelMap.addAttribute("activity_type", activityTypeList);
  95. modelMap.put("pageInfo", pageInfo);
  96. modelMap.put("condition", condition);
  97. log.info("菜单跳转到活动管理页面!");
  98. } catch (Exception e) {
  99. e.printStackTrace();
  100. }
  101. return BASE_GOVERNMENT_PATH + "activity_list";
  102. }
  103. /**
  104. * 跳转到详情页面
  105. *
  106. * @return
  107. */
  108. @OperationLog(value = "查看活动详情")
  109. @GetMapping(value = "/get/{id}")
  110. public String view(@PathVariable("id") Integer id, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, String minScore, String maxScore, ModelMap modelMap) throws Exception {
  111. log.info("跳转到活动详情页面!");
  112. ActivityDetail activityDetail = activityService.findOne(id.toString());
  113. List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null);
  114. if (null != attachments && attachments.size() > 0) {
  115. FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
  116. activityDetail.setFileDown(fileDown);
  117. }
  118. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  119. for (DictionaryItem item : activityTypeList) {
  120. if (Objects.equals(item.getValue(), activityDetail.getActivity_type())) {
  121. activityDetail.setActivity_type(item.getName());
  122. }
  123. }
  124. List<ActivityPush> pushList = activityDetail.getPushList();
  125. String streetIds = "", buildIds = "", companyIds = "", names = "";
  126. if (!CollectionUtils.isEmpty(pushList)) {
  127. for (ActivityPush push : pushList) {
  128. if (Objects.equals("4", push.getUser_type())) {
  129. streetIds += push.getUser_id() + ",";
  130. names += push.getUser_name() + ",";
  131. }
  132. if (Objects.equals("1", push.getUser_type())) {
  133. buildIds += push.getUser_id() + ",";
  134. names += push.getUser_name() + ",";
  135. }
  136. if (Objects.equals("3", push.getUser_type())) {
  137. companyIds += push.getUser_id() + ",";
  138. names += push.getUser_name() + ",";
  139. }
  140. }
  141. activityDetail.setPush_street_ids(streetIds);
  142. activityDetail.setPush_build_ids(buildIds);
  143. activityDetail.setPush_company_ids(companyIds);
  144. activityDetail.setPush_names(names);
  145. }
  146. modelMap.addAttribute("activity", activityDetail);
  147. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  148. List<ActivityRegistration> signList = activityRegistrationService.findSginList(id);
  149. List<ActivityFeedback> feedbackList = activityFeedbackService.findAvtivityList(id);
  150. String quota = activityDetail.getActivity_quota();
  151. //if (StringUtils.isBlank(quota)) quota = "0";
  152. int num = 0;
  153. for (ActivityRegistration registration : registrationList) {
  154. if (Objects.equals("1", registration.getReview_state())) {
  155. num++;
  156. }
  157. }
  158. PageInfo<ActivityFeedback> feedbackPageInfo = activityFeedbackService.feedbackPage(id + "", minScore, maxScore, pageNum, PAGESIZE);
  159. Map<String, Integer> scoreCount = activityFeedbackService.getScoreCount(id + "", null, null, null, null);
  160. modelMap.put("fileUrl", setFileUrl());
  161. modelMap.addAttribute("registrationList", registrationList);
  162. modelMap.addAttribute("signList", signList);
  163. // modelMap.addAttribute("feedbackList", feedbackList);
  164. modelMap.addAttribute("activity_id", id);
  165. modelMap.addAttribute("pageInfo", feedbackPageInfo);
  166. modelMap.addAttribute("scoreCount", scoreCount);
  167. modelMap.addAttribute("minScore", minScore);
  168. modelMap.addAttribute("maxScore", maxScore);
  169. modelMap.addAttribute("quota", quota);
  170. modelMap.addAttribute("num", num);
  171. return BASE_GOVERNMENT_PATH + "activity_detail";
  172. }
  173. /**
  174. * 跳转到打印详情页面
  175. *
  176. * @return
  177. */
  178. @OperationLog(value = "打印活动详情")
  179. @GetMapping(value = "/printReg/{id}")
  180. public String printReg(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  181. log.info("跳转到活动报名打印页面!");
  182. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  183. modelMap.addAttribute("registrationList", registrationList);
  184. return BASE_GOVERNMENT_PATH + "activity_print";
  185. }
  186. /**
  187. * 跳转到报名信息导出excel
  188. *
  189. * @return
  190. */
  191. @OperationLog(value = "导出活动报名信息表")
  192. @GetMapping(value = "/exportExcelRegistration")
  193. public void exportExcelRegistration(HttpServletResponse response, ActivityFindRequest activityFindRequest) throws Exception {
  194. log.info("跳转到活动报名下载!");
  195. Integer id = activityFindRequest.getId();
  196. ActivityDetail activityDetail = activityService.findOne(id.toString());
  197. String fileName = activityDetail.getActivity_title() + "报名信息表.xlsx";
  198. /*List<ActivityRegistrationExports> registrationList = activityRegistrationService.findRegistrationListExports(id);
  199. for (ActivityRegistrationExports activityRegistrationExports : registrationList) {
  200. String regway = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.ACTIVITY_REGISTRATION_WAY, activityRegistrationExports.getRegistration_way());
  201. activityRegistrationExports.setRegistration_way(regway);
  202. if (Objects.equals(activityRegistrationExports.getReview_state(), "0")) {
  203. activityRegistrationExports.setReview_state("待审核");
  204. }
  205. if (Objects.equals(activityRegistrationExports.getReview_state(), "1")) {
  206. activityRegistrationExports.setReview_state("通过");
  207. }
  208. if (Objects.equals(activityRegistrationExports.getReview_state(), "2")) {
  209. activityRegistrationExports.setReview_state("驳回");
  210. }
  211. if (Objects.equals(activityRegistrationExports.getReview_state(), "3")) {
  212. activityRegistrationExports.setReview_state("取消报名");
  213. }
  214. }*/
  215. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findRegistrationList(id);
  216. List<ActivityRegistrationExports> registrationList = new ArrayList<>();
  217. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  218. for (ActivityRegistration activityRegistration : activityRegistrationList) {
  219. ActivityRegistrationExports activityRegistrationExports = new ActivityRegistrationExports();
  220. BeanUtils.copyProperties(activityRegistration, activityRegistrationExports);
  221. String regway = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.ACTIVITY_REGISTRATION_WAY, activityRegistration.getRegistration_way());
  222. activityRegistrationExports.setRegistration_way(regway);
  223. if (Objects.equals(activityRegistration.getReview_state(), "0")) {
  224. activityRegistrationExports.setReview_state("待审核");
  225. }
  226. if (Objects.equals(activityRegistration.getReview_state(), "1")) {
  227. activityRegistrationExports.setReview_state("通过");
  228. }
  229. if (Objects.equals(activityRegistration.getReview_state(), "2")) {
  230. activityRegistrationExports.setReview_state("驳回");
  231. }
  232. if (Objects.equals(activityRegistration.getReview_state(), "3")) {
  233. activityRegistrationExports.setReview_state("取消报名");
  234. }
  235. registrationList.add(activityRegistrationExports);
  236. }
  237. new ExportExcel(activityDetail.getActivity_title() + "报名信息表", ActivityRegistrationExports.class).setDataList(registrationList).write(response, fileName).dispose();
  238. }
  239. /**
  240. * 跳转到签到信息导出excel
  241. *
  242. * @return
  243. */
  244. @OperationLog(value = "导出活动签到信息表")
  245. @GetMapping(value = "/exportExcelSign")
  246. public void exportExcelSign(HttpServletResponse response, ActivityFindRequest activityFindRequest) throws Exception {
  247. log.info("跳转到活动报名下载!");
  248. Integer id = activityFindRequest.getId();
  249. ActivityDetail activityDetail = activityService.findOne(id.toString());
  250. String fileName = activityDetail.getActivity_title() + "签到信息表.xlsx";
  251. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findSginList(id);
  252. List<ActivitySignExports> signList = new ArrayList<>();
  253. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  254. for (ActivityRegistration activityRegistration : activityRegistrationList) {
  255. ActivitySignExports activitySignExports = new ActivitySignExports();
  256. BeanUtils.copyProperties(activityRegistration, activitySignExports);
  257. if (activityRegistration.getRegistration_time() != null)
  258. activitySignExports.setRegistration_time(sdf.format(activityRegistration.getRegistration_time()));
  259. if (activityRegistration.getSign_time() != null)
  260. activitySignExports.setSign_time(sdf.format(activityRegistration.getSign_time()));
  261. if (StringUtils.isBlank(activitySignExports.getSign_state())) {
  262. activitySignExports.setSign_state("待确认");
  263. }
  264. if (Objects.equals(activitySignExports.getSign_state(), "0")) {
  265. activitySignExports.setSign_state("已签到");
  266. }
  267. if (Objects.equals(activitySignExports.getSign_state(), "1")) {
  268. activitySignExports.setSign_state("未参加");
  269. }
  270. signList.add(activitySignExports);
  271. }
  272. new ExportExcel(activityDetail.getActivity_title() + "签到信息表", ActivitySignExports.class).setDataList(signList).write(response, fileName).dispose();
  273. }
  274. /**
  275. * 跳转到详情页面
  276. *
  277. * @return
  278. */
  279. @GetMapping(value = "/printPass/{id}")
  280. public String printPass(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  281. log.info("跳转到活动报名打印页面!");
  282. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  283. List<ActivityRegistration> resultList = new ArrayList<>();
  284. for (ActivityRegistration activityRegistration : registrationList) {
  285. if (Objects.equals(activityRegistration.getReview_state(), "1")) {
  286. resultList.add(activityRegistration);
  287. }
  288. }
  289. modelMap.addAttribute("registrationList", resultList);
  290. return BASE_GOVERNMENT_PATH + "activity_print";
  291. }
  292. /**
  293. * 跳转到审核页面
  294. *
  295. * @return
  296. */
  297. @GetMapping(value = "/review/{id}")
  298. public String review(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  299. log.info("跳转到活动审核页面!");
  300. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  301. ActivityDetail activity = activityService.findOne(id + "");
  302. List<ActivityRegistration> registration_waited = new ArrayList<ActivityRegistration>();
  303. List<ActivityRegistration> registration_passed = new ArrayList<ActivityRegistration>();
  304. List<ActivityRegistration> registration_reject = new ArrayList<ActivityRegistration>();
  305. List<String> registration_waited_name_list = new ArrayList<>();
  306. List<String> registration_passed_name_list = new ArrayList<>();
  307. List<String> registration_reject_name_list = new ArrayList<>();
  308. for (ActivityRegistration activityRegistration : registrationList) {
  309. if (Objects.equals(activityRegistration.getReview_state(), "0")) {
  310. registration_waited.add(activityRegistration);
  311. boolean flag = true;
  312. for (String name : registration_waited_name_list) {
  313. if (Objects.equals(name, activityRegistration.getUser_name())) {
  314. flag = false;
  315. }
  316. }
  317. if (flag) {
  318. registration_waited_name_list.add(activityRegistration.getUser_name());
  319. }
  320. }
  321. if (Objects.equals(activityRegistration.getReview_state(), "1")) {
  322. registration_passed.add(activityRegistration);
  323. boolean flag = true;
  324. for (String name : registration_passed_name_list) {
  325. if (Objects.equals(name, activityRegistration.getUser_name())) {
  326. flag = false;
  327. }
  328. }
  329. if (flag) {
  330. registration_passed_name_list.add(activityRegistration.getUser_name());
  331. }
  332. }
  333. if (Objects.equals(activityRegistration.getReview_state(), "2")) {
  334. registration_reject.add(activityRegistration);
  335. boolean flag = true;
  336. for (String name : registration_reject_name_list) {
  337. if (Objects.equals(name, activityRegistration.getUser_name())) {
  338. flag = false;
  339. }
  340. }
  341. if (flag) {
  342. registration_reject_name_list.add(activityRegistration.getUser_name());
  343. }
  344. }
  345. }
  346. List<ActivityReview> registration_waited_list = new ArrayList<>();
  347. List<ActivityReview> registration_passed_list = new ArrayList<>();
  348. List<ActivityReview> registration_rejected_list = new ArrayList<>();
  349. for (String name : registration_waited_name_list) {
  350. ActivityReview activityReview = new ActivityReview();
  351. activityReview.setUser_name(name);
  352. List<ActivityRegistration> temp = new ArrayList<>();
  353. for (ActivityRegistration reg : registration_waited) {
  354. if (Objects.equals(name, reg.getUser_name())) {
  355. activityReview.setRegistration_time(reg.getRegistration_time());
  356. temp.add(reg);
  357. }
  358. activityReview.setActivityRegistrationList(temp);
  359. }
  360. registration_waited_list.add(activityReview);
  361. }
  362. for (String name : registration_passed_name_list) {
  363. ActivityReview activityReview = new ActivityReview();
  364. activityReview.setUser_name(name);
  365. List<ActivityRegistration> temp = new ArrayList<>();
  366. for (ActivityRegistration reg : registration_passed) {
  367. if (Objects.equals(name, reg.getUser_name())) {
  368. activityReview.setRegistration_time(reg.getRegistration_time());
  369. temp.add(reg);
  370. }
  371. activityReview.setActivityRegistrationList(temp);
  372. }
  373. registration_passed_list.add(activityReview);
  374. }
  375. for (String name : registration_reject_name_list) {
  376. ActivityReview activityReview = new ActivityReview();
  377. activityReview.setUser_name(name);
  378. List<ActivityRegistration> temp = new ArrayList<>();
  379. for (ActivityRegistration reg : registration_reject) {
  380. if (Objects.equals(name, reg.getUser_name())) {
  381. activityReview.setRegistration_time(reg.getRegistration_time());
  382. temp.add(reg);
  383. }
  384. activityReview.setActivityRegistrationList(temp);
  385. }
  386. registration_rejected_list.add(activityReview);
  387. }
  388. String quota = activity.getActivity_quota();
  389. if (StringUtils.isBlank(quota)) quota = "0";
  390. int num = 0;
  391. int Outnumber = 0;
  392. for (ActivityReview activityReview : registration_passed_list) {
  393. num += activityReview.getActivityRegistrationList().size();
  394. }
  395. int remain = Integer.parseInt(quota) - num;
  396. if (remain < 0) {
  397. remain = 0;
  398. Outnumber = num - Integer.parseInt(quota);
  399. }
  400. modelMap.addAttribute("activityId", id);
  401. modelMap.addAttribute("Outnumber", Outnumber);
  402. modelMap.addAttribute("quota", quota);
  403. modelMap.addAttribute("remain", remain);
  404. modelMap.addAttribute("registration_waited", registration_waited_list);
  405. modelMap.addAttribute("registration_passed", registration_passed_list);
  406. modelMap.addAttribute("registration_reject", registration_rejected_list);
  407. modelMap.put("fileUrl", setFileUrl());
  408. return BASE_GOVERNMENT_PATH + "activity_review";
  409. }
  410. /**
  411. * 跳转到签到页面
  412. *
  413. * @return
  414. */
  415. @GetMapping(value = "/sign/{id}")
  416. public String sign(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  417. log.info("跳转到活动签到页面!");
  418. List<ActivityRegistration> signList = activityRegistrationService.findSginList(id);
  419. List<ActivityRegistration> sign_waited = new ArrayList<ActivityRegistration>();
  420. List<ActivityRegistration> sign_passed = new ArrayList<ActivityRegistration>();
  421. List<ActivityRegistration> sign_reject = new ArrayList<ActivityRegistration>();
  422. for (ActivityRegistration activityRegistration : signList) {
  423. if (Objects.equals(activityRegistration.getSign_state(), "0")) {
  424. sign_passed.add(activityRegistration);
  425. } else if (Objects.equals(activityRegistration.getSign_state(), "1")) {
  426. sign_reject.add(activityRegistration);
  427. } else if (!Objects.equals(activityRegistration.getReview_state(), "0")) {
  428. sign_waited.add(activityRegistration);
  429. }
  430. }
  431. modelMap.addAttribute("sign_waited", sign_waited);
  432. modelMap.addAttribute("sign_passed", sign_passed);
  433. modelMap.addAttribute("sign_reject", sign_reject);
  434. return BASE_GOVERNMENT_PATH + "activity_sign";
  435. }
  436. /**
  437. * 跳转到取消活动页面
  438. *
  439. * @return
  440. */
  441. @GetMapping(value = "/abort/{id}")
  442. public String abort(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  443. log.info("跳转到活动取消页面!");
  444. modelMap.addAttribute("activity_id", id);
  445. return BASE_GOVERNMENT_PATH + "activity_cancel";
  446. }
  447. /**
  448. * 取消活动
  449. *
  450. * @param id
  451. * @param state
  452. * @param message
  453. * @param modelMap
  454. * @return
  455. * @throws Exception
  456. */
  457. @OperationLog(value = "取消活动")
  458. @ResponseBody
  459. @PostMapping(value = "/activityAbort")
  460. public ResponseMessage activityAbort(@RequestParam("id") String id, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception {
  461. if (IsTooFrequently()) {
  462. return ResponseMessage.success("操作过于频繁,请稍后再试!");
  463. }
  464. log.info("更新活动状态");
  465. ActivityDetail activityDetail = new ActivityDetail();
  466. activityDetail.setId(Integer.parseInt(id));
  467. activityDetail.setActivity_state(state);
  468. //取消消息
  469. if (Objects.equals("2", state)) {
  470. ActivityDetail activity = activityService.findOne(id + "");
  471. String streetids = "", buildids = "", companyids = "", governmentids = "";
  472. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findRegistrationList(Integer.parseInt(id));
  473. //-2018-05-30-发送活动取消短信
  474. activityRegistrationService.sendActivityAbortSMS(activity, activityRegistrationList);
  475. for (ActivityRegistration registration : activityRegistrationList) {
  476. String type = registration.getUser_type();
  477. if (Objects.equals(type, Constant.UserType.STREET.toString())) {
  478. String streetId = userService.getUser(registration.getUser_id()).getStreet_id().toString();
  479. streetids += streetId + ",";
  480. } else if (Objects.equals(type, Constant.UserType.BUILD.toString())) {
  481. String buildId = userService.getUser(registration.getUser_id()).getBuild_id().toString();
  482. buildids += buildId + ",";
  483. } else if (Objects.equals(type, Constant.UserType.COMPANY.toString())) {
  484. String companyId = userService.getUser(registration.getUser_id()).getCompany_id().toString();
  485. companyids += companyId + ",";
  486. } else if (Objects.equals(type, Constant.UserType.GOVERNMENT.toString())) {
  487. //String governmentId = userService.getUser(registration.getUser_id()).get.toString();
  488. governmentids += registration.getUser_id() + ",";
  489. }
  490. }
  491. Message messages = new Message();
  492. messages.setApply_id(Integer.parseInt(id));
  493. messages.setTitle(activity.getActivity_title() + "活动取消");
  494. messages.setContent(message);
  495. messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  496. if (!StringUtils.isEmpty(streetids)) {
  497. String[] streetArr = streetids.split(",");
  498. Set<String> set = new HashSet<>();
  499. for (int i = 0; i < streetArr.length; i++) {
  500. set.add(streetArr[i]);
  501. }
  502. String[] streetArrs = (String[]) set.toArray(new String[set.size()]);
  503. int[] streetArrInt = new int[streetArrs.length];
  504. for (int i = 0; i < streetArrs.length; i++) {
  505. streetArrInt[i] = Integer.parseInt(streetArrs[i]);
  506. }
  507. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.STREET);
  508. }
  509. if (!StringUtils.isEmpty(buildids)) {
  510. String[] buildArr = buildids.split(",");
  511. Set<String> set = new HashSet<>();
  512. for (int i = 0; i < buildArr.length; i++) {
  513. set.add(buildArr[i]);
  514. }
  515. String[] buildArrs = (String[]) set.toArray(new String[set.size()]);
  516. int[] buildArrInt = new int[buildArrs.length];
  517. for (int i = 0; i < buildArrs.length; i++) {
  518. buildArrInt[i] = Integer.parseInt(buildArrs[i]);
  519. }
  520. messageService.saveMessageAndPush(messages, buildArrInt, Constant.UserType.BUILD);
  521. }
  522. if (!StringUtils.isEmpty(companyids)) {
  523. String[] companyArr = companyids.split(",");
  524. Set<String> set = new HashSet<>();
  525. for (int i = 0; i < companyArr.length; i++) {
  526. set.add(companyArr[i]);
  527. }
  528. String[] companyArrs = (String[]) set.toArray(new String[set.size()]);
  529. int[] companyArrInt = new int[companyArrs.length];
  530. for (int i = 0; i < companyArrs.length; i++) {
  531. companyArrInt[i] = Integer.parseInt(companyArrs[i]);
  532. }
  533. messageService.saveMessageAndPush(messages, companyArrInt, Constant.UserType.COMPANY);
  534. }
  535. if (!StringUtils.isEmpty(governmentids)) {
  536. String[] governmentArr = governmentids.split(",");
  537. Set<String> set = new HashSet<>();
  538. for (int i = 0; i < governmentArr.length; i++) {
  539. set.add(governmentArr[i]);
  540. }
  541. String[] governmentArrs = (String[]) set.toArray(new String[set.size()]);
  542. int[] governmentArrInt = new int[governmentArrs.length];
  543. for (int i = 0; i < governmentArrs.length; i++) {
  544. governmentArrInt[i] = Integer.parseInt(governmentArrs[i]);
  545. }
  546. messageService.saveMessageAndPush(messages, governmentArrInt, Constant.UserType.GOVERNMENT);
  547. }
  548. }
  549. return ResponseMessage.success("操作成功", activityService.updateActivitySelective(activityDetail));
  550. }
  551. /**
  552. * 跳转到添加页面
  553. *
  554. * @return
  555. */
  556. @GetMapping(value = "/add")
  557. public String add(ModelMap modelMap) {
  558. log.info("跳转到活动添加页面!");
  559. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  560. modelMap.addAttribute("activity_type", activityTypeList);
  561. return BASE_GOVERNMENT_PATH + "activity_add";
  562. }
  563. /**
  564. * 跳转到修改页面
  565. *
  566. * @return
  567. */
  568. @GetMapping(value = "/edit/{id}")
  569. public String edit(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  570. log.info("跳转到活动编辑页面!");
  571. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  572. modelMap.addAttribute("activity_type", activityTypeList);
  573. ActivityDetail activityDetail = activityService.findOne(id.toString());
  574. List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null);
  575. if (null != attachments && attachments.size() > 0) {
  576. FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
  577. activityDetail.setFileDown(fileDown);
  578. }
  579. List<ActivityPush> pushList = activityDetail.getPushList();
  580. String streetIds = "", buildIds = "", companyIds = "", names = "";
  581. if (!CollectionUtils.isEmpty(pushList)) {
  582. for (ActivityPush push : pushList) {
  583. if (Objects.equals("4", push.getUser_type())) {
  584. streetIds += push.getUser_id() + ",";
  585. names += push.getUser_name() + ",";
  586. }
  587. if (Objects.equals("1", push.getUser_type())) {
  588. buildIds += push.getUser_id() + ",";
  589. names += push.getUser_name() + ",";
  590. }
  591. if (Objects.equals("3", push.getUser_type())) {
  592. companyIds += push.getUser_id() + ",";
  593. names += push.getUser_name() + ",";
  594. }
  595. }
  596. activityDetail.setPush_street_ids(streetIds);
  597. activityDetail.setPush_build_ids(buildIds);
  598. activityDetail.setPush_company_ids(companyIds);
  599. activityDetail.setPush_names(names);
  600. }
  601. modelMap.put("fileUrl", setFileUrl());
  602. modelMap.addAttribute("activity", activityDetail);
  603. return BASE_GOVERNMENT_PATH + "activity_edit";
  604. }
  605. /**
  606. * 添加活动信息
  607. *
  608. * @param activityDetail
  609. * @return
  610. */
  611. @OperationLog(value = "添加活动")
  612. @ResponseBody
  613. @PostMapping(value = "/save")
  614. public ResponseMessage saveActivity(ActivityDetail activityDetail, @RequestParam("activity_state") String activity_state) throws Exception {
  615. log.debug("添加活动信息! ActivityDetail = {}", activityDetail);
  616. if (IsTooFrequently()) {
  617. return ResponseMessage.success("操作过于频繁,请稍后再试!");
  618. }
  619. if (Objects.equals("1", activity_state)) {
  620. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  621. Date currentTime = new Date();
  622. String dateString = formatter.format(currentTime);
  623. activityDetail.setActivity_publishtime(dateString);
  624. }
  625. int activityid = activityService.saveActivity(activityDetail);
  626. if (Objects.equals("1", activity_state)) {
  627. if (Objects.equals(activityDetail.getPush_level(), "1")) {
  628. String streetids = activityDetail.getPush_street_ids();
  629. String buildids = activityDetail.getPush_build_ids();
  630. String companyids = activityDetail.getPush_company_ids();
  631. Message message = new Message();
  632. message.setApply_id(activityid);
  633. message.setTitle("您接收到了一条关于" + activityDetail.getActivity_title() + "的活动推送");
  634. message.setContent(activityDetail.getContent());
  635. message.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  636. if (!StringUtils.isEmpty(streetids)) {
  637. String[] streetArr = streetids.split(",");
  638. int[] streetArrInt = new int[streetArr.length];
  639. for (int i = 0; i < streetArr.length; i++) {
  640. streetArrInt[i] = Integer.parseInt(streetArr[i]);
  641. }
  642. messageService.saveMessageAndPush(message, streetArrInt, Constant.UserType.STREET);
  643. }
  644. if (!StringUtils.isEmpty(buildids)) {
  645. String[] buildArr = buildids.split(",");
  646. int[] buildArrInt = new int[buildArr.length];
  647. for (int i = 0; i < buildArr.length; i++) {
  648. buildArrInt[i] = Integer.parseInt(buildArr[i]);
  649. }
  650. messageService.saveMessageAndPush(message, buildArrInt, Constant.UserType.BUILD);
  651. }
  652. if (!StringUtils.isEmpty(companyids)) {
  653. String[] companyArr = companyids.split(",");
  654. int[] companyArrInt = new int[companyArr.length];
  655. for (int i = 0; i < companyArr.length; i++) {
  656. companyArrInt[i] = Integer.parseInt(companyArr[i]);
  657. }
  658. messageService.saveMessageAndPush(message, companyArrInt, Constant.UserType.COMPANY);
  659. }
  660. }
  661. }
  662. return ResponseMessage.success("保存成功!");
  663. }
  664. /**
  665. * 编辑活动信息
  666. *
  667. * @param activityDetail
  668. * @return
  669. */
  670. @OperationLog(value = "编辑活动")
  671. @ResponseBody
  672. @PostMapping(value = "/edit")
  673. public ResponseMessage editActivity(ActivityDetail activityDetail, @RequestParam("activity_state") String activity_state) throws Exception {
  674. log.debug("编辑活动信息! ActivityDetail = {}", activityDetail);
  675. if (IsTooFrequently()) {
  676. return ResponseMessage.success("操作过于频繁,请稍后再试!");
  677. }
  678. if (Objects.equals("1", activity_state)) {
  679. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  680. Date currentTime = new Date();
  681. String dateString = formatter.format(currentTime);
  682. activityDetail.setActivity_publishtime(dateString);
  683. }
  684. activityService.updateActivity(activityDetail);
  685. if (Objects.equals("1", activity_state)) {
  686. if (Objects.equals(activityDetail.getPush_level(), "1")) {
  687. String streetids = activityDetail.getPush_street_ids();
  688. String buildids = activityDetail.getPush_build_ids();
  689. String companyids = activityDetail.getPush_company_ids();
  690. Message message = new Message();
  691. message.setApply_id(activityDetail.getId());
  692. message.setTitle(activityDetail.getActivity_title() + "活动修改");
  693. message.setContent(activityDetail.getActivity_reason());
  694. message.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  695. if (!StringUtils.isEmpty(streetids)) {
  696. String[] streetArr = streetids.split(",");
  697. int[] streetArrInt = new int[streetArr.length];
  698. for (int i = 0; i < streetArr.length; i++) {
  699. streetArrInt[i] = Integer.parseInt(streetArr[i]);
  700. }
  701. messageService.saveMessageAndPush(message, streetArrInt, Constant.UserType.STREET);
  702. }
  703. if (!StringUtils.isEmpty(buildids)) {
  704. String[] buildArr = buildids.split(",");
  705. int[] buildArrInt = new int[buildArr.length];
  706. for (int i = 0; i < buildArr.length; i++) {
  707. buildArrInt[i] = Integer.parseInt(buildArr[i]);
  708. }
  709. messageService.saveMessageAndPush(message, buildArrInt, Constant.UserType.BUILD);
  710. }
  711. if (!StringUtils.isEmpty(companyids)) {
  712. String[] companyArr = companyids.split(",");
  713. int[] companyArrInt = new int[companyArr.length];
  714. for (int i = 0; i < companyArr.length; i++) {
  715. companyArrInt[i] = Integer.parseInt(companyArr[i]);
  716. }
  717. messageService.saveMessageAndPush(message, companyArrInt, Constant.UserType.COMPANY);
  718. }
  719. //发送活动编辑变更短信
  720. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findRegistrationList(activityDetail.getId());
  721. activityRegistrationService.sendActivityUpdateSMS(activityDetail, activityRegistrationList);
  722. }
  723. }
  724. return ResponseMessage.success("保存成功!");
  725. }
  726. /**
  727. * 删除项目
  728. */
  729. @OperationLog(value = "删除活动")
  730. @ResponseBody
  731. @DeleteMapping(value = "/delete/{id}")
  732. public ResponseMessage delete(@PathVariable("id") String id) throws Exception {
  733. try {
  734. activityService.deleteProject(id);
  735. return ResponseMessage.success("删除成功!");
  736. } catch (BaseException e) {
  737. return ResponseMessage.success(e.getMessage());
  738. } catch (Exception e) {
  739. e.printStackTrace();
  740. }
  741. return ResponseMessage.error("删除失败!");
  742. }
  743. /**
  744. * 跳转到添加推送页面
  745. *
  746. * @return
  747. * @throws Exception
  748. */
  749. @GetMapping(value = "/addPush")
  750. public String addPush(ModelMap modelMap) throws Exception {
  751. log.info("跳转到添加推送页面!");
  752. List<Street> streetList = streetService.findList();
  753. modelMap.addAttribute("streetList", streetList);
  754. return BASE_GOVERNMENT_PATH + "activityMessagepush_add";
  755. }
  756. /**
  757. * 跳转到添加推送页面
  758. *
  759. * @return
  760. * @throws Exception
  761. */
  762. @GetMapping(value = "/calendar")
  763. public String calendar(ModelMap modelMap) throws Exception {
  764. log.info("跳转到活动日历!");
  765. return BASE_GOVERNMENT_PATH + "activity_calendar";
  766. }
  767. @ResponseBody
  768. @GetMapping(value = "/getAllEvents")
  769. public ResponseMessage getAllEvents() {
  770. log.info("获取所有活动时间");
  771. List<String> dates = activityService.getAllEventsDate(null);
  772. return ResponseMessage.success("", dates);
  773. }
  774. @ResponseBody
  775. @PostMapping(value = "/getEventList")
  776. public ResponseMessage getEventList(ActivityDetail activityDetail) {
  777. log.info("获取一天内的所有活动");
  778. List<ActivityDetail> dates = activityService.getEventList(activityDetail.getActivity_starttime());
  779. return ResponseMessage.success("", dates);
  780. }
  781. /**
  782. * 跳转到签到页面
  783. *
  784. * @return
  785. */
  786. @GetMapping(value = "/preview")
  787. public String preview(ModelMap modelMap) throws Exception {
  788. log.info("跳转预览页面!");
  789. return BASE_GOVERNMENT_PATH + "activity_preview";
  790. }
  791. @ResponseBody
  792. @PostMapping(value = "/getBuildsByStreetIds")
  793. public ResponseMessage getBuildsByStreetIds(@RequestParam("streetIds") String streetIds) {
  794. log.info("根据街道ids获取园区!");
  795. String[] idsArr = streetIds.split(",");
  796. List<String> ids = new ArrayList<String>();
  797. for (String id : idsArr) {
  798. ids.add(id);
  799. }
  800. List<BuildInfo> buildList = buildInfoService.findBuildsByStreetIds(ids);
  801. return ResponseMessage.success("", buildList);
  802. }
  803. @ResponseBody
  804. @PostMapping(value = "/getCompanysByBuildIds")
  805. public ResponseMessage getCompanysByBuildIds(@RequestParam("buildIds") String buildIds, @RequestParam("type_id") String type_id) {
  806. log.info("根据街道ids获取园区!");
  807. String[] idsArr = buildIds.split(",");
  808. List<String> ids = new ArrayList<String>();
  809. for (String id : idsArr) {
  810. ids.add(id);
  811. }
  812. List<Company> companyList = companyService.findCompanysByBuildIds(ids, type_id);
  813. return ResponseMessage.success("", companyList);
  814. }
  815. @ResponseBody
  816. @PostMapping(value = "/findStreetBuildCompanyByName")
  817. public ResponseMessage findStreetBuildCompanyByName(@RequestParam("name") String name, ModelMap modelMap) throws Exception {
  818. log.info("模糊查询街道园区企业");
  819. return ResponseMessage.success("", activityService.findStreetBuildCompanyByName(name));
  820. }
  821. @ResponseBody
  822. @PostMapping(value = "/updateSignState")
  823. public ResponseMessage updateState(@RequestParam("id") String id, @RequestParam("state") String state, ModelMap modelMap) throws Exception {
  824. log.info("更新活动签到状态");
  825. ActivityRegistration activityRegistration = new ActivityRegistration();
  826. activityRegistration.setId(Integer.parseInt(id));
  827. activityRegistration.setSign_state(state);
  828. activityRegistration.setSign_time(new Date());
  829. return ResponseMessage.success("操作成功", activityRegistrationService.updateState(activityRegistration));
  830. }
  831. @ResponseBody
  832. @PostMapping(value = "/updateSignStateBatch")
  833. public ResponseMessage updateStateBatch(@RequestParam("ids") String ids, @RequestParam("state") String state, ModelMap modelMap) throws Exception {
  834. log.info("批量更新活动签到状态");
  835. ActivityRegistration activityRegistration = new ActivityRegistration();
  836. activityRegistration.setSign_state(state);
  837. activityRegistration.setSign_time(new Date());
  838. String[] idsArr = ids.split(",");
  839. List<String> idList = new ArrayList<String>();
  840. if (idsArr.length > 0) {
  841. for (String id : idsArr) {
  842. idList.add(id);
  843. }
  844. }
  845. activityRegistrationService.updateStateBatch(idList, activityRegistration);
  846. return ResponseMessage.success("操作成功", null);
  847. }
  848. @ResponseBody
  849. @PostMapping(value = "/updateReviewState")
  850. public ResponseMessage updateReviewState(@RequestParam("id") String id, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception {
  851. log.info("更新活动审核状态");
  852. ActivityRegistration activityRegistration = new ActivityRegistration();
  853. activityRegistration.setId(Integer.parseInt(id));
  854. activityRegistration.setReview_state(state);
  855. ActivityRegistration reg = activityRegistrationService.findById(Integer.parseInt(id));
  856. ActivityDetail activity = activityService.findOne(reg.getActivity_id() + "");
  857. Message messages = new Message();
  858. messages.setApply_id(activity.getId());
  859. messages.setTitle("企业报名审核确认");
  860. messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  861. String templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_SUCCESS;
  862. //驳回消息
  863. if (Objects.equals("2", state)) {
  864. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认不通过");
  865. templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_FAILED;
  866. }
  867. //通过消息
  868. if (Objects.equals("1", state)) {
  869. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认通过");
  870. }
  871. if (!reg.getUser_type().equals(Constant.UserType.PERSONAL.toString())) {
  872. int[] arrInt = new int[1];
  873. arrInt[0] = Integer.parseInt(reg.getRelation_id());
  874. if (Objects.equals(Constant.UserType.GOVERNMENT, reg.getUser_type())) {
  875. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.GOVERNMENT);
  876. } else if (Objects.equals(Constant.UserType.BUILD, reg.getUser_type())) {
  877. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.BUILD);
  878. } else if (Objects.equals(Constant.UserType.STREET, reg.getUser_type())) {
  879. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.STREET);
  880. } else if (Objects.equals(Constant.UserType.COMPANY, reg.getUser_type())) {
  881. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.COMPANY);
  882. }
  883. waitToDoService.completeAllTODO(activity.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION);
  884. }
  885. //发送短息
  886. Map<String, String> params = new HashMap<>();
  887. params.put("activity_title", activity.getActivity_title());
  888. // User user = userService.findById(Integer.parseInt(id));
  889. AlibabaSMSUtil.sendSMS(
  890. reg.getPhone(), templateCode, Constant.SINGNAMW, JSONObject.toJSONString(params));
  891. return ResponseMessage.success("操作成功", activityRegistrationService.updateState(activityRegistration));
  892. }
  893. @ResponseBody
  894. @PostMapping(value = "/updateReviewStateBatch")
  895. public ResponseMessage updateReviewStateBatch(@RequestParam("ids") String ids, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception {
  896. log.info("批量更新活动审核状态");
  897. ActivityRegistration activityRegistration = new ActivityRegistration();
  898. activityRegistration.setReview_state(state);
  899. String[] idsArr = ids.split(",");
  900. List<String> idList = new ArrayList<String>();
  901. //短信模版
  902. String templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_SUCCESS;
  903. //发送短信线程池
  904. ExecutorService executor = Executors.newFixedThreadPool(10);
  905. if (idsArr.length > 0) {
  906. for (String id : idsArr) {
  907. idList.add(id);
  908. ActivityRegistration reg = activityRegistrationService.findById(Integer.parseInt(id));
  909. ActivityDetail activity = activityService.findOne(reg.getActivity_id() + "");
  910. Message messages = new Message();
  911. messages.setApply_id(activity.getId());
  912. messages.setTitle("企业报名审核确认");
  913. messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  914. //驳回消息
  915. if (Objects.equals("2", state)) {
  916. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认不通过");
  917. templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_FAILED;
  918. }
  919. //通过消息
  920. if (Objects.equals("1", state)) {
  921. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认通过");
  922. }
  923. if (!reg.getUser_type().equals(Constant.UserType.PERSONAL.toString())) {
  924. int[] streetArrInt = new int[1];
  925. streetArrInt[0] = Integer.parseInt(reg.getRelation_id());
  926. if (Objects.equals(Constant.UserType.GOVERNMENT, reg.getUser_type())) {
  927. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.GOVERNMENT);
  928. } else if (Objects.equals(Constant.UserType.BUILD, reg.getUser_type())) {
  929. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.BUILD);
  930. } else if (Objects.equals(Constant.UserType.STREET, reg.getUser_type())) {
  931. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.STREET);
  932. } else if (Objects.equals(Constant.UserType.COMPANY, reg.getUser_type())) {
  933. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.COMPANY);
  934. }
  935. waitToDoService.completeAllTODO(activity.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION);
  936. }
  937. //发送短信
  938. Map<String, String> params = new HashMap<>();
  939. params.put("activity_title", activity.getActivity_title());
  940. if (StringUtils.isNotBlank(reg.getPhone())) {
  941. String finalTemplateCode = templateCode;
  942. System.out.println("当前线程数:" + ((ThreadPoolExecutor) executor).getActiveCount());
  943. Runnable runnable = () -> {
  944. try {
  945. AlibabaSMSUtil.sendSMS(
  946. reg.getPhone(), finalTemplateCode, Constant.SINGNAMW, JSONObject.toJSONString(params));
  947. } catch (ClientException | InterruptedException e) {
  948. e.printStackTrace();
  949. }
  950. };
  951. executor.submit(runnable);
  952. }
  953. }
  954. }
  955. activityRegistrationService.updateStateBatch(idList, activityRegistration);
  956. return ResponseMessage.success("操作成功", null);
  957. }
  958. @GetMapping(value = "/reject/{id}")
  959. public String reject(@PathVariable("id") String id, ModelMap modelMap) throws Exception {
  960. log.info("跳转到审核驳回页面!");
  961. modelMap.addAttribute("activity_id", id);
  962. return BASE_GOVERNMENT_PATH + "activity_reject";
  963. }
  964. /**
  965. * 跳转到活动二维码
  966. *
  967. * @return
  968. */
  969. @GetMapping(value = "/qrcode/{id}")
  970. public String qrcode(@PathVariable("id") String id, ModelMap modelMap) {
  971. log.info("跳转到活动二维码!");
  972. try {
  973. InputStream is_detail = activityService.getQRcode("1", "350", id);
  974. byte[] bytes_detail = IOUtils.toByteArray(is_detail);
  975. String encoded_detail = Base64.getEncoder().encodeToString(bytes_detail);
  976. InputStream is_sign = activityService.getQRcode("2", "350", id);
  977. byte[] bytes_sign = IOUtils.toByteArray(is_sign);
  978. String encoded_sign = Base64.getEncoder().encodeToString(bytes_sign);
  979. modelMap.addAttribute("qrcode_detail", "data:image/jpg;base64," + encoded_detail);
  980. modelMap.addAttribute("qrcode_sign", "data:image/jpg;base64," + encoded_sign);
  981. } catch (IOException e) {
  982. e.printStackTrace();
  983. }
  984. modelMap.addAttribute("activity_id", id);
  985. return BASE_GOVERNMENT_PATH + "activity_qrcode";
  986. }
  987. /**
  988. * @Author: huZhiHao
  989. * @Description: 获取小程序二维码
  990. * @Date: 2019/12/18
  991. * @Params: [activity_id, type 1报名 2签到]
  992. * @Return: void
  993. **/
  994. @GetMapping(value = "/download/qrcode/{activity_id}/{type}")
  995. public void getDetailQRcode(@PathVariable("activity_id") String id, @PathVariable("type") String type, HttpServletRequest request, HttpServletResponse response) throws IOException {
  996. // try {
  997. // URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token);
  998. // HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
  999. // // conn.setConnectTimeout(10000);//连接超时 单位毫秒
  1000. // // conn.setReadTimeout(2000);//读取超时 单位毫秒
  1001. // // 发送POST请求必须设置如下两行
  1002. // httpURLConnection.setDoOutput(true); // 打开写入属性
  1003. // httpURLConnection.setDoInput(true); // 打开读取属性
  1004. // httpURLConnection.setRequestMethod("POST");// 提交方式
  1005. // // 不得不说一下这个提交方式转换!!真的坑。。改了好长时间!!一定要记得加响应头
  1006. // httpURLConnection.setRequestProperty("Content-Type", "application/x-javascript; charset=UTF-8");// 设置响应头
  1007. // // 获取URLConnection对象对应的输出流
  1008. // PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
  1009. // // 发送请求参数
  1010. // JSONObject paramJson = new JSONObject();
  1011. // paramJson.put("scene", "xxx"); // 你要放的内容
  1012. // paramJson.put("path", "pages/index/index");
  1013. // paramJson.put("width", 430); // 宽度
  1014. // //paramJson.put("auto_color", true);
  1015. // printWriter.write(paramJson.toString());
  1016. // // flush输出流的缓冲
  1017. // printWriter.flush();
  1018. // BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
  1019. // //创建一个空文件
  1020. // OutputStream os = new FileOutputStream(new File("E:/upload/test.jpg"));
  1021. // //ByteArrayOutputStream os = new ByteArrayOutputStream();
  1022. // int len;
  1023. // byte[] arr = new byte[1024];
  1024. // while ((len = bis.read(arr)) != -1) {
  1025. // os.write(arr, 0, len);
  1026. // os.flush();
  1027. // }
  1028. // os.close();
  1029. // // 上传云储存
  1030. // //InputStream is = new ByteArrayInputStream(os.toByteArray());
  1031. // //retMap = UploadUtils.upload(is);
  1032. // } catch (Exception e) {
  1033. // e.printStackTrace();
  1034. // }
  1035. InputStream is = null;
  1036. String name = "";
  1037. if ("1".equals(type)) {
  1038. name = "报名二维码.jpg";
  1039. is = activityService.getQRcode(type, "430", id);
  1040. } else if ("2".equals(type)) {
  1041. name = "签到二维码.jpg";
  1042. is = activityService.getQRcode(type, "430", id);
  1043. }
  1044. String userAgent = request.getHeader("user-agent").toLowerCase();
  1045. if (userAgent.contains("msie") || userAgent.contains("like gecko")) {
  1046. // win10 ie edge 浏览器 和其他系统的ie
  1047. name = URLEncoder.encode(name, "UTF-8");
  1048. } else {
  1049. // 其他
  1050. name = new String(name.getBytes("utf-8"), "iso-8859-1");
  1051. }
  1052. // name = new String(name.getBytes(), "ISO-8859-1");
  1053. response.setHeader("Content-type", "application/octet-stream");
  1054. response.setHeader("Content-disposition", "attachment;fileName=\"" + name + "\"");
  1055. OutputStream os = response.getOutputStream(); //输出数据
  1056. IOUtils.copy(is, os);
  1057. is.close();
  1058. os.close();
  1059. }
  1060. /**
  1061. * 跳转到地图
  1062. *
  1063. * @return
  1064. * @throws Exception
  1065. */
  1066. @GetMapping(value = "/map")
  1067. public String toMap() {
  1068. log.info("跳转到地图!");
  1069. return BASE_GOVERNMENT_PATH + "map_component/map";
  1070. }
  1071. /**
  1072. * 跳转到回复反馈
  1073. *
  1074. * @return
  1075. * @throws Exception
  1076. */
  1077. @GetMapping(value = "/reply/{id}")
  1078. public String toReplyDialog(@PathVariable("id") String feedbackId, ModelMap modelMap) {
  1079. log.info("跳转到回复反馈!");
  1080. ActivityFeedback feedback = activityFeedbackService.findById(Integer.parseInt(feedbackId));
  1081. modelMap.addAttribute("feedback", feedback);
  1082. return BASE_GOVERNMENT_PATH + "activity_reply";
  1083. }
  1084. }