bug优化

This commit is contained in:
Paidax
2025-11-12 10:47:42 +08:00
parent 3d7a081eb3
commit 3008813cd1
13 changed files with 156 additions and 45 deletions
@@ -1,15 +1,3 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
*/
package io.v.nutz.base.utils; package io.v.nutz.base.utils;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
@@ -26,7 +26,7 @@ public class ExpressSelectUtil {
private static final String URL = "https://eolink.o.apispace.com/wlgj1/paidtobuy_api/trace_search"; private static final String URL = "https://eolink.o.apispace.com/wlgj1/paidtobuy_api/trace_search";
//获取快递公司codeURL //获取快递公司codeURL
private static final String EXPRESS_COMPANY_URL = "https://eolink.o.apispace.com/wlgj1/paidtobuy_api/mail_discern"; private static final String EXPRESS_COMPANY_URL = "https://eolink.o.apispace.com/wlgj1/paidtobuy_api/mail_discern";
private static final String TOKEN = "vvzpibv7yzp2l89noyp8ut7tdjqqf1fq"; private static final String TOKEN = "zjklldtxynqrusiedjm1meno83bfk5id";
public JSONObject getExpressInfo(String mailNo, String tel) { public JSONObject getExpressInfo(String mailNo, String tel) {
@@ -176,6 +176,7 @@ public class ActivityUnionManageController {
if (tissue.getIsEnrollSystem()) { if (tissue.getIsEnrollSystem()) {
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity(); Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
sysHomeActivity.setEnable(ShiroUtil.hasAnyRoles("sysadmin,A06"));
activitySchoolService.dao().insertOrUpdate(sysHomeActivity); activitySchoolService.dao().insertOrUpdate(sysHomeActivity);
} }
@@ -240,6 +241,11 @@ public class ActivityUnionManageController {
tissue.setState(3); tissue.setState(3);
} }
activityTissueService.doEdit(tissue); activityTissueService.doEdit(tissue);
if (tissue.getIsEnrollSystem()) {
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
activitySchoolService.dao().insertOrUpdate(sysHomeActivity);
}
return null; return null;
} }
@@ -248,6 +254,7 @@ public class ActivityUnionManageController {
@RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR) @RequiresPermissions(value = {"activity.union.info", "activity.club.info", "activity.school.info2"}, logical = Logical.OR)
public Object doDelete(String id) { public Object doDelete(String id) {
activityTissueService.doDelete(id); activityTissueService.doDelete(id);
activityTissueService.dao().delete(Sys_home_activity.class, id);
return null; return null;
} }
@@ -330,6 +337,7 @@ public class ActivityUnionManageController {
u.unionname, u.unionname,
u.sex, u.sex,
u.mobile, u.mobile,
u.idcard,
atp.applyDateTime, atp.applyDateTime,
IF(atp.isSign = 1, '已签到', '未签到') AS signState, IF(atp.isSign = 1, '已签到', '未签到') AS signState,
signTime signTime
@@ -348,14 +356,17 @@ public class ActivityUnionManageController {
ActivityTissue tissue = tissuePersonService.dao().fetch(ActivityTissue.class, Cnd.where("id", "=", id)); ActivityTissue tissue = tissuePersonService.dao().fetch(ActivityTissue.class, Cnd.where("id", "=", id));
List<ActivityTissuePerson> tissuePeople = tissuePersonService.listEntity(sql); List<NutMap> tissuePeople = tissuePersonService.listMap(sql);
List<ExcelExportEntity> entityList = new ArrayList<>(); List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("姓名", "userName", 20)); entityList.add(new ExcelExportEntity("姓名", "username", 20));
entityList.add(new ExcelExportEntity("工号", "loginName", 20)); entityList.add(new ExcelExportEntity("工号", "loginname", 20));
entityList.add(new ExcelExportEntity("性别", "sex", 20)); entityList.add(new ExcelExportEntity("性别", "sex", 20));
entityList.add(new ExcelExportEntity("联系方式", "mobile", 20)); entityList.add(new ExcelExportEntity("联系方式", "mobile", 20));
entityList.add(new ExcelExportEntity("单位", "unitName", 20)); if (ShiroUtil.hasAnyRoles("sysadmin, A06")) {
entityList.add(new ExcelExportEntity("工会", "unionName", 20)); entityList.add(new ExcelExportEntity("身份证号", "idcard", 30));
}
entityList.add(new ExcelExportEntity("单位", "unitname", 20));
entityList.add(new ExcelExportEntity("工会", "unionname", 20));
if (isSign) { if (isSign) {
entityList.add(new ExcelExportEntity("签到状态", "singState", 20)); entityList.add(new ExcelExportEntity("签到状态", "singState", 20));
entityList.add(new ExcelExportEntity("签到时间", "signTime", 20)); entityList.add(new ExcelExportEntity("签到时间", "signTime", 20));
@@ -532,18 +532,20 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
// 变更记录 // 变更记录
List<NutMap> changeList = new ArrayList<>(); List<NutMap> changeList = new ArrayList<>();
for (String fieldName : allowChangeFieldNames) { for (String fieldName : allowChangeFieldNames) {
if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) { // if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) {
continue; // continue;
} // }
//
if (List.of("education", "campus", "academicDegree").contains(fieldName)) { // if (List.of("education", "campus", "academicDegree").contains(fieldName)) {
if (StrUtil.isNotBlank(sourceMap.getString(fieldName, "")) && StrUtil.isBlank(newMap.getString(fieldName, ""))) { // if (StrUtil.isNotBlank(sourceMap.getString(fieldName, "")) && StrUtil.isBlank(newMap.getString(fieldName, ""))) {
continue; // continue;
} // }
} // }
if (List.of("unitId", "userState", "personType").contains(fieldName)) {
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList); memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
} }
}
if (Lang.isEmpty(changeList)) { if (Lang.isEmpty(changeList)) {
return null; return null;
} }
@@ -587,17 +589,19 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
NutMap sourceMap = Lang.obj2nutmap(user); NutMap sourceMap = Lang.obj2nutmap(user);
List<NutMap> changeList = new ArrayList<>(); List<NutMap> changeList = new ArrayList<>();
for (String fieldName : allowChangeFieldNames) { for (String fieldName : allowChangeFieldNames) {
if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) { // if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) {
continue; // continue;
} // }
//
if (List.of("education", "campus", "academicDegree").contains(fieldName)) { // if (List.of("education", "campus", "academicDegree").contains(fieldName)) {
if (StrUtil.isBlank(sourceMap.getString(fieldName, "")) && StrUtil.isNotBlank(newMap.getString(fieldName, ""))) { // if (StrUtil.isBlank(sourceMap.getString(fieldName, "")) && StrUtil.isNotBlank(newMap.getString(fieldName, ""))) {
continue; // continue;
} // }
} // }
if (List.of("unitId", "userState", "personType").contains(fieldName)) {
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList); memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
} }
}
if (Lang.isEmpty(changeList)) { if (Lang.isEmpty(changeList)) {
return null; return null;
} }
@@ -621,7 +625,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
* @param changeTypes * @param changeTypes
*/ */
private void commonCompareChange(UserSource source, Sys_user user, List<String> changeTypes){ private void commonCompareChange(UserSource source, Sys_user user, List<String> changeTypes){
changeTypes.add(MemberChangeType.BASIC_CHANGE.getType()); // changeTypes.add(MemberChangeType.BASIC_CHANGE.getType());
if (!ObjectUtil.equals(user.getUserState(), source.getUserState())) { if (!ObjectUtil.equals(user.getUserState(), source.getUserState())) {
List<MemberChangeType> list = Arrays.stream(MemberChangeType.values()) List<MemberChangeType> list = Arrays.stream(MemberChangeType.values())
@@ -273,7 +273,10 @@ public class ProposalUnderTakeSummaryController {
LEFT JOIN sys_user u ON u.id = sur.userId LEFT JOIN sys_user u ON u.id = sur.userId
$condition $condition
"""); """);
sql.setParam("leaderRoleId", Roles.IN_CHARGE_LEADER); // 分管校领导
// sql.setParam("leaderRoleId", Roles.IN_CHARGE_LEADER);
// 承办单位负责人
sql.setParam("leaderRoleId", Roles.CONTRACTOR_PERSON);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.and("pu.id", "in", unitIds); cnd.and("pu.id", "in", unitIds);
cnd.groupBy("pu.id"); cnd.groupBy("pu.id");
@@ -287,7 +290,8 @@ public class ProposalUnderTakeSummaryController {
sbf.append(unitMap.getString("unitName")); sbf.append(unitMap.getString("unitName"));
sbf.append("&nbsp;&nbsp;"); sbf.append("&nbsp;&nbsp;");
sbf.append("<i class='el-icon-user-solid'></i>"); sbf.append("<i class='el-icon-user-solid'></i>");
sbf.append(StrUtil.isBlank(unitMap.getString("username")) ? "未分配校领导" : unitMap.getString("username")); // sbf.append(StrUtil.isBlank(unitMap.getString("username")) ? "未分配校领导" : unitMap.getString("username"));
sbf.append(StrUtil.isBlank(unitMap.getString("username")) ? "未分配承办单位负责人" : unitMap.getString("username"));
sbf.append("&nbsp;&nbsp;"); sbf.append("&nbsp;&nbsp;");
sbf.append("<i class='el-icon-phone'></i>"); sbf.append("<i class='el-icon-phone'></i>");
sbf.append(StrUtil.isBlank(unitMap.getString("mobile")) ? "暂无联系方式" : unitMap.getString("mobile")); sbf.append(StrUtil.isBlank(unitMap.getString("mobile")) ? "暂无联系方式" : unitMap.getString("mobile"));
@@ -166,6 +166,7 @@ public class MemberApplyBranchUnionAuditController {
Sys_user sysUser = new Sys_user(); Sys_user sysUser = new Sys_user();
BeanUtil.copyProperties(record, sysUser); BeanUtil.copyProperties(record, sysUser);
sysUser.setId(user.getId()); sysUser.setId(user.getId());
sysUser.setWelfareMember(1);
dao.updateIgnoreNull(sysUser); dao.updateIgnoreNull(sysUser);
// 还要设置会员角色 // 还要设置会员角色
@@ -496,10 +496,10 @@ public class MemberInquireIntegrateController {
} }
if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) { if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) {
cnd.and("unionid", "=", Vi.getUnionId()); cnd.and("u.unionid", "=", Vi.getUnionId());
} }
cnd.asc("unitcode"); cnd.asc("u.unitcode");
cnd.asc("unioncode"); cnd.asc("u.unioncode");
cnd.asc("memberJoinTime"); cnd.asc("memberJoinTime");
cnd.groupBy("u.id"); cnd.groupBy("u.id");
sql.setCondition(cnd); sql.setCondition(cnd);
@@ -166,6 +166,7 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
} }
// 杭医特有,其他学校请删除 // 杭医特有,其他学校请删除
middleTable.setPreparedBy("会员"); middleTable.setPreparedBy("会员");
middleTable.setWelfareMember(1);
} else { } else {
if (middleTable.getIsExitActivityMemberScope() != null && middleTable.getIsExitActivityMemberScope()) { if (middleTable.getIsExitActivityMemberScope() != null && middleTable.getIsExitActivityMemberScope()) {
dao().clear(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1)); dao().clear(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
@@ -173,6 +174,7 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
dao().clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER)); dao().clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
// 杭医特有,其他学校请删除 // 杭医特有,其他学校请删除
middleTable.setPreparedBy("教职工"); middleTable.setPreparedBy("教职工");
middleTable.setWelfareMember(0);
} }
// 加入福利会员 是否加入福利项目 // 加入福利会员 是否加入福利项目
@@ -748,4 +748,86 @@ public class WelfareListController {
return null; return null;
} }
@At
@Ok("void")
@RequiresPermissions("welfare.list.mange")
public void doExportWelfareBySearch(@Param(value = "searchName",required = false) String searchName,
@Param(value = "searchKeyWord",required = false) String searchKeyWord,
@Param(value = "projectId",required = false) String projectId,
@Param(value = "unionId",required = false) String unionId,
@Param(value = "units",required = false) String[] units,
@Param(value = "threeUnitId",required = false) String threeUnitId,
@Param(value = "isChoose",required = false) Integer isChoose,
HttpServletResponse response){
Sql sql = Sqls.create("""
SELECT
CASE
WHEN
wus.selectUserId IS NOT NULL THEN
1 ELSE 0
END AS isChoose,
wl.id,
wl.username,
wl.loginname,
wl.personType,
wl.userState,
wl.unionname,
wl.unitname,
wl.listId,
wus.userSign,
wus.courierNumber,
wus.receiveAddress,
GROUP_CONCAT( DISTINCT wuso.optionName, IF(wus.selectSpecs is not null, (CONCAT('—规格:', wus.selectSpecs)), ''), '', wus.selectNum, '份)' ) AS gist_list
FROM
view_welfare_list wl
LEFT JOIN welfare_project_user_selection wus ON wus.welfareId = wl.projectId
AND wus.selectUserId = wl.id
LEFT JOIN welfare_project_subject_option wuso ON wus.selectOptionId = wuso.id
LEFT JOIN welfare_courier_number wcn on wcn.selectUserId = wl.id
LEFT JOIN welfare_project wp ON wp.id = wus.welfareId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("wl.projectId", "=", projectId);
cnd.andEX("wl.unionid", "=", unionId);
cnd.andEX("wl.unitid", "in", units);
if (isChoose != null) {
if (isChoose.equals(1)) {
cnd.and("wus.selectUserId", "is not", null);
} else if (isChoose.equals(2)) {
cnd.and("wus.selectUserId", "is", null);
}
}
cnd.groupBy("wl.id");
cnd.asc("wl.unitCode");
cnd.asc("wl.loginname");
if (!ShiroUtil.hasAnyRoles("sysadmin")) {
cnd.and("wl.unionid", "=", Vi.getUnionId());
}
sql.setCondition(cnd);
List<NutMap> list = welfareListService.listMap(sql);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("工号", "loginname", 20));
exportEntities.add(new ExcelExportEntity("姓名", "username", 20));
exportEntities.add(new ExcelExportEntity("工会", "unionname", 20));
exportEntities.add(new ExcelExportEntity("单位", "unitname", 20));
exportEntities.add(new ExcelExportEntity("科室", "threeUnitName", 20));
exportEntities.add(new ExcelExportEntity("所选福利", "gist_list", 20));
exportEntities.add(new ExcelExportEntity("收货地址", "receiveAddress", 20));
try {
ViTool.excelResponse(response,"福利名单.xls");
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), exportEntities, list);
workbook.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
} }
@@ -858,6 +858,9 @@ layout("/mobile/platform.html"){
let msg = '您选择了【' + this.choose.courseName + (flag ? this.formData.courseTimeName : '') + '】\n的报名,是否确认?' let msg = '您选择了【' + this.choose.courseName + (flag ? this.formData.courseTimeName : '') + '】\n的报名,是否确认?'
if (this.choose.id === "76619f05ae904324930747087c408b5e") {
msg = "本人已认真阅读本次活动《安全告知书》,并确认自身身体状况可以参与活动方案提示的相关内容"
}
vant.Dialog.confirm({ vant.Dialog.confirm({
title: '温馨提示', title: '温馨提示',
message: msg, message: msg,
@@ -701,6 +701,7 @@
signUpMethod: [{required: true, message: '必填', trigger: ['blur', 'change']}], signUpMethod: [{required: true, message: '必填', trigger: ['blur', 'change']}],
address: [{required: true, message: '必填', trigger: ['blur', 'change']}], address: [{required: true, message: '必填', trigger: ['blur', 'change']}],
plannedDate: [{required: true, message: '必填', trigger: ['blur', 'change']}], plannedDate: [{required: true, message: '必填', trigger: ['blur', 'change']}],
cover: [{required: true, message: '必填', trigger: ['blur', 'change']}],
}, },
userColumns: [ userColumns: [
{prop: 'userName', label: '姓名'}, {prop: 'userName', label: '姓名'},
@@ -699,7 +699,10 @@ layout("/layouts/platform.html"){
} }
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
if (valid) { if (valid) {
const msg = '您确认要提交' + this.choose.courseName + '的报名吗?' let msg = '您确认要提交' + this.choose.courseName + '的报名吗?'
if (this.choose.id === "76619f05ae904324930747087c408b5e") {
msg = "本人已认真阅读本次活动《安全告知书》,并确认自身身体状况可以参与活动方案提示的相关内容"
}
this.$confirm(msg, '提示', { this.$confirm(msg, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@@ -267,13 +267,13 @@ layout("/layouts/platform.html"){
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}"> v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}">
批量领取 批量领取
</el-button>--> </el-button>-->
<el-button :disabled="pageFormProjectType!==3" <!--<el-button :disabled="pageFormProjectType!==3"
@click="doExcelByOptionId" @click="doExcelByOptionId"
icon="el-icon-printer" size="small" icon="el-icon-printer" size="small"
type="primary" type="primary"
v-if="judgmentAuthority"> v-if="judgmentAuthority">
导出报销表 导出报销表
</el-button> </el-button>-->
<!--<el-button :disabled="pageFormProjectType!==3" <!--<el-button :disabled="pageFormProjectType!==3"
@click="reimbursementDialog=true" @click="reimbursementDialog=true"
icon="el-icon-printer" size="small" icon="el-icon-printer" size="small"
@@ -313,6 +313,9 @@ layout("/layouts/platform.html"){
type="primary" type="primary"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}">添加 v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}">添加
</el-button>--> </el-button>-->
<el-button :disabled="!pageForm.projectId" type="primary" size="small"
@click="doExportWelfareBySearch">导出名单
</el-button>
</template> </template>
</table-tool> </table-tool>
@@ -827,6 +830,15 @@ layout("/layouts/platform.html"){
'courier-number-info': httpVueLoader('/components/welfare/CourierNumberInfo.vue?v=' + new Date().getTime()) 'courier-number-info': httpVueLoader('/components/welfare/CourierNumberInfo.vue?v=' + new Date().getTime())
}, },
methods: { methods: {
doExportWelfareBySearch(){
window.open(loc() + '/doExportWelfareBySearch?searchName=' + this.pageForm.searchName +
'&searchKeyWord=' + this.pageForm.searchKeyword +
'&projectId=' + this.pageForm.projectId +
'&unionId=' + this.pageForm.welfareUnit +
'&threeUnitId=' + this.pageForm.threeUnitId +
'&units=' + (this.pageForm.units ? JSON.stringify(this.pageForm.units) : null) +
"&isChoose=" + this.pageForm.isChoose)
},
async sendMsg(){ async sendMsg(){
if (!this.pageForm.projectId) { if (!this.pageForm.projectId) {
this.$message.warning('请选择福利项目') this.$message.warning('请选择福利项目')