用户采集数据考核

This commit is contained in:
2025-08-04 16:11:54 +08:00
parent 7514482e33
commit 55ac707a8c
17 changed files with 728 additions and 41 deletions

View File

@ -2,12 +2,29 @@ package com.ruoyi.dw.controller;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.dw.domain.CheckQuery;
import com.ruoyi.dw.domain.DataCheckStatus;
import com.ruoyi.dw.domain.vo.XyCheck;
import com.ruoyi.dw.domain.vo.XyCheckBl;
import com.ruoyi.dw.domain.vo.XyDataCheck;
import com.ruoyi.dw.mapper.DataCheckMapper;
import com.ruoyi.dw.mapper.XyCheckMapper; import com.ruoyi.dw.mapper.XyCheckMapper;
import org.springframework.web.bind.annotation.GetMapping; import com.ruoyi.dw.util.SortField;
import org.springframework.web.bind.annotation.RequestMapping; import com.ruoyi.dw.util.SortOrder;
import org.springframework.web.bind.annotation.RestController; import com.ruoyi.dw.util.XyBlSorter;
import com.ruoyi.dw.util.XyCheckSorter;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@RestController @RestController
@RequestMapping("/xy/check") @RequestMapping("/xy/check")
@ -16,14 +33,198 @@ public class XyCheckController extends BaseController {
@Resource @Resource
private XyCheckMapper xyCheckMapper; private XyCheckMapper xyCheckMapper;
@Resource
private DataCheckMapper dataCheckMapper;
/**
* 获取当前考核状态
* @return
*/
@GetMapping("/status")
public AjaxResult getStatus() {
return AjaxResult.success(dataCheckMapper.getStatus());
}
/**
* 修改考核状态
* @return
*/
@PutMapping("/status")
public AjaxResult updateStatus(DataCheckStatus checkStatus) {
Calendar startTime = Calendar.getInstance();
startTime.setTime(checkStatus.getBeginDate());
startTime.set(Calendar.HOUR_OF_DAY, 0);
startTime.set(Calendar.MINUTE, 0);
startTime.set(Calendar.SECOND, 0);
startTime.set(Calendar.MILLISECOND, 0);
Date startDate = startTime.getTime();
Calendar endTime = Calendar.getInstance();
endTime.setTime(checkStatus.getEndDate());
endTime.set(Calendar.HOUR_OF_DAY, 23);
endTime.set(Calendar.MINUTE, 59);
endTime.set(Calendar.SECOND, 59);
endTime.set(Calendar.MILLISECOND, 0);
Date endDate = endTime.getTime();
dataCheckMapper.updateCheck(startDate, endDate);
return AjaxResult.success("设置成功");
}
/** /**
* 根据专业关联表统计各个学院的调查问卷数量 * 根据专业关联表统计各个学院的调查问卷数量
* @return * @return
*/ */
@GetMapping("/dwCount") @GetMapping("/dwCount")
public AjaxResult dwCount() { public AjaxResult dwCount(CheckQuery checkQuery) {
return AjaxResult.success(xyCheckMapper.selectXyCheckDw()); DataCheckStatus checkStatus = dataCheckMapper.getStatus();
Date beginDate = null;
Date endDate = null;
if (StringUtils.isNotEmpty(checkQuery.getBeginDate())) {
beginDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, checkQuery.getBeginDate() + " 00:00:00");
}else {
beginDate = checkStatus.getBeginDate();
}
if (StringUtils.isNotEmpty(checkQuery.getEndDate())) {
endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, checkQuery.getEndDate() + " 23:59:59");
}else {
endDate = checkStatus.getEndDate();
}
return AjaxResult.success(xyCheckMapper.selectXyCheckDw(beginDate, endDate));
}
/**
* 获取采集数据更新
* @param checkQuery
* @return
*/
@GetMapping("/zzt")
public AjaxResult studentCount(CheckQuery checkQuery) {
List<Date> mondayAndSunday = getThisWeekDates();
List<XyDataCheck> mondayAndSundays = xyCheckMapper.selectGxCount(mondayAndSunday.get(0), mondayAndSunday.get(1));
DataCheckStatus checkStatus = dataCheckMapper.getStatus();
Date beginDate = null;
Date endDate = null;
if (StringUtils.isNotEmpty(checkQuery.getBeginDate())) {
beginDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, checkQuery.getBeginDate() + " 00:00:00");
}else {
beginDate = checkStatus.getBeginDate();
}
if (StringUtils.isNotEmpty(checkQuery.getEndDate())) {
endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, checkQuery.getEndDate() + " 23:59:59");
}else {
endDate = checkStatus.getEndDate();
}
List<XyDataCheck> alls = xyCheckMapper.selectAllCount();
List<XyDataCheck> gxs = xyCheckMapper.selectGxCount(beginDate, endDate);
List<XyDataCheck> yxs = xyCheckMapper.selectYxCount(beginDate, endDate);
List<XyCheck> checks = getChecks(alls,gxs,yxs,mondayAndSundays);
if (checkQuery.getSort().intValue() == 1){
checks = XyCheckSorter.sortList(checks, SortField.BZ_COUNT, SortOrder.DESC);
}else if (checkQuery.getSort().intValue() == 2){
checks = XyCheckSorter.sortList(checks, SortField.GX_COUNT, SortOrder.DESC);
}
return AjaxResult.success(checks);
}
/**
* 获取采集数据更新
* @param checkQuery
* @return
*/
@GetMapping("/zxt")
public AjaxResult studentCount2(CheckQuery checkQuery) {
DataCheckStatus checkStatus = dataCheckMapper.getStatus();
Date beginDate = null;
Date endDate = null;
if (StringUtils.isNotEmpty(checkQuery.getBeginDate())) {
beginDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, checkQuery.getBeginDate() + " 00:00:00");
}else {
beginDate = checkStatus.getBeginDate();
}
if (StringUtils.isNotEmpty(checkQuery.getEndDate())) {
endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, checkQuery.getEndDate() + " 23:59:59");
}else {
endDate = checkStatus.getEndDate();
}
List<XyDataCheck> alls = xyCheckMapper.selectAllCount();
List<XyDataCheck> gxs = xyCheckMapper.selectGxCount(beginDate, endDate);
List<XyCheckBl> bls = getChecks2(alls,gxs);
if (checkQuery.getSort().intValue() == 1){
bls = XyBlSorter.sortList(bls);
}
return AjaxResult.success(bls);
}
/**
* 拼装数据
* @param alls
* @param gxs
* @param yxs
* @param mondayAndSundays
* @return
*/
private static List<XyCheck> getChecks(List<XyDataCheck> alls,List<XyDataCheck> gxs,
List<XyDataCheck> yxs,List<XyDataCheck> mondayAndSundays){
List<XyCheck> checks = new ArrayList<>();
for(int i=0;i<alls.size();i++){
XyCheck check = new XyCheck();
check.setXy(alls.get(i).getXy());
check.setAllCount(alls.get(i).getDataCount());
check.setGxCount(gxs.get(i).getDataCount());
check.setYxCount(yxs.get(i).getDataCount());
check.setWxCount(check.getGxCount() - check.getYxCount());
check.setBzCount(mondayAndSundays.get(i).getDataCount());
checks.add(check);
}
return checks;
}
/**
* 拼装数据
* @param alls
* @param gxs
* @return
*/
private static List<XyCheckBl> getChecks2(List<XyDataCheck> alls, List<XyDataCheck> gxs){
List<XyCheckBl> bls = new ArrayList<>();
for(int i=0;i<alls.size();i++){
XyCheckBl bl = new XyCheckBl();
bl.setXy(alls.get(i).getXy());
double result = (double) gxs.get(i).getDataCount().intValue() / alls.get(i).getDataCount().intValue();
bl.setBl(String.format("%.2f", result));
bls.add(bl);
}
return bls;
}
/**
* 获取今天所在周的周一到周日的日期列表(按中国习惯:周一为第一天)
* @return 包含7个日期的列表索引0=周一6=周日
*/
public static List<Date> getThisWeekDates() {
Calendar cal = Calendar.getInstance();
// 设置周一为一周的第一天(中国习惯)
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 设置时间为本周一
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
List<Date> dates = new ArrayList<>();
Date monday = cal.getTime();
dates.add(monday);
cal.add(Calendar.DAY_OF_MONTH, 6);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 0);
Date sunday = cal.getTime();
dates.add(sunday);
return dates;
} }
} }

View File

@ -0,0 +1,34 @@
package com.ruoyi.dw.domain;
public class CheckQuery {
private Integer sort;
private String beginDate;
private String endDate;
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}

View File

@ -0,0 +1,53 @@
package com.ruoyi.dw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
* 数据验证周期
*/
public class DataCheckStatus {
private Integer id;
private Integer checkStatus;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginDate;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCheckStatus() {
return checkStatus;
}
public void setCheckStatus(Integer checkStatus) {
this.checkStatus = checkStatus;
}
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
}

View File

@ -0,0 +1,82 @@
package com.ruoyi.dw.domain.vo;
public class XyCheck {
/**
* 学院名称
*/
private String xy;
/**
* 总数量
*/
private Integer allCount;
/**
* 更新数量
*/
private Integer gxCount;
/**
* 有效数量
*/
private Integer yxCount;
/**
* 无效数量
*/
private Integer wxCount;
/**
* 本周更新数量
*/
private Integer bzCount;
public String getXy() {
return xy;
}
public void setXy(String xy) {
this.xy = xy;
}
public Integer getAllCount() {
return allCount;
}
public Integer getGxCount() {
return gxCount;
}
public void setGxCount(Integer gxCount) {
this.gxCount = gxCount;
}
public void setAllCount(Integer allCount) {
this.allCount = allCount;
}
public Integer getYxCount() {
return yxCount;
}
public void setYxCount(Integer yxCount) {
this.yxCount = yxCount;
}
public Integer getWxCount() {
return wxCount;
}
public void setWxCount(Integer wxCount) {
this.wxCount = wxCount;
}
public Integer getBzCount() {
return bzCount;
}
public void setBzCount(Integer bzCount) {
this.bzCount = bzCount;
}
}

View File

@ -0,0 +1,24 @@
package com.ruoyi.dw.domain.vo;
public class XyCheckBl {
private String xy;
private String bl;
public String getXy() {
return xy;
}
public void setXy(String xy) {
this.xy = xy;
}
public String getBl() {
return bl;
}
public void setBl(String bl) {
this.bl = bl;
}
}

View File

@ -0,0 +1,24 @@
package com.ruoyi.dw.domain.vo;
public class XyDataCheck {
private String xy;
private Integer dataCount;
public String getXy() {
return xy;
}
public void setXy(String xy) {
this.xy = xy;
}
public Integer getDataCount() {
return dataCount;
}
public void setDataCount(Integer dataCount) {
this.dataCount = dataCount;
}
}

View File

@ -0,0 +1,17 @@
package com.ruoyi.dw.mapper;
import com.ruoyi.dw.domain.DataCheckStatus;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
public interface DataCheckMapper {
public DataCheckStatus getStatus();
public int startCheck(@Param("checkDate") Date checkDate);
public int endCheck(@Param("checkDate") Date checkDate);
public int updateCheck(@Param("startCheckDate") Date startCheckDate, @Param("endCheckDate") Date endCheckDate);
}

View File

@ -1,10 +1,20 @@
package com.ruoyi.dw.mapper; package com.ruoyi.dw.mapper;
import com.ruoyi.dw.domain.vo.XyCheckDw; import com.ruoyi.dw.domain.vo.XyCheckDw;
import com.ruoyi.dw.domain.vo.XyDataCheck;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List; import java.util.List;
public interface XyCheckMapper { public interface XyCheckMapper {
public List<XyCheckDw> selectXyCheckDw(); public List<XyCheckDw> selectXyCheckDw(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
public List<XyDataCheck> selectAllCount();
public List<XyDataCheck> selectGxCount(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
public List<XyDataCheck> selectYxCount(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
} }

View File

@ -216,7 +216,12 @@ public class CjStudentServiceImpl implements ICjStudentService
int rows = sheet.getLastRowNum(); int rows = sheet.getLastRowNum();
for (int i = 2; i <= rows; i++) { for (int i = 2; i <= rows; i++) {
Row row = sheet.getRow(i); Row row = sheet.getRow(i);
String xh = row.getCell(3).getStringCellValue().trim(); if (row == null) {
break;
}
Cell xhCell = row.getCell(3);
xhCell.setCellType(CellType.STRING);
String xh = xhCell.getStringCellValue().trim();
boolean isInsert = false; boolean isInsert = false;
CjStudent cjStudent = cjStudentMapper.selectCjStudentByXh(xh); CjStudent cjStudent = cjStudentMapper.selectCjStudentByXh(xh);
if (cjStudent == null){ if (cjStudent == null){
@ -241,7 +246,12 @@ public class CjStudentServiceImpl implements ICjStudentService
cjStudent.setBj(bjCell.getStringCellValue().trim()); cjStudent.setBj(bjCell.getStringCellValue().trim());
Cell bybfCell = row.getCell(7); Cell bybfCell = row.getCell(7);
bybfCell.setCellType(CellType.STRING); bybfCell.setCellType(CellType.STRING);
cjStudent.setBynf(Integer.valueOf(bybfCell.getStringCellValue())); try {
Integer bynf = Integer.valueOf(bybfCell.getStringCellValue());
cjStudent.setBynf(bynf);
}catch (Exception e){
cjStudent.setBynf(null);
}
Cell zgxlCell = row.getCell(8); Cell zgxlCell = row.getCell(8);
zgxlCell.setCellType(CellType.STRING); zgxlCell.setCellType(CellType.STRING);
cjStudent.setZgyl(zgxlCell.getStringCellValue().trim()); cjStudent.setZgyl(zgxlCell.getStringCellValue().trim());
@ -292,43 +302,89 @@ public class CjStudentServiceImpl implements ICjStudentService
cjStudentMapper.updateCjStudent(cjStudent); cjStudentMapper.updateCjStudent(cjStudent);
} }
return rows-2; return rows-2;
}catch (IOException e) { }catch (Exception e) {
return -1; return -1;
} }
} }
private static final Set<String> MUNICIPALITIES = new HashSet<>(Arrays.asList("北京", "上海", "天津", "重庆"));
/** /**
* 根据常驻地获取省 * 提取省名和市名,支持普通省、自治区、直辖
* @param address *
* @return * @param address 地址字符串
* @return Map 包含 province 和 city未找到返回 null
*/ */
private static Map<String, String> extractProvinceAndCity(String address) { public static Map<String, String> extractProvinceAndCity(String address) {
if (address == null || address.length() < 2) { if (address == null || address.trim().length() < 2) {
return null; return null;
} }
int provinceIndex = address.indexOf(""); address = address.trim();
int cityIndex = -1;
// 必须有"省",且"省"不能是最后一个字符
if (provinceIndex == -1 || provinceIndex == address.length() - 1) {
return null;
}
// 在"省"之后找"市"
cityIndex = address.indexOf("", provinceIndex + 1);
if (cityIndex == -1) {
return null;
}
String province = address.substring(0, provinceIndex ); // 不包含"省"
String city = address.substring(provinceIndex + 1, cityIndex); // 从省后到"市"结束
Map<String, String> result = new HashMap<>(); Map<String, String> result = new HashMap<>();
// 1. 查找“省”
int provinceEnd = address.indexOf("");
if (provinceEnd != -1) {
String province = address.substring(0, provinceEnd); // 不包含“省”
result.put("province", province); result.put("province", province);
// 查找“市”在“省”之后
int cityStart = provinceEnd + 1;
int cityEnd = address.indexOf("", cityStart);
if (cityEnd != -1 && cityEnd > cityStart) {
String city = address.substring(cityStart, cityEnd);
result.put("city", city);
} else {
result.put("city", null);
}
return result;
}
// 2. 查找“自治区”
int autonomousEnd = address.indexOf("自治区");
if (autonomousEnd != -1) {
String province = address.substring(0, autonomousEnd); // 不包含“自治区”是3个字
result.put("province", province);
int cityStart = autonomousEnd + 3;
int cityEnd = address.indexOf("", cityStart);
if (cityEnd != -1 && cityEnd > cityStart) {
String city = address.substring(cityStart, cityEnd);
result.put("city", city);
} else {
result.put("city", null);
}
return result;
}
// 3. 处理直辖市:如“北京市...”
for (String city : MUNICIPALITIES) {
if (address.startsWith(city)) {
result.put("province", city);
// 直辖市的“市”就是省,也可以把“市”设为市名,或提取区名
// 这里我们设市名为“北京市”
result.put("city", city); result.put("city", city);
return result; return result;
} }
}
// 4. 兜底:尝试找“市”作为省名(如“上海市浦东新区”)
int firstCityIndex = address.indexOf("");
if (firstCityIndex != -1 && firstCityIndex <= 3) { // 一般前3个字内出现“市”可能是直辖市
String possibleCity = address.substring(0, firstCityIndex);
for (String m : MUNICIPALITIES) {
if (possibleCity.equals(m)) {
result.put("province", possibleCity);
result.put("city", possibleCity);
return result;
}
}
}
// 无法识别
return null;
}
@Override @Override
public int importCjStudent(MultipartFile file) { public int importCjStudent(MultipartFile file) {

View File

@ -0,0 +1,9 @@
package com.ruoyi.dw.util;
public enum SortField {
ALL_COUNT,
GX_COUNT,
YX_COUNT,
WX_COUNT,
BZ_COUNT
}

View File

@ -0,0 +1,6 @@
package com.ruoyi.dw.util;
public enum SortOrder {
ASC,
DESC
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.dw.util;
import com.ruoyi.dw.domain.vo.XyCheck;
import com.ruoyi.dw.domain.vo.XyCheckBl;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class XyBlSorter {
/**
* 根据指定字段和排序方式对 XyCheck 列表进行排序
*
* @param list 原始列表
* @return 排序后的列表(新列表,不影响原始数据)
*/
public static List<XyCheckBl> sortList(List<XyCheckBl> list) {
if (list == null || list.isEmpty()) {
return new ArrayList<>();
}
Comparator<XyCheckBl> comparator = Comparator.comparing(XyCheckBl::getBl);;
comparator = comparator.reversed();
List<XyCheckBl> sortedList = new ArrayList<>(list);
sortedList.sort(comparator);
return sortedList;
}
}

View File

@ -0,0 +1,54 @@
package com.ruoyi.dw.util;
import com.ruoyi.dw.domain.vo.XyCheck;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class XyCheckSorter{
/**
* 根据指定字段和排序方式对 XyCheck 列表进行排序
*
* @param list 原始列表
* @param sortField 排序字段ALL_COUNT、GX_COUNT、YX_COUNT、WX_COUNT
* @param sortOrder 排序方式ASC 升序 / DESC 降序)
* @return 排序后的列表(新列表,不影响原始数据)
*/
public static List<XyCheck> sortList(List<XyCheck> list, SortField sortField, SortOrder sortOrder) {
if (list == null || list.isEmpty()) {
return new ArrayList<>();
}
Comparator<XyCheck> comparator = null;
switch (sortField) {
case ALL_COUNT:
comparator = Comparator.comparing(XyCheck::getAllCount);
break;
case GX_COUNT:
comparator = Comparator.comparing(XyCheck::getGxCount);
break;
case YX_COUNT:
comparator = Comparator.comparing(XyCheck::getYxCount);
break;
case WX_COUNT:
comparator = Comparator.comparing(XyCheck::getWxCount);
break;
case BZ_COUNT:
comparator = Comparator.comparing(XyCheck::getBzCount);
break;
default:
throw new IllegalArgumentException("无效的排序字段: " + sortField);
}
if (sortOrder == SortOrder.DESC) {
comparator = comparator.reversed();
}
List<XyCheck> sortedList = new ArrayList<>(list);
sortedList.sort(comparator);
return sortedList;
}
}

View File

@ -90,7 +90,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ELSE xm -- 可选:处理 rysfzs 不是 0 或 1 的情况 ELSE xm -- 可选:处理 rysfzs 不是 0 或 1 的情况
END AS xm,xh, xb,bj, zy,xy,sydsh, sydshi, bynf, zgyl, gzdw, dwxz, dwdz, zwjb, shjz, dbry, rysfzs,sj, yx, qt, sfqr from cj_student END AS xm,xh, xb,bj, zy,xy,sydsh, sydshi, bynf, zgyl, gzdw, dwxz, dwdz, zwjb, shjz, dbry, rysfzs,sj, yx, qt, sfqr from cj_student
<where> <where>
dbry is not null and dbry != '' and dbry != '无' dbry is not null and dbry != '' and dbry != '无' and dbry != '暂无'
</where> </where>
</select> </select>

View File

@ -0,0 +1,30 @@
<?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">
<mapper namespace="com.ruoyi.dw.mapper.DataCheckMapper">
<resultMap type="DataCheckStatus" id="dataCheckStatus">
<result property="id" column="id" />
<result property="checkStatus" column="check_status" />
<result property="beginDate" column="begin_date" />
<result property="endDate" column="end_date" />
</resultMap>
<select id="getStatus" resultMap="dataCheckStatus">
select id,check_status,begin_date,end_date from data_check_status where id = 1
</select>
<update id="startCheck" parameterType="date">
update data_check_status set check_status = 1,begin_date = #{checkDate},end_date = null
</update>
<update id="endCheck" parameterType="date">
update data_check_status set check_status = 2,end_date = #{checkDate}
</update>
<update id="updateCheck" parameterType="date">
update data_check_status set begin_date = #{startCheckDate},end_date = #{endCheckDate}
</update>
</mapper>

View File

@ -104,32 +104,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectBynf" resultMap="bynfVo" parameterType="int"> <select id="selectBynf" resultMap="bynfVo" parameterType="int">
select bynf,count(0) as bynf_count select bynf,count(0) as bynf_count
from cj_student from cj_student
where sfqr = 1 where sfqr = 1 and bynf is not null
and cast(bynf as unsigned) and cast(bynf as unsigned)
between YEAR(CURRENT_DATE) - #{year} and YEAR(CURRENT_DATE) between YEAR(CURRENT_DATE) - #{year} and YEAR(CURRENT_DATE)
group by bynf order by bynf desc group by bynf order by bynf desc
</select> </select>
<select id="selectSyd" resultMap="sydVo" parameterType="int"> <select id="selectSyd" resultMap="sydVo" parameterType="int">
SELECT select sc.city_name as city,ifnull(rc.student_count, 0) as student_count from sd_citys sc left join (SELECT
CASE CASE
WHEN sydsh = '山东' THEN sydshi WHEN sydsh = '山东' THEN sydshi
ELSE '省外' ELSE '省外'
END AS city, END AS city,
COUNT(*) AS student_count COUNT(*) AS student_count
FROM cj_student FROM cj_student
where sfqr = 1 and sydsh is not null where sfqr = 1 and sydsh is not null and bynf is not null
and cast(bynf as unsigned) and cast(bynf as unsigned)
between YEAR(CURRENT_DATE) - #{year} and YEAR(CURRENT_DATE) between YEAR(CURRENT_DATE) - #{year} and YEAR(CURRENT_DATE)
GROUP BY GROUP BY
CASE CASE
WHEN sydsh = '山东' THEN sydshi WHEN sydsh = '山东' THEN sydshi
ELSE '省外' ELSE '省外'
END END) as rc on sc.city_name = rc.city order by sc.id asc
</select> </select>
<select id="selectDwxz" resultMap="dwxzVo"> <select id="selectDwxz" resultMap="dwxzVo">
select dwxz,count(0) as dwxz_count from cj_student where sfqr = 1 and dwxz is not null group by dwxz SELECT
dz.dwxz,
ifnull( dw.dwxz_count, 0 ) AS dwxz_count
FROM
dwxz dz
LEFT JOIN ( SELECT dwxz, count( 0 ) AS dwxz_count FROM cj_student WHERE sfqr = 1 AND dwxz IS NOT NULL GROUP BY dwxz ) AS dw ON dz.dwxz = dw.dwxz
ORDER BY
dz.id ASC
</select> </select>
</mapper> </mapper>

View File

@ -9,6 +9,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="dwCount" column="dw_count" /> <result property="dwCount" column="dw_count" />
</resultMap> </resultMap>
<resultMap type="XyDataCheck" id="xyDataCheck">
<result property="xy" column="xy" />
<result property="dataCount" column="data_count" />
</resultMap>
<select id="selectXyCheckDw" resultMap="xyCheckDw"> <select id="selectXyCheckDw" resultMap="xyCheckDw">
SELECT SELECT
re.xy,re.order_index, re.xy,re.order_index,
@ -20,10 +26,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
IFNULL( dw.dw_count, 0 ) AS dw_count IFNULL( dw.dw_count, 0 ) AS dw_count
FROM FROM
xy_zy xz xy_zy xz
LEFT JOIN ( SELECT answer, count( 0 ) AS dw_count FROM dw_answer WHERE question_id IN ( 3, 43, 71 ) GROUP BY answer ) AS dw ON dw.answer = xz.zy LEFT JOIN ( SELECT answer, count( 0 ) AS dw_count FROM dw_answer
WHERE question_id IN ( 3, 43, 71 )
<if test="startDate != null"> and create_time &gt;= #{startDate}</if>
<if test="endDate != null"> and create_time &lt;= #{endDate} </if>
GROUP BY answer ) AS dw ON dw.answer = xz.zy
) AS re ) AS re
GROUP BY re.xy,re.order_index GROUP BY re.xy,re.order_index
order by re.order_index order by re.order_index
</select> </select>
<select id="selectAllCount" resultMap="xyDataCheck">
SELECT
x.xy,
IFNULL( re.data_count, 0 ) AS data_count
FROM
xy x
LEFT JOIN ( SELECT xy, count( 0 ) AS data_count FROM cj_student WHERE sfqr = 1 GROUP BY xy ) AS re ON x.xy = re.xy
ORDER BY
x.id ASC
</select>
<select id="selectGxCount" resultMap="xyDataCheck">
SELECT
x.xy,
IFNULL( re.data_count, 0 ) AS data_count
FROM
xy x
LEFT JOIN ( SELECT xy, count( 0 ) AS data_count FROM cj_student
WHERE sfqr = 1
<if test="startDate != null"> and update_time &gt; #{startDate}</if>
<if test="endDate != null"> and update_time &lt; #{endDate} </if> GROUP BY xy ) AS re ON x.xy = re.xy
ORDER BY x.id ASC
</select>
<select id="selectYxCount" resultMap="xyDataCheck">
SELECT
x.xy,
IFNULL( re.data_count, 0 ) AS data_count
FROM
xy x
LEFT JOIN ( SELECT xy, count( 0 ) AS data_count FROM cj_student
WHERE sfqr = 1
<if test="startDate != null"> and update_time &gt; #{startDate}</if>
<if test="endDate != null"> and update_time &lt; #{endDate} </if>
and sydshi is not null and dwxz in (SELECT dwxz from dwxz) and xy in (SELECT xy from xy) and bynf is not null
GROUP BY xy ) AS re ON x.xy = re.xy
ORDER BY x.id ASC
</select>
</mapper> </mapper>