package com.rzyc.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.common.utils.*; import com.common.utils.model.Code; import com.common.utils.model.Message; import com.common.utils.model.MultiResult; import com.common.utils.model.SingleResult; import com.common.utils.verification.Verification; import com.rzyc.bean.ImportListDetail; import com.rzyc.bean.TreeModel; import com.rzyc.bean.ent.IndustryClassDto; import com.rzyc.enums.EntListType; import com.rzyc.model.*; import com.rzyc.model.ent.*; import com.rzyc.model.user.SysUser; import com.rzyc.service.TaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.awt.image.BufferedImage; import java.io.OutputStream; import java.util.*; @Api(tags = "其他") @Controller @CrossOrigin("*") public class OtherController extends BaseController{ //定时任务 @Autowired private TaskService taskService; /*动态详情*/ @GetMapping(value = "/dynamicDetail") public String newsDetail(String dynamicId,Model model){ System.out.println("dynamicId --- > "+dynamicId); Dynamic dynamic = newsCntMapper.newCntDetail(dynamicId); if(null != dynamic){ dynamic.setTime(DateUtils.parseDate2String(dynamic.getPublictime(), "yyyy-MM-dd")); }else{ dynamic = new Dynamic(); } model.addAttribute("dynamic",dynamic); return "dynamic/dynamic_detail"; } /** * 获取安全类型 * */ @ApiOperation(value = "获取安全类型", notes = "获取安全类型") @ApiImplicitParams({ @ApiImplicitParam(name = "isTree", value = "是否树形结构 1.树形结构 2.平行结构", required = true, dataType = "int") }) @GetMapping("/safeClass") @ResponseBody public SingleResult> companyDetailAccident(int isTree)throws Exception { SingleResult singleResult = new SingleResult(); List list = super.baseSafeClasses(isTree); if (list!=null){ singleResult.setMessage(Message.SUCCESS); singleResult.setCode(Code.SUCCESS.getCode()); singleResult.setData(list); }else { singleResult.setMessage(Message.ERROR); singleResult.setCode(Code.ERROR.getCode()); } return singleResult; } /** * 获取行业类型 * */ @ApiOperation(value = "获取行业类型", notes = "获取行业类型") @GetMapping("/industryClass") @ResponseBody public SingleResult> industryClass(@Valid IndustryClassDto industryClassDto)throws Exception { SingleResult singleResult = new SingleResult(); List list = super.baseInClasses(industryClassDto.getIsTree(),industryClassDto.getType()); if (list!=null){ singleResult.setMessage(Message.SUCCESS); singleResult.setCode(Code.SUCCESS.getCode()); singleResult.setData(list); }else { singleResult.setMessage(Message.ERROR); singleResult.setCode(Code.ERROR.getCode()); } return singleResult; } /** * 工作单元行业 * */ @ApiOperation(value = "工作单元行业", notes = "工作单元行业") @GetMapping("/workIndustry") @ResponseBody public SingleResult> workIndustry(@Valid IndustryClassDto industryClassDto)throws Exception { SingleResult singleResult = new SingleResult(); List list = baseInClassMapper.workIndustry(); if (list!=null){ singleResult.setMessage(Message.SUCCESS); singleResult.setCode(Code.SUCCESS.getCode()); singleResult.setData(list); }else { singleResult.setMessage(Message.ERROR); singleResult.setCode(Code.ERROR.getCode()); } return singleResult; } /** * 所有行业类型 * */ @ApiOperation(value = "所有行业类型", notes = "所有行业类型") @GetMapping("/allIndustryClass") @ResponseBody public SingleResult> allIndustryClass(@Valid IndustryClassDto industryClassDto)throws Exception { SingleResult singleResult = new SingleResult(); List list = super.baseInClasses(industryClassDto.getIsTree(),industryClassDto.getType()); if (list!=null){ singleResult.setMessage(Message.SUCCESS); singleResult.setCode(Code.SUCCESS.getCode()); singleResult.setData(list); }else { singleResult.setMessage(Message.ERROR); singleResult.setCode(Code.ERROR.getCode()); } return singleResult; } /** * 检查帮助 * @param model * @return */ @GetMapping("/govHelp") public String govHelp(Model model){ String type = "GOV"; AppHelp appHelp = appHelpMapper.findByType(type); if(null == appHelp){ appHelp = new AppHelp(); } model.addAttribute("appHelp",appHelp); return "help/gov_help"; } /** * 检查帮助 * @param model * @return */ @GetMapping("/entHelp") public String entHelp(Model model){ String type = "ENT"; AppHelp appHelp = appHelpMapper.findByType(type); if(null == appHelp){ appHelp = new AppHelp(); } model.addAttribute("appHelp",appHelp); return "help/ent_help"; } /** * 检查帮助 * @param model * @return */ @GetMapping("/appGovHelp") public String appGovHelp(Model model){ String type = "GOV"; AppHelp appHelp = appHelpMapper.findByType(type); if(null == appHelp){ appHelp = new AppHelp(); } model.addAttribute("appHelp",appHelp); return "help/app_gov_help"; } /** * 企业端检查帮助 * @param model * @return */ @GetMapping("/appEntHelp") public String appEntHelp(Model model){ String type = "ENT"; AppHelp appHelp = appHelpMapper.findByType(type); if(null == appHelp){ appHelp = new AppHelp(); } model.addAttribute("appHelp",appHelp); return "help/app_ent_help"; } /** * 修改 * @param appHelp */ @RequestMapping(value = "/changeGovHelp", method = RequestMethod.POST) @ResponseBody public String changeGovHelp(AppHelp appHelp){ appHelpMapper.changeAppHelp(appHelp); return "success"; } /*导入企业清单*/ @GetMapping("/importList") public String importList(){ return "import_list/import_list"; } /** * 上传企业清单 * @param file * @return */ @RequestMapping(value = "/uploadEntList", method = RequestMethod.POST) @ResponseBody public Map uploadEntList(@RequestBody MultipartFile file,String entName) { Map resultMap = new HashMap(); resultMap.put("code",1); try { List excelRow = new ArrayList<>(); if(StringUtils.isNotBlank(entName)){ System.out.println("entName -> "+entName); System.out.println("file -> "+file.getOriginalFilename()); Map companyData = this.getCompanyData(file);//错误集合收集 get excelRow //清单数据 List listDetails = (List)companyData.get("listDetails"); //出错数据 excelRow = (List)companyData.get("excelRow"); if(null == excelRow ){ excelRow = new ArrayList<>(); } this.handleEntList(listDetails,excelRow,entName); }else{ excelRow.add("请输入企业名"); } resultMap.put("excelRow",excelRow); }catch (Exception e){ e.printStackTrace(); } return resultMap; } /** * 处理企业清单 * @param listDetails * @param excelRow * @throws Exception */ private void handleEntList(List listDetails,List excelRow,String entName)throws Exception{ if(null != listDetails && listDetails.size() > 0){ Integer listSort = 1; List sysEntLists = new ArrayList<>(); List sysUserIds = new ArrayList<>(); for (ImportListDetail listDetail : listDetails){ listDetail.setEntName(entName); listDetail.setListSort(listSort); System.out.println("listDetail -> "+JSONArray.toJSONString(listDetail)); String errorMsg = this.addEntList(listDetail,sysEntLists,sysUserIds); if(StringUtils.isNotBlank(errorMsg)){ excelRow.add(errorMsg); } listSort++ ; } //先删除之前上传的企业清单 if(null != sysUserIds && sysUserIds.size() > 0 && null != sysEntLists && sysEntLists.size() > 0){ //删除企业清单 sysEntListMapper.delByListType(sysEntLists.get(0).getSysenterpriseid(),"",""); //上传企业清单 sysEntListMapper.insertList(sysEntLists); //修改统计数据 super.changeEntListNum(sysEntLists.get(0).getSysenterpriseid(),"excel"); } } } /** * 导入企业清单 * @param listDetail * @return * @throws Exception */ public String addEntList(ImportListDetail listDetail,List sysEntLists,List sysUserIds)throws Exception{ String errorMsg= ""; List enterprises = sysEnterpriseMapper.findByEntName(listDetail.getEntName(),""); if(null != enterprises && enterprises.size() > 0){ List entUserIds = new ArrayList<>(); //岗位存在多个岗位名相同的记录 List entUsers = sysEntUserMapper.findByPostName(listDetail.getPostName(),enterprises.get(0).getSysenterpriseid()); if(null != entUsers && entUsers.size() > 0){ for(SysEntUser entUser : entUsers){ entUserIds.add(entUser.getSysentuserid()); } } //添加清单数据 if(null != entUserIds && entUserIds.size() > 0){ for (String entUserId : entUserIds){ SysEntListWithBLOBs sysEntList = new SysEntListWithBLOBs(); sysEntList.setSysentlistid(RandomNumber.getUUid()); sysEntList.setSysenterpriseid(enterprises.get(0).getSysenterpriseid()); sysEntList.setSysUserId(entUserId); sysEntList.setListSort(listDetail.getListSort()); sysEntList.setListType(listDetail.getListType()); sysEntList.setListContent(listDetail.getListContent()); sysEntList.setCreatedby("excel"); sysEntList.setModifiedby("excel"); System.out.println("------------------------"); sysEntLists.add(sysEntList); sysEntList.setCreatedon(new Date()); sysEntList.setModifiedon(new Date()); //记录清单id 用来删除历史上传的清单 sysUserIds.add(entUserId); } }else{ if("公司账号".equals(listDetail.getUserType())){ errorMsg = listDetail.getEntName()+"不存在"; }else if("岗位账号".equals(listDetail.getUserType())){ errorMsg = "岗位:"+listDetail.getPostName()+"不存在"; } } }else{ errorMsg = listDetail.getEntName()+"不存在"; } return errorMsg; } /** * 解析excel 数据 * @param multipartFile * @return * @throws Exception */ public Map getCompanyData(MultipartFile multipartFile)throws Exception{ Map analysisResult = new HashMap<>(); //未导入行数 List excelRow = new ArrayList<>(); //清单信息 List listDetails = new ArrayList<>(); if(null != multipartFile){ Workbook wookbook = WorkbookFactory.create(multipartFile.getInputStream()); Sheet sheet = wookbook.getSheetAt(0); //获得表头 Row rowHead = sheet.getRow(0); System.out.println("getPhysicalNumberOfCells -> "+rowHead.getPhysicalNumberOfCells()); //判断表头是否正确 if(rowHead.getPhysicalNumberOfCells() == 4){ //获得数据的总行数 int totalRowNum = sheet.getLastRowNum(); if(totalRowNum > 0){ Boolean isSubject = true; //获得所有数据 for(int i = 1 ; i <= totalRowNum ; i++){ //获得第i行对象 Row row = sheet.getRow(i); if(null == row){ break; } ImportListDetail listDetail = new ImportListDetail(); //企业名 Cell cell = row.getCell((short)0); if(null != cell){ String entName = cell.getStringCellValue().toString(); if(StringUtils.isNotBlank(entName)){ listDetail.setEntName(entName); }else{ excelRow.add("请单第"+i+"行企业名为空!"); continue; } }else{ excelRow.add("请单第"+i+"行企业名为空!"); continue; } cell = row.getCell((short)1); if(null != cell){ String psotName = cell.getStringCellValue().toString(); if(StringUtils.isNotBlank(psotName)){ listDetail.setPostName(psotName); }else{ excelRow.add("请单第"+i+"行岗位名为空!"); continue; } }else{ excelRow.add("请单第"+i+"行岗位名为空!"); continue; } //清单类型 cell = row.getCell((short)2); if(null != cell){ String listType = cell.getStringCellValue().toString(); if(StringUtils.isNotBlank(listType)){ listDetail.setListType(listType); }else{ excelRow.add("请单第"+i+"行清单类型为空!"); continue; } }else{ excelRow.add("请单第"+i+"行清单类型为空!"); continue; } //清单内容 cell = row.getCell((short)3); cell.setCellType(CellType.STRING); if(null != cell){ String listContent = cell.getStringCellValue().toString(); if(StringUtils.isNotBlank(listContent)){ listDetail.setListContent(listContent); }else{ excelRow.add("请单第"+i+"行清单内容为空!"); continue; } }else{ excelRow.add("请单第"+i+"行清单内容为空!"); continue; } if(!EntListType.SUBJECT_LIST.getType().equals(listDetail.getListType())){ listDetails.add(listDetail); }else{ if(isSubject){ listDetails.add(listDetail); isSubject = false; } } } } }else{ excelRow.add("表格格式出错!"); } } System.out.println("数据解析完成"); //数据 analysisResult.put("listDetails",listDetails); //报错信息 analysisResult.put("excelRow",excelRow); return analysisResult; } /** * 地区树形 * @return * @throws Exception */ @ApiOperation(value = "地区树形", notes = "地区树形") @GetMapping(value = "/areaTree") @ResponseBody public MultiResult areaTree(String userId)throws Exception{ System.out.println("userId -> "+userId); MultiResult result = new MultiResult<>(); List sysOrgs = new ArrayList<>(); if(StringUtils.isNotBlank(userId)){ SysUser sysUser = sysUserMapper.findById(userId); if(null != sysUser){ if(StringUtils.isBlank(sysUser.getStreetCode()) && StringUtils.isBlank(sysUser.getCommunityCode())){ sysOrgs = sysOrgMapper.findAll(); } }else{ sysOrgs = sysOrgMapper.findAll(); } }else{ sysOrgs = sysOrgMapper.findAll(); } if(sysOrgs.size() > 0){ //处理树形结构 JSONArray jsonArray = handleAreaTree(sysOrgs); List areas = JSONArray.parseArray(JSONArray.toJSONString(jsonArray),SysOrg.class); result.setData(areas); }else{ result.setCode(Code.NO_DATA.getCode()); result.setMessage(Message.NO_DATA); } return result; } /** * 地区树形结构 * @param sysOrgs * @return * @throws Exception */ private JSONArray handleAreaTree(List sysOrgs)throws Exception{ List> data = new ArrayList<>(); for(SysOrg sysOrg : sysOrgs){ if(StringUtils.isBlank(sysOrg.getSuperiororgcode())){ sysOrg.setSuperiororgcode(""); } Map entUserMap = new HashMap(); entUserMap.put("orgcode",sysOrg.getOrgcode()); entUserMap.put("orgname",sysOrg.getOrgname()); entUserMap.put("superiororgcode",sysOrg.getSuperiororgcode()); data.add(entUserMap); } JSONArray result = TypeConversion.listToTree(JSONArray.parseArray(JSON.toJSONString(data)),"orgcode","superiororgcode","children"); return result; } /** * 定时任务测试 * @return * @throws Exception */ @ApiOperation(value = "定时任务测试", notes = "定时任务测试") @GetMapping(value = "/taskTest") @ResponseBody public SingleResult taskTest()throws Exception{ SingleResult result = new SingleResult<>(); taskService.task(); return result; } /** * 验证码 * @param request * @param response * @throws Exception */ @ApiOperation(value = "验证码", notes = "验证码") @GetMapping("/generateCode") @ResponseBody public void generateCode(HttpServletRequest request, HttpServletResponse response) throws Exception { try { BufferedImage image = Verification.getVerify(constantsConfigure.getGenerateCodeKey(),request); OutputStream out = response.getOutputStream(); ImageIO.write(image, "JPEG", out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }