diff --git a/src/main/java/io/v/nutz/jsz/controller/mobile/loginController.java b/src/main/java/io/v/nutz/jsz/controller/mobile/loginController.java index e7f15b9..0e65124 100644 --- a/src/main/java/io/v/nutz/jsz/controller/mobile/loginController.java +++ b/src/main/java/io/v/nutz/jsz/controller/mobile/loginController.java @@ -54,7 +54,8 @@ public class loginController { """).setParam("loginname", loginname).setParam("username", username); sql.setVar("schoolCode", Globals.schoolCode); Cnd cnd = Cnd.NEW(); - cnd.and("LOWER(u.loginname)", "=", loginname.trim().toLowerCase()); +// cnd.and("LOWER(u.loginname)", "=", loginname.trim().toLowerCase()); + cnd.and(Cnd.exps("LOWER(u.loginname)", "=", loginname.trim().toLowerCase()).or("LOWER(u.mobile)", "=", loginname.trim().toLowerCase())); cnd.and("LOWER(u.username)", "=", username.trim().toLowerCase()); sql.setCondition(cnd); sql.setCallback(Sqls.callback.map()); diff --git a/src/main/java/io/v/nutz/retired/user/controller/RetiredUserListController.java b/src/main/java/io/v/nutz/retired/user/controller/RetiredUserListController.java index bfd1ce2..91f7928 100644 --- a/src/main/java/io/v/nutz/retired/user/controller/RetiredUserListController.java +++ b/src/main/java/io/v/nutz/retired/user/controller/RetiredUserListController.java @@ -1,22 +1,33 @@ package io.v.nutz.retired.user.controller; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import io.v.nutz.activity.models.ActivityUserScope; import io.v.nutz.annontation.ViReturn; import io.v.nutz.base.page.Pagination; +import io.v.nutz.base.result.Result; +import io.v.nutz.base.utils.PinyinUtil; import io.v.nutz.member.UserMode; import io.v.nutz.modules.models.PageForm; import io.v.nutz.retired.group.model.RetiredGroup; import io.v.nutz.retired.group.model.RetiredUserHistory; import io.v.nutz.retired.partyBranch.model.RetiredPartyBranch; import io.v.nutz.retired.user.contants.RetiredUserChangeType; +import io.v.nutz.retired.user.mode.RetiredUserTemplate; import io.v.nutz.retired.user.model.RetiredUserChange; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.models.Sys_user_role; import io.v.nutz.sys.services.SysUserService; +import io.v.nutz.util.ViTool; import io.v.nutz.web.commons.utils.ShiroUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; @@ -31,14 +42,21 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Lang; import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.AdaptBy; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import org.nutz.mvc.upload.TempFile; +import org.nutz.mvc.upload.UploadAdaptor; import org.springframework.beans.BeanUtils; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.function.Function; import java.util.stream.Collectors; @IocBean @@ -318,5 +336,139 @@ public class RetiredUserListController { return null; } + + /** + * 离退休人员,导入下载模版 + * + * @param response + */ + @At + @Ok("void") + @RequiresPermissions("retired.user.list") + public void downloadImport(HttpServletResponse response) { + try { + ViTool.excelResponse(response, "离退休人员导入模版.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook sheets = ExcelExportUtil.exportExcel(exportParams, RetiredUserTemplate.class, new ArrayList<>()); + ServletOutputStream outputStream = response.getOutputStream(); + sheets.write(outputStream); + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @At + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + @Aop(TransAop.READ_COMMITTED) + @RequiresPermissions("retired.user.list") + public Object doImport(TempFile file) { + try { + List retiredUserImportList = ExcelImportUtil.importExcel(file.getFile(), RetiredUserTemplate.class, new ImportParams()); + List users = sysUserService.query(Cnd.where("idcard", "is not", null).and("idcard", "!=", "")); + + Map userMap = users.stream().collect(Collectors.toMap(Sys_user::getIdcard, Function.identity(), (o1, o2) -> o1)); + + List errorInfos = new ArrayList<>(); + //需要新增的离退休人员 + List needInsertUserList = new ArrayList<>(); + //需要修改的离退休人员 + List needUpdateUserList = new ArrayList<>(); + + List userScopeList = new ArrayList<>(); + Sql sql = Sqls.create("SELECT MAX(DISTINCT groupId) AS groupId FROM activity_user_scope"); + NutMap query = (NutMap) Daos.query(dao, sql.toString(), Sqls.callback.map()); + + String groupName = DateUtil.thisYear() + "年" + (DateUtil.thisMonth() + 1) + "月离退休教职工"; + + for (RetiredUserTemplate template : retiredUserImportList) { + if (StrUtil.isBlank(template.getUsername())) { + template.setErrorMsg("获取不到该用户的姓名!"); + errorInfos.add(template); + continue; + } else if (StrUtil.isBlank(template.getIdCard())) { + template.setErrorMsg("获取不到该用户的身份证号!"); + errorInfos.add(template); + continue; + } + + Sys_user user = new Sys_user(); + user.setRetired(true); + user.setRetireNature(template.getRetireNature()); + user.setUsername(template.getUsername().trim()); + user.setSex(template.getSex()); + user.setNation(template.getNation()); +// user.setBirthday(template.getBirthday()); +// user.setPartyJoiningTime(DateUtil.parse(template.getPartyJoiningTime(),"yyyy-MM")); +// user.setWorkStartDate(DateUtil.parse(template.getWorkStartDate(),"yyyy-MM")); +// user.setSchoolTime(template.getSchoolTime()); + user.setEducation(template.getEducation()); + user.setHometown(template.getHometown()); + user.setJobTitle(template.getJobTitle()); + user.setTreatment(template.getTreatment()); +// user.setRetirementTime(DateUtil.parse(template.getRetirementTime(),"yyyy-MM")); + user.setIdcard(template.getIdCard()); + user.setMedicalCertificateNumber(template.getMedicalCertificateNumber()); + user.setOriginalDepartment(template.getOriginalDepartment()); + user.setFamilyName(template.getFamilyName()); + user.setHomeAddress(template.getHomeAddress()); + user.setRetirePhone(template.getRetirePhone()); + user.setRetireNotes(template.getRetireNotes()); + user.setBasicDiseaseInfo(template.getBasicDiseaseInfo()); + + Sys_user sysUser = userMap.get(template.getIdCard()); + + ActivityUserScope userScope = new ActivityUserScope(); + userScope.setGroupName(groupName); + userScope.setGroupId(Integer.parseInt(query.getString("groupId"))); + if (Lang.isNotEmpty(sysUser)) { + user.setId(sysUser.getId()); + userScope.setUserId(sysUser.getId()); + needUpdateUserList.add(user); + } else { + String pinYinHeadChar = PinyinUtil.getPinYinHeadChar(template.getUsername().trim()); + String idCardLastSix = template.getIdCard().substring(template.getIdCard().length() - 6); + user.setLoginname(pinYinHeadChar + idCardLastSix); + Sys_user initUser = UserMode.initUser(user); + initUser.setRetired(true); + userScope.setUserId(initUser.getId()); + needInsertUserList.add(initUser); + } + userScopeList.add(userScope); + } + + + if (Lang.isNotEmpty(needInsertUserList)) { + sysUserService.dao().fastInsert(needInsertUserList); + } + + if (Lang.isNotEmpty(needInsertUserList)) { + sysUserService.dao().updateIgnoreNull(needUpdateUserList); + } + + if (Lang.isNotEmpty(userScopeList)) { + sysUserService.dao().insert(userScopeList); + } + + if (Lang.isNotEmpty(errorInfos)) { + NutMap nutMap = NutMap.NEW(); + nutMap.setv("totalCount", retiredUserImportList.size()); + nutMap.setv("successCount", (needUpdateUserList.size() + needUpdateUserList.size())); + nutMap.setv("errorCount", errorInfos.size()); + nutMap.setv("errorList", errorInfos.stream().map(v -> { + return NutMap.NEW().addv("姓名", v.getUsername()).addv("错误原因", v.getErrorMsg()); + }).collect(Collectors.toList())); + return Result.success(nutMap); + } + return Result.success(); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); + } + + } + } diff --git a/src/main/java/io/v/nutz/retired/user/mode/RetiredUserTemplate.java b/src/main/java/io/v/nutz/retired/user/mode/RetiredUserTemplate.java new file mode 100644 index 0000000..b05d1a5 --- /dev/null +++ b/src/main/java/io/v/nutz/retired/user/mode/RetiredUserTemplate.java @@ -0,0 +1,86 @@ +package io.v.nutz.retired.user.mode; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @version 1.0 + * @Author zzr + * @name:RetiredUserTemplate + * @Date 2024/4/29 17:32 + * @注释 离退休人员导入模版 + */ +@Data +public class RetiredUserTemplate { + +// @Excel(name = "工号") + private String loginName; + + @Excel(name = "性质") + private String retireNature; + + @Excel(name = "姓名") + private String username; + + @Excel(name = "性别") + private String sex; + + @Excel(name = "民族") + private String nation; + + @Excel(name = "出生年月",importFormat = "yyyy-MM") + private String birthday; + + @Excel(name = "入党时间",importFormat = "yyyy-MM") + private String partyJoiningTime; + + @Excel(name = "所属支部") + private String belongBranch; + + @Excel(name = "工作时间",importFormat = "yyyy-MM") + private String workStartDate; + + @Excel(name = "进校时间",importFormat = "yyyy-MM") + private String schoolTime; + + @Excel(name = "文化程度") + private String education; + + @Excel(name = "籍贯") + private String hometown; + + @Excel(name = "职称") + private String jobTitle; + + @Excel(name = "待遇") + private String treatment; + + @Excel(name = "退休时间",importFormat = "yyyy-MM") + private String retirementTime; + + @Excel(name = "身份证号码") + private String idCard; + + @Excel(name = "医疗证号") + private String medicalCertificateNumber; + + @Excel(name = "基础病信息") + private String basicDiseaseInfo; + + @Excel(name = "原部门") + private String originalDepartment; + + @Excel(name = "家属姓名") + private String familyName; + + @Excel(name = "家庭住址") + private String homeAddress; + + @Excel(name = "联系方式") + private String retirePhone; + + @Excel(name = "备注") + private String retireNotes; + + private String errorMsg; +} diff --git a/src/main/resources/views/platform/fitnessWalk/activityManage.html b/src/main/resources/views/platform/fitnessWalk/activityManage.html index c2fffad..e4b8009 100644 --- a/src/main/resources/views/platform/fitnessWalk/activityManage.html +++ b/src/main/resources/views/platform/fitnessWalk/activityManage.html @@ -236,13 +236,13 @@ layout("/layouts/platform.html"){ - - diff --git a/src/main/resources/views/platform/retiredUser/list.html b/src/main/resources/views/platform/retiredUser/list.html index 0a40b5f..cad0233 100644 --- a/src/main/resources/views/platform/retiredUser/list.html +++ b/src/main/resources/views/platform/retiredUser/list.html @@ -70,6 +70,7 @@ layout("/layouts/platform.html"){