Merge remote-tracking branch 'origin/main'

This commit is contained in:
@jyuhsin
2025-09-25 21:34:42 +08:00
59 changed files with 2492 additions and 412 deletions
@@ -14,6 +14,7 @@ import com.budwk.app.flow.entity.ProcessInstance;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
@@ -136,6 +137,11 @@ public class ActivityCultureApplyActivityController {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
return Result.success();
}else{
if (tissue.getIsUnseal()) {
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
activityCultureService.insertOrUpdate(sysHomeActivity);
}
}
return Result.success();
}
@@ -11,6 +11,8 @@ import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson;
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureApplyUserService;
import io.swagger.annotations.ApiOperation;
@@ -83,6 +85,13 @@ public class ActivityCultureApplyUserController {
@SaCheckLogin
@ApiOperation(value = "报名")
public Result signUp(@Valid String activityId, @Param("teamUserIds") String[] teamUserIds, @Param("ext") String formData, boolean isAgain) {
ActivityTissue tissue = dao.fetch(ActivityTissue.class, activityId);
int count = dao.count(ActivityUserScope.class,
Cnd.where(ActivityUserScope::getUserId, "=", SecurityUtil.getUserId())
.and(ActivityUserScope::getGroupId, "=", tissue.getGroupId()));
if (count == 0){
return Result.error("您没有权限报名!");
}
JSONObject dynamicFormParam = null;
if (StrUtil.isNotBlank(formData)) {
dynamicFormParam = Json.fromJson(JSONObject.class, formData);
@@ -2,24 +2,29 @@ package com.budwk.app.zhgh.activity.culture.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.model.Audit;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService;
import org.nutz.dao.Chain;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
@@ -50,6 +55,9 @@ public class ActivityCultureAuditActivityController {
@Inject
private ActivityCultureService activityCultureService;
@Inject
private FlowCommonService flowCommonService;
@At
@SaCheckPermission(value = {"activity.culture.auditActivity.union", "activity.culture.auditActivity.club"}, mode = SaMode.OR)
@@ -124,14 +132,16 @@ public class ActivityCultureAuditActivityController {
@At
@SLog(tag = "文化活动", msg = "校工会审核了一条记录")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission(value = {"activity.culture.auditActivity.union", "activity.culture.auditActivity.club"}, mode = SaMode.OR)
public Result doReview(String id, boolean flag, Audit audit) {
audit.setLoginname(SecurityUtil.getUserLoginname());
activityCultureService.insert(audit);
activityCultureService.dao().update(ActivityTissue.class,
Chain.make("state", flag ? 3 : 2)
.add("auditId", audit.getId()),
Cnd.where("id", "=", id));
public Result doReview(@Param("data") String param, String id) {
Dict args = Json.fromJson(Dict.class, param);
ActivityTissue tissue = activityCultureService.dao().fetch(ActivityTissue.class, id);
if (tissue.getIsUnseal() && args.getInt("submitType") == 1) {
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
activityCultureService.insertOrUpdate(sysHomeActivity);
}
flowCommonService.executeTask(args);
return Result.success();
}
@@ -1,11 +1,15 @@
package com.budwk.app.zhgh.activity.culture.models;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import com.budwk.app.base.model.BaseModel;
import com.budwk.app.base.model.CustomFormField;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.services.SysHomeConvert;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import java.io.Serializable;
@@ -21,7 +25,7 @@ import java.util.List;
@Data
@Comment("文化活动表")
@Table("activity_tissue")
public class ActivityTissue extends BaseModel implements Serializable {
public class ActivityTissue extends BaseModel implements Serializable, SysHomeConvert {
@Column
@Name
@@ -253,4 +257,27 @@ public class ActivityTissue extends BaseModel implements Serializable {
private String username;
private String loginname;
@Override
public Sys_home_activity covertToSysHomeActivity() {
Sys_home_activity sysHomeActivity = new Sys_home_activity();
sysHomeActivity.setId(this.getId());
sysHomeActivity.setName(this.getName());
sysHomeActivity.setCover(this.getCover());
if (this.getActivity_type()==40001){
sysHomeActivity.setUrl("/platform/activity/culture/applyUser/school");
}else if (this.getActivity_type()==40002){
sysHomeActivity.setUrl("/platform/activity/culture/applyUser/union");
}else{
sysHomeActivity.setUrl("/platform/activity/culture/applyUser/club");
}
sysHomeActivity.setH5Url("/platform/h5/activity/culture/signUp?id=" + this.getId());
if (Lang.isNotEmpty(this.getApplyStartTime())) {
sysHomeActivity.setStartDate(DateUtil.parseDate(this.getApplyStartTime()));
sysHomeActivity.setEndDate(DateUtil.parseDate(this.getApplyEndTime()));
}
sysHomeActivity.setAllowUserGroupId(this.getGroupId());
sysHomeActivity.setEnable(this.getIsUnseal());
sysHomeActivity.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeActivity;
}
}
@@ -162,14 +162,21 @@ public class ActivitySchoolApply extends BaseModel implements Serializable {
@Excel(name = "姓名", width = 20)
@ColDefine(type = ColType.VARCHAR, width = 50)
private String username;
@Column
@Comment("电话")
@Excel(name = "手机号码", width = 20)
@ColDefine(type = ColType.VARCHAR, width = 50)
private String mobile;
@Column
@Comment("职级")
@Excel(name = "职级", width = 20)
@ColDefine(type = ColType.VARCHAR, width = 50)
private String professionalLevel;
@Excel(name = "身份证号", width = 20)
// @Excel(name = "身份证号", width = 20)
private String idCard;
@Column
@@ -178,7 +185,7 @@ public class ActivitySchoolApply extends BaseModel implements Serializable {
@ColDefine(type = ColType.VARCHAR, width = 50)
private String sex;
@Excel(name = "在职状态", width = 20)
// @Excel(name = "在职状态", width = 20)
private String userState;
@Excel(name = "身份", width = 40)
@@ -282,6 +282,7 @@ public class ActivitySportsApplyUserServiceImpl extends BaseServiceImpl<Activity
u.loginname,
u.sex,
u.birthday,
u.professionalLevel,
u.mobile,
un.`name` unitname
FROM
@@ -200,7 +200,7 @@ public class ActivitySportsServiceImpl extends BaseServiceImpl<ActivitySchool> i
app.activityUnionName unionname,
app.sex,
app.mobile,
u.idCard,
app.professionalLevel,
u.userState,
ev.allName,
sc.`name` activityName,
@@ -53,7 +53,7 @@ public class AssetStocktakingServiceImpl extends BaseServiceImpl<AssetStocktakin
group.orLike("t1.assetName", pageForm.getSearchKeyword());
cnd.and(group);
}
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name()) || !AuthUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("t1.assetUseUnionId", "=", SecurityUtil.getUnionId());
}
if (pageForm.getIsStocktaking() != null) {
@@ -208,6 +208,9 @@ public class TeacherCongressDelegatePushController {
tmd.setSeniorTeacher(false);
tmd.setSchoolLeader(false);
tmd.setMiddleLevelLeader(false);
tmd.setIntermediateBelow(false);
tmd.setCadre(false);
tmd.setWorker(false);
tmd.setMobile(user.getMobile());
@@ -311,8 +314,14 @@ public class TeacherCongressDelegatePushController {
int total = writeList.size();
// 已上报女代表人数
int female = (int) writeList.stream().filter(v -> List.of("", "女性").contains(v.getString("sex"))).count();
// 已上报高级职称专任教师人数
// 已上报高级职称人数
int seniorTeacher = (int) writeList.stream().filter(v -> v.getBoolean("seniorTeacher")).count();
//已上报中级职称及以下代表数
int intermediateBelow = (int) writeList.stream().filter(v -> v.getBoolean("intermediateBelow")).count();
//已上报干部代表数
int cadre = (int) writeList.stream().filter(v -> v.getBoolean("cadre")).count();
//已上报工人代表数
int worker = (int) writeList.stream().filter(v -> v.getBoolean("worker")).count();
// 已上报专任教师人数
int ordinaryTeacher = (int) writeList.stream().filter(v -> v.getBoolean("ordinaryTeacher")).count();
// 已上报45岁以下代表
@@ -400,6 +409,12 @@ public class TeacherCongressDelegatePushController {
int female = (int) writeList.stream().filter(v -> List.of("", "女性").contains(v.getString("sex"))).count();
// 高级职称专任教师人数
int seniorTeacher = (int) writeList.stream().filter(v->v.getBoolean("seniorTeacher")).count();
// 中级职称及以下
int intermediateBelow = (int) writeList.stream().filter(v->v.getBoolean("intermediateBelow")).count();
// 干部
int cadre = (int) writeList.stream().filter(v->v.getBoolean("cadre")).count();
// 工人
int worker = (int) writeList.stream().filter(v->v.getBoolean("worker")).count();
// 专任教师人数
int ordinaryTeacher = (int) writeList.stream().filter(v->v.getBoolean("ordinaryTeacher")).count();
// 45岁以下代表
@@ -434,6 +449,27 @@ public class TeacherCongressDelegatePushController {
seniorTeaMap.put("remaining", allocation.getSeniorTeaNum() - seniorTeacher);
hashMap.put("seniorTeacher", seniorTeaMap);
HashMap<String, Object> intermediateBelowMap = new HashMap<>();
intermediateBelowMap.put("current", intermediateBelow);
intermediateBelowMap.put("target", allocation.getIntermediateBelowNum());
intermediateBelowMap.put("progress", allocation.getIntermediateBelowNum() != 0 ? (double) intermediateBelow / allocation.getIntermediateBelowNum() : 0.0);
intermediateBelowMap.put("remaining", allocation.getIntermediateBelowNum() - intermediateBelow);
hashMap.put("intermediateBelow", intermediateBelowMap);
HashMap<String, Object> cadreMap = new HashMap<>();
cadreMap.put("current", cadre);
cadreMap.put("target", allocation.getCadreNum());
cadreMap.put("progress", allocation.getCadreNum() != 0 ? (double) cadre / allocation.getCadreNum() : 0.0);
cadreMap.put("remaining", allocation.getCadreNum() - cadre);
hashMap.put("cadre", cadreMap);
HashMap<String, Object> workerMap = new HashMap<>();
workerMap.put("current", worker);
workerMap.put("target", allocation.getWorkerNum());
workerMap.put("progress", allocation.getWorkerNum() != 0 ? (double) worker / allocation.getWorkerNum() : 0.0);
workerMap.put("remaining", allocation.getWorkerNum() - cadre);
hashMap.put("worker", workerMap);
HashMap<String, Object> ordinaryTeaMap = new HashMap<>();
ordinaryTeaMap.put("current", ordinaryTeacher);
ordinaryTeaMap.put("target", allocation.getOrdinaryTeaNum());
@@ -1,18 +1,25 @@
package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
@@ -20,6 +27,8 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
@@ -44,13 +53,75 @@ public class TeacherCongressDelegatePushZgAuditController {
@At
@ApiOperation("分页查询")
@SaCheckPermission("tc.delegate.push")
@SaCheckPermission("tc.delegate.push.zcAudit")
public Result pageData(PageForm pageForm,
@Param(value = "sessionId") String sessionId,
@Param(value = "unionId") String unionId,
@Param(value = "approval") Boolean approval,
@Param(value = "isFormalOrAttendance") String isFormalOrAttendance) {
Sql sql = getSql(pageForm, sessionId, unionId, approval, isFormalOrAttendance);
Pagination<NutMap> pageVO = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pageVO);
}
@Ok("void")
@At("/exportExcel")
@ApiOperation("代表资格审查导出")
@SaCheckPermission("tc.delegate.push.zcAudit")
public void exportExcel(PageForm pageForm,
@Param(value = "sessionId") String sessionId,
@Param(value = "unionId") String unionId,
@Param(value = "approval") Boolean approval,
@Param(value = "isFormalOrAttendance") String isFormalOrAttendance, HttpServletResponse response) {
Sql sql = getSql(pageForm, sessionId, unionId, approval, isFormalOrAttendance);
List<NutMap> exportList = baseService.listMap(sql);
exportList.forEach(item -> {
item.put("isJdh", item.getBoolean("isJdh") ? "" : "");
item.put("isGdh", item.getBoolean("isGdh") ? "" : "");
item.put("cadre", item.getBoolean("cadre") ? "" : "");
item.put("worker", item.getBoolean("worker") ? "" : "");
item.put("intermediateBelow", item.getBoolean("intermediateBelow") ? "" : "");
item.put("seniorTeacher", item.getBoolean("seniorTeacher") ? "" : "");
});
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("姓名", "userName", 20));
entityList.add(new ExcelExportEntity("工号", "loginName", 20));
entityList.add(new ExcelExportEntity("性别", "sex", 20));
entityList.add(new ExcelExportEntity("联系电话", "mobile", 20));
entityList.add(new ExcelExportEntity("分工会", "unionName", 20));
entityList.add(new ExcelExportEntity("职称", "professionalTitle", 20));
entityList.add(new ExcelExportEntity("职级", "professionalLevel", 20));
entityList.add(new ExcelExportEntity("是否高级职称", "seniorTeacher", 20));
entityList.add(new ExcelExportEntity("是否中级职称及以下", "intermediateBelow", 20));
entityList.add(new ExcelExportEntity("是否干部", "cadre", 20));
entityList.add(new ExcelExportEntity("是否工人", "worker", 20));
entityList.add(new ExcelExportEntity("教代会代表", "isJdh", 20));
entityList.add(new ExcelExportEntity("工代会代表", "isGdh", 20));
entityList.add(new ExcelExportEntity("代表类型", "representativeType", 20));
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, exportList);
CommonDownloadUtil.download("推选代表汇总表.xlsx", workbook, response);
}
/**
* 公共sql
*
* @return
*/
private Sql getSql(PageForm pageForm,
String sessionId,
String unionId,
Boolean approval,
String isFormalOrAttendance) {
Sql sql = Sqls.create("""
SELECT
info.*,
@@ -92,6 +163,14 @@ public class TeacherCongressDelegatePushZgAuditController {
} else {
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
}
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("info.userName", pageForm.getSearchKeyword());
group.orLike("info.loginName", pageForm.getSearchKeyword());
cnd.and(group);
}
cnd.groupBy("t.id");
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.desc("t.createdAt");
@@ -99,11 +178,7 @@ public class TeacherCongressDelegatePushZgAuditController {
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
}
sql.setCondition(cnd);
sql.setCondition(cnd);
Pagination<NutMap> pageVO = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pageVO);
return sql;
}
@@ -105,6 +105,24 @@ public class TeacherCongressDelegatePush extends BaseModel {
@Default("0")
private Boolean seniorTeacher;
@Column
@Comment("是否中级职称及以下")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean intermediateBelow;
@Column
@Comment("是否干部")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean cadre;
@Column
@Comment("是否工人")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean worker;
@Column
@Comment("是否校领导")
@ColDefine(type = ColType.BOOLEAN)
@@ -58,7 +58,8 @@ public class TeacherCongressDelegatePushServiceImpl extends BaseServiceImpl<Teac
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("info.id", "in", ids);
// cnd.and("info.id", "in", ids);
cnd.and("t.taskName", "=", "0cacd1e7-7bb2-47dd-818b-6a73062e0c62");
sql.setCondition(cnd);
List<NutMap> delegatePushList = listMap(sql);
@@ -1,7 +1,6 @@
package com.budwk.app.zhgh.democratic.teachercongress.prepare.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_quota_allocation;
@@ -59,6 +58,9 @@ public class TeacherCongressQuotaAllocationController {
tcqa.ratio,
tcqa.seniorTeaNum,
tcqa.ordinaryTeaNum,
tcqa.intermediateBelowNum,
tcqa.cadreNum,
tcqa.workerNum,
tcqa.femaleNum,
tcqa.less45Num,
COALESCE(u_count, 0) AS memberCount,
@@ -96,6 +98,9 @@ public class TeacherCongressQuotaAllocationController {
t2.ratio,
t2.seniorTeaNum,
t2.ordinaryTeaNum,
t2.intermediateBelowNum,
t2.cadreNum,
t2.workerNum,
t2.femaleNum,
t2.less45Num
FROM
@@ -53,6 +53,24 @@ public class Teacher_congress_quota_allocation extends BaseModel {
@Default("0")
private Integer seniorTeaNum;
@Column
@Comment("中级职称及以下代表数")
@ColDefine(type = ColType.INT, width = 4)
@Default("0")
private Integer intermediateBelowNum;
@Column
@Comment("干部代表数")
@ColDefine(type = ColType.INT, width = 4)
@Default("0")
private Integer cadreNum;
@Column
@Comment("工人代表数")
@ColDefine(type = ColType.INT, width = 4)
@Default("0")
private Integer workerNum;
@Column
@Comment("专任教师代表数")
@ColDefine(type = ColType.INT, width = 4)
@@ -158,9 +158,12 @@ public class WelfareListController {
if (user != null) {
WelfareList list = new WelfareList();
list.setUserId(user.getId());
list.setWelfareUnitId(user.getUnionId());
list.setWelfareUnitId(user.getUnitId());
list.setWelfareUnitName(user.getUnitName());
list.setWelfareUnionId(user.getUnionId());
list.setWelfareUnionName(user.getUnionName());
list.setProjectId(businessId);
list.setWelfareSecondLevelUnitId(user.getUnitId());
// list.setWelfareSecondLevelUnitId(user.getUnitId());
list.setPersonType(user.getPersonType());
list.setUserState(user.getUserState());
welfareLists.add(list);
@@ -1,34 +1,24 @@
package com.budwk.app.zhgh.welfare.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.welfare.model.WelfareCourierNumber;
import com.budwk.app.zhgh.welfare.model.WelfareEvaluate;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.budwk.app.zhgh.welfare.model.WelfareUserSelection;
import com.budwk.app.zhgh.welfare.service.WelfareListService;
import com.budwk.app.zhgh.welfare.service.WelfareProjectService;
import com.budwk.app.zhgh.welfare.utils.ExpressSelectUtil;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.integration.jedis.RedisService;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName WelfareMineController
* @Description 我的福利
@@ -1,19 +1,17 @@
package com.budwk.app.zhgh.welfare.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.budwk.app.zhgh.welfare.model.WelfareUserSelection;
import com.budwk.app.zhgh.welfare.param.WelfareSelectionSituationPageForm;
import com.budwk.app.zhgh.welfare.service.WelfareListService;
import com.budwk.app.zhgh.welfare.service.WelfareSelectionSituationService;
import com.budwk.app.zhgh.welfare.service.WelfareSingleService;
import com.budwk.app.zhgh.welfare.service.WelfareStatisticsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -21,8 +19,6 @@ import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -86,7 +82,7 @@ public class WelfareSelectionSituationController {
@SaCheckPermission("welfare.selection.situation")
public Result confirmSelect(@Param("selections") WelfareUserSelection[] selections, String projectId, String userId) {
int count = dao.count(WelfareList.class, Cnd.where(WelfareList::getProjectId, "=", projectId).and(WelfareList::getUserId, "=", userId));
if(count==0){
if (count == 0) {
return Result.error("此用户没有选择的权限");
}
@@ -109,4 +105,12 @@ public class WelfareSelectionSituationController {
public void exportXlsx(@Valid @Param("pageForm") WelfareSelectionSituationPageForm pageForm, HttpServletResponse response) {
situationService.exportXlsx(pageForm, response);
}
@At
@SaCheckLogin
public Result getMobileByUserId(String userId) {
Sys_user user = dao.fetch(Sys_user.class, userId);
return Result.success().addData(user.getMobile());
}
}
@@ -1,11 +1,6 @@
package com.budwk.app.zhgh.welfare.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
@@ -23,11 +18,6 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.FieldFilter;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -40,9 +30,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.BufferedOutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -213,7 +201,8 @@ public class WelfareStatisticsController {
@Ok("void")
@SaCheckPermission("welfare.statistics")
public void exportSummary(String projectId, String unionId, HttpServletResponse response) {
welfareSingleService.exportSummary(projectId, unionId, response);
// welfareSingleService.exportSummary(projectId, unionId, response);
welfareStatisticsService.exportSummary(projectId,response);
}
@At
@@ -11,7 +11,6 @@ import com.budwk.app.zhgh.welfare.model.WelfareUserSelection;
import com.budwk.app.zhgh.welfare.service.WelfareProjectService;
import io.swagger.annotations.ApiOperation;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
@@ -7,8 +7,6 @@ import lombok.experimental.Accessors;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.io.Serializable;
/**
* 福利名单
*
@@ -63,7 +61,7 @@ public class WelfareList extends BaseModel{
private String welfareUnionName;
@Column
@Comment("教职工类别")
@Comment("人员类型")
@ColDefine(type = ColType.VARCHAR)
private String personType;
@@ -73,7 +71,7 @@ public class WelfareList extends BaseModel{
private String userState;
@Column
@Comment("编制类别")
@Comment("聘用方式")
@ColDefine(type = ColType.VARCHAR)
private String preparedBy;
@@ -9,7 +9,6 @@ import lombok.experimental.Accessors;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@@ -1,9 +1,6 @@
package com.budwk.app.zhgh.welfare.model;
import com.budwk.app.base.model.BaseModel;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.io.Serializable;
/**
@@ -43,10 +43,10 @@ public class WelfareFilterUserPageForm extends PageForm {
@ApiModelProperty("单位名称")
private String unitName;
@ApiModelProperty("教职工类别")
@ApiModelProperty("人员类型")
private String[] personTypes;
@ApiModelProperty("编制类别")
@ApiModelProperty("聘用方式")
private String[] preparedBys;
@ApiModelProperty("在职状态")
@@ -46,10 +46,10 @@ public class WelfareListPageForm extends PageForm {
@ApiModelProperty("单位名称")
private String unitName;
@ApiModelProperty("教职工类别")
@ApiModelProperty("人员类型")
private String[] personTypes;
@ApiModelProperty("编制类别")
@ApiModelProperty("聘用方式")
private String[] preparedBys;
@ApiModelProperty("在职状态")
@@ -1,7 +1,6 @@
package com.budwk.app.zhgh.welfare.param;
import com.budwk.app.base.param.PageForm;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -1,10 +1,7 @@
package com.budwk.app.zhgh.welfare.service;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.welfare.model.WelfareProject;
import com.budwk.app.zhgh.welfare.param.WelfareFilterUserPageForm;
import org.nutz.lang.util.NutMap;
import java.util.List;
@@ -32,7 +32,6 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
@@ -104,7 +103,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("工号", "loginname", 20));
exportEntities.add(new ExcelExportEntity("姓名", "username", 20));
exportEntities.add(new ExcelExportEntity("教职工类别", "personType", 20));
exportEntities.add(new ExcelExportEntity("人员类别", "personType", 20));
exportEntities.add(new ExcelExportEntity("所在分工会", "unionname", 20));
exportEntities.add(new ExcelExportEntity("所在部门", "unitname", 20));
exportEntities.add(new ExcelExportEntity("份数", "selectNum", 20));
@@ -370,8 +369,10 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
WelfareList welfareList = new WelfareList();
welfareList.setProjectId(id);
welfareList.setUserId(v.getId());
welfareList.setWelfareUnitId(v.getUnionId());
welfareList.setWelfareSecondLevelUnitId(v.getUnitId());
welfareList.setWelfareUnitId(v.getUnitId());
welfareList.setWelfareUnitName(v.getUnitName());
welfareList.setWelfareUnionId(v.getUnionId());
welfareList.setWelfareUnionName(v.getUnionName());
welfareList.setPersonType(v.getPersonType());
welfareList.setUserState(v.getUserState());
return welfareList;
@@ -466,6 +467,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
cnd.andEX("u.personType", "in", pageForm.getPersonTypes());
cnd.andEX("u.preparedBy", "in", pageForm.getPreparedBys());
cnd.andEX("u.userState", "in", pageForm.getUserStates());
cnd.andEX("u.member","=",pageForm.getIsMember());
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.asc("u.unionCode");
@@ -517,6 +519,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
cnd.andEX("personType", "in", pageForm.getPersonTypes());
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
cnd.andEX("userState", "in", pageForm.getUserStates());
cnd.andEX("member","=",pageForm.getIsMember());
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.asc("unionCode");
@@ -597,8 +600,8 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
entities.add(new ExcelExportEntity("姓名", "username", 20));
entities.add(new ExcelExportEntity("性别", "sex", 20));
entities.add(new ExcelExportEntity("出生日期", "birthday", 20));
entities.add(new ExcelExportEntity("教职工类别", "personType", 20));
entities.add(new ExcelExportEntity("编制类别", "preparedBy", 20));
entities.add(new ExcelExportEntity("人员类型", "personType", 20));
entities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
entities.add(new ExcelExportEntity("在职状态", "userState", 20));
entities.add(new ExcelExportEntity("所属工会", "welfareUnionName", 20));
entities.add(new ExcelExportEntity("所属单位", "welfareUnitName", 20));
@@ -1,29 +1,21 @@
package com.budwk.app.zhgh.welfare.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.welfare.model.*;
import com.budwk.app.zhgh.welfare.param.WelfareFilterUserPageForm;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.budwk.app.zhgh.welfare.model.WelfareProject;
import com.budwk.app.zhgh.welfare.model.WelfareProjectSubjectOption;
import com.budwk.app.zhgh.welfare.model.WelfareUserSelection;
import com.budwk.app.zhgh.welfare.service.WelfareProjectService;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -175,8 +167,10 @@ public class WelfareProjectServiceImpl extends BaseServiceImpl<WelfareProject> i
WelfareList list = new WelfareList();
list.setProjectId(projectId);
list.setUserId(user.getString("id"));
list.setWelfareUnitId(user.getString("unionId"));
list.setWelfareSecondLevelUnitId(user.getString("unitId"));
list.setWelfareUnitId(user.getString("unitId"));
list.setWelfareUnitName(user.getString("unitName"));
list.setWelfareUnionId(user.getString("unionId"));
list.setWelfareUnionName(user.getString("unionName"));
list.setPersonType(user.getString("personType"));
list.setUserState(user.getString("userState"));
lists.add(list);
@@ -7,13 +7,13 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.budwk.app.zhgh.welfare.model.WelfareProject;
import com.budwk.app.zhgh.welfare.param.WelfareSelectionSituationPageForm;
import com.budwk.app.zhgh.welfare.service.WelfareSelectionSituationService;
import lombok.extern.slf4j.Slf4j;
@@ -45,8 +45,10 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
t1.userId,
t1.welfareUnionName,
t1.welfareUnitName,
t1.welfareUnitId,
GROUP_CONCAT(DISTINCT t3.optionName) AS selectedOptions,
GROUP_CONCAT(DISTINCT t2.mobile) AS mobile,
GROUP_CONCAT(DISTINCT t2.receiveAddress) AS receiveAddress,
t4.username AS userName,
t4.loginname AS loginName,
t4.sex,
@@ -105,6 +107,7 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
t1.welfareUnitName,
GROUP_CONCAT(DISTINCT t3.optionName) AS selectedOptions,
GROUP_CONCAT(DISTINCT t2.mobile) AS mobile,
GROUP_CONCAT(DISTINCT t2.receiveAddress) AS receiveAddress,
t4.username AS userName,
t4.loginname AS loginName,
t4.sex
@@ -152,6 +155,9 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
sql.setCondition(cnd);
List<NutMap> list = listMap(sql);
// 项目
WelfareProject project = dao().fetch(WelfareProject.class, pageForm.getProjectId());
// excel列
List<ExcelExportEntity> entities = new ArrayList<>();
@@ -163,6 +169,10 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
entities.add(new ExcelExportEntity("所选福利", "selectedOptions", 20));
entities.add(new ExcelExportEntity("联系电话", "mobile", 20));
if(project.getProvideMode() == 3){
entities.add(new ExcelExportEntity("收货地址", "receiveAddress", 40));
}
// 设置导出参数
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
@@ -12,10 +12,8 @@ import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.sys.models.Sys_union;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.budwk.app.zhgh.welfare.model.WelfareProject;
import com.budwk.app.zhgh.welfare.model.WelfareProjectSubjectOption;
import com.budwk.app.zhgh.welfare.model.WelfareUserSelection;
import com.budwk.app.zhgh.welfare.service.WelfareStatisticsService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
@@ -31,7 +29,9 @@ import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@IocBean(args = {"refer:dao"})
@@ -76,6 +76,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
Cnd cnd = Cnd.NEW();
cnd.and("t1.projectId", "=", projectId);
cnd.andEX("t1.welfareUnionId", "=", unionId);
cnd.groupBy("t1.userId");
sql.setCondition(cnd);
List<NutMap> welfareSelectionList = listMap(sql);
@@ -96,11 +97,11 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
for (NutMap union : mapUnions) {
// 福利人数
long teacherSum = welfareSelectionList.stream().filter(v -> (union.getString("id")).equals(v.getString("welfareUnionId"))).count();
long teacherSum = welfareSelectionList.stream().filter(v -> v.getString("welfareUnionId", "").equals(union.getString("id"))).count();
union.put("teacherSum", teacherSum);
// 已选人数
long selectedNum = welfareSelectionList.stream().filter(v -> (union.getString("id")).equals(v.getString("welfareUnionId")) && v.getBoolean("has_selected")).count();
long selectedNum = welfareSelectionList.stream().filter(v -> v.getString("welfareUnionId", "").equals(union.getString("id")) && v.getBoolean("has_selected")).count();
union.put("selectedNum", selectedNum);
// 未选人数
@@ -108,7 +109,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
// 各选项的选择人数
for (WelfareProjectSubjectOption option : welfareOptions) {
long count = userSelections.stream().filter(v -> (union.getString("id")).equals(v.getString("welfareUnionId")) && StrUtil.isNotBlank(v.getString("selectOptionId")) && v.getString("selectOptionId").equals(option.getId())).map(v -> v.getString("selectUserId")).distinct().count();
long count = userSelections.stream().filter(v -> v.getString("welfareUnionId").equals(union.getString("id")) && StrUtil.isNotBlank(v.getString("selectOptionId")) && v.getString("selectOptionId").equals(option.getId())).map(v -> v.getString("selectUserId")).distinct().count();
union.put(option.getId(), count);
}
}
@@ -201,7 +202,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
entities.add(new ExcelExportEntity("生日", "birthday", 20));
entities.add(new ExcelExportEntity("在职状态", "userState", 20));
entities.add(new ExcelExportEntity("教职工类别", "personType", 20));
entities.add(new ExcelExportEntity("编制类别", "preparedBy", 20));
entities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
entities.add(new ExcelExportEntity("进站时间", "postDoctoralJoinDate", 20));
entities.add(new ExcelExportEntity("单位", "welfareUnitName", 20));
entities.add(new ExcelExportEntity("工会", "welfareUnionName", 20));
@@ -247,7 +248,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
cnd.groupBy("u.loginname");
cnd.desc("wl.welfareUnionName").desc("wl.welfareUnitName");
if(StrUtil.isNotBlank(pageForm.getSearchKeyword())){
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("u.loginname", pageForm.getSearchKeyword());
seg.orLike("u.username", pageForm.getSearchKeyword());