프론트엔드와 백엔드 분리개발|SSM기반 채용관리시스템 분석 및 설계

작성자 홈페이지: 프로그래밍 나침반

저자 소개: Java 분야의 고급 크리에이터, CSDN 블로그 전문가, CSDN 콘텐츠 파트너, Nuggets 초빙 저자, Alibaba Cloud 블로그 전문가, 51CTO 초빙 저자, 다년간의 설계 설계 경험, Tencent 강의실 상주 강사

주요 내용 : Java 프로젝트, Python 프로젝트, 프론트 엔드 프로젝트, 인공 지능 및 빅 데이터, 이력서 템플릿, 학습 자료, 면접 질문 은행, 기술 공조

즐겨찾기,좋아요,길잃지말고 작가님 따라하시면 ​​좋아요

기사 끝에서 소스 코드 얻기 

항목 번호: BS-GX-065

1. 환경 소개

로케일: 자바: jdk1.8

데이터베이스: MySQL: mysql5.7

애플리케이션 서버: Tomcat: tomcat8.5.31

개발 도구: IDEA 또는 eclipse

배경 개발 기술: SSM 프레임워크

프론트엔드 개발 기술: Vue+ElementUI

2. 프로젝트 소개

2.1 소개

모바일 컴퓨터의 급속한 발전으로 사람들은 정보화 시대에 접어들었고 정보를 얻고 관련 정보를 교환하는 것은 더 이상 신문, 텔레비전, 라디오와 같은 전통적인 매체에 그치지 않습니다. 필요합니다. 학교가 졸업생을 위한 취업정보 플랫폼을 제공할 수 있다면 학생 및 관련 기업이 원하는 자리와 학생을 빠르고 효과적으로 얻을 수 있도록 도와줄 수 있고, 교사나 행정가는 모든 학생 취업정보를 쉽고 효율적으로 열람할 수 있다.

본 시스템은 졸업생들에게 자유롭고 안전한 인터넷 환경을 제공하기 위한 온라인 채용관리 시스템을 구현합니다. 동시에 기업이 졸업생을 위한 자원을 제공할 수 있는 채널을 제공하고 기업 채용 및 졸업생 고용에 대한 정보를 제공합니다. 고용정보관리시스템 현 사회상황에 따라 사회복지사의 니즈를 충족시킬 수 있는 고용정보관리시스템을 설계하기 위해 최선을 다하고 있습니다. 이 고용 관리 시스템은 Java 언어, MySQL 데이터베이스, SSM 프레임워크, JSP 및 기타 기술을 통해 개발되었으며 세 가지 사용자 유형의 기능 모듈을 실현합니다. 학생 모듈의 경우 등록, 채용 정보 모듈, 회사 정보 모듈, 뉴스 정보 모듈, 온라인 메시지 모듈 및 배경 관리 모듈을 실현할 수 있으며 기업 모듈의 경우 채용 정보 관리, 이력서 정보 관리 및 온라인 메시지를 실현할 수 있습니다. 관리자 모듈의 경우 학생 관리, 기업 관리, 직위 유형 관리, 채용 정보 관리, 이력서 정보 관리, 회사 정보 관리, 온라인 메시지, 시스템 관리를 실현할 수 있습니다.

2.2 사용 사례 분석

1. 로그인 기능은 학생, 기업 및 관리자가 사용할 수 있으며 로그인 사용 사례 분석은 그림 2.1과 같습니다.

그림 2.1 로그인 시스템 사용 사례 다이어그램

2. 등록 기능은 학생들이 사용할 수 있으며 등록 사용 사례 분석은 그림 2.2와 같습니다.

그림 2.2 등록 시스템 사용 사례 다이어그램

3. 비밀번호 수정 기능은 학생, 기업, 관리자가 사용할 수 있으며, 비밀번호 수정 사용 사례 분석은 그림 2.3과 같다.

그림 2.3 암호 사용 사례 다이어그램 변경

4. 개인정보 수정 기능은 학생, 기업, 관리자가 사용할 수 있으며, 개인정보 활용 사례 분석은 그림 2.4와 같다.

그림 2.4 개인정보 활용 사례도

5. 역할 정보 삭제 및 수정 기능은 학생, 기업 및 관리자가 사용할 수 있으며, 역할 정보 추가, 삭제 및 조회는 관리자만 사용할 수 있습니다. 역할 관리의 사용 사례 분석은 그림 2.5와 같습니다.

그림 2.5 역할 관리 사용 사례 다이어그램

6. 그림 2.6과 같이 학생은 채용 정보를 열람할 수 있고 관리자와 회사는 채용 정보를 추가, 삭제 및 수정할 수 있으며 채용 정보 관리의 사례 분석을 활용할 수 있습니다.

그림 2.6 채용 정보 관리 사용 사례 다이어그램

7. 학생은 직무정보를 조회할 수 있고, 관리자 및 기업은 직무정보를 추가, 삭제, 수정할 수 있으며, 직무정보 관리 활용 사례 분석은 그림 2.7과 같다.

그림 2.7 위치정보 관리 Use Case 다이어그램

8. 기업 및 관리자는 이력서 정보를 삭제, 수정 및 조회할 수 있고 학생은 이력서 정보를 추가할 수 있으며 이력서 정보의 사용 사례 분석은 그림 2.8에 나와 있습니다.

그림 2.8 이력서 관리 사용 사례 다이어그램

9. 기업 및 관리자는 회사 정보를 조회, 수정, 삭제 및 추가할 수 있으며, 학생들은 회사 정보를 조회하고 회사 정보의 활용 사례 분석을 그림 2.9와 같이 할 수 있습니다.

그림 2.9 회사 정보 관리 사용 사례 다이어그램

10. 기업 및 관리자는 학생의 메시지를 추가, 삭제, 수정, 질의 및 회신할 수 있으며 학생은 메시지를 추가 및 질의할 수 있습니다.메시지 관리의 사용 사례 분석은 그림 2.10과 같습니다.

그림 2.10 메시지 관리 사용 사례 다이어그램

11. 학생, 기업 및 관리자는 뉴스 정보를 추가 및 조회할 수 있으며 관리자는 뉴스 정보를 삭제 및 수정할 수 있습니다.뉴스 정보의 사용 사례 분석은 그림 2.11과 같습니다.

그림 2.11 뉴스 정보 관리 사용 사례 다이어그램

2.3 시스템 기능 분석

관리자 사용자 시스템은 7개 부분으로 나뉘며 특정 기능 모듈 다이어그램은 그림 2.2 에 나와 있습니다 .

그림 4.2 관리자 기능 모듈 다이어그램

  1. 학생 관리 모듈: 학생 관리 모듈은 주로 관리자의 학생 정보 관리를 구현합니다.대학에 새로운 학생이 추가되면 해당 학생 계정, 학생 이름, 성별, 전화 번호, 연령, 교육, 우편 번호, 고용 상태, 등을 추가할 수 있으며, 관리자는 학생정보 관리 과정에서 정보 변경이 필요할 때 학생정보를 추가, 삭제, 수정 및 확인할 수 있습니다. 관리자가 학생 정보를 수정하면 시스템에 있는 학생과 관련된 정보도 함께 수정되어야 하며, 시스템에 다른 학생과 관련된 정보가 있으면 학생 정보를 삭제할 수 없습니다. 학생정보를 보다 편리하게 조회하기 위해 학생계좌번호와 학생이름에 따라 퍼지조회를 할 수 있습니다.
  2. 기업 관리 모듈: 기업 관리 모듈은 주로 관리자의 기업 정보 관리를 구현합니다.기업 정보를 추가할 때 해당 기업 계정, 기업 이름, 상세 주소, 전화 번호, 기업 유형, 산업 및 기타 속성을 추가할 수 있습니다.관리자가 기업 정보를 관리하는 과정에서 정보를 변경해야 하는 경우 관리자는 기업 정보를 추가, 삭제, 수정 및 확인할 수 있습니다. 관리자가 기업 정보를 수정하면 시스템에 있는 기업과 관련된 정보도 함께 수정해야 하며, 시스템에 기업과 관련된 다른 정보가 있으면 삭제할 수 없다. 기업 정보를 보다 편리하게 조회하기 위해 기업 계좌 번호 및 기업 이름에 따라 퍼지 조회 기능을 수행할 수 있습니다.
  3. 직위 유형 모듈: 직위 유형 관리 모듈은 주로 기업 채용 직위 유형 정보에 대한 관리자의 관리를 구현합니다.기업 채용 직위 유형 정보가 추가되면 해당 직위 유형 이름을 추가할 수 있습니다.관리자가 기업을 관리하는 과정에서 채용 직위 정보 정보 변경이 필요한 경우 관리자는 회사의 채용 직위 유형 정보를 추가, 삭제, 수정 및 확인할 수 있습니다. 관리자가 기업 채용 직위 유형 정보를 수정하면 시스템에서 기업 채용 직위 유형과 관련된 정보도 수정해야 하며, 시스템에 기업 채용 직위 유형과 관련된 다른 정보가 있으면 기업 채용 직위 유형 유형 정보는 삭제할 수 없습니다. 기업에서 채용한 직위 유형에 대한 정보를 보다 편리하게 조회할 수 있도록 직위 유형에 따라 퍼지 조회 기능을 수행할 수 있습니다.
  4. 채용 정보 모듈: 채용 정보 관리 모듈은 주로 관리자의 채용 정보 관리를 구현합니다.채용 정보를 추가할 때 해당 채용 번호, 직무 이름, 직무 유형, 채용 상태, 근무 지역, 학력, 해당 전공, 채용인원, 급여, 근무시간, 근무지, 출고시간, 기업계좌, 기업명 등의 속성에 따라 관리자가 채용정보를 관리하는 과정에서 정보를 변경해야 할 경우 관리자가 추가, 삭제, 수정, 채용정보를 확인하세요. 관리자가 채용 정보를 수정할 때 시스템 내 채용 정보와 관련된 정보도 함께 수정해야 하며, 시스템에 채용 정보와 관련된 다른 정보가 있는 경우 채용 정보를 삭제할 수 없습니다. 보다 편리한 채용 정보 검색을 위해 직위별로 퍼지 쿼리 기능을 수행할 수 있습니다.
  5. 회사 정보 모듈: 회사 정보 관리 모듈은 주로 관리자의 회사 정보 관리를 실현합니다.회사 정보를 추가할 때 해당 회사 이름, 회사 표지, 기업 유형, 회사 전화, 회사 이메일, 회사 주소, 산업, 속성 등을 추가할 수 있습니다. 업무 범위로서 관리자가 회사 정보를 관리하는 과정에서 정보를 변경해야 할 경우 관리자는 회사 정보를 추가, 삭제, 수정 및 확인할 수 있습니다. 관리자가 회사 정보를 수정할 때 시스템에 있는 회사 정보와 관련된 정보도 수정해야 하며, 시스템에 회사 정보와 관련된 다른 정보가 있으면 회사 정보를 삭제할 수 없습니다. 회사 정보를 보다 편리하게 조회하기 위해 회사명과 회사 주소에 따라 퍼지 조회 기능을 수행할 수 있습니다.
  6. 이력서 정보 모듈: 이력서 정보 관리 모듈은 주로 관리자의 이력서 정보 관리를 구현하며 관리자가 이력서 정보 관리 과정에서 정보를 변경해야 할 경우 관리자가 이력서 정보를 삭제, 수정 및 확인할 수 있습니다. 관리자가 이력서 정보를 수정할 때 시스템에 있는 이력서 정보와 관련된 정보도 함께 수정해야 하며, 시스템에 이력서 정보와 관련된 다른 정보가 있으면 삭제할 수 없습니다. 이력서 정보를 보다 쉽게 ​​조회할 수 있도록 직책을 기준으로 퍼지 조회 기능을 수행할 수 있습니다.
  7. 온라인 메시지 관리 모듈: 온라인 메시지 관리 모듈은 주로 관리자에 의한 온라인 메시지 관리를 구현합니다.관리자가 온라인 메시지를 관리하는 과정에서 정보를 변경해야 할 때 관리자는 삭제, 수정, 확인 및 회신할 수 있습니다. 온라인 메시지. 관리자가 온라인 메시지를 수정할 때 시스템에 있는 온라인 메시지와 관련된 정보도 함께 수정해야 하며 온라인 메시지와 관련된 다른 정보가 시스템에 있는 경우 온라인 메시지를 삭제할 수 없습니다. 온라인 메시지를 더 쉽게 쿼리하기 위해 사용자 이름을 기반으로 퍼지 쿼리 기능을 수행할 수 있습니다.

 

엔터프라이즈 사용자 시스템의 기능 모듈은 세 부분으로 나뉘며 특정 기능 모듈 다이어그램은 그림 4.3 에 나와 있습니다 .

그림 4.3 엔터프라이즈 기능 모듈 다이어그램

  1. 채용 정보 관리: 기업 계정으로 시스템에 로그인한 후 기업 측에서 회사의 채용 정보를 관리할 수 있습니다.기업 사용자는 회사 채용 정보를 게시할 수 있습니다.기업 사용자가 추가를 클릭하면 시스템이 채용 정보 입력으로 이동합니다. 기업 사용자는 필요에 따라 채용 정보를 입력합니다. 인원, 직책, 직종, 채용 상태, 근무 지역, 학력, 해당 전공, 채용 인원, 급여, 근무 시간, 근무 위치, 릴리스 시간, 회사 계좌 번호, 회사명 등을 입력하고 제출을 클릭하면 채용정보 공개가 완료됩니다. 기업 사용자는 회사의 채용 정보를 수정, 조회 및 삭제할 수 있습니다.
  2. 이력서 정보 관리: 기업 계정으로 시스템에 로그인한 후, 학생이 제출한 이력서 정보를 기업 측에서 관리할 수 있습니다. 기업 사용자는 직급에 따라 학생이 제출한 이력서 정보를 모호하게 조회하고, 학생이 제출한 이력서 정보를 다운로드하고, 학생의 이력서에 대한 온라인 검토를 수행할 수 있으며, 검토가 통과되면 학생의 이력서를 통지하거나 학생에게 알릴 수 있습니다. 직접 고용.
  3. 온라인 메시지 관리: 기업 계정으로 시스템에 로그인 후 기업 측에서 학생의 온라인 메시지 상담 정보를 관리할 수 있습니다. 기업 사용자는 사용자 이름에 따라 학생의 온라인 메시지 정보를 모호하게 조회할 수 있으며 온라인에서 학생의 온라인 메시지 정보에 회신할 수 있으며 학생의 회신 정보를 수정 및 삭제할 수 있습니다.

학생 기능 모듈 설계

학생 사용자 시스템의 기능 모듈은 세 부분으로 나뉘며 특정 기능 모듈 다이어그램은 그림 4.4 에 나와 있습니다 .

그림 4.4 학생 기능 모듈 다이어그램

  1. 채용 정보: 채용 정보 모듈에서 학생 사용자는 직급에 따라 채용 정보를 조회할 수 있습니다.사용자가 채용 정보 그림의 링크를 클릭하면 시스템 페이지가 채용 정보 세부 정보로 이동합니다.학생은 채용을 확인할 수 있습니다. 번호, 직종, 채용현황, 근무지역, 학력요건, 해당전공, 채용인원, 급여, 근무시간, 근무처, 입사일, 기업계좌번호, 기업명 등의 정보를 입력하고 저장을 클릭하면 저장됩니다. 채용 정보, 학생은 채용 위치에 대한 이력서 정보를 제출할 수 있습니다. 학생 온라인 채용 정보에 댓글을 달고 작업 요구 사항을 볼 수 있습니다.
  2. 회사 정보: 회사 정보 모듈에서 학생 사용자는 회사 이름 및 회사 주소에 따라 모집 회사 정보를 조회할 수 있습니다.학생은 회사 사진 링크를 클릭하면 시스템 페이지가 회사 정보 세부 정보로 이동합니다.학생은 회사의 비즈니스를 볼 수 있습니다. 유형, 회사 전화번호, 회사 이메일 주소, 회사 주소, 업종 및 사업 범위, 학생들은 채용 회사의 프로필을 볼 수 있습니다.
  3. 뉴스정보 : 학생이 뉴스정보 모듈에서 뉴스정보 제목에 따라 뉴스정보 정보를 검색하여 학생이 뉴스 사진 링크를 클릭하면 시스템 페이지가 뉴스정보 상세페이지로 이동합니다. 뉴스 정보 상세 페이지.
  4. 온라인 메시지: 학생이 온라인 메시지 버튼을 클릭하면 시스템 페이지가 온라인 메시지 입력 인터페이스로 이동합니다.시스템 프롬프트에 따라 학생은 메시지 내용을 입력하고 메시지 그림을 선택한 다음 제출을 클릭하여 온라인 메시지를 완성합니다. 메시지 열에서 다른 메시지 보기 사용자의 온라인 메시지 정보.
  5. 백그라운드 관리: 학생 사용자가 백그라운드 관리 버튼을 클릭하면 시스템 페이지가 백그라운드로 이동합니다.학생은 개인 백그라운드에서 개인 시스템 로그인 계정, 비밀번호 및 등록된 개인 정보를 수정할 수 있습니다.학생은 개인이 전달한 이력서 정보를 볼 수 있습니다.

세, 시스템 디스플레이

시스템 프런트 엔드 홈 페이지

 소식

 온라인 메시지

 

경영 관리

 이력서 관리

 직무 유형 관리

인터페이스의 일부만 표시되며 위의 기능 구조 다이어그램에 나열된 모든 기능이 구현되며 하나씩 표시되지 않습니다. 

넷째, 핵심 코드 표시

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;
import com.utils.CommonUtil;
/**
 * 通用接口
 */
@RestController
public class CommonController{
	@Autowired
	private CommonService commonService;

    private static AipFace client = null;
    
    @Autowired
    private ConfigService configService;
    
	/**
	 * 获取table表中的column列表(联动接口)
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/option/{tableName}/{columnName}")
	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,@RequestParam(required = false) String conditionColumn,@RequestParam(required = false) String conditionValue,String level,String parent) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		if(StringUtils.isNotBlank(level)) {
			params.put("level", level);
		}
		if(StringUtils.isNotBlank(parent)) {
			params.put("parent", parent);
		}
        if(StringUtils.isNotBlank(conditionColumn)) {
            params.put("conditionColumn", conditionColumn);
        }
        if(StringUtils.isNotBlank(conditionValue)) {
            params.put("conditionValue", conditionValue);
        }
		List<String> data = commonService.getOption(params);
		return R.ok().put("data", data);
	}
	
	/**
	 * 根据table中的column获取单条记录
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/follow/{tableName}/{columnName}")
	public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		params.put("columnValue", columnValue);
		Map<String, Object> result = commonService.getFollowByOption(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 修改table表的sfsh状态
	 * @param table
	 * @param map
	 * @return
	 */
	@RequestMapping("/sh/{tableName}")
	public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {
		map.put("table", tableName);
		commonService.sh(map);
		return R.ok();
	}
	
	/**
	 * 获取需要提醒的记录数
	 * @param tableName
	 * @param columnName
	 * @param type 1:数字 2:日期
	 * @param map
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/remind/{tableName}/{columnName}/{type}")
	public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("table", tableName);
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		int count = commonService.remindCount(map);
		return R.ok().put("count", count);
	}
	
	/**
	 * 单列求和
	 */
	@IgnoreAuth
	@RequestMapping("/cal/{tableName}/{columnName}")
	public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		Map<String, Object> result = commonService.selectCal(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 分组统计
	 */
	@IgnoreAuth
	@RequestMapping("/group/{tableName}/{columnName}")
	public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		List<Map<String, Object>> result = commonService.selectGroup(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map<String, Object> m : result) {
			for(String k : m.keySet()) {
				if(m.get(k) instanceof Date) {
					m.put(k, sdf.format((Date)m.get(k)));
				}
			}
		}
		return R.ok().put("data", result);
	}
	
	/**
	 * (按值统计)
	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
	public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		List<Map<String, Object>> result = commonService.selectValue(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map<String, Object> m : result) {
			for(String k : m.keySet()) {
				if(m.get(k) instanceof Date) {
					m.put(k, sdf.format((Date)m.get(k)));
				}
			}
		}
		return R.ok().put("data", result);
	}

	/**
 	 * (按值统计)时间统计类型
 	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")
	public R valueDay(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		params.put("timeStatType", timeStatType);
		List<Map<String, Object>> result = commonService.selectTimeStatValue(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map<String, Object> m : result) {
			for(String k : m.keySet()) {
				if(m.get(k) instanceof Date) {
					m.put(k, sdf.format((Date)m.get(k)));
				}
			}
		}
		return R.ok().put("data", result);
	}



}

package com.controller;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
    @IgnoreAuth
	public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
		file.transferTo(dest);
		/**
 		 * 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
  		 * 请将以下的"D:\\ssmpiv99\\src\\main\\webapp\\upload"替换成你本地项目的upload路径,
 		 * 并且项目路径不能存在中文、空格等特殊字符
 		 */
//		FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
		try {
			File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
			if (file.exists()) {
				response.reset();
				response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");
				response.setHeader("Cache-Control", "no-cache");
				response.setHeader("Access-Control-Allow-Credentials", "true");
				response.setContentType("application/octet-stream; charset=UTF-8");
				IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
			}

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

5. 관련 작품 전시

Java 개발, Python 개발, PHP 개발, C# 개발 및 기타 관련 언어 개발을 기반으로 한 실용적인 프로젝트

Nodejs, Vue 및 기타 프론트엔드 기술을 기반으로 개발된 프론트엔드 실용 프로젝트

WeChat 애플릿 및 Android APP 애플리케이션 개발을 기반으로 한 관련 작업

51단일칩 마이크로컴퓨터 기반 임베디드 IoT 개발 및 응용

다양한 알고리즘을 기반으로 한 AI 지능형 애플리케이션

빅데이터 기반의 다양한 데이터 관리 및 추천 시스템

 

 

Supongo que te gusta

Origin blog.csdn.net/whirlwind526/article/details/131721545
Recomendado
Clasificación