package com.welampiot.controller; import com.welampiot.common.BaseResult; import com.welampiot.common.InterfaceResultEnum; import com.welampiot.dto.ArchiveInfoAttachmentDTO; import com.welampiot.dto.ArchiveManageDTO; import com.welampiot.service.ArchiveInfoAttachmentService; import com.welampiot.service.ArchiveManageService; import com.welampiot.utils.ExcelUtil; import com.welampiot.utils.ToolUtils; import com.welampiot.vo.ArchiveManageVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @RestController @CrossOrigin @RequestMapping("/archiveManage") public class ArchiveManageController { @Autowired private ToolUtils toolUtils; @Autowired private ArchiveManageService archiveManageService; @Autowired private ArchiveInfoAttachmentService archiveInfoAttachmentService; @RequestMapping(value = "/save",method = RequestMethod.POST) public BaseResult save(HttpServletRequest request) { Integer id = request.getParameter("id") == null ? 0 : Integer.parseInt(request.getParameter("id")); Integer version = request.getParameter("versoin") == null ? 0 : Integer.parseInt(request.getParameter("versoin")); Integer areaId = request.getParameter("areaId") == null ? 0 : Integer.parseInt(request.getParameter("areaId")); Integer sectionId = request.getParameter("sectionId") == null ? 0 : Integer.parseInt(request.getParameter("sectionId")); String name = request.getParameter("name"); Integer type = request.getParameter("type") == null ? 0 : Integer.parseInt(request.getParameter("type")); String department = request.getParameter("department"); String number = request.getParameter("number"); if(areaId == 0) return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR, version); if(sectionId == 0) return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR, version); if (name == null || (name != null && name.isEmpty())) return toolUtils.response(InterfaceResultEnum.LACK_FILE_NAME_ERROR,version); if (number == null || (number != null && number.isEmpty())) return toolUtils.response(InterfaceResultEnum.LACK_FILE_NUMBER_ERROR,version); ArrayList list = new ArrayList<>(); ArchiveInfoAttachmentDTO dto = null; Map fileList = request.getParameterMap(); int i = 0; //每三个值都设置一次就会重设置 //set排序,从下标0开始 Set setCollection = fileList.keySet(); Set sortSet = new TreeSet((o1, o2) -> o1.compareTo(o2)); sortSet.addAll(setCollection); //查找相应的值 - 这里是二维数组 for (String key : sortSet) {//返回set类型,无序的 if (key.contains("fileList")) { String[] values = fileList.get(key); if (i == 0) { dto = new ArchiveInfoAttachmentDTO(); } i++; if (key.contains("name")) { dto.setName(values[0]); } if (key.contains("type")) { dto.setType(Integer.parseInt(values[0])); } if (key.contains("url")) { dto.setPath(values[0]); } if (i == 3) { if (dto.getName() != null && dto.getType() != null && dto.getPath() != null) { //三个必须都有值 list.add(dto); i = 0; } else { //有一个没有值,返回 return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version); } } } } if (i > 0 && i < 3) { //有一个没有值,返回 return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version); } //fileList ArchiveManageDTO archiveManageDTO = new ArchiveManageDTO(); archiveManageDTO.setAreaId(areaId); archiveManageDTO.setSectionId(sectionId); archiveManageDTO.setName(name); archiveManageDTO.setType(type); archiveManageDTO.setDepartment(department); archiveManageDTO.setNumber(number); Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String currentTime = dateFormat.format(date); if (id == 0) { //新建 Integer total = archiveManageService.chectCount(archiveManageDTO); if (total > 0 ) toolUtils.response(InterfaceResultEnum.REPEAT_FILE_NAME_ERROR, 0); archiveManageDTO.setCreateTime(currentTime); archiveManageService.addData(archiveManageDTO); } else { //编辑 archiveManageDTO.setId(id); Integer total = archiveManageService.chectCount(archiveManageDTO); if (total > 0 ) toolUtils.response(InterfaceResultEnum.REPEAT_FILE_NAME_ERROR, 0); archiveManageDTO.setUpdateTime(currentTime); archiveManageService.updateData(archiveManageDTO); } if (list.size() != 0) { ArchiveInfoAttachmentDTO archiveInfoAttachmentDTO = new ArchiveInfoAttachmentDTO(); archiveInfoAttachmentDTO.setArchiveInfoId(id); archiveInfoAttachmentService.deleteData(archiveInfoAttachmentDTO); for (ArchiveInfoAttachmentDTO item : list) { item.setArchiveInfoId(archiveManageDTO.getId()); archiveInfoAttachmentService.addData(item); } } return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, 0); } @RequestMapping(value = "/getList",method = RequestMethod.POST) public BaseResult getList(HttpServletRequest request) { Integer version = request.getParameter("versoin") == null ? 0 : Integer.parseInt(request.getParameter("versoin")); Integer areaId = request.getParameter("areaId") == null ? 0 : Integer.parseInt(request.getParameter("areaId")); Integer sectionId = request.getParameter("sectionId") == null ? 0 : Integer.parseInt(request.getParameter("sectionId")); Integer page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page")); Integer count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count")); Integer type = request.getParameter("type") == null ? 0 : Integer.parseInt(request.getParameter("type")); String keyword = request.getParameter("keyword"); String date = request.getParameter("date"); Integer download = request.getParameter("download") == null ? 0 : Integer.parseInt(request.getParameter("download")); ArchiveManageVO vo = new ArchiveManageVO(); ArrayList list = new ArrayList<>(); vo.setList(list); if (sectionId == 0){ List sectionList = toolUtils.getSectionList(request); if (sectionList == null || sectionList.size() == 0) return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,vo); vo.setSectionList(sectionList); } vo.setPage((page-1) * count); vo.setCount(count); vo.setType(type); vo.setKeyword(keyword); vo.setDate(date); vo.setVersion(version); vo.setAreaId(areaId); vo.setSectionId(sectionId); if (date != null){ String[] splits = date.split("/"); vo.setBeginTime(splits[0] + " 00:00:00"); if (splits.length == 1){ vo.setEndTime(splits[0] + " 23:59:59"); }else { vo.setEndTime(splits[1] + " 23:59:59"); } } List joinList = archiveManageService.getJoinList(vo); ArchiveInfoAttachmentDTO attachmentDTO = new ArchiveInfoAttachmentDTO(); ArchiveManageDTO archiveManageDTO = new ArchiveManageDTO(); if (download == 0){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); for (ArchiveManageDTO item:joinList) { ArrayList fileList0 = new ArrayList<>(); ArrayList fileList1 = new ArrayList<>(); ArrayList fileList2 = new ArrayList<>(); ArrayList fileList3 = new ArrayList<>(); ArrayList fileList4 = new ArrayList<>(); attachmentDTO.setArchiveInfoId(item.getId()); List dtos = archiveInfoAttachmentService.getOneData(attachmentDTO); item.setCount0(0); item.setCount1(0); item.setCount2(0); item.setCount3(0); item.setCount4(0); for (ArchiveInfoAttachmentDTO dto:dtos) { dto.setId(null); if(dto.getType() == 0){ item.setCount0(item.getCount0() + 1); dto.setType(null); fileList0.add(dto); } else if (dto.getType() == 1) { item.setCount1(item.getCount1() + 1); dto.setType(null); fileList1.add(dto); }else if (dto.getType() == 2) { item.setCount2(item.getCount2() + 1); dto.setType(null); fileList2.add(dto); }else if (dto.getType() == 3) { item.setCount3(item.getCount3() + 1); dto.setType(null); fileList3.add(dto); }else if (dto.getType() == 4) { item.setCount4(item.getCount4() + 1); dto.setType(null); fileList4.add(dto); } } item.setFileList0(fileList0); item.setFileList1(fileList1); item.setFileList2(fileList2); item.setFileList3(fileList3); item.setFileList4(fileList4); try { Date parse = dateFormat.parse(item.getCreateTime()); item.setCreateTime(dateFormat.format(parse)); } catch (ParseException e) { throw new RuntimeException(e); } } Integer total = archiveManageService.getCount(vo); archiveManageDTO.setList(joinList); archiveManageDTO.setTotal(total); // return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,archiveManageDTO); }else { String title; if (version == 0) { if (type == 0){ title = "序号,项目名称,项目编号,立项档案,设计档案,验收档案,建档时间,归档情况"; } else if (type == 1) { title = "序号,设备名称,设备编号,档案,建档时间,归档情况"; }else { title = "序号,工单名称,工单号,档案,建档时间,归档情况"; } } else if (version == 1) { if (type == 0){ title = "SN,Project Name,Project No.,Project Initiation File,Design File,Acceptance File,Filing Time,Filing Status"; }else if (type == 1) { title = "SN,Equipment Name,Equipment No.,File,File Creation Time,Archive Status"; }else{ title = "SN,work order name,work order number,file,filing time,filing status"; } } else { if (type == 0){ title = "Серийный номер,Название проекта,Номер проекта,Архив проекта,Архив проекта,Архив проекта,Архив приемки,Время архивирования,Архивное положение"; }else if (type == 1){ title = "Серийный номер,название устройства,номер устройства,архив,время архивирования,архив ситуации"; }else{ title = "Серийный номер,название рабочего листа,номер рабочего листа,архив,время архивирования,архивная ситуация"; } } List titleList = Arrays.asList(title.split(",")); List> contentList = new ArrayList<>(); int number = 1;//序号 for (ArchiveManageDTO item:joinList){ int index = 0; //下标 List newString = new ArrayList<>(); newString.add(index++, String.valueOf(number)); newString.add(index++,item.getName()); newString.add(index++,item.getNumber()); attachmentDTO.setArchiveInfoId(item.getId()); List dtos = archiveInfoAttachmentService.getOneData(attachmentDTO); if (dtos == null || dtos.size() == 0){ newString.add(index++,""); if (type == 0){ newString.add(index++,""); newString.add(index++,""); } }else { int typeIndex = 0; for (ArchiveInfoAttachmentDTO dto:dtos) { if (dto.getType() == 2){ //立项 newString.add(index++,dto.getPath()); typeIndex ++; } else if (dto.getType() == 1) { //设计 newString.add(index++,dto.getPath()); typeIndex ++; } else if (dto.getType() == 4) { //验收 newString.add(index++,dto.getPath()); typeIndex ++; }else { //其它 newString.add(index++,dto.getPath()); } } if (type == 0 && typeIndex < 3){ for (int i = 3 - typeIndex; i >0; i -- ){ newString.add(index++,""); } } } newString.add(index++,item.getCreateTime()); if (version == 0){ if (item.getStatus() == 0){ newString.add(index++,"未归档"); } else if (item.getStatus() == 1) { newString.add(index++,"归档中"); }else { newString.add(index++,"已归档"); } } else if (version == 1) { if (item.getStatus() == 0){ newString.add(index++,"not archived"); } else if (item.getStatus() == 1) { newString.add(index++,"being archived"); }else { newString.add(index++,"archived"); } }else { if (item.getStatus() == 0){ newString.add(index++,"Не архивировано"); } else if (item.getStatus() == 1) { newString.add(index++,"Архивировано"); }else { newString.add(index++,"Архивировано"); } } contentList.add(joinList.indexOf(item),newString); number ++; } String path = ExcelUtil.outExcel(titleList, contentList); archiveManageDTO.setPath(path); } return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,archiveManageDTO); } @RequestMapping(value = "/updateFile",method = RequestMethod.POST) public BaseResult updateFile(HttpServletRequest request) throws Exception { MultipartFile file = ((StandardMultipartHttpServletRequest) request).getFile("file"); String result = toolUtils.uploadFile(file,null, null,null); if (result.equals("0001")){ //缺少文件 return toolUtils.response(InterfaceResultEnum.LACK_FILE_ERROR,0); } else if (result.equals("0002")) { //类型不对 return toolUtils.response(InterfaceResultEnum.FILE_TYPE_ERROR,0); } else if (result.equals("0003")) { //未知错误 return toolUtils.response(InterfaceResultEnum.UNKNOW_FILE_ERROR,0); } HashMap hashMap = new HashMap<>(); hashMap.put("path",result); return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,0,hashMap); } }