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

598 lines
21 KiB
Java
Raw Normal View History

2022-09-16 15:07:17 +08:00
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;
2022-09-30 15:30:10 +08:00
import com.rzyc.bean.TreeModel;
2022-09-16 15:07:17 +08:00
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<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
2022-09-30 15:30:10 +08:00
public SingleResult<List<TreeModel>> industryClass(@Valid IndustryClassDto industryClassDto)throws Exception {
2022-09-16 15:07:17 +08:00
SingleResult singleResult = new SingleResult();
2022-09-30 15:30:10 +08:00
List<TreeModel> list = super.baseInClasses(industryClassDto.getIsTree(),industryClassDto.getType());
2022-09-16 15:07:17 +08:00
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
2022-09-30 15:30:10 +08:00
public SingleResult<List<TreeModel>> allIndustryClass(@Valid IndustryClassDto industryClassDto)throws Exception {
2022-09-16 15:07:17 +08:00
SingleResult singleResult = new SingleResult();
2022-09-30 15:30:10 +08:00
List<TreeModel> list = super.baseInClasses(industryClassDto.getIsTree(),industryClassDto.getType());
2022-09-16 15:07:17 +08:00
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<String,Object> uploadEntList(@RequestBody MultipartFile file,String entName) {
Map<String,Object> resultMap = new HashMap<String,Object>();
resultMap.put("code",1);
try {
List<String> excelRow = new ArrayList<>();
if(StringUtils.isNotBlank(entName)){
System.out.println("entName -> "+entName);
System.out.println("file -> "+file.getOriginalFilename());
Map<String,Object> companyData = this.getCompanyData(file);//错误集合收集 get excelRow
//清单数据
List<ImportListDetail> listDetails = (List<ImportListDetail>)companyData.get("listDetails");
//出错数据
excelRow = (List<String>)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<ImportListDetail> listDetails,List<String> excelRow,String entName)throws Exception{
if(null != listDetails && listDetails.size() > 0){
Integer listSort = 1;
List<SysEntListWithBLOBs> sysEntLists = new ArrayList<>();
List<String> 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<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<>();
List<SysOrg> 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<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);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}