diff --git a/src/main/java/io/v/nutz/base/utils/MsgApi.java b/src/main/java/io/v/nutz/base/utils/MsgApi.java index 25742bc..37890a8 100644 --- a/src/main/java/io/v/nutz/base/utils/MsgApi.java +++ b/src/main/java/io/v/nutz/base/utils/MsgApi.java @@ -87,8 +87,8 @@ public class MsgApi { log.info(Json.toJson(bodyMap)); String url = DOMAIN + SEND_URL + "?appid=%s&tokenid=%s&schoolcode=%s".formatted(APP_ID, getMsgToken(), SCHOOL_CODE); - String content = ""; -// String content = Http.post(url, Map.of("message", Json.toJson(bodyMap)), Sender.Default_Read_Timeout); + //String content = ""; + String content = Http.post(url, Map.of("message", Json.toJson(bodyMap)), Sender.Default_Read_Timeout); NutMap contentMap = Json.fromJson(NutMap.class, content); Sys_wechat_msg wechatMsg = new Sys_wechat_msg(); @@ -110,24 +110,23 @@ public class MsgApi { * @return */ public String getMsgToken() { -// String token = redisService.get(TOKEN_NAME); -// if (StrUtil.isBlank(token)) { -// Map params = new HashMap() {{ -// put("appid", APP_ID); -// put("appsecret", APP_SECRET); -// put("schoolcode", SCHOOL_CODE); -// }}; -// String content = Http.get(DOMAIN + GET_TOKEN_URL, params, Sender.Default_Conn_Timeout).getContent(); -// NutMap contentMap = Json.fromJson(NutMap.class, content); -// if (contentMap.getString("retcode").equals("0")) { -// String access_token = contentMap.getString("access_token"); -// redisService.setex(TOKEN_NAME, 3600, access_token); -// } else { -// throw new RuntimeException("获取短信接口token异常!!!"); -// } -// } -// return redisService.get(TOKEN_NAME); - return null; + String token = redisService.get(TOKEN_NAME); + if (StrUtil.isBlank(token)) { + Map params = new HashMap() {{ + put("appid", APP_ID); + put("appsecret", APP_SECRET); + put("schoolcode", SCHOOL_CODE); + }}; + String content = Http.get(DOMAIN + GET_TOKEN_URL, params, Sender.Default_Conn_Timeout).getContent(); + NutMap contentMap = Json.fromJson(NutMap.class, content); + if (contentMap.getString("retcode").equals("0")) { + String access_token = contentMap.getString("access_token"); + redisService.setex(TOKEN_NAME, 3600, access_token); + } else { + throw new RuntimeException("获取短信接口token异常!!!"); + } + } + return redisService.get(TOKEN_NAME); } diff --git a/src/main/java/io/v/nutz/meeting/service/impl/MeetingMineServiceImpl.java b/src/main/java/io/v/nutz/meeting/service/impl/MeetingMineServiceImpl.java index 0b11dbe..8696a5b 100644 --- a/src/main/java/io/v/nutz/meeting/service/impl/MeetingMineServiceImpl.java +++ b/src/main/java/io/v/nutz/meeting/service/impl/MeetingMineServiceImpl.java @@ -112,7 +112,7 @@ public class MeetingMineServiceImpl extends ViServiceImpl implements MeetingMine dao().updateIgnoreNull(meetingTimePeriodUsers); List userIdMap = meetingCommonService.getNextAuditUser(stateCode, moduleName); - String userInfoStr = msgNotifyService.userData(userIdMap); + List userInfoStr = msgNotifyService.userData(userIdMap); String meetingId = meetingTimePeriodUsers.get(0).getMeetingId(); MeetingInfo meetingInfo = dao().fetch(MeetingInfo.class, meetingId); diff --git a/src/main/java/io/v/nutz/msgNotify/MsgNotifyController.java b/src/main/java/io/v/nutz/msgNotify/MsgNotifyController.java index 7448e77..36b6cce 100644 --- a/src/main/java/io/v/nutz/msgNotify/MsgNotifyController.java +++ b/src/main/java/io/v/nutz/msgNotify/MsgNotifyController.java @@ -146,7 +146,7 @@ public class MsgNotifyController { if (msgNotify.getType() != null && msgNotify.getType().equals("system")) { List list = msgNotifyService.getUserByRoleIds(msgNotify.getModule(), msgNotify.getTeacherMeetingId(), msgNotify.getRoleIds()); - String userData = msgNotifyService.userData(list); + List userData = msgNotifyService.userData(list); if (flag) { msgNotifyService.sendMsg(msgNotify.getSendTypes(), userData, msgNotify.getContent()); @@ -165,7 +165,7 @@ public class MsgNotifyController { } else if (msgNotify.getType() != null && msgNotify.getType().equals("user")) { if (flag) { List user = dao.query(User.class, Cnd.where("id", "in", users)); - String objectUserData = msgNotifyService.ObjectUserData(user); + List objectUserData = msgNotifyService.ObjectUserData(user); msgNotifyService.sendMsg(msgNotify.getSendTypes(), objectUserData, msgNotify.getContent()); } for (String u : users) { @@ -180,7 +180,7 @@ public class MsgNotifyController { } } else { List userScopes = msgNotifyService.getUserScopes(msgNotify.getActivityGroupId()); - String userData = msgNotifyService.userData(userScopes); + List userData = msgNotifyService.userData(userScopes); if (flag) { msgNotifyService.sendMsg(msgNotify.getSendTypes(), userData, msgNotify.getContent()); @@ -220,7 +220,7 @@ public class MsgNotifyController { msgNotify.setHold(flag ? true : false); if (flag) { - String userData = msgNotifyService.userData(list); + List userData = msgNotifyService.userData(list); msgNotifyService.sendMsg(msgNotify.getSendTypes(), userData, msgNotify.getContent()); } @@ -236,7 +236,7 @@ public class MsgNotifyController { } else if (msgNotify.getType() != null && msgNotify.getType().equals("user")) { if (flag) { List user = dao.query(User.class, Cnd.where("id", "in", users)); - String objectUserData = msgNotifyService.ObjectUserData(user); + List objectUserData = msgNotifyService.ObjectUserData(user); msgNotifyService.sendMsg(msgNotify.getSendTypes(), objectUserData, msgNotify.getContent()); } @@ -268,7 +268,7 @@ public class MsgNotifyController { """).setParam("groupId", msgNotify.getActivityGroupId()); List userScopes = activityBasicScopeService.listMap(sql); msgNotify.setHold(flag ? true : false); - String userData = msgNotifyService.userData(userScopes); + List userData = msgNotifyService.userData(userScopes); if (flag) { msgNotifyService.sendMsg(msgNotify.getSendTypes(), userData, msgNotify.getContent()); diff --git a/src/main/java/io/v/nutz/msgNotify/MsgNotifyTitleController.java b/src/main/java/io/v/nutz/msgNotify/MsgNotifyTitleController.java index 758b5b6..a3b371c 100644 --- a/src/main/java/io/v/nutz/msgNotify/MsgNotifyTitleController.java +++ b/src/main/java/io/v/nutz/msgNotify/MsgNotifyTitleController.java @@ -105,7 +105,7 @@ public class MsgNotifyTitleController { @RequiresAuthentication public Object doSend(String id, String[] sendTypes, String content) { List msgNotifyUser = msgNotifyService.getMsgNotifyUser(id); - String userData = msgNotifyService.userData(msgNotifyUser); + List userData = msgNotifyService.userData(msgNotifyUser); msgNotifyService.sendMsg(Arrays.asList(sendTypes), userData, content); msgNotifyUser.forEach(v -> { baseService.dao().update(MsgNotify.class, Chain.make("hold", true).add("sendTime", DateUtil.getDateTime()), Cnd.where("id", "=", v.getString("titleId"))); diff --git a/src/main/java/io/v/nutz/msgNotify/service/MsgNotifyService.java b/src/main/java/io/v/nutz/msgNotify/service/MsgNotifyService.java index ed8a335..845490f 100644 --- a/src/main/java/io/v/nutz/msgNotify/service/MsgNotifyService.java +++ b/src/main/java/io/v/nutz/msgNotify/service/MsgNotifyService.java @@ -36,9 +36,9 @@ public interface MsgNotifyService { String userData(User user); - String ObjectUserData(List userList); + List ObjectUserData(List userList); - String userData(List userListMap); + List userData(List userListMap); /** * 根据条件发送短信 @@ -49,6 +49,7 @@ public interface MsgNotifyService { */ void sendMsg(List sendTypes, String userData, String content); + void sendMsg(List sendTypes, List userData, String content); /** * 查询活动设置人员 diff --git a/src/main/java/io/v/nutz/msgNotify/service/impl/MsgNotifyServiceImpl.java b/src/main/java/io/v/nutz/msgNotify/service/impl/MsgNotifyServiceImpl.java index 18086a4..802ffd6 100644 --- a/src/main/java/io/v/nutz/msgNotify/service/impl/MsgNotifyServiceImpl.java +++ b/src/main/java/io/v/nutz/msgNotify/service/impl/MsgNotifyServiceImpl.java @@ -1,6 +1,7 @@ package io.v.nutz.msgNotify.service.impl; import io.v.nutz.base.utils.DateUtil; +import io.v.nutz.base.utils.MsgApi; import io.v.nutz.msgNotify.models.MsgNotify; import io.v.nutz.msgNotify.models.MsgNotifyUser; import io.v.nutz.msgNotify.service.MsgNotifyService; @@ -12,6 +13,7 @@ import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.Daos; +import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; @@ -64,7 +66,7 @@ public class MsgNotifyServiceImpl extends ViServiceImpl implements Ms */ @Override public String userData(NutMap v) { - List list = new ArrayList<>(); + /*List list = new ArrayList<>(); list.add(v.getString("userName")); list.add(v.getString("loginName")); list.add(v.getString("unitId")); @@ -72,13 +74,13 @@ public class MsgNotifyServiceImpl extends ViServiceImpl implements Ms list.add(v.getString("mobile") != null ? v.getString("mobile") : ""); list.add(""); list.add(""); - String collect = list.stream().collect(Collectors.joining("|")); - return collect; + String collect = list.stream().collect(Collectors.joining("|"));*/ + return v.getString("loginName"); } @Override public String userData(User user) { - List list = new ArrayList<>(); + /*List list = new ArrayList<>(); list.add(user.getUsername()); list.add(user.getLoginname()); list.add(user.getUnitid()); @@ -87,25 +89,27 @@ public class MsgNotifyServiceImpl extends ViServiceImpl implements Ms list.add(""); list.add(""); String collect = list.stream().collect(Collectors.joining("|")); - return collect; + return collect;*/ + return user.getLoginname(); } @Override - public String ObjectUserData(List userList) { + public List ObjectUserData(List userList) { List recievePersonInfo = new ArrayList<>(); for (User user : userList) { recievePersonInfo.add(userData(user)); } - return String.join("^@^", recievePersonInfo); + return recievePersonInfo; } @Override - public String userData(List userList) { + public List userData(List userList) { List recievePersonInfo = new ArrayList<>(); for (NutMap map : userList) { recievePersonInfo.add(userData(map)); } - return String.join("^@^", recievePersonInfo); + //return String.join("^@^", recievePersonInfo); + return recievePersonInfo; } /** @@ -120,14 +124,33 @@ public class MsgNotifyServiceImpl extends ViServiceImpl implements Ms @Override public void run() { if (sendTypes.contains("msg")) { + //msgApi.sendMsg(content, List.of(item.getString("loginname"))); } if (sendTypes.contains("WeChat")) { + //msgApi.sendMsg(content, List.of(item.getString("loginname"))); } } }.start(); } + public void sendMsg(List sendTypes, List receivers, String content) { + new Thread() { + @Override + public void run() { + if (sendTypes.contains("msg")) { + msgApi.sendMsg(content, receivers); + } + if (sendTypes.contains("WeChat")) { + msgApi.sendMsg(content, receivers); + } + } + }.start(); + + } + + @Inject + private MsgApi msgApi; /** * 查询活动设置人员 diff --git a/src/main/java/io/v/nutz/trainEducation/controller/statistics/TrainEduStatisticsVideoController.java b/src/main/java/io/v/nutz/trainEducation/controller/statistics/TrainEduStatisticsVideoController.java index 5e11be6..d8d9aee 100644 --- a/src/main/java/io/v/nutz/trainEducation/controller/statistics/TrainEduStatisticsVideoController.java +++ b/src/main/java/io/v/nutz/trainEducation/controller/statistics/TrainEduStatisticsVideoController.java @@ -1,11 +1,16 @@ package io.v.nutz.trainEducation.controller.statistics; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import io.v.nutz.annontation.ViReturn; import io.v.nutz.base.page.Pagination; import io.v.nutz.base.service.BaseService; import io.v.nutz.base.utils.Vi; import io.v.nutz.modules.models.PageForm; +import io.v.nutz.util.ViTool; import io.v.nutz.web.commons.utils.ShiroUtil; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; @@ -15,11 +20,14 @@ import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.List; @@ -137,4 +145,63 @@ public class TrainEduStatisticsVideoController { sql.setParam("albumId", albumId); return baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); } + + + @At + @Ok("void") + @RequiresPermissions("trainEdu.statistics.video") + public void exportXlsx(String albumId,HttpServletResponse response){ + Sql sql = Sqls.create(""" + SELECT + u.username, + u.loginname, + u.unitname, + u.unionname, + tev.qualifiedNum, + ( + SELECT + SUM(IF( cnt > tev.everyDayMaxWatchNum, tev.everyDayMaxWatchNum, cnt )) AS count + FROM + ( SELECT watchTime, COUNT( 1 ) AS cnt FROM train_edu_video_watch_record where userId = tevwr.userId and albumId = tevwr.albumId GROUP BY watchTime ) AS subquery + ) as watchCount + + FROM + `train_edu_video_watch_record` tevwr + LEFT JOIN train_edu_video tev ON tev.id = tevwr.videoId + LEFT JOIN train_edu_album tea on tea.id = tevwr.albumId + LEFT JOIN `user` u ON u.id = tevwr.userId + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("tevwr.albumId", "=", albumId); + cnd.and(new Static("IF(tea.createType = 1, u.unionId = tea.unionId , 1=1)")); + cnd.groupBy("tevwr.userId"); + sql.setCondition(cnd); + List list = baseService.listMap(sql); + + + List excelExportEntities = new ArrayList<>(); + excelExportEntities.add(new ExcelExportEntity("序号","no",10)); + excelExportEntities.add(new ExcelExportEntity("姓名","username",20)); + excelExportEntities.add(new ExcelExportEntity("工号","loginname",20)); + excelExportEntities.add(new ExcelExportEntity("单位","unitname",20)); + excelExportEntities.add(new ExcelExportEntity("分工会","unionname",20)); + excelExportEntities.add(new ExcelExportEntity("学习总次数","watchCount",20)); + excelExportEntities.add(new ExcelExportEntity("是否达标","qualifiedNum",20)); + + for (int i = 0; i < list.size(); i++) { + list.get(i).put("no",i+1); + list.get(i).put("qualifiedNum",list.get(i).getInt("qualifiedNum",0)==1?"是":"否"); + } + + try{ + ViTool.excelResponse(response, "获奖人员名单.xls"); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), excelExportEntities, list); + workbook.write(response.getOutputStream()); + }catch (Exception e){ + e.printStackTrace(); + } + + } + } diff --git a/src/main/resources/views/mobile/wakeshome/review/appraisal.html b/src/main/resources/views/mobile/wakeshome/review/appraisal.html index 53e461f..b7d8381 100644 --- a/src/main/resources/views/mobile/wakeshome/review/appraisal.html +++ b/src/main/resources/views/mobile/wakeshome/review/appraisal.html @@ -146,7 +146,15 @@ layout("/mobile/platform.html"){ const now = new Date(); // 检查当前时间是否在 startTime 和 endTime 之间 - return now >= start && now <= end; + + if (now < start && now > end){ + vant.Dialog.alert({ + title: '温馨提示', + message: '不在测评时间内,暂无法测评', + confirmButtonColor: '#1867b0' + }) + return + } //自评模式 if (o.reviewMode == 1 && !o.canJoin) { diff --git a/src/main/resources/views/mobile/wakeshome/review/commentator.html b/src/main/resources/views/mobile/wakeshome/review/commentator.html index f49a7cd..4043069 100644 --- a/src/main/resources/views/mobile/wakeshome/review/commentator.html +++ b/src/main/resources/views/mobile/wakeshome/review/commentator.html @@ -249,7 +249,7 @@ layout("/mobile/platform.html"){ let resultScore = 0; // 评议分 this.bzList.forEach(v => { - source += Number(v.source) + source += Number(v.score) resultScore += Number(v.resultScore) }) const result = (resultScore / source) * 100 @@ -290,16 +290,36 @@ layout("/mobile/platform.html"){ const resp = await $.post('/mobile/wakeshome/review/appraisal/doSubmit', formData) if (resp.code === 0) { await this.getCommentById(); - window.location.href = '/mobile/wakeshome/review/appraisal/mine' + vant.Toast.success('操作成功') + setTimeout(()=>{ + window.location.href = '/mobile/wakeshome/review/appraisal/mine' + },500) } }) }, async showAssess() { this.$refs['addForm'].validate().then(async () => { - let score = 0; - await this.assignment(); + // let score = 0; if (this.commentatorData.assessmentMode === 1) { + await this.assignment(); + let source = 0; // 标准分 + let resultScore = 0; // 评议分 + this.bzList.forEach(v => { + source += Number(v.score) + resultScore += Number(v.resultScore) + }) + const result = (resultScore / source) * 100 + + if (result >= 80) { + this.reviewResult = '满意' + } else if (result >= 60 && result <= 79) { + this.reviewResult = '基本满意' + } else { + this.reviewResult = '不满意' + } + + /*this.bzList.forEach(v => { score += Number(v.resultScore) }) if (score >= Number(80)) { @@ -308,12 +328,13 @@ layout("/mobile/platform.html"){ this.reviewResult = '基本满意' } else { this.reviewResult = '不满意' - } - console.log(score) + }*/ + console.log(source) + console.log(resultScore) console.log(this.reviewResult) vant.Dialog.alert({ title: '测评结果', - message: '您的测评分数为【' + score + "】分,测评结果为【" + this.reviewResult + "】", + message: '您的测评分数为【' + resultScore + "】分,测评结果为【" + this.reviewResult + "】", confirmButtonColor: '#1867b0' }) } else if (this.commentatorData.assessmentMode === 2) { diff --git a/src/main/resources/views/platform/trainEdu/statistics/video.html b/src/main/resources/views/platform/trainEdu/statistics/video.html index 7280bfa..dfcd668 100644 --- a/src/main/resources/views/platform/trainEdu/statistics/video.html +++ b/src/main/resources/views/platform/trainEdu/statistics/video.html @@ -34,7 +34,11 @@ layout("/layouts/platform.html"){ - + + + - - - + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + @@ -155,6 +159,9 @@ layout("/layouts/platform.html"){ } }, viewPageNumberChange(val) { + }, + exportXlsx() { + window.open(loc() + '/exportXlsx?albumId=' + this.pageForm.albumId) } }, async created() { diff --git a/src/main/resources/views/platform/trainSingUp/manage/activity.html b/src/main/resources/views/platform/trainSingUp/manage/activity.html index c6fe0dd..aa7ea6b 100644 --- a/src/main/resources/views/platform/trainSingUp/manage/activity.html +++ b/src/main/resources/views/platform/trainSingUp/manage/activity.html @@ -105,13 +105,40 @@ layout("/layouts/platform.html"){ - + + + @@ -164,6 +191,8 @@ layout("/layouts/platform.html"){ + +