Przeglądaj źródła

历史分组统计日报表
凌晨自动保存前一天统计数据

yanliming 1 rok temu
rodzic
commit
f570e28182

+ 21 - 0
common/src/main/java/com/jpsoft/employment/modules/base/dao/GenerateReportDAO.java

@@ -0,0 +1,21 @@
+package com.jpsoft.employment.modules.base.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.jpsoft.employment.modules.base.entity.GenerateReport;
+import java.util.Map;
+import com.jpsoft.employment.modules.common.dto.Sort;
+
+@Repository
+public interface GenerateReportDAO {
+	int insert(GenerateReport entity);
+	int update(GenerateReport entity);
+	int exist(String id);
+	GenerateReport get(String id);
+	int delete(String id);
+	List<GenerateReport> list();
+	GenerateReport findByDate(@Param("searchParams") Map<String, Object> searchParams);
+	List<GenerateReport> search(Map<String, Object> searchParams, List<Sort> sortList);
+}

+ 93 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/GenerateReport.java

@@ -0,0 +1,93 @@
+package com.jpsoft.employment.modules.base.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.data.annotation.Transient;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+  描述:base_generate_report的实体类
+ */
+@Data
+public class GenerateReport {
+	@ApiModelProperty(value = "编号")
+	private String id;
+
+	@ApiModelProperty(value = "日期")
+	private Date date;
+
+	@ApiModelProperty(value = "新增登录人数")
+	private Integer loginNum;
+
+	@ApiModelProperty(value = "累计登录人数")
+	private Integer totalLoginNum;
+
+	@ApiModelProperty(value = "今日注册人数")
+	private Integer dailyPersonRegNum;
+
+	@ApiModelProperty(value = "累计注册人数")
+	private Integer totalPersonRegNum;
+
+	@ApiModelProperty(value = "新增求职登记人数")
+	private Integer personNum;
+
+	@ApiModelProperty(value = "累计求职登记人数")
+	private Integer totalPersonNum;
+
+	@ApiModelProperty(value = "累计简历数")
+	private Integer totalJobInformation;
+
+	@ApiModelProperty(value = "新增线上认证企业数量")
+	private Integer enterpriseNum;
+
+	@ApiModelProperty(value = "累计认证企业数量")
+	private Integer totalEnterpriseNum;
+
+	@ApiModelProperty(value = "新增岗位发布数量")
+	private Integer recruitNum;
+
+	@ApiModelProperty(value = "实时发布岗位数")
+	private Integer totalRecruitNum;
+
+	@ApiModelProperty(value = "累计岗位发布数量")
+	private Integer totalRecruitStatusNum;
+
+	@ApiModelProperty(value = "岗位需求人数")
+	private Integer jobRequirementNum;
+
+	@ApiModelProperty(value = "累计岗位需求人数")
+	private Integer totalJobRequirementNum;
+
+	@ApiModelProperty(value = "今日报名人数")
+	private Integer jobInformationNum;
+
+	@ApiModelProperty(value = "创建人")
+	private String createBy;
+
+	@ApiModelProperty(value = "创建时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+
+	@ApiModelProperty(value = "更新人")
+	private String updateBy;
+
+	@ApiModelProperty(value = "更新时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date updateTime;
+
+	@ApiModelProperty(value = "是否删除")
+	private Boolean delFlag;
+
+
+	@Transient
+	@ApiModelProperty(value = "日期")
+	private String dateStr;
+}

+ 18 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/GenerateReportService.java

@@ -0,0 +1,18 @@
+package com.jpsoft.employment.modules.base.service;
+
+import java.util.List;
+import java.util.Map;
+import com.jpsoft.employment.modules.base.entity.GenerateReport;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+
+public interface GenerateReportService {
+	GenerateReport get(String id);
+	boolean exist(String id);
+	int insert(GenerateReport model);
+	int update(GenerateReport model);
+	int delete(String id);
+	List<GenerateReport> list();
+	GenerateReport findByDate(Map<String, Object> searchParams);
+	Page<GenerateReport> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+}

+ 75 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/GenerateReportServiceImpl.java

@@ -0,0 +1,75 @@
+package com.jpsoft.employment.modules.base.service.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import javax.annotation.Resource;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import com.jpsoft.employment.modules.base.dao.GenerateReportDAO;
+import com.jpsoft.employment.modules.base.entity.GenerateReport;
+import com.jpsoft.employment.modules.base.service.GenerateReportService;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.github.pagehelper.PageHelper;
+
+@Transactional
+@Component(value="generateReportService")
+public class GenerateReportServiceImpl implements GenerateReportService {
+	@Resource(name="generateReportDAO")
+	private GenerateReportDAO generateReportDAO;
+
+	@Override
+	public GenerateReport get(String id) {
+		// TODO Auto-generated method stub
+		return generateReportDAO.get(id);
+	}
+
+	@Override
+	public int insert(GenerateReport model) {
+		// TODO Auto-generated method stub
+		//model.setId(UUID.randomUUID().toString());
+		
+		return generateReportDAO.insert(model);
+	}
+
+	@Override
+	public int update(GenerateReport model) {
+		// TODO Auto-generated method stub
+		return generateReportDAO.update(model);		
+	}
+
+	@Override
+	public int delete(String id) {
+		// TODO Auto-generated method stub
+		return generateReportDAO.delete(id);
+	}
+
+	@Override
+	public boolean exist(String id) {
+		// TODO Auto-generated method stub
+		int count = generateReportDAO.exist(id);
+		
+		return count > 0 ? true : false;
+	}
+	
+	@Override
+	public List<GenerateReport> list() {
+		// TODO Auto-generated method stub
+		return generateReportDAO.list();
+	}
+
+	@Override
+	public GenerateReport findByDate(Map<String, Object> searchParams){
+		return generateReportDAO.findByDate(searchParams);
+	}
+		
+	@Override
+	public Page<GenerateReport> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
+        Page<GenerateReport> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            generateReportDAO.search(searchParams,sortList);
+        });
+        
+        return page;
+	}
+}

+ 190 - 0
common/src/main/resources/mapper/base/GenerateReport.xml

@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- namespace必须指向DAO接口 -->
+<mapper namespace="com.jpsoft.employment.modules.base.dao.GenerateReportDAO">
+	<resultMap id="GenerateReportMap" type="com.jpsoft.employment.modules.base.entity.GenerateReport">
+		<id property="id" column="id_" />
+			<result property="date" column="date_" />
+			<result property="loginNum" column="login_num" />
+			<result property="totalLoginNum" column="total_login_num" />
+			<result property="dailyPersonRegNum" column="daily_person_reg_num" />
+			<result property="totalPersonRegNum" column="total_person_reg_num" />
+			<result property="personNum" column="person_num" />
+			<result property="totalPersonNum" column="total_person_num" />
+			<result property="totalJobInformation" column="total_jobInformation" />
+			<result property="enterpriseNum" column="enterprise_num" />
+			<result property="totalEnterpriseNum" column="total_enterprise_num" />
+			<result property="recruitNum" column="recruit_num" />
+			<result property="totalRecruitNum" column="total_recruit_num" />
+			<result property="totalRecruitStatusNum" column="total_recruit_status_num" />
+			<result property="jobRequirementNum" column="job_requirement_num" />
+			<result property="totalJobRequirementNum" column="total_job_requirement_num" />
+			<result property="jobInformationNum" column="job_information_num" />
+			<result property="createBy" column="create_by" />
+			<result property="createTime" column="create_time" />
+			<result property="updateBy" column="update_by" />
+			<result property="updateTime" column="update_time" />
+			<result property="delFlag" column="del_flag" />
+			</resultMap>
+	<insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.GenerateReport">
+	<!--
+	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+		select sys_guid() from dual
+	</selectKey>
+	-->
+	<![CDATA[
+		insert into base_generate_report
+	    (id_,date_,login_num,total_login_num,daily_person_reg_num,
+	    total_person_reg_num,person_num,total_person_num,total_jobInformation,
+	    enterprise_num,total_enterprise_num,recruit_num,total_recruit_num,
+	    total_recruit_status_num,job_requirement_num,total_job_requirement_num,
+	    job_information_num,create_by,create_time,
+	    update_by,update_time,del_flag)
+		values
+		(
+#{id,jdbcType=VARCHAR}
+,#{date,jdbcType= TIMESTAMP }
+,#{loginNum,jdbcType= NUMERIC }
+,#{totalLoginNum,jdbcType= NUMERIC }
+,#{dailyPersonRegNum,jdbcType= NUMERIC }
+,#{totalPersonRegNum,jdbcType= NUMERIC }
+,#{personNum,jdbcType= NUMERIC }
+,#{totalPersonNum,jdbcType= NUMERIC }
+,#{totalJobInformation,jdbcType= NUMERIC }
+,#{enterpriseNum,jdbcType= NUMERIC }
+,#{totalEnterpriseNum,jdbcType= NUMERIC }
+,#{recruitNum,jdbcType= NUMERIC }
+,#{totalRecruitNum,jdbcType= NUMERIC }
+,#{totalRecruitStatusNum,jdbcType= NUMERIC }
+,#{jobRequirementNum,jdbcType= NUMERIC }
+,#{totalJobRequirementNum,jdbcType= NUMERIC }
+,#{jobInformationNum,jdbcType= NUMERIC }
+,#{createBy,jdbcType=VARCHAR}
+,#{createTime,jdbcType= TIMESTAMP }
+,#{updateBy,jdbcType=VARCHAR}
+,#{updateTime,jdbcType= TIMESTAMP }
+,#{delFlag,jdbcType= NUMERIC }
+		)
+	]]>
+	</insert>
+	<delete id="delete" parameterType="string">
+		delete from base_generate_report where id_=#{id,jdbcType=VARCHAR}
+	</delete>
+	<update id="update" parameterType="com.jpsoft.employment.modules.base.entity.GenerateReport">
+		update base_generate_report
+		<set>
+				<if test="date!=null">
+		date_=#{date,jdbcType= TIMESTAMP },
+		</if>
+				<if test="loginNum!=null">
+		login_num=#{loginNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalLoginNum!=null">
+		total_login_num=#{totalLoginNum,jdbcType= NUMERIC },
+		</if>
+				<if test="dailyPersonRegNum!=null">
+		daily_person_reg_num=#{dailyPersonRegNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalPersonRegNum!=null">
+		total_person_reg_num=#{totalPersonRegNum,jdbcType= NUMERIC },
+		</if>
+				<if test="personNum!=null">
+		person_num=#{personNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalPersonNum!=null">
+		total_person_num=#{totalPersonNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalJobInformation!=null">
+		total_jobInformation=#{totalJobInformation,jdbcType= NUMERIC },
+		</if>
+				<if test="enterpriseNum!=null">
+		enterprise_num=#{enterpriseNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalEnterpriseNum!=null">
+		total_enterprise_num=#{totalEnterpriseNum,jdbcType= NUMERIC },
+		</if>
+				<if test="recruitNum!=null">
+		recruit_num=#{recruitNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalRecruitNum!=null">
+		total_recruit_num=#{totalRecruitNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalRecruitStatusNum!=null">
+		total_recruit_status_num=#{totalRecruitStatusNum,jdbcType= NUMERIC },
+		</if>
+				<if test="jobRequirementNum!=null">
+		job_requirement_num=#{jobRequirementNum,jdbcType= NUMERIC },
+		</if>
+				<if test="totalJobRequirementNum!=null">
+		total_job_requirement_num=#{totalJobRequirementNum,jdbcType= NUMERIC },
+		</if>
+				<if test="jobInformationNum!=null">
+		job_information_num=#{jobInformationNum,jdbcType= NUMERIC },
+		</if>
+			<if test="createBy!=null">
+				create_by=#{createBy,jdbcType=VARCHAR},
+			</if>
+			<if test="createTime!=null">
+				create_time=#{createTime,jdbcType= TIMESTAMP },
+			</if>
+			<if test="updateBy!=null">
+				update_by=#{updateBy,jdbcType=VARCHAR},
+			</if>
+			<if test="updateTime!=null">
+				update_time=#{updateTime,jdbcType= TIMESTAMP },
+			</if>
+			<if test="delFlag!=null">
+				del_flag=#{delFlag,jdbcType= NUMERIC },
+			</if>
+		</set>
+	where id_=#{id}
+	</update>
+	<select id="get" parameterType="string" resultMap="GenerateReportMap">
+		select * from base_generate_report where id_=#{0}
+	</select>
+	<select id="exist" parameterType="string" resultType="int">
+		select count(*) from base_generate_report where id_=#{0}
+	</select>
+	<select id="list" resultMap="GenerateReportMap">
+		select * from base_generate_report
+	</select>
+	<select id="findByDate" parameterType="hashmap" resultMap="GenerateReportMap">
+		select * from base_generate_report
+		<where>
+			del_flag = false
+			<if test="searchParams.startTime != null">
+				<![CDATA[
+					and date_ >=#{searchParams.startTime}
+				]]>
+			</if>
+			<if test="searchParams.endTime != null">
+				<![CDATA[
+					and date_ <=#{searchParams.endTime}
+				]]>
+			</if>
+		</where>
+		limit 1
+	</select>
+	<select id="search" parameterType="hashmap" resultMap="GenerateReportMap">
+		<![CDATA[
+			select * from base_generate_report
+		]]>
+		<where>
+			del_flag = false
+			<if test="searchParams.startTime != null">
+				<![CDATA[
+					and date_ >=#{searchParams.startTime}
+				]]>
+			</if>
+			<if test="searchParams.endTime != null">
+				<![CDATA[
+					and date_ <=#{searchParams.endTime}
+				]]>
+			</if>
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+	        ${sort.name} ${sort.order}
+	 	</foreach>
+	</select>
+</mapper>

+ 241 - 0
web/src/main/java/com/jpsoft/employment/modules/base/controller/GenerateReportController.java

@@ -0,0 +1,241 @@
+package com.jpsoft.employment.modules.base.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.MessageResult;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.utils.OSSUtil;
+import com.jpsoft.employment.modules.common.utils.POIUtils;
+import com.jpsoft.employment.modules.common.utils.PojoUtils;
+import com.jpsoft.employment.modules.base.entity.GenerateReport;
+import com.jpsoft.employment.modules.base.service.GenerateReportService;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@RestController
+@RequestMapping("/base/generateReport")
+public class GenerateReportController {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private GenerateReportService generateReportService;
+	
+	
+	@ApiOperation(value="创建空记录")
+    @GetMapping("create")
+    public MessageResult<GenerateReport> create(){
+        MessageResult<GenerateReport> msgResult = new MessageResult<>();
+
+        GenerateReport generateReport = new GenerateReport();
+
+        msgResult.setData(generateReport);
+        msgResult.setResult(true);
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="添加信息")
+    @PostMapping("add")
+    public MessageResult<GenerateReport> add(@RequestBody GenerateReport generateReport,@RequestAttribute String subject){
+        MessageResult<GenerateReport> msgResult = new MessageResult<>();
+
+        try {
+            generateReport.setId(UUID.randomUUID().toString());
+			generateReport.setDelFlag(false);
+            generateReport.setCreateBy(subject);
+            generateReport.setCreateTime(new Date());
+
+            int affectCount = generateReportService.insert(generateReport);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(generateReport);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库添加失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="获取信息")
+    @GetMapping("edit/{id}")
+    public MessageResult<GenerateReport> edit(@PathVariable("id") String id){
+        MessageResult<GenerateReport> msgResult = new MessageResult<>();
+
+        try {
+            GenerateReport generateReport = generateReportService.get(id);
+
+            if (generateReport != null) {
+                msgResult.setResult(true);
+                msgResult.setData(generateReport);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库不存在该记录!");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="更新用户")
+    @PostMapping("update")
+    public MessageResult<GenerateReport> update(@RequestBody GenerateReport generateReport,@RequestAttribute String subject){
+        MessageResult<GenerateReport> msgResult = new MessageResult<>();
+
+        try {
+		    generateReport.setUpdateBy(subject);
+            generateReport.setUpdateTime(new Date());
+		
+            int affectCount = generateReportService.update(generateReport);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(generateReport);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="删除用户")
+    @PostMapping("delete/{id}")
+    public MessageResult<GenerateReport> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+        MessageResult<GenerateReport> msgResult = new MessageResult<>();
+
+        try {
+			
+			GenerateReport generateReport = generateReportService.get(id);
+            generateReport.setDelFlag(true);
+            generateReport.setUpdateBy(subject);
+            generateReport.setUpdateTime(new Date());
+			
+			int affectCount = generateReportService.update(generateReport);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="批量删除")
+    @PostMapping("batchDelete")
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
+
+            for (String id : idList) {
+                GenerateReport generateReport = generateReportService.get(id);
+                generateReport.setDelFlag(true);
+                generateReport.setUpdateBy(subject);
+                generateReport.setUpdateTime(new Date());
+
+                affectCount += generateReportService.update(generateReport);
+            }
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="列表")
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
+            String dateRange,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        String subject = (String)request.getAttribute("subject");
+
+        //当前用户ID
+        System.out.println(subject);
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("create_time","desc"));
+
+        if (StringUtils.isNotEmpty(dateRange)) {
+            String[] date = dateRange.split(",");
+            String startTime = date[0] + " 00:00:00";
+            String endTime = date[1] + " 23:59:59";
+            searchParams.put("startTime", startTime);
+            searchParams.put("endTime", endTime);
+        }
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        Page<GenerateReport> page = generateReportService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        for (GenerateReport generateReport:page) {
+            if(generateReport.getDate()!=null){
+                String dateStr = sdf.format(generateReport.getDate());
+                generateReport.setDateStr(dateStr);
+            }
+        }
+
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+}

+ 140 - 17
web/src/main/java/com/jpsoft/employment/modules/base/controller/ReportController.java

@@ -3,6 +3,7 @@ package com.jpsoft.employment.modules.base.controller;
 
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.config.OSSConfig;
+import com.jpsoft.employment.modules.base.entity.GenerateReport;
 import com.jpsoft.employment.modules.base.entity.JobInformationInfo;
 import com.jpsoft.employment.modules.base.entity.RecruitInformationInfo;
 import com.jpsoft.employment.modules.base.entity.RecruitPersonRelation;
@@ -58,10 +59,13 @@ public class ReportController {
     @Autowired
     private OSSConfig ossConfig;
 
+    @Autowired
+    private GenerateReportService generateReportService;
+
 
     @ApiOperation(value = "日报表")
     @RequestMapping(value = "dailyReport", method = RequestMethod.POST)
-    public MessageResult<Object> dailyReport(String dateRange,@RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag) {
+    public MessageResult<Object> dailyReport(String dateRange, @RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag) {
 
         MessageResult<Object> msgResult = new MessageResult<>();
 
@@ -186,8 +190,7 @@ public class ReportController {
             }
 
             msgResult.setResult(true);
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
             msgResult.setResult(false);
         }
@@ -205,8 +208,8 @@ public class ReportController {
         //表头
         Row rowTitle = sheet.createRow(0);
 
-        String[] titles = new String[]{"序号", "新增登录人数", "累计登录人数", "今日注册人数","累计注册人数", "新增求职登记人数", "累计求职登记人数", "累计简历数",
-                "新增线上认证企业数量", "累计认证企业数量","新增岗位发布数量","实时发布岗位数","累计发布岗位数","岗位需求人数","累计岗位需求人数","今日报名人数"};
+        String[] titles = new String[]{"序号", "新增登录人数", "累计登录人数", "今日注册人数", "累计注册人数", "新增求职登记人数", "累计求职登记人数", "累计简历数",
+                "新增线上认证企业数量", "累计认证企业数量", "新增岗位发布数量", "实时发布岗位数", "累计发布岗位数", "岗位需求人数", "累计岗位需求人数", "今日报名人数"};
 
         for (int i = 0; i < titles.length; i++) {
             Cell cell = rowTitle.createCell(i);
@@ -254,21 +257,20 @@ public class ReportController {
     }
 
 
-
     @ApiOperation(value = "分组日报表")
     @RequestMapping(value = "dailyGroupReport", method = RequestMethod.POST)
-    public MessageResult<Object> dailyGroupReport(String dateRange,@RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag) {
+    public MessageResult<Object> dailyGroupReport(String dateRange, @RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag) {
 
         MessageResult<Object> msgResult = new MessageResult<>();
 
         try {
             String[] dateArr = dateRange.split(",");
 
-            List<String> dayList = getTwoDaysDayDes(dateArr[0],dateArr[1]);
+            List<String> dayList = getTwoDaysDayDes(dateArr[0], dateArr[1]);
 
             List<Map> mapList = new ArrayList<>();
 
-            for (String date:dayList) {
+            for (String date : dayList) {
                 Map<String, Object> searchParams = new HashMap<>();
 
                 Map<String, Object> searchParams1 = new HashMap<>();
@@ -282,7 +284,7 @@ public class ReportController {
                 searchParams1.put("endTime", endTime);
 
                 Map map = new HashMap();
-                map.put("date",date);
+                map.put("date", date);
 
                 //登录人数,新增人数
                 Integer loginNum = personLoginLogService.dailyReportList(searchParams);
@@ -384,8 +386,7 @@ public class ReportController {
             }
 
             msgResult.setResult(true);
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
             msgResult.setResult(false);
         }
@@ -394,7 +395,6 @@ public class ReportController {
     }
 
 
-
     private String groupExportXls(List<Map> mapList) {
         String downloadUrl = "";
 
@@ -404,8 +404,8 @@ public class ReportController {
         //表头
         Row rowTitle = sheet.createRow(0);
 
-        String[] titles = new String[]{"序号", "日期", "新增登录人数", "累计登录人数", "今日注册人数","累计注册人数", "新增求职登记人数", "累计求职登记人数", "累计简历数",
-                "新增线上认证企业数量", "累计认证企业数量","新增岗位发布数量","实时发布岗位数","累计发布岗位数","岗位需求人数","累计岗位需求人数","今日报名人数"};
+        String[] titles = new String[]{"序号", "日期", "新增登录人数", "累计登录人数", "今日注册人数", "累计注册人数", "新增求职登记人数", "累计求职登记人数", "累计简历数",
+                "新增线上认证企业数量", "累计认证企业数量", "新增岗位发布数量", "实时发布岗位数", "累计发布岗位数", "岗位需求人数", "累计岗位需求人数", "今日报名人数"};
 
         for (int i = 0; i < titles.length; i++) {
             Cell cell = rowTitle.createCell(i);
@@ -454,10 +454,9 @@ public class ReportController {
     }
 
 
-
-
     /**
      * 根据一段时间获取该段时间的所有日期  正序排序
+     *
      * @param startDate
      * @param endDate
      * @return
@@ -484,6 +483,7 @@ public class ReportController {
 
     /**
      * 根据一段时间获取该段时间的所有日期  倒序排序
+     *
      * @param startDate
      * @param endDate
      * @return yyyy-MM-dd
@@ -509,4 +509,127 @@ public class ReportController {
         return dateList;
     }
 
+
+    @ApiOperation(value = "分组日报表测试")
+    @RequestMapping(value = "dailyGroupReportTest", method = RequestMethod.POST)
+    public void dailyGroupReportTest() {
+        try {
+            Date now = new Date();
+
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(now);
+            cal.add(Calendar.DATE, -1);
+            Date yesterday = cal.getTime();
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String date = sdf.format(yesterday);
+
+            Map<String, Object> searchParams = new HashMap<>();
+
+            Map<String, Object> searchParams1 = new HashMap<>();
+
+            if (StringUtils.isNotEmpty(date)) {
+                String startTime = date + " 00:00:00";
+                String endTime = date + " 23:59:59";
+                searchParams.put("startTime", startTime);
+                searchParams.put("endTime", endTime);
+
+
+                searchParams1.put("endTime", endTime);
+            }
+
+            GenerateReport currGenerateReport = generateReportService.findByDate(searchParams);
+
+            if (currGenerateReport == null) {
+
+                //登录人数,新增人数
+                Integer loginNum = personLoginLogService.dailyReportList(searchParams);
+
+                //登录人数,累计人数
+                List<String> personIdList = personLoginLogService.totalDailyReportList(searchParams1);
+                Integer totalLoginNum = personIdList.size();
+
+                //今日注册人数
+                Integer dailyPersonRegNum = personInfoService.dailyPersonReg(searchParams);
+
+                //累计注册人数
+                Integer totalPersonRegNum = personInfoService.dailyPersonReg(searchParams1);
+
+                //认证人数,新增人数
+                Integer personNum = personInfoService.dailyReportList(searchParams);
+
+                //认证人数,累计人数
+                Integer totalPersonNum = personInfoService.dailyReportList(searchParams1);
+
+                //简历数 累计简历数
+                Integer totalJobInformation = jobInformationInfoService.countList(searchParams1);
+
+                //认证企业数,新增数
+                Integer enterpriseNum = enterpriseInfoService.dailyReportList(searchParams);
+
+                //认证企业数,累计数
+                Integer totalEnterpriseNum = enterpriseInfoService.dailyReportList(searchParams1);
+
+                //累计岗位数量
+                Integer totalRecruitStatusNum = recruitInformationInfoService.dailyReportList(searchParams1);
+
+                //累计岗位需求人数
+                Integer totalJobRequirementNum = recruitInformationInfoService.sumJobRequirementNum(searchParams1);
+
+                //新增岗位数量
+                searchParams.put("status", "1");
+                searchParams.put("isOnline", true);
+                searchParams.put("delFlag", false);
+                Integer recruitNum = recruitInformationInfoService.dailyReportList(searchParams);
+
+                //实时岗位数量
+                searchParams1.put("status", "1");
+                searchParams1.put("isOnline", true);
+                searchParams1.put("delFlag", false);
+
+                //岗位需求人数
+                Integer jobRequirementNum = recruitInformationInfoService.sumJobRequirementNum(searchParams1);
+
+
+                Integer totalRecruitNum = recruitInformationInfoService.dailyReportList(searchParams1);
+
+                //今日报名人数
+                searchParams = new HashMap<>();
+
+                if (StringUtils.isNotEmpty(date)) {
+                    String startTime = date + " 00:00:00";
+                    String endTime = date + " 23:59:59";
+                    searchParams.put("startTime", startTime);
+                    searchParams.put("endTime", endTime);
+                }
+                Integer jobInformationNum = recruitPersonRelationService.dailyReportList(searchParams);
+
+                GenerateReport generateReport = new GenerateReport();
+                generateReport.setId(UUID.randomUUID().toString());
+                generateReport.setCreateTime(new Date());
+                generateReport.setDelFlag(false);
+                generateReport.setDate(sdf.parse(date));
+                generateReport.setLoginNum(loginNum);
+                generateReport.setTotalLoginNum(totalLoginNum);
+                generateReport.setDailyPersonRegNum(dailyPersonRegNum);
+                generateReport.setTotalPersonRegNum(totalPersonRegNum);
+                generateReport.setPersonNum(personNum);
+                generateReport.setTotalPersonNum(totalPersonNum);
+                generateReport.setTotalJobInformation(totalJobInformation);
+                generateReport.setEnterpriseNum(enterpriseNum);
+                generateReport.setTotalEnterpriseNum(totalEnterpriseNum);
+                generateReport.setTotalRecruitStatusNum(totalRecruitStatusNum);
+                generateReport.setTotalJobRequirementNum(totalJobRequirementNum);
+                generateReport.setRecruitNum(recruitNum);
+                generateReport.setJobRequirementNum(jobRequirementNum);
+                generateReport.setTotalRecruitNum(totalRecruitNum);
+                generateReport.setJobInformationNum(jobInformationNum);
+
+                int count = generateReportService.insert(generateReport);
+            }
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
+        }
+    }
+
 }

+ 167 - 0
web/src/main/java/com/jpsoft/employment/scheduled/ReportTask.java

@@ -0,0 +1,167 @@
+package com.jpsoft.employment.scheduled;
+
+import com.jpsoft.employment.modules.base.entity.GenerateReport;
+import com.jpsoft.employment.modules.base.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Component
+@Slf4j
+@Profile(value = {"test","dev","production"})
+public class ReportTask {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private PersonLoginLogService personLoginLogService;
+
+    @Autowired
+    private RecruitPersonRelationService recruitPersonRelationService;
+
+    @Autowired
+    private EnterpriseInfoService enterpriseInfoService;
+
+    @Autowired
+    private PersonInfoService personInfoService;
+
+    @Autowired
+    private RecruitInformationInfoService recruitInformationInfoService;
+
+    @Autowired
+    private JobInformationInfoService jobInformationInfoService;
+
+    @Autowired
+    private GenerateReportService generateReportService;
+
+    @Scheduled(cron = "0 0 01 * * ?")
+    public void run() {
+        try {
+            Date now = new Date();
+
+            Calendar cal=Calendar.getInstance();
+            cal.setTime(now);
+            cal.add(Calendar.DATE,-1);
+            Date yesterday = cal.getTime();
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String date = sdf.format(yesterday);
+
+            Map<String, Object> searchParams = new HashMap<>();
+
+            Map<String, Object> searchParams1 = new HashMap<>();
+
+            if (StringUtils.isNotEmpty(date)) {
+                String startTime = date + " 00:00:00";
+                String endTime = date + " 23:59:59";
+                searchParams.put("startTime", startTime);
+                searchParams.put("endTime", endTime);
+
+
+                searchParams1.put("endTime", endTime);
+            }
+
+            GenerateReport currGenerateReport = generateReportService.findByDate(searchParams);
+
+            if(currGenerateReport==null) {
+
+                //登录人数,新增人数
+                Integer loginNum = personLoginLogService.dailyReportList(searchParams);
+
+                //登录人数,累计人数
+                List<String> personIdList = personLoginLogService.totalDailyReportList(searchParams1);
+                Integer totalLoginNum = personIdList.size();
+
+                //今日注册人数
+                Integer dailyPersonRegNum = personInfoService.dailyPersonReg(searchParams);
+
+                //累计注册人数
+                Integer totalPersonRegNum = personInfoService.dailyPersonReg(searchParams1);
+
+                //认证人数,新增人数
+                Integer personNum = personInfoService.dailyReportList(searchParams);
+
+                //认证人数,累计人数
+                Integer totalPersonNum = personInfoService.dailyReportList(searchParams1);
+
+                //简历数 累计简历数
+                Integer totalJobInformation = jobInformationInfoService.countList(searchParams1);
+
+                //认证企业数,新增数
+                Integer enterpriseNum = enterpriseInfoService.dailyReportList(searchParams);
+
+                //认证企业数,累计数
+                Integer totalEnterpriseNum = enterpriseInfoService.dailyReportList(searchParams1);
+
+                //累计岗位数量
+                Integer totalRecruitStatusNum = recruitInformationInfoService.dailyReportList(searchParams1);
+
+                //累计岗位需求人数
+                Integer totalJobRequirementNum = recruitInformationInfoService.sumJobRequirementNum(searchParams1);
+
+                //新增岗位数量
+                searchParams.put("status", "1");
+                searchParams.put("isOnline", true);
+                searchParams.put("delFlag", false);
+                Integer recruitNum = recruitInformationInfoService.dailyReportList(searchParams);
+
+                //实时岗位数量
+                searchParams1.put("status", "1");
+                searchParams1.put("isOnline", true);
+                searchParams1.put("delFlag", false);
+
+                //岗位需求人数
+                Integer jobRequirementNum = recruitInformationInfoService.sumJobRequirementNum(searchParams1);
+
+
+                Integer totalRecruitNum = recruitInformationInfoService.dailyReportList(searchParams1);
+
+                //今日报名人数
+                searchParams = new HashMap<>();
+
+                if (StringUtils.isNotEmpty(date)) {
+                    String startTime = date + " 00:00:00";
+                    String endTime = date + " 23:59:59";
+                    searchParams.put("startTime", startTime);
+                    searchParams.put("endTime", endTime);
+                }
+                Integer jobInformationNum = recruitPersonRelationService.dailyReportList(searchParams);
+
+
+                GenerateReport generateReport = new GenerateReport();
+                generateReport.setId(UUID.randomUUID().toString());
+                generateReport.setCreateTime(new Date());
+                generateReport.setDelFlag(false);
+                generateReport.setDate(sdf.parse(date));
+                generateReport.setLoginNum(loginNum);
+                generateReport.setTotalLoginNum(totalLoginNum);
+                generateReport.setDailyPersonRegNum(dailyPersonRegNum);
+                generateReport.setTotalPersonRegNum(totalPersonRegNum);
+                generateReport.setPersonNum(personNum);
+                generateReport.setTotalPersonNum(totalPersonNum);
+                generateReport.setTotalJobInformation(totalJobInformation);
+                generateReport.setEnterpriseNum(enterpriseNum);
+                generateReport.setTotalEnterpriseNum(totalEnterpriseNum);
+                generateReport.setTotalRecruitStatusNum(totalRecruitStatusNum);
+                generateReport.setTotalJobRequirementNum(totalJobRequirementNum);
+                generateReport.setRecruitNum(recruitNum);
+                generateReport.setJobRequirementNum(jobRequirementNum);
+                generateReport.setTotalRecruitNum(totalRecruitNum);
+                generateReport.setJobInformationNum(jobInformationNum);
+
+                int count = generateReportService.insert(generateReport);
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+        }
+    }
+}