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; /** * 获取安全类型 * */ @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 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<>(); //获取用户低 if(StringUtils.isBlank(userId)){ userId = getUserId(); } //获取用户的地区id String userArea = getUserArea(userId); if(StringUtils.isBlank(userArea)){ userArea = constantsConfigure.getSuperiorOrgCode(); } List sysOrgs = sysOrgMapper.findUserArea(userArea); 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); System.out.println("图片=========" + image); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }