commit
This commit is contained in:
+52
-3
@@ -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)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user