diff --git a/ruoyi-dw/src/main/java/com/ruoyi/dw/controller/XyCheckController.java b/ruoyi-dw/src/main/java/com/ruoyi/dw/controller/XyCheckController.java index 8bff339..838aad7 100644 --- a/ruoyi-dw/src/main/java/com/ruoyi/dw/controller/XyCheckController.java +++ b/ruoyi-dw/src/main/java/com/ruoyi/dw/controller/XyCheckController.java @@ -1,13 +1,17 @@ package com.ruoyi.dw.controller; +import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; 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.XyCheckExport; import com.ruoyi.dw.domain.vo.XyDataCheck; import com.ruoyi.dw.mapper.DataCheckMapper; import com.ruoyi.dw.mapper.XyCheckMapper; @@ -15,10 +19,13 @@ import com.ruoyi.dw.util.SortField; import com.ruoyi.dw.util.SortOrder; import com.ruoyi.dw.util.XyBlSorter; import com.ruoyi.dw.util.XyCheckSorter; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.time.DayOfWeek; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -65,7 +72,7 @@ public class XyCheckController extends BaseController { endTime.set(Calendar.SECOND, 59); endTime.set(Calendar.MILLISECOND, 0); Date endDate = endTime.getTime(); - dataCheckMapper.updateCheck(startDate, endDate); + dataCheckMapper.updateCheck(startDate, endDate,checkStatus.getWeekCheck(),checkStatus.getWeekTimeCheck()); return AjaxResult.success("设置成功"); } @@ -100,9 +107,11 @@ public class XyCheckController extends BaseController { */ @GetMapping("/zzt") public AjaxResult studentCount(CheckQuery checkQuery) { - List mondayAndSunday = getThisWeekDates(); - List mondayAndSundays = xyCheckMapper.selectGxCount(mondayAndSunday.get(0), mondayAndSunday.get(1)); DataCheckStatus checkStatus = dataCheckMapper.getStatus(); + List dates = getPreviousTuesdayIntervals(checkStatus.getWeekCheck()); + Date date1 = DateUtils.parseDate(dates.get(2) + " " +checkStatus.getWeekTimeCheck()); + Date date2 = DateUtils.parseDate(dates.get(0) + " " +checkStatus.getWeekTimeCheck()); + List mondayAndSundays = xyCheckMapper.selectGxCount(date1, date2); Date beginDate = null; Date endDate = null; if (StringUtils.isNotEmpty(checkQuery.getBeginDate())) { @@ -127,6 +136,34 @@ public class XyCheckController extends BaseController { return AjaxResult.success(checks); } + /** + * 导出采集数量考核接口 + * @param response + */ + @PostMapping("/export/cj") + public void exportCj(HttpServletResponse response) throws IOException { + DataCheckStatus checkStatus = dataCheckMapper.getStatus(); + List dates = getPreviousTuesdayIntervals(checkStatus.getWeekCheck()); + Date date1 = DateUtils.parseDate(dates.get(2) + " " +checkStatus.getWeekTimeCheck()); + Date date2 = DateUtils.parseDate(dates.get(0) + " " +checkStatus.getWeekTimeCheck()); + List mondayAndSundays = xyCheckMapper.selectGxCount(date1, date2); + List alls = xyCheckMapper.selectAllCount(); + List gxs = xyCheckMapper.selectGxCount(checkStatus.getBeginDate(), checkStatus.getEndDate()); + List yxs = xyCheckMapper.selectYxCount(checkStatus.getBeginDate(), checkStatus.getEndDate()); + List checks = getChecksExport(alls,gxs,yxs,mondayAndSundays); + String zipFileName = "进度统计-信息采集-" + DateUtils.dateTimeNow() + ".xlsx"; + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheetzip"); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + zipFileName); + ExcelUtil excelUtil = new ExcelUtil<>(XyCheckExport.class); + excelUtil.init(checks, "数据", StringUtils.EMPTY, Excel.Type.EXPORT); + excelUtil.writeSheet(); + Workbook workbook = excelUtil.getWb(); + workbook.write(response.getOutputStream()); + } + + + /** * 获取采集数据更新 * @param checkQuery @@ -181,6 +218,25 @@ public class XyCheckController extends BaseController { return checks; } + private static List getChecksExport(List alls,List gxs, + List yxs,List mondayAndSundays){ + List checks = new ArrayList<>(); + for(int i=0;i getPreviousTuesdayIntervals(int weekCheck) { + LocalDate today = LocalDate.now(); + List result = new ArrayList<>(); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + // 当前周的周二(本周二) + LocalDate thisTuesday = calculateTuesday(today,weekCheck); + // 当前周的结束周二(下一周的周二) + LocalDate nextTuesday = thisTuesday.plusWeeks(1); + + // 上一周的周二(即当前周的起始周二 - 7 天) + LocalDate lastTuesday = thisTuesday.minusWeeks(1); + + // 添加当前区间 + result.add(thisTuesday.format(formatter)); + result.add(nextTuesday.format(formatter)); + result.add(lastTuesday.format(formatter)); + + return result; + } + + /** + * 计算某日期所在周的周二 + * + * @param date 当前日期 + * @return 本周二的日期 + */ + private static LocalDate calculateTuesday(LocalDate date,int weekCheck) { + int dayOfWeek = date.getDayOfWeek().getValue(); // 1=Monday, 2=Tuesday, ..., 7=Sunday + int daysUntilTuesday = (weekCheck - dayOfWeek + 7) % 7; + return date.plusDays(daysUntilTuesday); + } + } diff --git a/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/DataCheckStatus.java b/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/DataCheckStatus.java index e555041..d676af6 100644 --- a/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/DataCheckStatus.java +++ b/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/DataCheckStatus.java @@ -19,6 +19,10 @@ public class DataCheckStatus { @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; + private int weekCheck; + + private String weekTimeCheck; + public Integer getId() { return id; } @@ -50,4 +54,20 @@ public class DataCheckStatus { public void setEndDate(Date endDate) { this.endDate = endDate; } + + public int getWeekCheck() { + return weekCheck; + } + + public void setWeekCheck(int weekCheck) { + this.weekCheck = weekCheck; + } + + public String getWeekTimeCheck() { + return weekTimeCheck; + } + + public void setWeekTimeCheck(String weekTimeCheck) { + this.weekTimeCheck = weekTimeCheck; + } } diff --git a/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/vo/XyCheckExport.java b/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/vo/XyCheckExport.java new file mode 100644 index 0000000..89ed4b1 --- /dev/null +++ b/ruoyi-dw/src/main/java/com/ruoyi/dw/domain/vo/XyCheckExport.java @@ -0,0 +1,117 @@ +package com.ruoyi.dw.domain.vo; + +import com.ruoyi.common.annotation.Excel; + +public class XyCheckExport { + /** + * 学院名称 + */ + @Excel(name = "学院名称") + private String xy; + + /** + * 简称 + */ + @Excel(name = "简称") + private String jc; + + /** + * 总数量 + */ + @Excel(name = "总数量") + private Integer allCount; + + /** + * 更新数量 + */ + @Excel(name = "更新数量") + private Integer gxCount; + + /** + * 有效数量 + */ + @Excel(name = "有效数量") + private Integer yxCount; + + /** + * 无效数量 + */ + @Excel(name = "无效数量") + private Integer wxCount; + + /** + * 本周更新数量 + */ + @Excel(name = "本周更新数量") + private Integer bzCount; + + /** + * 完成比例 + */ + @Excel(name = "完成比例") + private String bl; + + public String getXy() { + return xy; + } + + public void setXy(String xy) { + this.xy = xy; + } + + public String getJc() { + return jc; + } + + public void setJc(String jc) { + this.jc = jc; + } + + public Integer getAllCount() { + return allCount; + } + + public void setAllCount(Integer allCount) { + this.allCount = allCount; + } + + public Integer getGxCount() { + return gxCount; + } + + public void setGxCount(Integer gxCount) { + this.gxCount = gxCount; + } + + 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; + } + + public String getBl() { + return bl; + } + + public void setBl(String bl) { + this.bl = bl; + } +} diff --git a/ruoyi-dw/src/main/java/com/ruoyi/dw/mapper/DataCheckMapper.java b/ruoyi-dw/src/main/java/com/ruoyi/dw/mapper/DataCheckMapper.java index 761f99d..eb32e28 100644 --- a/ruoyi-dw/src/main/java/com/ruoyi/dw/mapper/DataCheckMapper.java +++ b/ruoyi-dw/src/main/java/com/ruoyi/dw/mapper/DataCheckMapper.java @@ -13,5 +13,8 @@ public interface DataCheckMapper { public int endCheck(@Param("checkDate") Date checkDate); - public int updateCheck(@Param("startCheckDate") Date startCheckDate, @Param("endCheckDate") Date endCheckDate); + public int updateCheck(@Param("startCheckDate") Date startCheckDate, + @Param("endCheckDate") Date endCheckDate, + @Param("weekCheck") Integer weekCheck, + @Param("weekTimeCheck") String weekTimeCheck); } diff --git a/ruoyi-dw/src/main/java/com/ruoyi/dw/service/impl/CjStudentServiceImpl.java b/ruoyi-dw/src/main/java/com/ruoyi/dw/service/impl/CjStudentServiceImpl.java index c2f6e71..4413c4c 100644 --- a/ruoyi-dw/src/main/java/com/ruoyi/dw/service/impl/CjStudentServiceImpl.java +++ b/ruoyi-dw/src/main/java/com/ruoyi/dw/service/impl/CjStudentServiceImpl.java @@ -222,16 +222,20 @@ public class CjStudentServiceImpl implements ICjStudentService break; } Cell xhCell = row.getCell(3); - xhCell.setCellType(CellType.STRING); - String xh = xhCell.getStringCellValue().trim(); - if (!StringUtils.isNumeric(xh)){ - continue; - } + CjStudent cjStudent = null; boolean isInsert = false; - CjStudent cjStudent = cjStudentMapper.selectCjStudentByXh(xh); - if (cjStudent == null){ + if (xhCell == null) { cjStudent = new CjStudent(); isInsert = true; + }else { + xhCell.setCellType(CellType.STRING); + String xh = xhCell.getStringCellValue().trim(); + cjStudent = cjStudentMapper.selectCjStudentByXh(xh); + if (cjStudent == null){ + cjStudent = new CjStudent(); + isInsert = true; + } + cjStudent.setXh(xh); } Cell xmCell = row.getCell(1); if (xmCell != null) { @@ -243,7 +247,6 @@ public class CjStudentServiceImpl implements ICjStudentService xbCell.setCellType(CellType.STRING); cjStudent.setXb(xbCell.getStringCellValue().trim()); } - cjStudent.setXh(xh); Cell xyCell = row.getCell(4); if (xyCell != null) { xyCell.setCellType(CellType.STRING); diff --git a/ruoyi-dw/src/main/resources/mapper/dw/DataCheckMapper.xml b/ruoyi-dw/src/main/resources/mapper/dw/DataCheckMapper.xml index 2260df9..4d98eca 100644 --- a/ruoyi-dw/src/main/resources/mapper/dw/DataCheckMapper.xml +++ b/ruoyi-dw/src/main/resources/mapper/dw/DataCheckMapper.xml @@ -9,10 +9,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -24,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update data_check_status set begin_date = #{startCheckDate},end_date = #{endCheckDate} + update data_check_status set begin_date = #{startCheckDate},end_date = #{endCheckDate},week_check = #{weekCheck},week_time_check = #{weekTimeCheck} \ No newline at end of file