commit
This commit is contained in:
+5
-4
@@ -300,8 +300,9 @@ public class TheRapyRecuperationBaseManagerController {
|
|||||||
listMap.forEach((k, v) -> {
|
listMap.forEach((k, v) -> {
|
||||||
SysHoliday sysHoliday = v.get(0);
|
SysHoliday sysHoliday = v.get(0);
|
||||||
Date date = DateUtil.parse(sysHoliday.getDay());
|
Date date = DateUtil.parse(sysHoliday.getDay());
|
||||||
Date previousDay = DateUtil.offsetDay(date, -1);
|
/*Date previousDay = DateUtil.offsetDay(date, -1);
|
||||||
holidays.add(DateUtil.formatDate(previousDay));
|
holidays.add(DateUtil.formatDate(previousDay));*/
|
||||||
|
holidays.add(DateUtil.formatDate(date));
|
||||||
});
|
});
|
||||||
|
|
||||||
List<Integer> weeks = management.getWeekCheckIn();
|
List<Integer> weeks = management.getWeekCheckIn();
|
||||||
@@ -325,10 +326,10 @@ public class TheRapyRecuperationBaseManagerController {
|
|||||||
while (!currentDate.isAfter(endDate)) {
|
while (!currentDate.isAfter(endDate)) {
|
||||||
// 检查是否为节假日
|
// 检查是否为节假日
|
||||||
String currentDateString = currentDate.format(formatter);
|
String currentDateString = currentDate.format(formatter);
|
||||||
/*if (holidays.contains(currentDateString) && lot.getFilterHolidays()) {
|
if (holidays.contains(currentDateString)) {
|
||||||
currentDate = currentDate.plusDays(1);
|
currentDate = currentDate.plusDays(1);
|
||||||
continue;
|
continue;
|
||||||
}*/
|
}
|
||||||
// 检查是否为需要排除的周几
|
// 检查是否为需要排除的周几
|
||||||
int dayOfWeek = currentDate.getDayOfWeek().getValue() % 7; // 1是周一,7是周日
|
int dayOfWeek = currentDate.getDayOfWeek().getValue() % 7; // 1是周一,7是周日
|
||||||
if (Lang.isNotEmpty(weeks) && !weeks.contains(dayOfWeek)) {
|
if (Lang.isNotEmpty(weeks) && !weeks.contains(dayOfWeek)) {
|
||||||
|
|||||||
@@ -119,6 +119,11 @@ public class TheRapyRecuperationLine extends BaseModel {
|
|||||||
@Comment("成团人数包括家属")
|
@Comment("成团人数包括家属")
|
||||||
private Integer estimatedFamilyNumbers;
|
private Integer estimatedFamilyNumbers;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("最多报名人数")
|
||||||
|
private Integer maxGroupSize;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
@Comment("缩略图")
|
@Comment("缩略图")
|
||||||
|
|||||||
+5
@@ -167,4 +167,9 @@ public class TheRapyRecuperationLineUnionSelect extends BaseModel {
|
|||||||
@Comment("校工会审核id")
|
@Comment("校工会审核id")
|
||||||
private String schoolAuditId;
|
private String schoolAuditId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("最多报名人数")
|
||||||
|
private Integer maxGroupSize;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+42
-3
@@ -540,7 +540,7 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
|
|||||||
//配置信息
|
//配置信息
|
||||||
TheRapyRecuperationConfig config = dao().fetch(TheRapyRecuperationConfig.class);
|
TheRapyRecuperationConfig config = dao().fetch(TheRapyRecuperationConfig.class);
|
||||||
|
|
||||||
if(StrUtil.isNotBlank(loginName) && loginName.startsWith("2025")) {
|
if (StrUtil.isNotBlank(loginName) && loginName.startsWith("2025")) {
|
||||||
return Map.of(false, "抱歉,您是今年新入职,不能报名!");
|
return Map.of(false, "抱歉,您是今年新入职,不能报名!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,10 +591,16 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
|
|||||||
TheRapyRecuperationLine lineInfo = dao().fetch(TheRapyRecuperationLine.class, lineUnionSelect.getLineId());
|
TheRapyRecuperationLine lineInfo = dao().fetch(TheRapyRecuperationLine.class, lineUnionSelect.getLineId());
|
||||||
|
|
||||||
//判断是否工勤线路
|
//判断是否工勤线路
|
||||||
if(lineInfo.getSpecialLine() == true && StrUtil.isNotBlank(user.getRemark()) && !user.getRemark().contains("工勤")) {
|
if (lineInfo.getSpecialLine() == true && StrUtil.isNotBlank(user.getRemark()) && !user.getRemark().contains("工勤")) {
|
||||||
return Map.of(false, "不能报名,此路线为工勤特定线路");
|
return Map.of(false, "不能报名,此路线为工勤特定线路");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//判断人数报满没有
|
||||||
|
Map<Boolean, String> validSignCountMap = validSignCount(enrollInfo, config, lineUnionSelect.getMaxGroupSize(), StrUtil.isBlank(enrollInfo.getId()) ? "add" : "edit");
|
||||||
|
if (validSignCountMap.containsKey(false)) {
|
||||||
|
return validSignCountMap;
|
||||||
|
}
|
||||||
|
|
||||||
TheRapyRecuperationType trrt = regionTypeLineMap.get(lineInfo.getRegionalNature());
|
TheRapyRecuperationType trrt = regionTypeLineMap.get(lineInfo.getRegionalNature());
|
||||||
if (StrUtil.isBlank(enrollInfo.getId()) && StrUtil.isNotBlank(enrollInfo.getTakePartInLineId())) {
|
if (StrUtil.isBlank(enrollInfo.getId()) && StrUtil.isNotBlank(enrollInfo.getTakePartInLineId())) {
|
||||||
//获取标段中的最大费用
|
//获取标段中的最大费用
|
||||||
@@ -704,6 +710,39 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
|
|||||||
return Map.of(true, "验证成功");
|
return Map.of(true, "验证成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<Boolean, String> validSignCount(TheRapyRecuperationEnroll enrollInfo, TheRapyRecuperationConfig config, int maxGroupSize, String type) {
|
||||||
|
int hasSignNumber = 0;//已经报名的人数
|
||||||
|
int currentSignNumber = 1;//当前报名人数,1表示自己,下面的if是加家属人数
|
||||||
|
Cnd cnd = Cnd.where("takePartInLineId", "=", enrollInfo.getTakePartInLineId())
|
||||||
|
.and("stateId", "in", Lang.array(TheRapyRecuperationState.UNIT, TheRapyRecuperationState.LINEUNIT, TheRapyRecuperationState.SCHOOL, TheRapyRecuperationState.PASS))
|
||||||
|
.and("isNormal", "=", true);
|
||||||
|
//如果是修改,排除自己的报名记录
|
||||||
|
if ("edit".equals(type)) {
|
||||||
|
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||||
|
group.or("loginName", "!=", ShiroUtil.getPlatformLoginname());
|
||||||
|
cnd.and(group);
|
||||||
|
}
|
||||||
|
List<TheRapyRecuperationEnroll> enrolls = dao().query(TheRapyRecuperationEnroll.class, cnd);
|
||||||
|
|
||||||
|
//1表示在配置页面的家属配置的是数量,2是家属的List
|
||||||
|
if (config.getFamilyInfo() == 1) {
|
||||||
|
currentSignNumber += enrollInfo.getFamilyNumber() != null ? enrollInfo.getFamilyNumber() : 0;
|
||||||
|
int sum = enrolls.stream().mapToInt(TheRapyRecuperationEnroll::getFamilyNumber).sum();
|
||||||
|
hasSignNumber = enrolls.size() + sum;
|
||||||
|
} else {
|
||||||
|
currentSignNumber += enrollInfo.getCompanionList() != null ? enrollInfo.getCompanionList().size() : 0;
|
||||||
|
List<String> list = enrolls.stream().map(TheRapyRecuperationEnroll::getId).collect(Collectors.toList());
|
||||||
|
List<TheRapyRecuperationEnrollCompanion> companions = dao().query(TheRapyRecuperationEnrollCompanion.class, Cnd.where("trreId", "=", list));
|
||||||
|
hasSignNumber = enrolls.size() + companions.size();
|
||||||
|
}
|
||||||
|
//省外报名限制,不包含家属
|
||||||
|
if ((hasSignNumber + currentSignNumber) > maxGroupSize) {
|
||||||
|
return Map.of(false, "报名人数已满");
|
||||||
|
} else {
|
||||||
|
return Map.of(true, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Map<Boolean, String> validSignTime(TheRapyRecuperationEnroll currentEnroll) {
|
public Map<Boolean, String> validSignTime(TheRapyRecuperationEnroll currentEnroll) {
|
||||||
TheRapyRecuperationConfig config = dao().fetch(TheRapyRecuperationConfig.class, Cnd.NEW());
|
TheRapyRecuperationConfig config = dao().fetch(TheRapyRecuperationConfig.class, Cnd.NEW());
|
||||||
DateTime signUpStartTime = null;
|
DateTime signUpStartTime = null;
|
||||||
@@ -731,7 +770,7 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
|
|||||||
.and("stateId", "=", 2750)
|
.and("stateId", "=", 2750)
|
||||||
.and("YEAR(signingUptime)", "=", DateUtil.thisYear())
|
.and("YEAR(signingUptime)", "=", DateUtil.thisYear())
|
||||||
.and("loginName", "=", loginName));
|
.and("loginName", "=", loginName));
|
||||||
if(count > 0) {
|
if (count > 0) {
|
||||||
return Map.of(false, "一年只能报1次,您已报集中疗休养,请先在我的疗休养中删除,方可报名!");
|
return Map.of(false, "一年只能报1次,您已报集中疗休养,请先在我的疗休养中删除,方可报名!");
|
||||||
}
|
}
|
||||||
//酒店可以一年报2次,查询是否有报第一次
|
//酒店可以一年报2次,查询是否有报第一次
|
||||||
|
|||||||
+3
@@ -186,6 +186,9 @@ public class TheRapyRecuperationLineUnionSelectServiceImpl extends ViServiceImpl
|
|||||||
estimatedCost,
|
estimatedCost,
|
||||||
estimatedFamilyNumbers,
|
estimatedFamilyNumbers,
|
||||||
us.travelAgencyId,
|
us.travelAgencyId,
|
||||||
|
us.maxGroupSize,
|
||||||
|
us.signScope,
|
||||||
|
us.chooseUserList,
|
||||||
signUpMode,
|
signUpMode,
|
||||||
enable,
|
enable,
|
||||||
ta.travelAgencyName
|
ta.travelAgencyName
|
||||||
|
|||||||
@@ -613,7 +613,8 @@ layout("/mobile/platform.html"){
|
|||||||
const afterDateStr = moment(afterDate).format('YYYY-MM-DD')
|
const afterDateStr = moment(afterDate).format('YYYY-MM-DD')
|
||||||
|
|
||||||
if(this.holidays.includes(afterDateStr)) {
|
if(this.holidays.includes(afterDateStr)) {
|
||||||
this.$toast(afterDateStr + '是节假日或前一天,不能选择')
|
this.$toast(afterDateStr + '是节假日,请更换出行时间')
|
||||||
|
this.chooseDate = []
|
||||||
this.$refs.cal.reset(null)
|
this.$refs.cal.reset(null)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,7 +178,12 @@ layout("/layouts/platform.html"){
|
|||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-button @click="openView(row.id)" size="mini" type="primary">查看</el-button>
|
<el-button @click="openView(row.id)" size="mini" type="primary">查看</el-button>
|
||||||
<el-button v-if="[1,2].includes(row.stateId)" @click="openEdit(row.id)" size="mini" type="primary">编辑</el-button>
|
<el-button v-if="[1,2].includes(row.stateId)" @click="openEdit(row.id)" size="mini" type="primary">编辑</el-button>
|
||||||
<el-button v-if="[1,2,3].includes(row.stateId)" @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
<template v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')}">
|
||||||
|
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<el-button v-if="[1,2,3].includes(row.stateId)" @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -341,6 +346,16 @@ layout("/layouts/platform.html"){
|
|||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
|
<el-col :md="12" :sm="24" :xs="24">
|
||||||
|
<el-form-item label="最多报名人数" prop="maxGroupSize">
|
||||||
|
<el-input-number :max="1000"
|
||||||
|
:min="1"
|
||||||
|
:precision="0"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请输入最多报名人数"
|
||||||
|
v-model="formData.maxGroupSize"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :md="12" :sm="24" :xs="24" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')}">
|
<el-col :md="12" :sm="24" :xs="24" v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')}">
|
||||||
<el-form-item label="工勤特定线路" prop="specialLine">
|
<el-form-item label="工勤特定线路" prop="specialLine">
|
||||||
<el-radio-group class="mr0-radio" size="small" v-model="formData.specialLine">
|
<el-radio-group class="mr0-radio" size="small" v-model="formData.specialLine">
|
||||||
@@ -575,6 +590,7 @@ layout("/layouts/platform.html"){
|
|||||||
trafficTools: [{required: false, message: '请输入交通工具', trigger: ['change', 'blur']}],
|
trafficTools: [{required: false, message: '请输入交通工具', trigger: ['change', 'blur']}],
|
||||||
estimatedCost: [{required: false, message: '请输入预计费用', trigger: ['change', 'blur']}],
|
estimatedCost: [{required: false, message: '请输入预计费用', trigger: ['change', 'blur']}],
|
||||||
estimatedFamilyNumbers: [{required: false, message: '请输入成团人数包括家属', trigger: ['change', 'blur']}],
|
estimatedFamilyNumbers: [{required: false, message: '请输入成团人数包括家属', trigger: ['change', 'blur']}],
|
||||||
|
maxGroupSize: [{required: true, message: '请输入最多报名人数', trigger: ['change', 'blur']}],
|
||||||
lotId: [{required: true, message: '请选择标段时间', trigger: ['change', 'blur']}],
|
lotId: [{required: true, message: '请选择标段时间', trigger: ['change', 'blur']}],
|
||||||
openChoose: [{required: true, message: '请选择开放选择', trigger: ['change', 'blur']}],
|
openChoose: [{required: true, message: '请选择开放选择', trigger: ['change', 'blur']}],
|
||||||
travelAgencyPlace: [{required: true, message: '请选择旅行社地点', trigger: ['change', 'blur']}],
|
travelAgencyPlace: [{required: true, message: '请选择旅行社地点', trigger: ['change', 'blur']}],
|
||||||
|
|||||||
@@ -412,6 +412,20 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="最多报名人数">
|
||||||
|
<template slot="label">
|
||||||
|
<span class="text-danger">*</span>
|
||||||
|
最多报名人数
|
||||||
|
</template>
|
||||||
|
<el-form-item :prop="'times.' + $index + '.maxGroupSize'"
|
||||||
|
:rules="[
|
||||||
|
{ required: true, message: '最多报名人数不能为空', trigger: 'blur' },
|
||||||
|
{ pattern: /^[0-9]*$/, message: '最多报名人数格式不正确', trigger: 'blur' }
|
||||||
|
]"
|
||||||
|
label-width="0">
|
||||||
|
<el-input disabled placeholder="请输入最多报名人数" clearable v-model="row.maxGroupSize"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
<!--<el-descriptions-item label="成团人数包括家属">
|
<!--<el-descriptions-item label="成团人数包括家属">
|
||||||
<template slot="label">
|
<template slot="label">
|
||||||
@@ -520,6 +534,9 @@ layout("/layouts/platform.html"){
|
|||||||
<el-descriptions-item label="预计费用(元/人次)">
|
<el-descriptions-item label="预计费用(元/人次)">
|
||||||
{{row.estimatedCost}}
|
{{row.estimatedCost}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="最多报名人数">
|
||||||
|
{{row.maxGroupSize}}
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="是否开启">
|
<el-descriptions-item label="是否开启">
|
||||||
<el-switch
|
<el-switch
|
||||||
disabled
|
disabled
|
||||||
@@ -873,6 +890,7 @@ layout("/layouts/platform.html"){
|
|||||||
estimatedCost: this.lineData.estimatedCost,
|
estimatedCost: this.lineData.estimatedCost,
|
||||||
contact: this.lineData.lineContact,
|
contact: this.lineData.lineContact,
|
||||||
contactPhone: this.lineData.lineContactPhone,
|
contactPhone: this.lineData.lineContactPhone,
|
||||||
|
maxGroupSize: this.lineData.maxGroupSize,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
queryJoinUser(val) {
|
queryJoinUser(val) {
|
||||||
@@ -984,6 +1002,7 @@ layout("/layouts/platform.html"){
|
|||||||
enable: true,
|
enable: true,
|
||||||
minimumGroupSize: this.lineData.minimumGroupSize,
|
minimumGroupSize: this.lineData.minimumGroupSize,
|
||||||
estimatedCost: this.lineData.estimatedCost,
|
estimatedCost: this.lineData.estimatedCost,
|
||||||
|
maxGroupSize: this.lineData.maxGroupSize,
|
||||||
contact: this.lineData.lineContact,
|
contact: this.lineData.lineContact,
|
||||||
contactPhone: this.lineData.lineContactPhone,
|
contactPhone: this.lineData.lineContactPhone,
|
||||||
signScope: [],
|
signScope: [],
|
||||||
|
|||||||
Reference in New Issue
Block a user