package com.hmit.kernes.controller; import com.hmit.kernes.entity.AppAnnounceEntity; import com.hmit.kernes.entity.AppAnnounceMapEntity; import com.hmit.kernes.entity.CloudBaseInfoEntity; import com.hmit.kernes.entity.SysUserEntity; import com.hmit.kernes.service.AppAnnounceMapService; import com.hmit.kernes.service.AppAnnounceService; import com.hmit.kernes.service.CloudBaseInfoService; import com.hmit.kernes.service.SysUserService; import com.hmit.kernes.utils.*; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.beans.IntrospectionException; import java.io.*; import java.lang.reflect.InvocationTargetException; import java.net.URLEncoder; import java.text.ParseException; import java.util.*; @RestController @RequestMapping("/app/announce") public class AppAnnounceController extends AbstractController { public static final String DEFAULT_PASSWORD = "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92";//123456 @Autowired AppAnnounceService appAnnounceService; @Autowired AppAnnounceMapService appAnnounceMapService; @Autowired CloudBaseInfoService cloudBaseInfoService; @Autowired SysUserService sysUserService; static List<CloudBaseInfoEntity> staticCloudBaseInfoEntityList = new LinkedList<CloudBaseInfoEntity>(); @RequestMapping("/list") @CrossOrigin("*") public R list(@RequestParam Map<String, Object> params) { Query query = new Query(params); List<AppAnnounceEntity> list = appAnnounceService.queryList(query); int total = appAnnounceService.queryTotal(query); PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage()); return R.ok().put("page", pageUtil); } @RequestMapping("/userlist") public R userlist(@RequestParam Map<String, Object> params) { String tel = (String) params.get("tel"); if (StringUtils.isBlank(tel)) { return R.error().put("msg", "手机号不能为空"); } Query query = new Query(params); List<AppAnnounceEntity> list = appAnnounceService.queryUserList(query); int total = appAnnounceService.queryTotal(query); PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage()); return R.ok().put("page", pageUtil); } @RequestMapping("/appshow") public R appshow() { AppAnnounceEntity appAnnounceEntity = appAnnounceService.queryAppShow(); return R.ok().put("announce", appAnnounceEntity); } @RequestMapping("/info/{id}") public R info(@PathVariable("") Long id) { AppAnnounceEntity appAnnounceEntity = appAnnounceService.queryObject(id); return R.ok().put("announce", appAnnounceEntity); } @RequestMapping("/userinfo") public R userinfo(@RequestParam Map<String, Object> params) { String id = (String) params.get("id"); if (StringUtils.isBlank(id)) throw new RRException("id不能为空"); String tel = (String) params.get("tel"); if (StringUtils.isBlank(tel)) throw new RRException("tel不能为空"); AppAnnounceEntity appAnnounceEntity = appAnnounceService.queryUserObject(params); return R.ok().put("announce", appAnnounceEntity); } @RequestMapping("/save") public R save(@RequestBody AppAnnounceEntity appAnnounceEntity) { //数据校验 //verifyForm(); verify(appAnnounceEntity); appAnnounceService.saveBackId(appAnnounceEntity); Long i = appAnnounceEntity.getId(); String title = "您有一条新通知,请查收"; String context = appAnnounceEntity.getActDetail(); if (context.length() > 50) context = context.substring(0, 50) + "..."; String action = "183.247.237.44:8288/cy/cyLogin"; List<AppAnnounceMapEntity> list = appAnnounceEntity.getList(); //System.out.println(list.get(0).getAnnId()); //System.out.println(list.get(0).getReceiveName()); List<String> telList = new ArrayList<>(); if (list != null && list.size() > 0) { for (int j = 0; j < list.size(); j++) { list.get(j).setAnnId(i); list.get(j).setIsRead(0); String tel = list.get(j).getReceiveTel(); telList.add(tel); } try { CaiyunUtil.pushMsgToUser(title, context, action, telList);//推送 } catch (Exception e) { e.printStackTrace(); } appAnnounceMapService.saveBatch(list); } return R.ok(); } @RequestMapping("/delete") public R delete(@RequestBody Long[] ids) { appAnnounceService.deleteBatch(ids); return R.ok(); } @RequestMapping("/update") public R update(@RequestBody AppAnnounceEntity appAnnounceEntity) { //数据校验 verify(appAnnounceEntity); appAnnounceService.update(appAnnounceEntity); return R.ok(); } public void visitJsonArray(JSONObject jsonObject){ System.out.println(jsonObject); String deptId=jsonObject.getString("deptId"); JSONArray j = CaiyunUtil.getAllDeptList(deptId); if(j.size()!=0){ for(int i=0;i<j.size();i++){ if(!j.getJSONObject(i).getString("deptId").equals(deptId)) visitJsonArray(j.getJSONObject(i)); } } if(jsonObject != null && !deptId.equals("0")) { CloudBaseInfoEntity cloudBaseInfoEntity = new CloudBaseInfoEntity(); cloudBaseInfoEntity.setId(Long.parseLong(deptId)); cloudBaseInfoEntity.setLocalUnionName(jsonObject.getString("name")); staticCloudBaseInfoEntityList.add(cloudBaseInfoEntity); } } @RequestMapping("/d") public R d() { JSONArray j = CaiyunUtil.getAllDeptList("26"); System.out.println(j); return R.ok(); } @RequestMapping("/c") public R c() { List<CloudBaseInfoEntity> cloudBaseInfoEntityList = new LinkedList<CloudBaseInfoEntity>(); JSONArray jsonArray = CaiyunUtil.getAllUserList(); staticCloudBaseInfoEntityList=new LinkedList<>(); JSONObject jsonObjectWithDept=new JSONObject(); jsonObjectWithDept.put("deptId","0"); visitJsonArray(jsonObjectWithDept); List<Long> longList = new LinkedList<Long>(); for (CloudBaseInfoEntity cloudBaseInfoEntity:staticCloudBaseInfoEntityList) { cloudBaseInfoEntityList.add(cloudBaseInfoEntity); if (cloudBaseInfoService.queryObject(cloudBaseInfoEntity.getId()) == null) { cloudBaseInfoService.saveWithId(cloudBaseInfoEntity); } else { cloudBaseInfoService.update(cloudBaseInfoEntity); } } // cloudBaseInfoService.deleteBatch(longList.toArray()); // cloudBaseInfoService.saveListByFancy(cloudBaseInfoEntityList); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String tel = jsonObject.getString("mobile"); SysUserEntity sysUserEntity = sysUserService.queryByTel(tel); System.out.println(jsonObject); if (sysUserEntity == null) { sysUserEntity=new SysUserEntity(); sysUserEntity.setUnionId(Long.parseLong(jsonObject.getString("deptId"))); sysUserEntity.setRealName(jsonObject.getString("name")); sysUserEntity.setUsername(jsonObject.getString("mobile")); sysUserEntity.setMobile(jsonObject.getString("mobile")); sysUserEntity.setStatus(1); sysUserEntity.setCreateUserId(1l); sysUserEntity.setCreateTime(new Date()); sysUserEntity.setPassword(DEFAULT_PASSWORD); sysUserEntity.setRoleIdList(longList); sysUserService.save(sysUserEntity); } else { String name = jsonObject.getString("name"); sysUserEntity.setRoleIdList(longList); sysUserEntity.setRealName(name); sysUserEntity.setUnionId(Long.parseLong(jsonObject.getString("deptId"))); sysUserService.update(sysUserEntity); } // System.out.println(jsonObject); } return R.ok(); } @ResponseBody @RequestMapping("/uploadfile") public R uploadfile(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception { String url = request.getSession().getServletContext().getRealPath("file/"); if (file.isEmpty()) { throw new RRException("上传文件不能为空"); } try{ url = url.replaceAll("/", "\\\\"); String fileName = file.getOriginalFilename(); File file3 = new File(url); if ((!file3.exists()) && (!file3.isDirectory())) { file3.mkdir(); } File file2 = new File(file3, fileName); InputStream in = file.getInputStream(); FileOutputStream fos = new FileOutputStream(file2); BufferedOutputStream bos = new BufferedOutputStream(fos); int b = -1; byte[] buffer = new byte[10485760]; while ((b = in.read(buffer)) != -1) { bos.write(buffer, 0, b); } bos.flush(); bos.close(); fos.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } return R.ok(); } @ResponseBody @RequestMapping("/delfile") public R delpho(@RequestBody String filename, HttpServletRequest request) throws Exception { String url = request.getSession().getServletContext().getRealPath("file/"); if (StringUtils.isBlank(filename)) { return R.error().put("msg","删除目标文件名不能为空"); } try{ url = url.replaceAll("/", "\\\\"); String fileName =filename; File file4 = new File(url+"\\" +fileName); // System.out.println(url+fileName); if ((file4.isFile()) && (file4.exists())) { file4.delete(); return R.ok(); }else { return R.error().put("msg","目标文件不存在"); } } catch (Exception e) { e.printStackTrace(); } return R.ok(); } @RequestMapping("/output") public R output(@RequestParam String id, HttpServletRequest request, HttpServletResponse response)throws ClassNotFoundException, IntrospectionException, IllegalAccessException, ParseException, InvocationTargetException { AppAnnounceEntity appAnnounceEntity=appAnnounceService.queryObject(id); // List<AppAnnounceMapEntity> mapEntityList=appAnnounceEntity.getList(); response.reset(); XSSFWorkbook xssfWorkbook=null; xssfWorkbook=exportExcelInfo(appAnnounceEntity); OutputStream output; StringBuilder sb=new StringBuilder(); if(appAnnounceEntity.getType()==1){ sb.append("会议通知:"); }else if(appAnnounceEntity.getType()==2){ sb.append("事务公告:"); }else{ sb.append("类型 未知:"); } sb.append(appAnnounceEntity.getActName()); sb.append("("); sb.append(DateUtils.format(appAnnounceEntity.getPostTime(),"yyyy-MM-dd")); sb.append(")"); sb.append(".xlsx"); String filename=""; try { filename = URLEncoder.encode(sb.toString(), "UTF-8"); }catch (UnsupportedEncodingException e){ e.printStackTrace(); } // System.out.println(sb.toString()); // System.out.println(filename); response.setHeader("Content-disposition", "attachment; filename="+filename); response.setContentType("application/msexcel"); try { output = response.getOutputStream(); BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output); bufferedOutPut.flush(); xssfWorkbook.write(bufferedOutPut); bufferedOutPut.close(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } public XSSFWorkbook exportExcelInfo(AppAnnounceEntity appAnnounceEntity) throws InvocationTargetException, ClassNotFoundException, IntrospectionException, ParseException, IllegalAccessException { List<AppAnnounceMapEntity> mapEntityList=appAnnounceEntity.getList(); List<ExcelBean> excel=new ArrayList<>(); Map<Integer,List<ExcelBean>> map=new LinkedHashMap<>(); XSSFWorkbook xssfWorkbook=null; excel.add(new ExcelBean("姓名", "receiveName", 0)); excel.add(new ExcelBean("手机", "receiveTel", 1)); excel.add(new ExcelBean("是否已读(0:未读,1:已读)", "isRead", 2)); excel.add(new ExcelBean("是否参加(1:参加,2:不参加,0:未操作)", "isJoin", 3)); excel.add(new ExcelBean("理由", "reason", 4)); map.put(0,excel); String sheetName="sheetByFancy"; xssfWorkbook=ExcelUtil.createExcelFile(AppAnnounceMapEntity.class,mapEntityList,map,sheetName); return xssfWorkbook; } public AppAnnounceEntity verify(AppAnnounceEntity a){ a.setUpdateTime(new Date()); return a; } }