团队赛队员位次比值配置

main
zhc077 3 months ago
parent 67ed396f1c
commit cec63755e6
  1. 64
      jeecg-boot-master/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/annualCompPoint/entity/AnnualCompPoint.java
  2. 28
      jeecg-boot-master/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/annualScore/service/impl/PersonalCompScoreServiceImpl.java
  3. 9
      jeecg-boot-master/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/teamseq/controller/TeamSeqController.java
  4. 61
      jeecg-boot-master/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/teamseq/entity/TeamSeq.java
  5. 228
      jeecgboot-vue3-master/src/views/annualCompPoint/committee/components/AnnualCompPointForm.vue

@ -273,68 +273,20 @@ public class AnnualCompPoint implements Serializable {
/** /**
* 第1序 * 位次
*/ */
@ApiModelProperty(value = "第1序号")
@TableField(exist = false) @TableField(exist = false)
private Integer teamSeqFirst;
/**
* 第1序号比值
*/
@TableField(exist = false)
@ApiModelProperty(value = "第1序号比值")
private Integer teamSeqFirstVal;
/**
* 第2序号
*/
@TableField(exist = false)
@ApiModelProperty(value = "第1序号")
private Integer teamSeqSecond;
/**
* 第2序号比值
*/
@ApiModelProperty(value = "第2序号比值")
@TableField(exist = false)
private Integer teamSeqSecondVal;
/**
* 第3序号
*/
@ApiModelProperty(value = "第3序号")
@TableField(exist = false)
private Integer teamSeqThird;
/**
* 第3序号比值
*/
@ApiModelProperty(value = "第3序号比值")
@TableField(exist = false)
private Integer teamSeqThirdVal;
@Excel(name = "队员在队伍中的位次序号", width = 15)
@ApiModelProperty(value = "队员在队伍中的位次序号")
private Integer teamSeq;
/** /**
* 第4序号 * 位次号比值
*/
@ApiModelProperty(value = "第4序号")
@TableField(exist = false)
private Integer teamSeqFourth;
/**
* 第4序号比值
*/ */
@ApiModelProperty(value = "第4序号比值")
@TableField(exist = false) @TableField(exist = false)
private Integer teamSeqFourthVal;
/** @Excel(name = "队员在队伍中的位次序号比值", width = 15)
* 第5序号 @ApiModelProperty(value = "队员在队伍中的位次序号比值")
*/ private Integer teamSeqVal;
@ApiModelProperty(value = "第5序号")
@TableField(exist = false)
private Integer teamSeqFifth;
/**
* 第5序号比值
*/
@ApiModelProperty(value = "第5序号比值")
@TableField(exist = false)
private Integer teamSeqFifthVal;
} }

@ -39,6 +39,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/** /**
* @Description: 个人比赛积分 * @Description: 个人比赛积分
@ -174,7 +175,8 @@ public class PersonalCompScoreServiceImpl extends ServiceImpl<PersonalCompScoreM
}*/ }*/
//modify by zhc 8.23 //modify by zhc 8.23
score.set(ComputeUtils.mul2(baseScore, this.covertVal(annualCompPoint, e))); List<TeamSeq> seqList = iTeamSeqService.list(new LambdaQueryWrapper<TeamSeq>().eq(TeamSeq::getPointId, annualCompPoint.getId()));
score.set(ComputeUtils.mul2(baseScore, this.covertVal(seqList, e)));
PersonalCompScore bean = new PersonalCompScore(); PersonalCompScore bean = new PersonalCompScore();
bean.setAnnualCompId(annualCompId); bean.setAnnualCompId(annualCompId);
bean.setAnnualCompP(annualCompPoint.getId()); bean.setAnnualCompP(annualCompPoint.getId());
@ -228,27 +230,11 @@ public class PersonalCompScoreServiceImpl extends ServiceImpl<PersonalCompScoreM
* @author: z.h.c * @author: z.h.c
* @date: 24/8/23 10:00 * @date: 24/8/23 10:00
*/ */
double covertVal(AnnualCompPoint annualCompPoint, TeamManagement en) { double covertVal(List<TeamSeq> teamSeq, TeamManagement en) {
TeamSeq teamSeq = iTeamSeqService.getById(annualCompPoint.getId());
Integer weightVal = 100; Integer weightVal = 100;
if (!ObjectUtils.isEmpty(teamSeq)) { if (!ObjectUtils.isEmpty(teamSeq) && !ObjectUtils.isEmpty(en.getTeamSeq())) {
switch (en.getTeamSeq()) { List<TeamSeq> seqSet = teamSeq.stream().filter(b -> b.getTeamSeq() == en.getTeamSeq()).collect(Collectors.toList());
case 1: weightVal = seqSet.get(0).getTeamSeqVal();
weightVal = teamSeq.getTeamSeqFifthVal();
break;
case 2:
weightVal = teamSeq.getTeamSeqSecondVal();
break;
case 3:
weightVal = teamSeq.getTeamSeqThirdVal();
break;
case 4:
weightVal = teamSeq.getTeamSeqFourthVal();
break;
case 5:
weightVal = teamSeq.getTeamSeqFifthVal();
break;
}
} }
double val = ComputeUtils.div2(new Double(weightVal), ONE_HUNDRED); double val = ComputeUtils.div2(new Double(weightVal), ONE_HUNDRED);
return val; return val;

@ -21,7 +21,9 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Description: 团队赛队员积分计算配置 * @Description: 团队赛队员积分计算配置
@ -61,8 +63,11 @@ public class TeamSeqController extends JeecgController<TeamSeq, ITeamSeqService>
@ApiOperation(value = "团队赛队员积分计算配置-分页列表查询", notes = "团队赛队员积分计算配置-分页列表查询") @ApiOperation(value = "团队赛队员积分计算配置-分页列表查询", notes = "团队赛队员积分计算配置-分页列表查询")
@GetMapping(value = "/listByPointId") @GetMapping(value = "/listByPointId")
public Result<List<TeamSeq>> queryPageList(String pointId) { public Result<Object> queryPageList(String pointId) {
return Result.OK(teamSeqService.list(new LambdaQueryWrapper<TeamSeq>().eq(TeamSeq::getPointId,pointId))); List<TeamSeq> list = teamSeqService.list(new LambdaQueryWrapper<TeamSeq>().eq(TeamSeq::getPointId, pointId));
Map<String,Object> map = new LinkedHashMap<>();
map.put("records",list);
return Result.OK(map);
} }
/** /**

@ -68,61 +68,16 @@ public class TeamSeq implements Serializable {
@ApiModelProperty(value = "年度比赛项目id") @ApiModelProperty(value = "年度比赛项目id")
private String pointId; private String pointId;
/**
* 第1序号
*/
@Excel(name = "第1序号", width = 15)
@ApiModelProperty(value = "第1序号")
private Integer teamSeqFirst;
/**
* 第1序号比值
*/
@Excel(name = "第1序号比值", width = 15)
@ApiModelProperty(value = "第1序号比值")
private Integer teamSeqFirstVal;
/**
* 第2序号
*/
@ApiModelProperty(value = "第1序号")
private Integer teamSeqSecond;
/**
* 第2序号比值
*/
@ApiModelProperty(value = "第2序号比值")
private Integer teamSeqSecondVal;
/**
* 第3序号
*/
@ApiModelProperty(value = "第3序号")
private Integer teamSeqThird;
/**
* 第3序号比值
*/
@ApiModelProperty(value = "第3序号比值")
private Integer teamSeqThirdVal;
/**
* 第4序号
*/
@ApiModelProperty(value = "第4序号")
private Integer teamSeqFourth;
/**
* 第4序号比值
*/
@ApiModelProperty(value = "第4序号比值")
private Integer teamSeqFourthVal;
/** /**
* 第5序 * 位次号
*/ */
@ApiModelProperty(value = "第5序号") @Excel(name = "队员在队伍中的位次序号", width = 15)
private Integer teamSeqFifth; @ApiModelProperty(value = "队员在队伍中的位次序号")
private Integer teamSeq;
/** /**
* 第5序号比值 * 位次号比值
*/ */
@ApiModelProperty(value = "第5序号比值") @Excel(name = "队员在队伍中的位次序号比值", width = 15)
private Integer teamSeqFifthVal; @ApiModelProperty(value = "队员在队伍中的位次序号比值")
private Integer teamSeqVal;
} }

@ -92,98 +92,22 @@
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="12" v-if="formData.entryForm==='Y'">
<a-form-item label="队伍人数" v-bind="validateInfos.teamNumber">
<a-input-number v-model:value="formData.teamNumber" placeholder="请输入队伍人数"
style="width: 100%" :disabled="disabled"/>
<a-button @click="showModel">队伍比值配置</a-button>
</a-form-item>
</a-col>
<a-col :span="12" v-if="formData.entryForm==='Y'"> <a-col :span="12" v-if="formData.entryForm==='Y'">
<a-form-item label="指导老师人数" v-bind="validateInfos.teacherNumber"> <a-form-item label="指导老师人数" v-bind="validateInfos.teacherNumber">
<a-input-number v-model:value="formData.teacherNumber" placeholder="请输入指导老师人数" <a-input-number v-model:value="formData.teacherNumber" placeholder="请输入指导老师人数"
style="width: 100%" :disabled="disabled"/> style="width: 100%" :disabled="disabled"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> <a-col :span="12" v-if="formData.entryForm==='Y'">
<a-form-item label="队伍人数" v-bind="validateInfos.teamNumber">
<!-- <a-input-number v-model:value="formData.teamNumber" placeholder="请输入队伍人数"
<a-row v-if="formData.entryForm ==='Y'"> style="width: 100%" :disabled="disabled"/>
<a-col :span="12"> <a-button @click="showModel" type="primary">配置队伍位次比值</a-button>
<a-form-item label="队伍第1编号" >
<a-input-number v-model:value="formData.teamSeqFirst" placeholder="请输入队伍第1编号" style="width: 100%" disabled/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="第1编号比值" v-bind="formData.teamSeqFirstVal">
<a-input-number v-model:value="formData.teamSeqFirstVal" placeholder="请输入第1编号比值"
style="width: 100%" />
</a-form-item>
</a-col>
</a-row>
<a-row v-if="formData.entryForm ==='Y'">
<a-col :span="12">
<a-form-item label="队伍第2编号" v-bind="formData.teamSeqSecond">
<a-input-number v-model:value="formData.teamSeqSecond" placeholder="请输入队伍第2编号" style="width: 100%" disabled/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="第2编号比值" v-bind="formData.teamSeqSecondVal">
<a-input-number v-model:value="formData.teamSeqSecondVal" placeholder="请输入第2编号比值"
style="width: 100%" />
</a-form-item>
</a-col>
</a-row>
<a-row v-if="formData.entryForm ==='Y'">
<a-col :span="12">
<a-form-item label="队伍第3编号" v-bind="formData.teamSeqThird">
<a-input-number v-model:value="formData.teamSeqThird" placeholder="请输入队伍第3编号" style="width: 100%" disabled/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="第3编号比值" v-bind="formData.teamSeqThirdVal">
<a-input-number v-model:value="formData.teamSeqThirdVal" placeholder="请输入第3编号比值"
style="width: 100%" />
</a-form-item>
</a-col>
</a-row>
<a-row v-if="formData.entryForm ==='Y'">
<a-col :span="12">
<a-form-item label="队伍第4编号" v-bind="formData.teamSeqFourth">
<a-input-number v-model:value="formData.teamSeqFourth" placeholder="请输入队伍第4编号" style="width: 100%" disabled/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="第4编号比值" v-bind="formData.teamSeqFourthVal">
<a-input-number v-model:value="formData.teamSeqFourthVal" placeholder="请输入第4编号比值"
style="width: 100%" />
</a-form-item>
</a-col>
</a-row>
<a-row v-if="formData.entryForm ==='Y'">
<a-col :span="12">
<a-form-item label="队伍第5编号" v-bind="formData.teamSeqFifth">
<a-input-number v-model:value="formData.teamSeqFifth" placeholder="请输入队伍第5编号" style="width: 100%" disabled/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="第5编号比值" v-bind="formData.teamSeqFifthVal">
<a-input-number v-model:value="formData.teamSeqFifthVal" placeholder="请输入第5编号比值"
style="width: 100%" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
-->
<a-row> <a-row>
<a-col :span="5"> <a-col :span="5">
<a-form-item label="是否报名" v-bind="validateInfos.requireApply" :labelCol="labelCol4" <a-form-item label="是否报名" v-bind="validateInfos.requireApply" :labelCol="labelCol4"
:wrapperCol="wrapperCol4"> :wrapperCol="wrapperCol4">
@ -319,7 +243,8 @@
@register="register" @register="register"
title="比值配置" title="比值配置"
:height="800" :height="800"
@ok="handleOk" :width="800"
:footer="null"
> >
<!-- <div v-for="(item,index) in num" :key="index">--> <!-- <div v-for="(item,index) in num" :key="index">-->
<!-- <a-input-number v-model="item.index"></a-input-number>--> <!-- <a-input-number v-model="item.index"></a-input-number>-->
@ -330,17 +255,18 @@
<!-- <a-button type="primary" @click="setModalProps">从内部修改title</a-button>--> <!-- <a-button type="primary" @click="setModalProps">从内部修改title</a-button>-->
<JVxeTable <JVxeTable
ref="tableRef"
stripe
toolbar toolbar
:toolbarConfig="toolbarConfig"
rowNumber rowNumber
rowSelection rowSelection
rowExpand keepSource
resizable asyncRemove
:maxHeight="480" :height="340"
:loading="loading"
:columns="columns" :columns="columns"
:dataSource="dataSource" :dataSource="dataSource"
@save="handleTableSave" @save="handleTableSave"
@removed="handleTableRemove"
/> />
</BasicModal> </BasicModal>
</template> </template>
@ -364,62 +290,43 @@ const disableSubmit = ref<boolean>(false);
const realForm = ref(); const realForm = ref();
import {JVxeTable} from '/@/components/jeecg/JVxeTable'; import {JVxeTable} from '/@/components/jeecg/JVxeTable';
import {JVxeColumn, JVxeTypes} from '/@/components/jeecg/JVxeTable/types'; import {JVxeColumn, JVxeTypes} from '/@/components/jeecg/JVxeTable/types';
import {result} from "lodash-es";
// //
const loading = ref(false); const loading = ref(false);
//
const pagination = reactive({
//
current: 1,
//
pageSize: 200,
//
pageSizeOptions: ['10', '20', '30', '100', '200'],
// 0
total: 0,
});
// //
const selectedRows = ref<Recordable[]>([]); const selectedRows = ref<Recordable[]>([]);
// //
const dataSource = ref<Recordable[]>([]); const dataSource = ref<Recordable[]>([]);
//
const toolbarConfig = reactive({
// add remove clearSelection
btn: ['add', 'save', 'remove', 'clearSelection'],
});
// //
const columns = ref<JVxeColumn[]>([ const columns = ref<JVxeColumn[]>([
// { key: 'num', title: '', width: 80, type: JVxeTypes.normal }, // { key: 'num', title: '', width: 80, type: JVxeTypes.normal },
{ key: 'teamSeqFirst', title: '序号1', width: 80, type: JVxeTypes.normal }, // { key: 'pointId', title: 'id', width: 80, type: JVxeTypes.hidden,},
{ key: 'teamSeq', title: '位次号', width: 180, type: JVxeTypes.inputNumber,
placeholder: '请输入${title}',
validateRules: [
{
required: true, //
message: '请输入${title}', //
}
],
},
{ {
title: '比值', title: '比值',
key: 'teamSeqFirstVal', key: 'teamSeqVal',
type: JVxeTypes.input, type: JVxeTypes.inputNumber,
width: 180, width: 180,
defaultValue: '', defaultValue: 100,
placeholder: '请输入${title}', placeholder: '请输入${title}',
validateRules: [ validateRules: [
{ {
required: true, // required: true, //
message: '请输入${title}', // message: '请输入${title}', //
},
// {
// pattern: /^[a-z|A-Z][a-z|A-Z\d_-]*$/, //
// message: '线',
// },
// {
// unique: true,
// message: '${title}',
// },
{
handler({cellValue, row, column}, callback, target) {
// cellValue
// callback(flag, message)
// flag = null
// message = 使 message
// target
if (cellValue === 'abc') {
callback(false, '${title}不能是abc') // false =
} else {
callback(true) // true =
} }
},
message: '${title}默认提示',
},
], ],
}, },
]) ])
@ -434,12 +341,11 @@ enum Api {
} }
// //
async function loadData() { function loadData() {
alert(formData.id) // alert(formData.id)
// loading.value = true; // loading.value = true;
// //
await defHttp defHttp.get({
.get({
// //
url: Api.getData, url: Api.getData,
// // // //
@ -448,25 +354,19 @@ async function loadData() {
// pageNo: pagination.current, // pageNo: pagination.current,
// pageSize: pagination.pageSize, // pageSize: pagination.pageSize,
}, },
}) }).then((result) => {
.then((result) => {
// total // total
// pagination.total = result.total; // pagination.total = result.total;
// dataSource // dataSource
dataSource.value = result.records; dataSource.value = result.records;
// //
selectedRows.value = []; selectedRows.value = [];
}) }).finally(() => {
.finally(() => {
// loading // loading
loading.value = false; loading.value = false;
}); });
} }
function handleOk() {
alert("handleOk")
}
function handleTableSave({$table, target}) { function handleTableSave({$table, target}) {
// //
$table.validate().then((errMap) => { $table.validate().then((errMap) => {
@ -474,30 +374,53 @@ function handleTableSave({$table, target}) {
if (!errMap) { if (!errMap) {
// //
let tableData = target.getTableData(); let tableData = target.getTableData();
console.log('当前保存的数据是:', tableData); // console.log('$table', $table);
// console.log('target', target);
console.log('当前保存的数据(tableData)是:', JSON.stringify(tableData));
tableData.forEach(item => {
item.pointId = formData.id
})
// //
let newData = target.getNewData(); // let newData = target.getNewData();
console.log('-- 新增的数据:', newData); // console.log('-- ', newData);
// // for (let itemindex = 0; itemindex < newData.length; itemindex++) {
let deleteData = target.getDeleteData(); // this.$set(jsonObject, newData[itemindex].key+"", newData[itemindex].value+"");
console.log('-- 删除的数据:', deleteData); // }
// //
loading.value = true; // loading.value = true;
defHttp defHttp
.post({ .post({
url: Api.saveAll, url: Api.saveAll,
params: tableData, params: tableData,
}) })
.then(() => { .then(() => {
createMessage.success(`保存成功!`); // createMessage.success(``);
}) })
.finally(() => { .finally(() => {
loading.value = false; // loading.value = false;
}); });
} }
}); });
} }
//
function handleTableRemove(event) {
// event.deleteRows
console.log('待删除的数据: ', event.deleteRows);
// IDID
let deleteIds = event.deleteRows.map((row) => row.id);
console.log('待删除的数据ids: ', deleteIds);
//
loading.value = true;
window.setTimeout(() => {
loading.value = false;
createMessage.success('删除成功');
// confirmRemove()
event.confirmRemove();
}, 1000);
}
const props = defineProps({ const props = defineProps({
// objLevelll: { type: Array, default: () => [] }, // objLevelll: { type: Array, default: () => [] },
formDisabled: {type: Boolean, default: false}, formDisabled: {type: Boolean, default: false},
@ -511,10 +434,7 @@ const [register, {openModal}] = useModal();
// const [register, { closeModal, setModalProps,openModal }] = useModalInner(); // const [register, { closeModal, setModalProps,openModal }] = useModalInner();
const showModel = () => { const showModel = () => {
loadData(); loadData();
openModal() openModal()
// console.log(1111)
} }
let num = ref([ let num = ref([
@ -567,16 +487,6 @@ const formData = reactive<Record<string, any>>({
uploadEndTime: '', uploadEndTime: '',
scoreStartTime: '', scoreStartTime: '',
scoreEndTime: '', scoreEndTime: '',
teamSeqFirst: 1,
teamSeqSecond: 2,
teamSeqThird: 3,
teamSeqFourth: 4,
teamSeqFifth: 5,
teamSeqFifthVal: '',
teamSeqFourthVal: '',
teamSeqThirdVal: '',
teamSeqSecondVal: '',
teamSeqFirstVal: '',
}); });
const {createMessage} = useMessage(); const {createMessage} = useMessage();
const labelCol = ref<any>({xs: {span: 24}, sm: {span: 6}}); const labelCol = ref<any>({xs: {span: 24}, sm: {span: 6}});

Loading…
Cancel
Save