package platform.modules.government.web; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.exceptions.ClientException; import com.github.pagehelper.PageInfo; import org.apache.catalina.Executor; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import platform.common.Constant; import platform.common.annotation.OperationLog; import platform.common.base.controller.BaseController; import platform.common.base.model.Dict; import platform.common.base.model.DictionaryItem; import platform.common.base.service.DictService; import platform.common.base.service.DictionaryItemService; import platform.common.util.AlibabaSMSUtil; import platform.common.util.ExportExcel; import platform.common.util.ShiroUtils; import platform.common.util.WxAppUtil; import platform.modules.build.DTO.CompanyDto; import platform.modules.build.entity.BuildInfo; import platform.modules.build.entity.Company; import platform.modules.build.service.BuildInfoService; import platform.modules.build.service.CompanyService; import platform.modules.government.dto.ActivityReview; import platform.modules.government.dto.ActivitySearchCondition; import platform.modules.government.dto.SearchCondition; import platform.modules.government.dto.StreetsBuildingsCompanies; import platform.modules.government.entity.*; import platform.modules.government.service.AttachmentService; import platform.modules.government.service.StreetService; import platform.modules.government.service.UserService; import platform.modules.request.ActivityFindRequest; import platform.modules.request.ContractReportFindRequest; import platform.modules.sys.entity.*; import platform.modules.sys.report.ActivityRegistrationExports; import platform.modules.sys.report.ContractExport; import platform.modules.sys.service.*; import platform.modules.sys.web.ResponseMessage; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; @Controller @RequestMapping(value = "/government/activity") public class ActivityController extends BaseController { @Autowired private ActivityService activityService; @Autowired private ActivityRegistrationService activityRegistrationService; @Autowired private ActivityFeedbackService activityFeedbackService; @Autowired private DictionaryItemService dictionaryItemService; @Autowired private StreetService streetService; @Autowired private BuildInfoService buildInfoService; @Autowired private CompanyService companyService; @Autowired private AttachmentService attachmentService; @Autowired private MessageService messageService; @Autowired private UserService userService; @Autowired private WaitToDoService waitToDoService; @OperationLog(value = "查看活动列表") @GetMapping(value = "/list") public String list(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, ActivitySearchCondition condition, ModelMap modelMap) throws Exception { try { log.info("分页查询活动信息,pageNum = {},condition = {}", pageNum, condition.toString(), false); PageInfo pageInfo = activityService.findAvtivityList(pageNum, PAGESIZE, condition); log.info("分页查询活动信息列表结果! pageInfo = {}", pageInfo); List activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE); modelMap.addAttribute("activity_type", activityTypeList); modelMap.put("pageInfo", pageInfo); modelMap.put("condition", condition); log.info("菜单跳转到活动管理页面!"); } catch (Exception e) { e.printStackTrace(); } return BASE_GOVERNMENT_PATH + "activity_list"; } /** * 跳转到详情页面 * * @return */ @OperationLog(value = "查看活动详情") @GetMapping(value = "/get/{id}") public String view(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动详情页面!"); ActivityDetail activityDetail = activityService.findOne(id.toString()); List attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null); if (null != attachments && attachments.size() > 0) { FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri()); activityDetail.setFileDown(fileDown); } List activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE); for (DictionaryItem item : activityTypeList) { if (Objects.equals(item.getValue(), activityDetail.getActivity_type())) { activityDetail.setActivity_type(item.getName()); } } List pushList = activityDetail.getPushList(); String streetIds = "", buildIds = "", companyIds = "", names = ""; if (!CollectionUtils.isEmpty(pushList)) { for (ActivityPush push : pushList) { if (Objects.equals("4", push.getUser_type())) { streetIds += push.getUser_id() + ","; names += push.getUser_name() + ","; } if (Objects.equals("1", push.getUser_type())) { buildIds += push.getUser_id() + ","; names += push.getUser_name() + ","; } if (Objects.equals("3", push.getUser_type())) { companyIds += push.getUser_id() + ","; names += push.getUser_name() + ","; } } activityDetail.setPush_street_ids(streetIds); activityDetail.setPush_build_ids(buildIds); activityDetail.setPush_company_ids(companyIds); activityDetail.setPush_names(names); } modelMap.addAttribute("activity", activityDetail); List registrationList = activityRegistrationService.findRegistrationList(id); List signList = activityRegistrationService.findSginList(id); List feedbackList = activityFeedbackService.findAvtivityList(id); String quota = activityDetail.getActivity_quota(); //if (StringUtils.isBlank(quota)) quota = "0"; int num = 0; for (ActivityRegistration registration : registrationList) { if (Objects.equals("1", registration.getReview_state())) { num++; } } modelMap.put("fileUrl", setFileUrl()); modelMap.addAttribute("registrationList", registrationList); modelMap.addAttribute("signList", signList); modelMap.addAttribute("feedbackList", feedbackList); modelMap.addAttribute("quota", quota); modelMap.addAttribute("num", num); return BASE_GOVERNMENT_PATH + "activity_detail"; } /** * 跳转到打印详情页面 * * @return */ @OperationLog(value = "打印活动详情") @GetMapping(value = "/printReg/{id}") public String printReg(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动报名打印页面!"); List registrationList = activityRegistrationService.findRegistrationList(id); modelMap.addAttribute("registrationList", registrationList); return BASE_GOVERNMENT_PATH + "activity_print"; } /** * 跳转到导出excel * * @return */ @OperationLog(value = "导出活动报名信息表") @GetMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, ActivityFindRequest activityFindRequest) throws Exception { log.info("跳转到活动报名下载!"); Integer id = activityFindRequest.getId(); ActivityDetail activityDetail = activityService.findOne(id.toString()); String fileName = activityDetail.getActivity_title() + "报名信息表.xlsx"; List registrationList = activityRegistrationService.findRegistrationListExports(id); for (ActivityRegistrationExports activityRegistrationExports : registrationList) { String regway = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.ACTIVITY_REGISTRATION_WAY, activityRegistrationExports.getRegistration_way()); activityRegistrationExports.setRegistration_way(regway); if (Objects.equals(activityRegistrationExports.getReview_state(), "0")) { activityRegistrationExports.setReview_state("待审核"); } if (Objects.equals(activityRegistrationExports.getReview_state(), "1")) { activityRegistrationExports.setReview_state("通过"); } if (Objects.equals(activityRegistrationExports.getReview_state(), "2")) { activityRegistrationExports.setReview_state("驳回"); } if (Objects.equals(activityRegistrationExports.getReview_state(), "3")) { activityRegistrationExports.setReview_state("取消报名"); } } new ExportExcel(activityDetail.getActivity_title() + "报名信息表", ActivityRegistrationExports.class).setDataList(registrationList).write(response, fileName).dispose(); } /** * 跳转到详情页面 * * @return */ @GetMapping(value = "/printPass/{id}") public String printPass(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动报名打印页面!"); List registrationList = activityRegistrationService.findRegistrationList(id); List resultList = new ArrayList<>(); for (ActivityRegistration activityRegistration : registrationList) { if (Objects.equals(activityRegistration.getReview_state(), "1")) { resultList.add(activityRegistration); } } modelMap.addAttribute("registrationList", resultList); return BASE_GOVERNMENT_PATH + "activity_print"; } /** * 跳转到审核页面 * * @return */ @GetMapping(value = "/review/{id}") public String review(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动审核页面!"); List registrationList = activityRegistrationService.findRegistrationList(id); ActivityDetail activity = activityService.findOne(id + ""); List registration_waited = new ArrayList(); List registration_passed = new ArrayList(); List registration_reject = new ArrayList(); List registration_waited_name_list = new ArrayList<>(); List registration_passed_name_list = new ArrayList<>(); List registration_reject_name_list = new ArrayList<>(); for (ActivityRegistration activityRegistration : registrationList) { if (Objects.equals(activityRegistration.getReview_state(), "0")) { registration_waited.add(activityRegistration); boolean flag = true; for (String name : registration_waited_name_list) { if (Objects.equals(name, activityRegistration.getUser_name())) { flag = false; } } if (flag) { registration_waited_name_list.add(activityRegistration.getUser_name()); } } if (Objects.equals(activityRegistration.getReview_state(), "1")) { registration_passed.add(activityRegistration); boolean flag = true; for (String name : registration_passed_name_list) { if (Objects.equals(name, activityRegistration.getUser_name())) { flag = false; } } if (flag) { registration_passed_name_list.add(activityRegistration.getUser_name()); } } if (Objects.equals(activityRegistration.getReview_state(), "2")) { registration_reject.add(activityRegistration); boolean flag = true; for (String name : registration_reject_name_list) { if (Objects.equals(name, activityRegistration.getUser_name())) { flag = false; } } if (flag) { registration_reject_name_list.add(activityRegistration.getUser_name()); } } } List registration_waited_list = new ArrayList<>(); List registration_passed_list = new ArrayList<>(); List registration_rejected_list = new ArrayList<>(); for (String name : registration_waited_name_list) { ActivityReview activityReview = new ActivityReview(); activityReview.setUser_name(name); List temp = new ArrayList<>(); for (ActivityRegistration reg : registration_waited) { if (Objects.equals(name, reg.getUser_name())) { activityReview.setRegistration_time(reg.getRegistration_time()); temp.add(reg); } activityReview.setActivityRegistrationList(temp); } registration_waited_list.add(activityReview); } for (String name : registration_passed_name_list) { ActivityReview activityReview = new ActivityReview(); activityReview.setUser_name(name); List temp = new ArrayList<>(); for (ActivityRegistration reg : registration_passed) { if (Objects.equals(name, reg.getUser_name())) { activityReview.setRegistration_time(reg.getRegistration_time()); temp.add(reg); } activityReview.setActivityRegistrationList(temp); } registration_passed_list.add(activityReview); } for (String name : registration_reject_name_list) { ActivityReview activityReview = new ActivityReview(); activityReview.setUser_name(name); List temp = new ArrayList<>(); for (ActivityRegistration reg : registration_reject) { if (Objects.equals(name, reg.getUser_name())) { activityReview.setRegistration_time(reg.getRegistration_time()); temp.add(reg); } activityReview.setActivityRegistrationList(temp); } registration_rejected_list.add(activityReview); } String quota = activity.getActivity_quota(); if (StringUtils.isBlank(quota)) quota = "0"; int num = 0; int Outnumber = 0; for (ActivityReview activityReview : registration_passed_list) { num += activityReview.getActivityRegistrationList().size(); } int remain = Integer.parseInt(quota) - num; if (remain < 0) { remain = 0; Outnumber = num - Integer.parseInt(quota); } modelMap.addAttribute("activityId", id); modelMap.addAttribute("Outnumber", Outnumber); modelMap.addAttribute("quota", quota); modelMap.addAttribute("remain", remain); modelMap.addAttribute("registration_waited", registration_waited_list); modelMap.addAttribute("registration_passed", registration_passed_list); modelMap.addAttribute("registration_reject", registration_rejected_list); modelMap.put("fileUrl", setFileUrl()); return BASE_GOVERNMENT_PATH + "activity_review"; } /** * 跳转到签到页面 * * @return */ @GetMapping(value = "/sign/{id}") public String sign(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动签到页面!"); List signList = activityRegistrationService.findSginList(id); List sign_waited = new ArrayList(); List sign_passed = new ArrayList(); List sign_reject = new ArrayList(); for (ActivityRegistration activityRegistration : signList) { if (Objects.equals(activityRegistration.getSign_state(), "0")) { sign_passed.add(activityRegistration); } else if (Objects.equals(activityRegistration.getSign_state(), "1")) { sign_reject.add(activityRegistration); } else if (!Objects.equals(activityRegistration.getReview_state(), "0")) { sign_waited.add(activityRegistration); } } modelMap.addAttribute("sign_waited", sign_waited); modelMap.addAttribute("sign_passed", sign_passed); modelMap.addAttribute("sign_reject", sign_reject); return BASE_GOVERNMENT_PATH + "activity_sign"; } /** * 跳转到取消活动页面 * * @return */ @GetMapping(value = "/abort/{id}") public String abort(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动取消页面!"); modelMap.addAttribute("activity_id", id); return BASE_GOVERNMENT_PATH + "activity_cancel"; } /** * 取消活动 * * @param id * @param state * @param message * @param modelMap * @return * @throws Exception */ @OperationLog(value = "取消活动") @ResponseBody @PostMapping(value = "/activityAbort") public ResponseMessage activityAbort(@RequestParam("id") String id, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception { if (IsTooFrequently()) { return ResponseMessage.success("操作过于频繁,请稍后再试!"); } log.info("更新活动状态"); ActivityDetail activityDetail = new ActivityDetail(); activityDetail.setId(Integer.parseInt(id)); activityDetail.setActivity_state(state); //取消消息 if (Objects.equals("2", state)) { ActivityDetail activity = activityService.findOne(id + ""); String streetids = "", buildids = "", companyids = "", governmentids = ""; List activityRegistrationList = activityRegistrationService.findRegistrationList(Integer.parseInt(id)); //-2018-05-30-发送活动取消短信 activityRegistrationService.sendActivityAbortSMS(activity, activityRegistrationList); for (ActivityRegistration registration : activityRegistrationList) { String type = registration.getUser_type(); if (Objects.equals(type, Constant.UserType.STREET.toString())) { String streetId = userService.getUser(registration.getUser_id()).getStreet_id().toString(); streetids += streetId + ","; } else if (Objects.equals(type, Constant.UserType.BUILD.toString())) { String buildId = userService.getUser(registration.getUser_id()).getBuild_id().toString(); buildids += buildId + ","; } else if (Objects.equals(type, Constant.UserType.COMPANY.toString())) { String companyId = userService.getUser(registration.getUser_id()).getCompany_id().toString(); companyids += companyId + ","; } else if (Objects.equals(type, Constant.UserType.GOVERNMENT.toString())) { //String governmentId = userService.getUser(registration.getUser_id()).get.toString(); governmentids += registration.getUser_id() + ","; } } Message messages = new Message(); messages.setApply_id(Integer.parseInt(id)); messages.setTitle(activity.getActivity_title() + "活动取消"); messages.setContent(message); messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY); if (!StringUtils.isEmpty(streetids)) { String[] streetArr = streetids.split(","); Set set = new HashSet<>(); for (int i = 0; i < streetArr.length; i++) { set.add(streetArr[i]); } String[] streetArrs = (String[]) set.toArray(new String[set.size()]); int[] streetArrInt = new int[streetArrs.length]; for (int i = 0; i < streetArrs.length; i++) { streetArrInt[i] = Integer.parseInt(streetArrs[i]); } messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.STREET); } if (!StringUtils.isEmpty(buildids)) { String[] buildArr = buildids.split(","); Set set = new HashSet<>(); for (int i = 0; i < buildArr.length; i++) { set.add(buildArr[i]); } String[] buildArrs = (String[]) set.toArray(new String[set.size()]); int[] buildArrInt = new int[buildArrs.length]; for (int i = 0; i < buildArrs.length; i++) { buildArrInt[i] = Integer.parseInt(buildArrs[i]); } messageService.saveMessageAndPush(messages, buildArrInt, Constant.UserType.BUILD); } if (!StringUtils.isEmpty(companyids)) { String[] companyArr = companyids.split(","); Set set = new HashSet<>(); for (int i = 0; i < companyArr.length; i++) { set.add(companyArr[i]); } String[] companyArrs = (String[]) set.toArray(new String[set.size()]); int[] companyArrInt = new int[companyArrs.length]; for (int i = 0; i < companyArrs.length; i++) { companyArrInt[i] = Integer.parseInt(companyArrs[i]); } messageService.saveMessageAndPush(messages, companyArrInt, Constant.UserType.COMPANY); } if (!StringUtils.isEmpty(governmentids)) { String[] governmentArr = governmentids.split(","); Set set = new HashSet<>(); for (int i = 0; i < governmentArr.length; i++) { set.add(governmentArr[i]); } String[] governmentArrs = (String[]) set.toArray(new String[set.size()]); int[] governmentArrInt = new int[governmentArrs.length]; for (int i = 0; i < governmentArrs.length; i++) { governmentArrInt[i] = Integer.parseInt(governmentArrs[i]); } messageService.saveMessageAndPush(messages, governmentArrInt, Constant.UserType.GOVERNMENT); } } return ResponseMessage.success("操作成功", activityService.updateActivitySelective(activityDetail)); } /** * 跳转到添加页面 * * @return */ @GetMapping(value = "/add") public String add(ModelMap modelMap) { log.info("跳转到活动添加页面!"); List activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE); modelMap.addAttribute("activity_type", activityTypeList); return BASE_GOVERNMENT_PATH + "activity_add"; } /** * 跳转到修改页面 * * @return */ @GetMapping(value = "/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception { log.info("跳转到活动编辑页面!"); List activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE); modelMap.addAttribute("activity_type", activityTypeList); ActivityDetail activityDetail = activityService.findOne(id.toString()); List attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null); if (null != attachments && attachments.size() > 0) { FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri()); activityDetail.setFileDown(fileDown); } List pushList = activityDetail.getPushList(); String streetIds = "", buildIds = "", companyIds = "", names = ""; if (!CollectionUtils.isEmpty(pushList)) { for (ActivityPush push : pushList) { if (Objects.equals("4", push.getUser_type())) { streetIds += push.getUser_id() + ","; names += push.getUser_name() + ","; } if (Objects.equals("1", push.getUser_type())) { buildIds += push.getUser_id() + ","; names += push.getUser_name() + ","; } if (Objects.equals("3", push.getUser_type())) { companyIds += push.getUser_id() + ","; names += push.getUser_name() + ","; } } activityDetail.setPush_street_ids(streetIds); activityDetail.setPush_build_ids(buildIds); activityDetail.setPush_company_ids(companyIds); activityDetail.setPush_names(names); } modelMap.put("fileUrl", setFileUrl()); modelMap.addAttribute("activity", activityDetail); return BASE_GOVERNMENT_PATH + "activity_edit"; } /** * 添加活动信息 * * @param activityDetail * @return */ @OperationLog(value = "添加活动") @ResponseBody @PostMapping(value = "/save") public ResponseMessage saveActivity(ActivityDetail activityDetail, @RequestParam("activity_state") String activity_state) throws Exception { log.debug("添加活动信息! ActivityDetail = {}", activityDetail); if (IsTooFrequently()) { return ResponseMessage.success("操作过于频繁,请稍后再试!"); } if (Objects.equals("1", activity_state)) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date currentTime = new Date(); String dateString = formatter.format(currentTime); activityDetail.setActivity_publishtime(dateString); } int activityid = activityService.saveActivity(activityDetail); if (Objects.equals("1", activity_state)) { if (Objects.equals(activityDetail.getPush_level(), "1")) { String streetids = activityDetail.getPush_street_ids(); String buildids = activityDetail.getPush_build_ids(); String companyids = activityDetail.getPush_company_ids(); Message message = new Message(); message.setApply_id(activityid); message.setTitle("您接收到了一条关于" + activityDetail.getActivity_title() + "的活动推送"); message.setContent(activityDetail.getContent()); message.setBusiness_type(Constant.Message_Business_type.ACTIVITY); if (!StringUtils.isEmpty(streetids)) { String[] streetArr = streetids.split(","); int[] streetArrInt = new int[streetArr.length]; for (int i = 0; i < streetArr.length; i++) { streetArrInt[i] = Integer.parseInt(streetArr[i]); } messageService.saveMessageAndPush(message, streetArrInt, Constant.UserType.STREET); } if (!StringUtils.isEmpty(buildids)) { String[] buildArr = buildids.split(","); int[] buildArrInt = new int[buildArr.length]; for (int i = 0; i < buildArr.length; i++) { buildArrInt[i] = Integer.parseInt(buildArr[i]); } messageService.saveMessageAndPush(message, buildArrInt, Constant.UserType.BUILD); } if (!StringUtils.isEmpty(companyids)) { String[] companyArr = companyids.split(","); int[] companyArrInt = new int[companyArr.length]; for (int i = 0; i < companyArr.length; i++) { companyArrInt[i] = Integer.parseInt(companyArr[i]); } messageService.saveMessageAndPush(message, companyArrInt, Constant.UserType.COMPANY); } } } return ResponseMessage.success("保存成功!"); } /** * 编辑活动信息 * * @param activityDetail * @return */ @OperationLog(value = "编辑活动") @ResponseBody @PostMapping(value = "/edit") public ResponseMessage editActivity(ActivityDetail activityDetail, @RequestParam("activity_state") String activity_state) throws Exception { log.debug("编辑活动信息! ActivityDetail = {}", activityDetail); if (IsTooFrequently()) { return ResponseMessage.success("操作过于频繁,请稍后再试!"); } if (Objects.equals("1", activity_state)) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date currentTime = new Date(); String dateString = formatter.format(currentTime); activityDetail.setActivity_publishtime(dateString); } activityService.updateActivity(activityDetail); if (Objects.equals("1", activity_state)) { if (Objects.equals(activityDetail.getPush_level(), "1")) { String streetids = activityDetail.getPush_street_ids(); String buildids = activityDetail.getPush_build_ids(); String companyids = activityDetail.getPush_company_ids(); Message message = new Message(); message.setApply_id(activityDetail.getId()); message.setTitle(activityDetail.getActivity_title() + "活动修改"); message.setContent(activityDetail.getActivity_reason()); message.setBusiness_type(Constant.Message_Business_type.ACTIVITY); if (!StringUtils.isEmpty(streetids)) { String[] streetArr = streetids.split(","); int[] streetArrInt = new int[streetArr.length]; for (int i = 0; i < streetArr.length; i++) { streetArrInt[i] = Integer.parseInt(streetArr[i]); } messageService.saveMessageAndPush(message, streetArrInt, Constant.UserType.STREET); } if (!StringUtils.isEmpty(buildids)) { String[] buildArr = buildids.split(","); int[] buildArrInt = new int[buildArr.length]; for (int i = 0; i < buildArr.length; i++) { buildArrInt[i] = Integer.parseInt(buildArr[i]); } messageService.saveMessageAndPush(message, buildArrInt, Constant.UserType.BUILD); } if (!StringUtils.isEmpty(companyids)) { String[] companyArr = companyids.split(","); int[] companyArrInt = new int[companyArr.length]; for (int i = 0; i < companyArr.length; i++) { companyArrInt[i] = Integer.parseInt(companyArr[i]); } messageService.saveMessageAndPush(message, companyArrInt, Constant.UserType.COMPANY); } //发送活动编辑变更短信 List activityRegistrationList = activityRegistrationService.findRegistrationList(activityDetail.getId()); activityRegistrationService.sendActivityUpdateSMS(activityDetail, activityRegistrationList); } } return ResponseMessage.success("保存成功!"); } /** * 跳转到添加推送页面 * * @return * @throws Exception */ @GetMapping(value = "/addPush") public String addPush(ModelMap modelMap) throws Exception { log.info("跳转到添加推送页面!"); List streetList = streetService.findList(); modelMap.addAttribute("streetList", streetList); return BASE_GOVERNMENT_PATH + "activityMessagepush_add"; } /** * 跳转到添加推送页面 * * @return * @throws Exception */ @GetMapping(value = "/calendar") public String calendar(ModelMap modelMap) throws Exception { log.info("跳转到活动日历!"); return BASE_GOVERNMENT_PATH + "activity_calendar"; } @ResponseBody @GetMapping(value = "/getAllEvents") public ResponseMessage getAllEvents() { log.info("获取所有活动时间"); List dates = activityService.getAllEventsDate(null); return ResponseMessage.success("", dates); } @ResponseBody @PostMapping(value = "/getEventList") public ResponseMessage getEventList(ActivityDetail activityDetail) { log.info("获取一天内的所有活动"); List dates = activityService.getEventList(activityDetail.getActivity_starttime()); return ResponseMessage.success("", dates); } /** * 跳转到签到页面 * * @return */ @GetMapping(value = "/preview") public String preview(ModelMap modelMap) throws Exception { log.info("跳转预览页面!"); return BASE_GOVERNMENT_PATH + "activity_preview"; } @ResponseBody @PostMapping(value = "/getBuildsByStreetIds") public ResponseMessage getBuildsByStreetIds(@RequestParam("streetIds") String streetIds) { log.info("根据街道ids获取园区!"); String[] idsArr = streetIds.split(","); List ids = new ArrayList(); for (String id : idsArr) { ids.add(id); } List buildList = buildInfoService.findBuildsByStreetIds(ids); return ResponseMessage.success("", buildList); } @ResponseBody @PostMapping(value = "/getCompanysByBuildIds") public ResponseMessage getCompanysByBuildIds(@RequestParam("buildIds") String buildIds, @RequestParam("type_id") String type_id) { log.info("根据街道ids获取园区!"); String[] idsArr = buildIds.split(","); List ids = new ArrayList(); for (String id : idsArr) { ids.add(id); } List companyList = companyService.findCompanysByBuildIds(ids, type_id); return ResponseMessage.success("", companyList); } @ResponseBody @PostMapping(value = "/findStreetBuildCompanyByName") public ResponseMessage findStreetBuildCompanyByName(@RequestParam("name") String name, ModelMap modelMap) throws Exception { log.info("模糊查询街道园区企业"); return ResponseMessage.success("", activityService.findStreetBuildCompanyByName(name)); } @ResponseBody @PostMapping(value = "/updateSignState") public ResponseMessage updateState(@RequestParam("id") String id, @RequestParam("state") String state, ModelMap modelMap) throws Exception { log.info("更新活动签到状态"); ActivityRegistration activityRegistration = new ActivityRegistration(); activityRegistration.setId(Integer.parseInt(id)); activityRegistration.setSign_state(state); return ResponseMessage.success("操作成功", activityRegistrationService.updateState(activityRegistration)); } @ResponseBody @PostMapping(value = "/updateSignStateBatch") public ResponseMessage updateStateBatch(@RequestParam("ids") String ids, @RequestParam("state") String state, ModelMap modelMap) throws Exception { log.info("批量更新活动签到状态"); ActivityRegistration activityRegistration = new ActivityRegistration(); activityRegistration.setSign_state(state); String[] idsArr = ids.split(","); List idList = new ArrayList(); if (idsArr.length > 0) { for (String id : idsArr) { idList.add(id); } } activityRegistrationService.updateStateBatch(idList, activityRegistration); return ResponseMessage.success("操作成功", null); } @ResponseBody @PostMapping(value = "/updateReviewState") public ResponseMessage updateReviewState(@RequestParam("id") String id, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception { log.info("更新活动审核状态"); ActivityRegistration activityRegistration = new ActivityRegistration(); activityRegistration.setId(Integer.parseInt(id)); activityRegistration.setReview_state(state); ActivityRegistration reg = activityRegistrationService.findById(Integer.parseInt(id)); ActivityDetail activity = activityService.findOne(reg.getActivity_id() + ""); Message messages = new Message(); messages.setApply_id(activity.getId()); messages.setTitle("企业报名审核确认"); messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY); String templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_SUCCESS; //驳回消息 if (Objects.equals("2", state)) { messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认不通过"); templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_FAILED; } //通过消息 if (Objects.equals("1", state)) { messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认通过"); } if (!reg.getUser_type().equals(Constant.UserType.PERSONAL.toString())) { int[] arrInt = new int[1]; arrInt[0] = Integer.parseInt(reg.getRelation_id()); if (Objects.equals(Constant.UserType.GOVERNMENT, reg.getUser_type())) { messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.GOVERNMENT); } else if (Objects.equals(Constant.UserType.BUILD, reg.getUser_type())) { messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.BUILD); } else if (Objects.equals(Constant.UserType.STREET, reg.getUser_type())) { messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.STREET); } else if (Objects.equals(Constant.UserType.COMPANY, reg.getUser_type())) { messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.COMPANY); } waitToDoService.completeAllTODO(activity.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION); } //发送短息 Map params = new HashMap<>(); params.put("activity_title", activity.getActivity_title()); // User user = userService.findById(Integer.parseInt(id)); AlibabaSMSUtil.sendSMS( reg.getPhone(), templateCode, Constant.SINGNAMW, JSONObject.toJSONString(params)); return ResponseMessage.success("操作成功", activityRegistrationService.updateState(activityRegistration)); } @ResponseBody @PostMapping(value = "/updateReviewStateBatch") public ResponseMessage updateReviewStateBatch(@RequestParam("ids") String ids, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception { log.info("批量更新活动审核状态"); ActivityRegistration activityRegistration = new ActivityRegistration(); activityRegistration.setReview_state(state); String[] idsArr = ids.split(","); List idList = new ArrayList(); //短信模版 String templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_SUCCESS; //发送短信线程池 ExecutorService executor = Executors.newFixedThreadPool(10); if (idsArr.length > 0) { for (String id : idsArr) { idList.add(id); ActivityRegistration reg = activityRegistrationService.findById(Integer.parseInt(id)); ActivityDetail activity = activityService.findOne(reg.getActivity_id() + ""); Message messages = new Message(); messages.setApply_id(activity.getId()); messages.setTitle("企业报名审核确认"); messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY); //驳回消息 if (Objects.equals("2", state)) { messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认不通过"); templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_FAILED; } //通过消息 if (Objects.equals("1", state)) { messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认通过"); } if (!reg.getUser_type().equals(Constant.UserType.PERSONAL.toString())) { int[] streetArrInt = new int[1]; streetArrInt[0] = Integer.parseInt(reg.getRelation_id()); if (Objects.equals(Constant.UserType.GOVERNMENT, reg.getUser_type())) { messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.GOVERNMENT); } else if (Objects.equals(Constant.UserType.BUILD, reg.getUser_type())) { messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.BUILD); } else if (Objects.equals(Constant.UserType.STREET, reg.getUser_type())) { messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.STREET); } else if (Objects.equals(Constant.UserType.COMPANY, reg.getUser_type())) { messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.COMPANY); } waitToDoService.completeAllTODO(activity.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION); } //发送短信 Map params = new HashMap<>(); params.put("activity_title", activity.getActivity_title()); if (StringUtils.isNotBlank(reg.getPhone())) { String finalTemplateCode = templateCode; System.out.println("当前线程数:" + ((ThreadPoolExecutor) executor).getActiveCount()); Runnable runnable = () -> { try { AlibabaSMSUtil.sendSMS( reg.getPhone(), finalTemplateCode, Constant.SINGNAMW, JSONObject.toJSONString(params)); } catch (ClientException | InterruptedException e) { e.printStackTrace(); } }; executor.submit(runnable); } } } activityRegistrationService.updateStateBatch(idList, activityRegistration); return ResponseMessage.success("操作成功", null); } @GetMapping(value = "/reject/{id}") public String reject(@PathVariable("id") String id, ModelMap modelMap) throws Exception { log.info("跳转到审核驳回页面!"); modelMap.addAttribute("activity_id", id); return BASE_GOVERNMENT_PATH + "activity_reject"; } /** * 跳转到活动二维码 * * @return */ @GetMapping(value = "/qrcode/{id}") public String qrcode(@PathVariable("id") String id, ModelMap modelMap) { log.info("跳转到活动二维码!"); try { InputStream is_detail = activityService.getQRcode("1", "350", id); byte[] bytes_detail = IOUtils.toByteArray(is_detail); String encoded_detail = Base64.getEncoder().encodeToString(bytes_detail); InputStream is_sign = activityService.getQRcode("2", "350", id); byte[] bytes_sign = IOUtils.toByteArray(is_sign); String encoded_sign = Base64.getEncoder().encodeToString(bytes_sign); modelMap.addAttribute("qrcode_detail", "data:image/jpg;base64," + encoded_detail); modelMap.addAttribute("qrcode_sign", "data:image/jpg;base64," + encoded_sign); } catch (IOException e) { e.printStackTrace(); } modelMap.addAttribute("activity_id", id); return BASE_GOVERNMENT_PATH + "activity_qrcode"; } /** * @Author: huZhiHao * @Description: 获取小程序二维码 * @Date: 2019/12/18 * @Params: [activity_id, type 1报名 2签到] * @Return: void **/ @GetMapping(value = "/download/qrcode/{activity_id}/{type}") public void getDetailQRcode(@PathVariable("activity_id") String id, @PathVariable("type") String type, HttpServletResponse response) throws IOException { // try { // URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token); // HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); // // conn.setConnectTimeout(10000);//连接超时 单位毫秒 // // conn.setReadTimeout(2000);//读取超时 单位毫秒 // // 发送POST请求必须设置如下两行 // httpURLConnection.setDoOutput(true); // 打开写入属性 // httpURLConnection.setDoInput(true); // 打开读取属性 // httpURLConnection.setRequestMethod("POST");// 提交方式 // // 不得不说一下这个提交方式转换!!真的坑。。改了好长时间!!一定要记得加响应头 // httpURLConnection.setRequestProperty("Content-Type", "application/x-javascript; charset=UTF-8");// 设置响应头 // // 获取URLConnection对象对应的输出流 // PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream()); // // 发送请求参数 // JSONObject paramJson = new JSONObject(); // paramJson.put("scene", "xxx"); // 你要放的内容 // paramJson.put("path", "pages/index/index"); // paramJson.put("width", 430); // 宽度 // //paramJson.put("auto_color", true); // printWriter.write(paramJson.toString()); // // flush输出流的缓冲 // printWriter.flush(); // BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream()); // //创建一个空文件 // OutputStream os = new FileOutputStream(new File("E:/upload/test.jpg")); // //ByteArrayOutputStream os = new ByteArrayOutputStream(); // int len; // byte[] arr = new byte[1024]; // while ((len = bis.read(arr)) != -1) { // os.write(arr, 0, len); // os.flush(); // } // os.close(); // // 上传云储存 // //InputStream is = new ByteArrayInputStream(os.toByteArray()); // //retMap = UploadUtils.upload(is); // } catch (Exception e) { // e.printStackTrace(); // } InputStream is = null; String name = ""; if ("1".equals(type)) { name = "报名二维码.jpg"; is = activityService.getQRcode(type, "430", id); } else if ("2".equals(type)) { name = "签到二维码.jpg"; is = activityService.getQRcode(type, "430", id); } name = new String(name.getBytes(), "ISO-8859-1"); response.setHeader("Content-type", "application/octet-stream"); response.setHeader("Content-disposition", "attachment;fileName=\"" + name + "\""); OutputStream os = response.getOutputStream(); //输出数据 IOUtils.copy(is, os); is.close(); os.close(); } /** * 跳转到地图 * * @return * @throws Exception */ @GetMapping(value = "/map") public String toMap() throws Exception { log.info("跳转到地图!"); return BASE_GOVERNMENT_PATH + "map_component/map"; } }