30教龄教职工管理:搜索新增截止日期,新增'即将满30年 周年满30年 超30年'查询和统计; 教职工汇总的查询范围:由cnd.and("u.isThirtyTeach", "=", 1)标记,改成会员cnd.and("u.member", "=", 1);
This commit is contained in:
+29
-3
@@ -41,6 +41,8 @@ import org.nutz.mvc.upload.UploadAdaptor;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -84,14 +86,15 @@ public class ThirtyTeachController {
|
||||
@ApiOperation("一键设置三十龄教工")
|
||||
@SaCheckPermission("thirtyTeach.manage")
|
||||
@SLog(type = "30龄教工-教职工管理", tag = "设置三十龄教工",msg = "设置三十龄教工设置教龄${args[0]}")
|
||||
public Result setThirtyTeach(Integer setNum, boolean isFlag){
|
||||
public Result setThirtyTeach(Integer setNum, String deadlineDate, boolean isFlag){
|
||||
if (isFlag) {
|
||||
sysUserService.update(Chain.make("isThirtyTeach", 0), Cnd.NEW());
|
||||
}
|
||||
String teachNumDate = getTeachNumDate(deadlineDate);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("arrivalAtSchoolDate", "is not", null);
|
||||
cnd.and("arrivalAtSchoolDate", "!=", "");
|
||||
cnd.and("TIMESTAMPDIFF(YEAR, CONCAT(arrivalAtSchoolDate, '-01'), CURDATE())", ">", setNum);
|
||||
cnd.and("TIMESTAMPDIFF(YEAR, CONCAT(arrivalAtSchoolDate, '-01'), " + teachNumDate + ")", ">=", setNum);
|
||||
sysUserService.update(Chain.make("isThirtyTeach", 1), cnd);
|
||||
return Result.success();
|
||||
}
|
||||
@@ -124,6 +127,7 @@ public class ThirtyTeachController {
|
||||
entityList.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
entityList.add(new ExcelExportEntity("姓名", "username", 20));
|
||||
entityList.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
entityList.add(new ExcelExportEntity("入校时间", "arrivalAtSchoolDate", 20));
|
||||
entityList.add(new ExcelExportEntity("教龄(年)", "teachNum", 20));
|
||||
entityList.add(new ExcelExportEntity("电话", "mobile", 20));
|
||||
entityList.add(new ExcelExportEntity("工会", "unionName", 20));
|
||||
@@ -131,10 +135,12 @@ public class ThirtyTeachController {
|
||||
entityList.add(new ExcelExportEntity("在职状态", "userState", 20));
|
||||
entityList.add(new ExcelExportEntity("教职工类别", "personType", 20));
|
||||
entityList.add(new ExcelExportEntity("荣誉证办理年月", "thirtyCertificateProcessingTime", 20));
|
||||
String exportDeadlineDate = getExportDeadlineDate(pageForm.getDeadlineDate());
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setTitle("30教龄教职工名单(教龄计算截止日期:" + exportDeadlineDate + ")");
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list);
|
||||
CommonDownloadUtil.download("30教龄教职工名单.xlsx", workbook, response);
|
||||
CommonDownloadUtil.download("30教龄教职工名单(截止" + exportDeadlineDate + ").xlsx", workbook, response);
|
||||
}
|
||||
|
||||
@At
|
||||
@@ -232,5 +238,25 @@ public class ThirtyTeachController {
|
||||
}
|
||||
}
|
||||
|
||||
private String getTeachNumDate(String deadlineDate) {
|
||||
if (StrUtil.isNotBlank(deadlineDate)) {
|
||||
try {
|
||||
return "'" + LocalDate.parse(deadlineDate, DateTimeFormatter.ISO_LOCAL_DATE) + "'";
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return "CURDATE()";
|
||||
}
|
||||
|
||||
private String getExportDeadlineDate(String deadlineDate) {
|
||||
if (StrUtil.isNotBlank(deadlineDate)) {
|
||||
try {
|
||||
return LocalDate.parse(deadlineDate, DateTimeFormatter.ISO_LOCAL_DATE).toString();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return LocalDate.now().toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+23
-5
@@ -58,14 +58,18 @@ public class ThirtyTeachSummaryController {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
su.*,
|
||||
COUNT( u.id ) AS userNum
|
||||
COUNT( u.id ) AS userNum,
|
||||
SUM(CASE WHEN TIMESTAMPDIFF(YEAR, CONCAT(u.arrivalAtSchoolDate, '-01'), CURDATE()) = 29 THEN 1 ELSE 0 END) AS willThirtyNum,
|
||||
SUM(CASE WHEN TIMESTAMPDIFF(YEAR, CONCAT(u.arrivalAtSchoolDate, '-01'), CURDATE()) = 30 THEN 1 ELSE 0 END) AS anniversaryThirtyNum,
|
||||
SUM(CASE WHEN TIMESTAMPDIFF(YEAR, CONCAT(u.arrivalAtSchoolDate, '-01'), CURDATE()) > 30 THEN 1 ELSE 0 END) AS overThirtyNum
|
||||
FROM
|
||||
sys_union su
|
||||
LEFT JOIN `vw_user` u ON u.unionid = su.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.isThirtyTeach", "=", 1);
|
||||
//cnd.and("u.isThirtyTeach", "=", 1);
|
||||
cnd.and("u.member", "=", 1);
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
@@ -87,14 +91,19 @@ public class ThirtyTeachSummaryController {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
su.*,
|
||||
COUNT( u.id ) AS userNum
|
||||
COUNT( u.id ) AS userNum,
|
||||
SUM(CASE WHEN TIMESTAMPDIFF(YEAR, CONCAT(u.arrivalAtSchoolDate, '-01'), CURDATE()) = 29 THEN 1 ELSE 0 END) AS willThirtyNum,
|
||||
SUM(CASE WHEN TIMESTAMPDIFF(YEAR, CONCAT(u.arrivalAtSchoolDate, '-01'), CURDATE()) = 30 THEN 1 ELSE 0 END) AS anniversaryThirtyNum,
|
||||
SUM(CASE WHEN TIMESTAMPDIFF(YEAR, CONCAT(u.arrivalAtSchoolDate, '-01'), CURDATE()) > 30 THEN 1 ELSE 0 END) AS overThirtyNum
|
||||
FROM
|
||||
sys_union su
|
||||
LEFT JOIN `vw_user` u ON u.unionid = su.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.isThirtyTeach", "=", 1);
|
||||
// cnd.and("u.isThirtyTeach", "=", 1);
|
||||
//教职工汇总范围: 由标记用户改成全体会员
|
||||
cnd.and("u.member", "=", 1);
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
@@ -110,7 +119,16 @@ public class ThirtyTeachSummaryController {
|
||||
no.setFormat("isAddIndex");
|
||||
entityList.add(no);
|
||||
entityList.add(new ExcelExportEntity("分工会", "name", 20));
|
||||
ExcelExportEntity entity = new ExcelExportEntity("在职人数", "userNum", 20);
|
||||
ExcelExportEntity willThirtyNum = new ExcelExportEntity("即将满30年", "willThirtyNum", 20);
|
||||
willThirtyNum.setType(10);
|
||||
entityList.add(willThirtyNum);
|
||||
ExcelExportEntity anniversaryThirtyNum = new ExcelExportEntity("周年满30年", "anniversaryThirtyNum", 20);
|
||||
anniversaryThirtyNum.setType(10);
|
||||
entityList.add(anniversaryThirtyNum);
|
||||
ExcelExportEntity overThirtyNum = new ExcelExportEntity("超过30年", "overThirtyNum", 20);
|
||||
overThirtyNum.setType(10);
|
||||
entityList.add(overThirtyNum);
|
||||
ExcelExportEntity entity = new ExcelExportEntity("人数", "userNum", 20);
|
||||
entity.setType(10);
|
||||
entityList.add(entity);
|
||||
ExportParams exportParams = new ExportParams();
|
||||
|
||||
+4
@@ -15,6 +15,10 @@ public class ThirtyTeachPageForm extends PageForm {
|
||||
private String unitId;
|
||||
//进校时长
|
||||
private String teachNum;
|
||||
//教龄标签
|
||||
private String teachYearTag;
|
||||
//截止日期
|
||||
private String deadlineDate;
|
||||
//办证年月
|
||||
private String thirtyCertificateProcessingTime;
|
||||
private String userState;
|
||||
|
||||
+32
-3
@@ -15,6 +15,9 @@ import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/7/28 11:53
|
||||
@@ -28,6 +31,8 @@ public class ThirtyTeachServiceImpl extends BaseServiceImpl implements ThirtyTea
|
||||
|
||||
@Override
|
||||
public Sql getSql(ThirtyTeachPageForm pageForm) {
|
||||
String teachNumDate = getTeachNumDate(pageForm.getDeadlineDate());
|
||||
String teachNumSql = "TIMESTAMPDIFF(YEAR, CONCAT(arrivalAtSchoolDate, '-01'), " + teachNumDate + ")";
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
@@ -41,13 +46,14 @@ public class ThirtyTeachServiceImpl extends BaseServiceImpl implements ThirtyTea
|
||||
unitName,
|
||||
mobile,
|
||||
birthday,
|
||||
arrivalAtSchoolDate,
|
||||
thirtyCertificateProcessingTime,
|
||||
false as isEditThirtyCertificateProcessingTime,
|
||||
TIMESTAMPDIFF(YEAR, CONCAT(arrivalAtSchoolDate, '-01'), CURDATE()) AS teachNum
|
||||
%s AS teachNum
|
||||
FROM
|
||||
`vw_user`
|
||||
$condition
|
||||
""");
|
||||
""".formatted(teachNumSql));
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("isThirtyTeach", "=", 1);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
@@ -60,7 +66,20 @@ public class ThirtyTeachServiceImpl extends BaseServiceImpl implements ThirtyTea
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
cnd.andEX("TIMESTAMPDIFF(YEAR, CONCAT(arrivalAtSchoolDate, '-01'), CURDATE())", "=", pageForm.getTeachNum());
|
||||
if ("will30".equals(pageForm.getTeachYearTag())) {
|
||||
cnd.and(teachNumSql, "=", 29);
|
||||
} else if ("anniversary30".equals(pageForm.getTeachYearTag())) {
|
||||
cnd.and(teachNumSql, "=", 30);
|
||||
} else if ("over30".equals(pageForm.getTeachYearTag())) {
|
||||
cnd.and(teachNumSql, ">", 30);
|
||||
} else if ("ge30".equals(pageForm.getTeachYearTag())) {
|
||||
cnd.and(teachNumSql, ">=", 30);
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(pageForm.getDeadlineDate())) {
|
||||
cnd.and(teachNumSql, ">=", 30);
|
||||
}
|
||||
cnd.andEX(teachNumSql, "=", pageForm.getTeachNum());
|
||||
}
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("personType", "=", pageForm.getPersonType());
|
||||
@@ -75,4 +94,14 @@ public class ThirtyTeachServiceImpl extends BaseServiceImpl implements ThirtyTea
|
||||
sql.setCondition(cnd);
|
||||
return sql;
|
||||
}
|
||||
|
||||
private String getTeachNumDate(String deadlineDate) {
|
||||
if (StrUtil.isNotBlank(deadlineDate)) {
|
||||
try {
|
||||
return "'" + LocalDate.parse(deadlineDate, DateTimeFormatter.ISO_LOCAL_DATE) + "'";
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return "CURDATE()";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user