ganzi-api/inventory-gov/src/main/java/com/rzyc/controller/OtherController.java

424 lines
15 KiB
Java

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<List<BaseSafeClass>> companyDetailAccident(int isTree)throws Exception {
SingleResult singleResult = new SingleResult();
List<BaseSafeClass> 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<List<TreeModel>> industryClass(@Valid IndustryClassDto industryClassDto)throws Exception {
SingleResult singleResult = new SingleResult();
List<TreeModel> 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<List<BaseInClass>> workIndustry(@Valid IndustryClassDto industryClassDto)throws Exception {
SingleResult singleResult = new SingleResult();
List<BaseInClass> 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<List<TreeModel>> allIndustryClass(@Valid IndustryClassDto industryClassDto)throws Exception {
SingleResult singleResult = new SingleResult();
List<TreeModel> 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<SysEntListWithBLOBs> sysEntLists,List<String> sysUserIds)throws Exception{
String errorMsg= "";
List<SysEnterprise> enterprises = sysEnterpriseMapper.findByEntName(listDetail.getEntName(),"");
if(null != enterprises && enterprises.size() > 0){
List<String> entUserIds = new ArrayList<>();
//岗位存在多个岗位名相同的记录
List<SysEntUser> 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<String,Object> getCompanyData(MultipartFile multipartFile)throws Exception{
Map<String,Object> analysisResult = new HashMap<>();
//未导入行数
List<String> excelRow = new ArrayList<>();
//清单信息
List<ImportListDetail> 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<SysOrg> areaTree(String userId)throws Exception{
System.out.println("userId -> "+userId);
MultiResult<SysOrg> result = new MultiResult<>();
//获取用户低
if(StringUtils.isBlank(userId)){
userId = getUserId();
}
//获取用户的地区id
String userArea = getUserArea(userId);
if(StringUtils.isBlank(userArea)){
userArea = constantsConfigure.getSuperiorOrgCode();
}
List<SysOrg> sysOrgs = sysOrgMapper.findUserArea(userArea);
if(sysOrgs.size() > 0){
//处理树形结构
JSONArray jsonArray = handleAreaTree(sysOrgs);
List<SysOrg> 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<SysOrg> sysOrgs)throws Exception{
List<Map<String,Object>> data = new ArrayList<>();
for(SysOrg sysOrg : sysOrgs){
if(StringUtils.isBlank(sysOrg.getSuperiororgcode())){
sysOrg.setSuperiororgcode("");
}
Map<String,Object> entUserMap = new HashMap<String,Object>();
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<String> taskTest()throws Exception{
SingleResult<String> 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();
}
}
}