This commit is contained in:
2025-04-30 13:41:57 +08:00
parent baa6f7284a
commit 5ad48c3713
3 changed files with 128 additions and 23 deletions
@@ -1,25 +1,30 @@
package com.budwk.app.module.activity.controller; package com.budwk.app.module.activity.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.module.activity.models.ActGroup; import com.budwk.app.module.activity.models.*;
import com.budwk.app.module.activity.models.Activity;
import com.budwk.app.module.activity.models.ActivityItem;
import com.budwk.app.module.activity.service.ActivityManageService; import com.budwk.app.module.activity.service.ActivityManageService;
import com.budwk.app.module.activity.vo.ActItemScoreVo;
import com.budwk.app.module.activity.vo.page.ActScoreEnterPageForm; import com.budwk.app.module.activity.vo.page.ActScoreEnterPageForm;
import com.budwk.app.module.activity.vo.page.ActSignInUserPageForm; import com.budwk.app.module.activity.vo.page.ActSignInUserPageForm;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql; 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.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap; import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Ok;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@@ -96,9 +101,53 @@ public class ActScoreEnterController {
@SaCheckPermission("activity.scoreEnter") @SaCheckPermission("activity.scoreEnter")
@ApiOperation(value = "获取项目列表", nickname = "/list-item", httpMethod = "GET") @ApiOperation(value = "获取项目列表", nickname = "/list-item", httpMethod = "GET")
public Result listItem(Long activityId) { public Result listItem(Long activityId) {
Sql sql = Sqls.create("""
""");
List<ActivityItem> items = dao.query(ActivityItem.class, Cnd.where(ActivityItem::getActivityId, "=", activityId).asc(ActivityItem::getSort)); List<ActivityItem> items = dao.query(ActivityItem.class, Cnd.where(ActivityItem::getActivityId, "=", activityId).asc(ActivityItem::getSort));
return Result.success(items); return Result.success(items);
} }
@At("/list-item-score/?")
@SaCheckPermission("activity.scoreEnter")
@ApiOperation(value = "获取项目列表", nickname = "/list-item-score", httpMethod = "GET")
public Result listItemScore(Long activityId) {
List<ActItemGroupScore> scoreList = dao.query(ActItemGroupScore.class, Cnd.where(ActItemGroupScore::getActivityId, "=", activityId));
return Result.success(scoreList);
}
@At("/save-score")
@SaCheckPermission("activity.scoreEnter")
@Aop(TransAop.READ_COMMITTED)
@ApiOperation(value = "保存成绩", nickname = "/list-activity", httpMethod = "POST")
public Result saveScore(ActItemScoreVo actItemScoreVo) {
List<ActivityItem> itemList = dao.query(ActivityItem.class, Cnd.where(ActivityItem::getActivityId, "=", actItemScoreVo.getActivityId()));
dao.clear(ActItemGroupScore.class, Cnd.where(ActItemGroupScore::getActivityId, "=", actItemScoreVo.getActivityId()));
List<ActItemGroupScore> activityItemScores = new ArrayList<>();
actItemScoreVo.getData().forEach(item -> {
itemList.forEach(i -> {
ActItemGroupScore score = new ActItemGroupScore();
NutMap data = item.getAs(i.getId().toString(), NutMap.class);
if (Lang.isNotEmpty(data)) {
String totalScore = StrUtil.isNotEmpty(data.getString("totalScore")) ? data.getString("totalScore") : "0";
score.setScore(new BigDecimal(totalScore));
int totalRank = data.getInt("totalRank");
score.setRanking(totalRank);
} else {
score.setScore(new BigDecimal(0));
score.setRanking(0);
}
score.setItemId(i.getId());
score.setActivityId(actItemScoreVo.getActivityId());
score.setGroupId(item.getLong("groupId"));
activityItemScores.add(score);
});
});
dao.insert(activityItemScores);
return Result.success();
}
} }
@@ -0,0 +1,20 @@
package com.budwk.app.module.activity.vo;
import lombok.Data;
import org.nutz.lang.util.NutMap;
import java.util.List;
/**
* @author zhf
* @date 2025/4/30 10:57
* @description
*/
@Data
public class ActItemScoreVo {
// 活动ID
private Long activityId;
private List<NutMap> data;
}
@@ -76,7 +76,8 @@ layout("/layouts/platform_1.html"){
}, },
activityOptions: [], activityOptions: [],
groupOptions: [], groupOptions: [],
itemOptions: [] itemOptions: [],
itemScoreList: []
} }
}, },
computed: { computed: {
@@ -134,7 +135,22 @@ layout("/layouts/platform_1.html"){
async activityChange() { async activityChange() {
await this.listGroup() await this.listGroup()
await this.listItem() await this.listItem()
await this.listItemScore()
this.buildTableData() this.buildTableData()
},
async listItemScore() {
const {
code,
data,
msg
} = await $.get("/platform/activity/scoreEnter/list-item-score/" + this.pageForm.activityId)
if (code === 0) {
this.itemScoreList = data
} else {
this.$message.error(msg)
}
}, },
// 构建表格数据 // 构建表格数据
buildTableData() { buildTableData() {
@@ -144,21 +160,41 @@ layout("/layouts/platform_1.html"){
groupName: group.groupName groupName: group.groupName
} }
this.itemOptions.forEach((item) => { this.itemOptions.forEach((item) => {
let data = this.itemScoreList.find(s => s.groupId === group.id && s.itemId === item.id);
if (data) {
row[item.id] = { row[item.id] = {
totalScore: item.totalScore, totalScore: data.score ? data.score : null,
totalRank: item.totalRank totalRank: data.ranking ? data.ranking : null
} }
} else {
row[item.id] = {
totalScore: null,
totalRank: null
}
}
}) })
return row return row
}) })
console.log(this.tableData)
}, },
// 单元格点击 // 单元格点击
cellClick(row, column) { cellClick(row, column) {
console.log(row, column)
}, },
// 保存成绩 // 保存成绩
saveScore() { saveScore() {
const formData = {
activityId: this.pageForm.activityId,
data: JSON.stringify(this.tableData)
}
$.post("/platform/activity/scoreEnter/save-score", formData).then(async res => {
if (res.code === 0) {
await this.listItemScore()
this.buildTableData()
this.$message.success("保存成功")
} else {
this.$message.error(res.msg)
}
})
console.log(this.tableData) console.log(this.tableData)
} }
}, },