From e2f6a9f4b1ab5c0bebf95a87fd585ca4c9ea5364 Mon Sep 17 00:00:00 2001 From: Paidax Date: Tue, 23 Jul 2024 09:52:35 +0800 Subject: [PATCH] commit --- .../io/v/nutz/task/job/jszLotteryJob.java | 80 - .../impl/TaskPlatformServiceImpl.java | 6 + .../io/v/nutz/web/commons/base/Globals.java | 4 +- .../HealthCheckupCampusController.java | 2 +- .../HealthCheckupListController.java | 13 +- .../HealthCheckupSingleController.java | 149 +- .../HealthCheckupHealthSearchController.java | 2 +- .../model/HealthCheckupProject.java | 5 + .../service/HealthCheckupProjectService.java | 2 +- .../impl/HealthCheckupProjectServiceImpl.java | 31 +- .../impl/HealthCheckupSingleServiceImpl.java | 5 +- .../controller/cxtj/JszUniontjController.java | 60 - .../controller/cxtj/JszptphbController.java | 42 - .../cxtj/LeaderboardController.java | 97 -- .../controller/cxtj/UnionRegisterInfoCon.java | 739 --------- .../zhgh/jsz/controller/mobile/JszApiCon.java | 35 - .../controller/mobile/JszFillCheckCon.java | 57 - .../mobile/jszWxStepController.java | 100 -- .../controller/mobile/loginController.java | 77 - .../zhgh/jsz/controller/pc/HdMangeCon.java | 671 --------- .../pc/JszCloudBackUpController.java | 307 ---- .../zhgh/jsz/controller/pc/JszCommonCon.java | 151 -- .../jsz/controller/pc/JszLoginRecordCon.java | 120 -- .../jsz/controller/pc/JszPrizeController.java | 123 -- .../controller/pc/JszStepCountingRankCon.java | 140 -- .../jsz/controller/pc/TkMangeController.java | 178 --- .../controller/pc/stepCountingController.java | 169 --- .../v/nutz/zhgh/jsz/models/JszAwardList.java | 44 - .../io/v/nutz/zhgh/jsz/models/JszWxStep.java | 45 - .../v/nutz/zhgh/jsz/models/Jsz_activity.java | 88 -- .../io/v/nutz/zhgh/jsz/models/Jsz_backup.java | 40 - .../v/nutz/zhgh/jsz/models/Jsz_fillcheck.java | 78 - .../io/v/nutz/zhgh/jsz/models/Jsz_sign.java | 61 - .../io/v/nutz/zhgh/jsz/models/Jsz_type.java | 57 - .../jsz/services/JszFillCheckService.java | 11 - .../zhgh/jsz/services/JszTypeService.java | 8 - .../zhgh/jsz/services/JszWxStepService.java | 36 - .../impl/JszFillCheckServiceImpl.java | 20 - .../jsz/services/impl/JszTypeServiceImpl.java | 19 - .../services/impl/JszWxStepServiceImpl.java | 119 -- .../controller/WelfareAgendaController.java | 2 +- .../controller/WelfareCommonController.java | 104 +- .../WelfareEvaluateStatisticsController.java | 23 +- .../controller/WelfareListController.java | 326 ++-- .../WelfareMemberAdjustmentController.java | 179 +-- ...lfareMemberChangeApplyAuditController.java | 10 +- .../WelfareMemberMangeController.java | 14 +- .../controller/WelfareMineController.java | 16 +- .../WelfareProjectMangeController.java | 49 +- .../WelfareSelfAgentController.java | 2 +- .../WelfareUserChooseController.java | 4 +- .../check/WelfareCheckPersonalController.java | 6 +- .../WelfareMemberCheckSchoolController.java | 4 +- .../WelfareMemberCheckTaskController.java | 7 +- .../WelfareMemberCheckUnionController.java | 130 +- .../statistics/WelfareSingleController.java | 44 +- .../zhgh/welfare/feature/WelfareFeature.java | 6 +- .../handle/WelfareMemberApplyAuditHandle.java | 27 +- .../welfare/mode/CourierNumberExcelMode.java | 13 +- .../zhgh/welfare/mode/WelfareUnitMode.java | 2 +- .../welfare/model/WelfareCourierNumber.java | 76 + .../zhgh/welfare/model/WelfareEvaluate.java | 5 + .../nutz/zhgh/welfare/model/WelfareList.java | 20 +- .../zhgh/welfare/model/WelfareProject.java | 30 - .../model/WelfareProjectSubjectOption.java | 6 - .../welfare/model/WelfareUserSelection.java | 5 +- .../model/template/WelfareExportEntityTc.java | 4 +- .../welfare/service/WelfareListService.java | 6 - .../service/impl/WelfareListServiceImpl.java | 200 +-- .../impl/WelfareMemberServiceImpl.java | 2 +- .../impl/WelfareProjectServiceImpl.java | 2 +- .../impl/WelfareSingleServiceImpl.java | 114 +- .../condolence/CondolenceAgentController.java | 50 +- .../condolence/CondolenceApplyCon.java | 114 +- .../controller/condolence/CondolenceCon.java | 364 +---- .../condolence/CondolenceEcrCon.java | 29 +- .../condolence/CondolenceFrCon.java | 95 +- .../condolence/CondolenceReadCon.java | 412 +++-- .../CondolenceTypeMangeController.java | 14 +- .../condolence/CondolenceUcrCon.java | 104 +- .../condolence/CondolenceVcrCon.java | 92 +- .../condolence/StatisticsController.java | 116 +- .../difficult/DifficultAgentController.java | 24 +- .../controller/difficult/DifficultyApply.java | 60 +- .../difficult/DifficultyApplyList.java | 24 +- .../difficult/ReadingController.java | 279 ++-- .../difficult/SchoolManagerController.java | 77 +- .../difficult/SchoolStandingController.java | 11 +- .../difficult/SchoolViceChairmanCon.java | 10 +- .../difficult/TwoOrganizationController.java | 10 +- .../difficult/UnionChairmanController.java | 91 +- .../controller/difficult/ZgfwKnbfSjdrCon.java | 12 +- .../zgfw/controller/difficult/ZgfwUtil.java | 6 +- .../controller/rxdj/RxdjBeiAnController.java | 2 +- .../controller/rxdj/RxdjPlanController.java | 2 +- .../controller/rxdj/RxdjShController.java | 447 +++++- .../controller/rxdj/RxdjSqController.java | 172 ++- .../controller/rxdj/RxdjSqxxController.java | 237 ++- .../controller/rxdj/RxdjZhcxController.java | 10 +- .../mobile/ZgfwJzgznrxdjMobileController.java | 35 +- .../readingPublicityController.java | 23 +- .../singleChild/reportController.java | 29 +- .../singleChild/schoolUnionController.java | 45 +- .../singleChildAgentController.java | 13 +- .../controller/singleChild/subController.java | 46 +- .../znxx/ZnxxStatisticsController.java | 4 +- .../condolence/CondolenceToDoHandler.java | 223 +-- .../difficult/DifficultToDoHandler.java | 89 +- .../zgfw/handler/rxdj/RxdjToDoHandler.java | 26 +- .../zgfw/model/condolence/Condolence.java | 40 +- .../zgfw/model/condolence/CondolenceType.java | 21 + .../zhgh/zgfw/model/difficult/Zgfw_knbf.java | 7 +- .../io/v/nutz/zhgh/zgfw/model/lxy/Lxy_bm.java | 1 + .../v/nutz/zhgh/zgfw/model/lxy/Lxy_grxx.java | 1 + .../io/v/nutz/zhgh/zgfw/model/lxy/Lxy_hd.java | 1 + .../v/nutz/zhgh/zgfw/model/lxy/Lxy_mefp.java | 1 + .../v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj.java | 55 +- .../zhgh/zgfw/model/rxdj/Fw_rxdj_year.java | 5 + .../zhgh/zgfw/service/CondolenceService.java | 4 +- .../service/impl/CondolenceServiceImpl.java | 89 +- .../service/impl/ZgfwKnbfServiceImpl.java | 34 +- .../zhgh/zgfw/template/rxdj/RxdjTemp.java | 60 + .../static/components/condolence/Info.vue | 297 ++-- .../components/condolence/mobile/common.vue | 199 ++- .../components/member/MemChangeApply.vue | 168 +-- .../components/member/MemChangeRecords.vue | 200 +-- .../static/components/member/MemberCnd.vue | 1 - .../static/components/member/MemberInfo.vue | 99 +- .../components/mobile/mobile/cahd/info.vue | 189 +++ .../mobile/club/mobileClubUserApplyInfo.vue | 124 ++ .../components/mobile/mobile/common/MCard.vue | 50 + .../mobile/mobile/common/MLoading.vue | 89 ++ .../mobile/mobile/common/MTableLoading.vue | 140 ++ .../mobile/mobile/common/TrainDynamicForm.vue | 186 +++ .../mobile/mobile/difficulty/info.vue | 158 ++ .../mobile/member/MobileMemberChangeInfo.vue | 214 +++ .../mobile/mobile/member/MobileMemberInfo.vue | 208 +++ .../components/mobile/mobile/wmhd/info.vue | 247 +++ .../components/plugins/ConditionStructure.vue | 16 +- .../components/plugins/CustomMessage.vue | 91 ++ .../static/components/plugins/DictSelect.vue | 14 +- .../static/components/plugins/ELTabPlus.vue | 210 +++ .../static/components/plugins/EnumSelect.vue | 2 +- .../static/components/plugins/FileUpload.vue | 63 +- .../plugins/MemberUserTableSelect.vue | 16 +- .../components/plugins/QuestionNaire.vue | 49 +- .../static/components/plugins/TextEditor.vue | 7 +- .../components/plugins/UserDataScope.vue | 9 +- .../static/components/plugins/UserScope.vue | 27 +- .../components/plugins/UserTableSelect.vue | 7 +- .../components/welfare/CourierNumberInfo.vue | 87 ++ .../static/components/welfare/Evaluate.vue | 30 + .../components/zgfw/rxdj/mobileRxdj.vue | 125 +- .../static/components/zgfw/rxdj/rxdj.vue | 295 +--- .../static/components/zgfw/rxdj/rxdjEdit.vue | 252 ++++ .../views/mobile/condolence/apply.html | 201 +-- .../views/mobile/condolence/apply_info.html | 2 +- .../views/mobile/condolence/apply_list.html | 15 +- .../views/mobile/condolence/audit_list.html | 2 +- .../views/mobile/condolence/fr_Audit.html | 23 +- .../views/mobile/condolence/school_Audit.html | 52 +- .../views/mobile/condolence/union_Audit.html | 8 +- .../views/mobile/difficulty/apply.html | 19 +- .../views/mobile/difficulty/audit_list.html | 2 +- .../views/mobile/difficulty/school_Audit.html | 7 +- .../views/mobile/difficulty/union_Audit.html | 6 +- .../views/mobile/healthCheckup/checkUp.html | 651 ++++---- .../views/mobile/healthCheckup/list.html | 7 - .../views/mobile/healthCheckup/mine.html | 11 +- .../views/mobile/welfare/list/index.html | 21 +- .../views/mobile/welfare/list/receive.html | 8 +- .../views/mobile/welfare/mine/myWelfare.html | 190 ++- .../healthMange/healthMange.html | 2 +- .../platform/healthCheckup/listMange.html | 142 +- .../platform/healthCheckup/projectMange.html | 14 +- .../healthCheckup/statisticsSingle.html | 210 ++- .../platform/welfare/evaluateStatistics.html | 23 +- .../views/platform/welfare/include/common.js | 18 +- .../platform/welfare/list/ListMange.html | 379 ++--- .../platform/welfare/member/Adjustment.html | 234 ++- .../platform/welfare/member/MemberMange.html | 5 +- .../welfare/member/change/audit/Layout.html | 4 +- .../platform/welfare/member/check/task.html | 4 +- .../platform/welfare/member/check/union.html | 193 ++- .../views/platform/welfare/mine.html | 87 +- .../welfare/project/ProjectMange.html | 200 +-- .../views/platform/welfare/userChoose.html | 27 +- .../platform/zgfw/condolence/TypeMange.html | 145 +- .../views/platform/zgfw/condolence/apply.html | 667 ++++----- .../views/platform/zgfw/condolence/ecr.html | 40 +- .../views/platform/zgfw/condolence/fr.html | 252 +++- .../views/platform/zgfw/condolence/index.html | 656 ++++---- .../views/platform/zgfw/condolence/read.html | 245 +-- .../platform/zgfw/condolence/statistics.html | 341 +++-- .../views/platform/zgfw/condolence/ucr.html | 291 ++-- .../views/platform/zgfw/condolence/vcr.html | 326 ++-- .../views/platform/zgfw/difficulty/apply.html | 547 +------ .../platform/zgfw/difficulty/applylist.html | 237 ++- .../platform/zgfw/difficulty/reading.html | 224 ++- .../zgfw/difficulty/schoolmanager.html | 333 ++--- .../zgfw/difficulty/schoolstanding.html | 21 +- .../zgfw/difficulty/schoolvicechairman.html | 22 +- .../views/platform/zgfw/difficulty/sjdr.html | 4 +- .../zgfw/difficulty/unionchairman.html | 296 ++-- .../views/platform/zgfw/lxy/HdGhbm.html | 1320 +++++++---------- .../views/platform/zgfw/lxy/HdMange.html | 326 ++-- .../views/platform/zgfw/lxy/HdTj.html | 106 +- .../views/platform/zgfw/lxy/HdXghsh.html | 302 ++-- .../views/platform/zgfw/lxy/dialogView.html | 6 + .../views/platform/zgfw/lxy/dialogViewFp.html | 2 +- .../views/platform/zgfw/lxy/dialogViewHd.html | 45 +- .../platform/zgfw/rxdj/apply_include.html | 143 ++ .../views/platform/zgfw/rxdj/fghsh.html | 304 ++-- .../platform/zgfw/rxdj/mobile/rxdj_psms.html | 784 +++------- .../views/platform/zgfw/rxdj/plan.html | 150 +- .../views/platform/zgfw/rxdj/sq.html | 922 +++--------- .../views/platform/zgfw/rxdj/sqxx.html | 209 ++- .../views/platform/zgfw/rxdj/xghsh.html | 1060 ++++--------- .../platform/zgfw/singleChild/report.html | 191 ++- .../platform/zgfw/singleChild/school.html | 10 +- .../views/platform/zgfw/singleChild/sub.html | 26 +- 221 files changed, 12004 insertions(+), 14330 deletions(-) delete mode 100644 src/main/java/io/v/nutz/task/job/jszLotteryJob.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/JszUniontjController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/JszptphbController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/LeaderboardController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/UnionRegisterInfoCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszApiCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszFillCheckCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/jszWxStepController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/loginController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/HdMangeCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCloudBackUpController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCommonCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszLoginRecordCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszPrizeController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszStepCountingRankCon.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/TkMangeController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/controller/pc/stepCountingController.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/JszAwardList.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/JszWxStep.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_activity.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_backup.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_fillcheck.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_sign.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_type.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/services/JszFillCheckService.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/services/JszTypeService.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/services/JszWxStepService.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszFillCheckServiceImpl.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszTypeServiceImpl.java delete mode 100644 src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszWxStepServiceImpl.java create mode 100644 src/main/java/io/v/nutz/zhgh/welfare/model/WelfareCourierNumber.java create mode 100644 src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_bm.java create mode 100644 src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_grxx.java create mode 100644 src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_hd.java create mode 100644 src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_mefp.java create mode 100644 src/main/java/io/v/nutz/zhgh/zgfw/template/rxdj/RxdjTemp.java create mode 100644 src/main/resources/static/components/mobile/mobile/cahd/info.vue create mode 100644 src/main/resources/static/components/mobile/mobile/club/mobileClubUserApplyInfo.vue create mode 100644 src/main/resources/static/components/mobile/mobile/common/MCard.vue create mode 100644 src/main/resources/static/components/mobile/mobile/common/MLoading.vue create mode 100644 src/main/resources/static/components/mobile/mobile/common/MTableLoading.vue create mode 100644 src/main/resources/static/components/mobile/mobile/common/TrainDynamicForm.vue create mode 100644 src/main/resources/static/components/mobile/mobile/difficulty/info.vue create mode 100644 src/main/resources/static/components/mobile/mobile/member/MobileMemberChangeInfo.vue create mode 100644 src/main/resources/static/components/mobile/mobile/member/MobileMemberInfo.vue create mode 100644 src/main/resources/static/components/mobile/mobile/wmhd/info.vue create mode 100644 src/main/resources/static/components/plugins/CustomMessage.vue create mode 100644 src/main/resources/static/components/plugins/ELTabPlus.vue create mode 100644 src/main/resources/static/components/welfare/CourierNumberInfo.vue create mode 100644 src/main/resources/static/components/welfare/Evaluate.vue create mode 100644 src/main/resources/static/components/zgfw/rxdj/rxdjEdit.vue create mode 100644 src/main/resources/views/platform/zgfw/rxdj/apply_include.html diff --git a/src/main/java/io/v/nutz/task/job/jszLotteryJob.java b/src/main/java/io/v/nutz/task/job/jszLotteryJob.java deleted file mode 100644 index d63fd8f..0000000 --- a/src/main/java/io/v/nutz/task/job/jszLotteryJob.java +++ /dev/null @@ -1,80 +0,0 @@ -package io.v.nutz.task.job; - -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.RandomLists; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.zhgh.jsz.models.JszAwardList; -import io.v.nutz.zhgh.jsz.models.JszWxStep; -import io.v.nutz.sys.services.SysTaskService; -import io.v.nutz.sys.services.impl.SysTaskServiceImpl; -import io.v.nutz.task.services.TaskPlatformService; -import io.v.nutz.task.services.impl.TaskPlatformServiceImpl; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.ioc.Ioc; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.Mvcs; -import org.quartz.Job; -import org.quartz.JobDataMap; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * TODO - * 健身走抽奖 - * - * @Author zhf - * @Date 2022/9/7 11:40 - */ -@IocBean -public class jszLotteryJob implements Job { - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - - try { - Ioc ioc = Mvcs.ctx().getDefaultIoc(); - Dao dao = ioc.get(Dao.class); - TaskPlatformService taskPlatformService = ioc.get(TaskPlatformServiceImpl.class); - WxHttpUtil wxHttpUtil = ioc.get(WxHttpUtil.class); - SysTaskService sysTaskService = ioc.get(SysTaskServiceImpl.class); - - String taskId = context.getJobDetail().getKey().getName(); - JobDataMap data = context.getJobDetail().getJobDataMap(); - String id = data.getString("id"); - String query = "db.collection('activity').doc('%s').get()".formatted(id); - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List activityData = wxResult.getList("data", Map.class); - - - //查询这个活动健步的人 - List userList = sysTaskService.dao().query(JszWxStep.class, Cnd.where("activityId", "=", id).and("applyDate", "=", DateUtil.getDate())); - //然后随机抽取用户 - String dailyLottery = (String) activityData.get(0).get("dailyLottery"); - List dailyLotteryList = RandomLists.newRandomList(userList, Integer.parseInt(dailyLottery)); - List jszAwardLists = new ArrayList<>(); - dailyLotteryList.forEach(v -> { - JszAwardList jszAwardList = new JszAwardList(); - jszAwardList.setUserId(v.getUserId()); - jszAwardList.setActivityId(id); - jszAwardList.setApplyDate(new Date()); - jszAwardLists.add(jszAwardList); - - }); - sysTaskService.insert(jszAwardLists); - - taskPlatformService.delete(taskId, taskId); - sysTaskService.delete(taskId); - } catch (IOException e) { - e.printStackTrace(); - } - - - } -} diff --git a/src/main/java/io/v/nutz/task/services/impl/TaskPlatformServiceImpl.java b/src/main/java/io/v/nutz/task/services/impl/TaskPlatformServiceImpl.java index 80b9763..88632cb 100644 --- a/src/main/java/io/v/nutz/task/services/impl/TaskPlatformServiceImpl.java +++ b/src/main/java/io/v/nutz/task/services/impl/TaskPlatformServiceImpl.java @@ -31,6 +31,7 @@ public class TaskPlatformServiceImpl implements TaskPlatformService { * @param jobGroup * @return */ + @Override public boolean isExist(String jobName, String jobGroup) { return quartzManager.exist(new JobKey(jobName, jobGroup)); } @@ -45,6 +46,7 @@ public class TaskPlatformServiceImpl implements TaskPlatformService { * @param comment * @param dataMap */ + @Override public void add(String jobName, String jobGroup, String className, String cron, String comment, String dataMap) { QuartzJob qj = new QuartzJob(); qj.setJobName(jobName); @@ -63,6 +65,7 @@ public class TaskPlatformServiceImpl implements TaskPlatformService { * @param jobGroup * @return */ + @Override public boolean delete(String jobName, String jobGroup) { QuartzJob qj = new QuartzJob(); qj.setJobName(jobName); @@ -73,6 +76,7 @@ public class TaskPlatformServiceImpl implements TaskPlatformService { /** * 清除任务 */ + @Override public void clear() { quartzManager.clear(); } @@ -83,6 +87,7 @@ public class TaskPlatformServiceImpl implements TaskPlatformService { * @param cronExpression * @return */ + @Override public List getCronExeTimes(String cronExpression) throws Exception { List list = new ArrayList<>(); CronTriggerImpl cronTriggerImpl = new CronTriggerImpl(); @@ -99,6 +104,7 @@ public class TaskPlatformServiceImpl implements TaskPlatformService { } + @Override public List getCronExeTimesPlus(String cronExpression) throws Exception { // 创建一个列表来存储执行时间 List executionTimes = new ArrayList<>(); diff --git a/src/main/java/io/v/nutz/web/commons/base/Globals.java b/src/main/java/io/v/nutz/web/commons/base/Globals.java index 0f13ed7..f33fd2c 100644 --- a/src/main/java/io/v/nutz/web/commons/base/Globals.java +++ b/src/main/java/io/v/nutz/web/commons/base/Globals.java @@ -122,9 +122,11 @@ public class Globals { List taskList = sysTaskService.query(); for (Sys_task sysTask : taskList) { try { - if (!sysTask.isDisabled())//不存在则新建 + //不存在则新建 + if (!sysTask.isDisabled()) { taskPlatformService.add(sysTask.getId(), sysTask.getId(), sysTask.getJobClass(), sysTask.getCron() , sysTask.getNote(), sysTask.getData()); + } } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupCampusController.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupCampusController.java index 85c1e4a..f1c5b37 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupCampusController.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupCampusController.java @@ -2,9 +2,9 @@ package io.v.nutz.zhgh.healthCheckup.controller; import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.BaseService; import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupCampus; -import io.v.nutz.base.query.PageForm; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupListController.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupListController.java index d5c4a71..47ea0c3 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupListController.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupListController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.utils.Vi; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProject; import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProjectSubject; import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupUserSelection; @@ -70,7 +71,9 @@ public class HealthCheckupListController { u.unionGroupName, hcus.selectTime, hcus.subjectId, - hcus.userSign + hcus.campus, + hcus.userSign, + aus.id ausid FROM activity_user_scope aus LEFT JOIN `user` u ON u.id = aus.userId @@ -85,6 +88,10 @@ public class HealthCheckupListController { cnd.andEX("u.unionGroupId", "=", unionGroupId); cnd.andEX("u.threeUnitId", "=", threeUnitId); + if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) { + cnd.andEX("u.unionid", "=", Vi.getUnionId()); + } + if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) { cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword())); } @@ -114,7 +121,7 @@ public class HealthCheckupListController { @ViReturn @Aop(TransAop.READ_COMMITTED) @RequiresPermissions("healthCheckup.list.mange") - public Object doEditHealthCheckupData(String subjectId, String projectId, String userId) { + public Object doEditHealthCheckupData(String subjectId, String campus, String projectId, String userId) { //查询用户有没有选择过套餐 HealthCheckupUserSelection userSelection = healthCheckupProjectService.dao().fetch(HealthCheckupUserSelection.class, @@ -122,6 +129,7 @@ public class HealthCheckupListController { //如果选择过套餐就修改选择的套餐id if (Lang.isNotEmpty(userSelection)) { userSelection.setSubjectId(subjectId); + userSelection.setCampus(campus); healthCheckupProjectService.update(userSelection); } else { //如果没有选择过套餐添加一条记录 @@ -129,6 +137,7 @@ public class HealthCheckupListController { checkupUserSelection.setSelectUserId(userId); checkupUserSelection.setProjectId(projectId); checkupUserSelection.setSubjectId(subjectId); + checkupUserSelection.setCampus(campus); checkupUserSelection.setSelectTime(new Date()); healthCheckupProjectService.insert(checkupUserSelection); } diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupSingleController.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupSingleController.java index 93eba52..b986e17 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupSingleController.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthCheckupSingleController.java @@ -4,16 +4,19 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import cn.afterturn.easypoi.excel.export.ExcelExportService; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.utils.ViTool; +import io.v.nutz.zhgh.data.model.MatchConditionStructure; +import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProject; +import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProjectSubject; +import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupUserSelection; import io.v.nutz.zhgh.healthCheckup.service.HealthCheckupSingleService; import io.v.nutz.base.query.PageForm; -import io.v.nutz.base.utils.ViTool; import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; @@ -30,7 +33,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; /** @@ -61,7 +63,7 @@ public class HealthCheckupSingleController { public Object pageData(@Param(value = "projectId", required = false) String projectId, @Param(value = "unionId", required = false) String unionId, @Param(value = "unionGroupId", required = false) String unionGroupId) { - return healthCheckupSingleService.pageData(projectId,unionId,unionGroupId); + return healthCheckupSingleService.pageData(projectId, unionId, unionGroupId); } @@ -75,31 +77,34 @@ public class HealthCheckupSingleController { @At @ViReturn @Ok("json:full") - @RequiresPermissions("welfare.project.statistics.single") - public Object receivePageData(PageForm page,@Param(value = "isSelected",required = false) String isSelected, + @RequiresPermissions("healthCheckup.statisticsSingle") + public Object receivePageData(PageForm page, @Param(value = "isSelected", required = false) String isSelected, @Param(value = "projectId", required = false) String projectId, @Param(value = "unionId", required = false) String unionId) { List labelList = healthCheckupSingleService.receivePageDataColumns(projectId); - Pagination list = healthCheckupSingleService.receivePageData(page.getPageNumber(),page.getPageSize(),page.getSearchName(),page.getSearchKeyword(),projectId, unionId,isSelected); + Pagination list = healthCheckupSingleService.receivePageData(page.getPageNumber(), page.getPageSize(), page.getSearchName(), page.getSearchKeyword(), projectId, unionId, isSelected); return NutMap.NEW().addv("list", list).addv("label", labelList); } - @At @Ok("void") - @RequiresPermissions("welfare.project.statistics.single") + @RequiresPermissions("healthCheckup.statisticsSingle") public void exportReceiveDetail(@Param(value = "projectId", required = false) String projectId, @Param(value = "unionId", required = false) String unionId, - @Param(value = "year",required = false) Integer year, - boolean flag,HttpServletResponse response){ + @Param(value = "year", required = false) Integer year, + boolean flag, HttpServletResponse response) { List entityList = new ArrayList<>() {{ add(new ExcelExportEntity("职工号", "loginName", 20)); add(new ExcelExportEntity("姓名", "userName", 20)); - add(new ExcelExportEntity("部门", "unitName", 20)); add(new ExcelExportEntity("性别", "sex", 20)); + add(new ExcelExportEntity("出生年月", "birthday", 20)); add(new ExcelExportEntity("年龄", "age", 20)); + add(new ExcelExportEntity("婚姻状况", "marriage", 20)); + add(new ExcelExportEntity("证件号", "idCard", 20)); + add(new ExcelExportEntity("部门", "unitName", 20)); + add(new ExcelExportEntity("部门编码", "unitCode", 20)); add(new ExcelExportEntity("自选项目", "subjectName", 20)); add(new ExcelExportEntity("自选院区", "campusName", 50)); }}; @@ -115,31 +120,24 @@ public class HealthCheckupSingleController { //获取当前年 Calendar calendar = Calendar.getInstance(); int thisYear = calendar.get(Calendar.YEAR); - list.forEach(v->{ + list.forEach(v -> { int substring = 0; - if (Strings.isNotBlank(v.getString("birthday"))){ - substring=Integer.parseInt(v.getString("birthday").substring(0,4)); - }else if (Strings.isNotBlank(v.getString("idCard"))){ - substring=Integer.parseInt(v.getString("idCard").substring(6,10)); + if (Strings.isNotBlank(v.getString("birthday"))) { + substring = Integer.parseInt(v.getString("birthday").substring(0, 4)); + } else if (Strings.isNotBlank(v.getString("idCard")) && v.getString("idCard").length() >= 10) { + substring = Integer.parseInt(v.getString("idCard").substring(6, 10)); } - v.put("age",thisYear-substring); + v.put("age", thisYear - substring); }); List list2 = list.stream().filter(v -> Strings.isNotBlank(v.getString("unionName"))).collect(Collectors.toList()); - Map> userListMap = list2.stream().collect(Collectors.groupingBy(v -> v.getString("unionName"))); - - Workbook workbook = new XSSFWorkbook(); - userListMap.forEach((k, v) -> { - ExcelExportService service = new ExcelExportService(); - ExportParams exportParams = new ExportParams(); - exportParams.setTitle(year+"年教职工体检项目及地点"+k.replaceAll("/", "、")+"统计表"); - exportParams.setSheetName(k.replaceAll("/", "、")); - exportParams.setType(ExcelType.XSSF); - service.createSheetForMap(workbook, exportParams, entityList, v); - }); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(year + "年教职工体检项目及地点统计表"); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list2); try { - ViTool.excelResponse(response, (flag ? year+"年教职工体检项目及地点统计表" : "未选名单") + ".xlsx"); + ViTool.excelResponse(response, (flag ? year + "年教职工体检项目及地点统计表" : "未选名单") + ".xlsx"); ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.close(); @@ -151,10 +149,10 @@ public class HealthCheckupSingleController { @At @Ok("void") - @RequiresPermissions("welfare.project.statistics.single") + @RequiresPermissions("healthCheckup.statisticsSingle") public void exportUserCompanion(@Param(value = "projectId", required = false) String projectId, @Param(value = "unionId", required = false) String unionId, - @Param(value = "year",required = false) Integer year, HttpServletResponse response){ + @Param(value = "year", required = false) Integer year, HttpServletResponse response) { Sql sql = Sqls.create(""" SELECT u.username, @@ -163,18 +161,30 @@ public class HealthCheckupSingleController { hcuc.userName familyName, hcuc.sex, hcuc.marry isMarried, - hcuc.idCard + hcuc.idCard, + hcc.campusName, + ( + SELECT + GROUP_CONCAT( hcps.optionName ) + FROM + health_checkup_user_selection hcus + LEFT JOIN `health_checkup_project_subject` hcps ON hcps.id = hcus.subjectId + WHERE + hcus.projectId = @projectId + AND hcus.selectUserId = u.id + ) optionName FROM `health_checkup_user_companion` hcuc LEFT JOIN `health_checkup_user_selection` hcus ON hcus.id = hcuc.userSelectionId + LEFT JOIN `health_checkup_campus` hcc ON hcc.id = hcus.campus LEFT JOIN `user` u ON u.id = hcus.selectUserId LEFT JOIN `health_checkup_project` hcp ON hcp.id = hcus.projectId $condition - """); + """).setParam("projectId", projectId); Cnd cnd = Cnd.NEW(); - cnd.andEX("hcus.projectId","=",projectId); - cnd.andEX("u.unionid","=",unionId); - cnd.andEX("hcp.year","=",year); + cnd.andEX("hcus.projectId", "=", projectId); + cnd.andEX("u.unionid", "=", unionId); + cnd.andEX("hcp.year", "=", year); cnd.asc("u.unioncode"); sql.setCondition(cnd); //家属信息表 @@ -184,7 +194,7 @@ public class HealthCheckupSingleController { companionList.get(i).put("index", i + 1); } - List entityList = new ArrayList<>(){{ + List entityList = new ArrayList<>() {{ add(new ExcelExportEntity("序号", "index", 20)); add(new ExcelExportEntity("教职工姓名", "username", 20)); add(new ExcelExportEntity("学院(部门)", "unitName", 20)); @@ -193,20 +203,77 @@ public class HealthCheckupSingleController { add(new ExcelExportEntity("性别", "sex", 20)); add(new ExcelExportEntity("婚否", "isMarried", 20)); add(new ExcelExportEntity("体检人身份证号", "idCard", 50)); + add(new ExcelExportEntity("自选项目", "optionName", 50)); + add(new ExcelExportEntity("自选院区", "campusName", 50)); }}; try { ViTool.excelResponse(response, year + "教职工家属体检登记表.xlsx"); ExportParams exportParams = new ExportParams(); exportParams.setType(ExcelType.XSSF); - exportParams.setTitle(year+"教职工家属体检登记表"); + exportParams.setTitle(year + "教职工家属体检登记表"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, companionList); ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.close(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } + + + @At + @ViReturn + @Ok("json:full") + @RequiresPermissions("healthCheckup.statisticsSingle") + public Object doSelectByAdmin(String projectId, String optionId, String campus) { + Dao dao = healthCheckupSingleService.dao(); + HealthCheckupProject project = dao.fetch(HealthCheckupProject.class, projectId); + HealthCheckupProjectSubject subject = dao.fetch(HealthCheckupProjectSubject.class, optionId); + if (Strings.isNotBlank(subject.getConditionStructureId())) { + MatchConditionStructure conditionStructure = dao.fetchLinks(dao.fetch(MatchConditionStructure.class, subject.getConditionStructureId()), "conditions"); + subject.setMatchCnd(conditionStructure); + } + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT + u.id, + u.loginname loginName, + u.username userName, + u.sex, + u.birthday, + u.unitname unitName, + u.unionname unionName, + u.idcard idCard, + u.mobile + FROM + `activity_user_scope` aus + LEFT JOIN `user` u ON u.id = aus.userId + $projectCnd $condition + """); + if (subject.getMatchCnd() != null) { + subject.getMatchCnd().join(cnd); + } + cnd.and("aus.groupId", "=", project.getActivityGroupId()); + sql.setVar("projectCnd", "AND u.id NOT IN ( SELECT selectUserId FROM `health_checkup_user_selection` WHERE projectId = '" + projectId + "' AND selectUserId IS NOT NULL )"); + cnd.asc("u.unioncode"); + cnd.desc("u.threeUnitName"); + cnd.groupBy("u.loginname"); + sql.setCondition(cnd); + List mapList = healthCheckupSingleService.listMap(sql); + + List userIds = mapList.stream().map(v -> v.getString("id")).collect(Collectors.toList()); + //题目id + List selections = userIds.stream().map(v -> { + HealthCheckupUserSelection selection = new HealthCheckupUserSelection(); + selection.setProjectId(projectId); + selection.setSelectUserId(v); + selection.setCampus(campus); + selection.setSubjectId(optionId); + return selection; + }).collect(Collectors.toList()); + healthCheckupSingleService.insert(selections); + return null; + } } diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthMange/HealthCheckupHealthSearchController.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthMange/HealthCheckupHealthSearchController.java index f474659..f5e0760 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthMange/HealthCheckupHealthSearchController.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/controller/HealthMange/HealthCheckupHealthSearchController.java @@ -1,8 +1,8 @@ package io.v.nutz.zhgh.healthCheckup.controller.HealthMange; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.service.BaseService; import io.v.nutz.base.dao.CndPlus; +import io.v.nutz.base.service.BaseService; import io.v.nutz.base.query.PageForm; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Sqls; diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/model/HealthCheckupProject.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/model/HealthCheckupProject.java index d22d78f..e991a3a 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/model/HealthCheckupProject.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/model/HealthCheckupProject.java @@ -34,6 +34,11 @@ public class HealthCheckupProject { @ColDefine(type = ColType.VARCHAR, width = 100) private String name; + @Column + @Comment("体检对象类型") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String healthCheckupType; + @Column @Comment("选择开始时间") @ColDefine(type = ColType.DATETIME) diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/service/HealthCheckupProjectService.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/service/HealthCheckupProjectService.java index e998562..4e0f9ee 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/service/HealthCheckupProjectService.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/service/HealthCheckupProjectService.java @@ -1,7 +1,7 @@ package io.v.nutz.zhgh.healthCheckup.service; -import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProject; import io.v.nutz.base.service.ViService; +import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProject; import org.nutz.lang.util.NutMap; public interface HealthCheckupProjectService extends ViService { diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java index 1686d66..fe371e8 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java @@ -1,5 +1,7 @@ package io.v.nutz.zhgh.healthCheckup.service.impl; +import cn.hutool.core.date.DateUtil; +import io.v.nutz.base.service.impl.ViServiceImpl; import io.v.nutz.zhgh.data.constant.ConditionalOperational; import io.v.nutz.zhgh.data.constant.MatchMethod; import io.v.nutz.zhgh.data.model.MatchCondition; @@ -7,7 +9,6 @@ import io.v.nutz.zhgh.data.model.MatchConditionStructure; import io.v.nutz.zhgh.data.service.MatchConditionStructureService; import io.v.nutz.zhgh.healthCheckup.model.HealthCheckupProject; import io.v.nutz.zhgh.healthCheckup.service.HealthCheckupProjectService; -import io.v.nutz.base.service.impl.ViServiceImpl; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.web.commons.utils.ShiroUtil; import org.nutz.dao.Cnd; @@ -15,12 +16,14 @@ import org.nutz.dao.Dao; import org.nutz.dao.entity.annotation.Comment; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.Mirror; import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -42,12 +45,15 @@ public class HealthCheckupProjectServiceImpl extends ViServiceImpl { - if (Strings.isNotBlank(v.getConditionStructureId())) { - MatchConditionStructure conditionStructure = fetchLinks(dao().fetch(MatchConditionStructure.class, v.getConditionStructureId()), "conditions"); - v.setMatchCnd(conditionStructure); - } - }); + if (Lang.isNotEmpty(project)) { + project.getHealthCheckupProjectSubjects().forEach(v -> { + if (Strings.isNotBlank(v.getConditionStructureId())) { + MatchConditionStructure conditionStructure = fetchLinks(dao().fetch(MatchConditionStructure.class, v.getConditionStructureId()), "conditions"); + v.setMatchCnd(conditionStructure); + } + }); + } + return project; } @@ -72,9 +78,18 @@ public class HealthCheckupProjectServiceImpl extends ViServiceImpl reqBody = new HashMap(); - reqBody.put("activity_id", hdid); - reqBody.put("schoolCode", Globals.schoolCode); - try { - NutMap result = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "getBmInfo", reqBody); - NutMap resp_data = result.getAs("resp_data", NutMap.class); - return Result.success().addData(resp_data); - } catch (IOException e) { - e.printStackTrace(); - return Result.error(); - } - - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/JszptphbController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/JszptphbController.java deleted file mode 100644 index 2655f29..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/JszptphbController.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.cxtj; - -import cn.wizzer.framework.base.Result; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.web.commons.base.Globals; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; - -@IocBean -@At("/platform/jsz/cxtj/phbtj") -@Ok("json:full") -public class JszptphbController { - - @Inject - private WxHttpUtil wxHttpUtil; - - @At("") - @Ok("re") - @RequiresPermissions("jsz.cxtj.phbtj") - public String index(){ - return "beetl:/platform/jsz/cxtj/phb.html"; - } - - - @At - @RequiresPermissions("jsz.cxtj.phbtj") - public Object data(){ - try { - NutMap rankAll = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "rankAll", NutMap.NEW().addv("schoolCode", Globals.schoolCode)); - return Result.success().addData(rankAll); -// List yearlist = yearMap.getAs("resp_data", NutMap.class).getAs("data", NutMap.class).getAsList("list", NutMap.class); -// return Result.success().addData(NutMap.NEW().addv("daylist",daylist).addv("weeklist",weeklist) - } catch (Exception e) { - e.printStackTrace(); - return Result.error(); - } - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/LeaderboardController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/LeaderboardController.java deleted file mode 100644 index 23b638f..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/LeaderboardController.java +++ /dev/null @@ -1,97 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.cxtj; - -import cn.hutool.core.util.StrUtil; -import cn.wizzer.framework.base.Result; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.zhgh.jsz.services.JszWxStepService; -import io.v.nutz.web.commons.utils.ShiroUtil; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import java.util.Map; - -/** - * @Author JyuHsin - * @Date 2022/9/7 - * @Description 排行榜 - */ -@At("/jsz/leaderboard") -@Ok("json:full") -@IocBean -public class LeaderboardController { - - @Inject - private JszWxStepService jszWxStepService; - - @Inject - private WxHttpUtil wxHttpUtil; - - @At("") - @Ok("re") - @RequiresPermissions("jsz.cxtj.leaderboard") - public String index() { - return "beetl:/platform/jsz/cxtj/leaderboard.html"; - } - - /** - * 获取排行榜数据 - * - * @param hdid: 活动id - * @param type: 0-当日榜 1-累计排行榜 2-当日中奖榜 - * @return java.lang.Object - * @author JyuHsin - * @date 2022/9/7 - */ - @At - @ViReturn - @RequiresPermissions("jsz.cxtj.leaderboard") - public Object getData(@Param(value = "hdid",required = false) String hdid, - @Param(value = "type",required = false) Integer type, - @Param(value = "userId",required = false) String userId) { - if (type == null) { - return Result.error("参数错误"); - } - switch (type) { - case 0: - case 1: - return jszWxStepService.getDataOfLeaderboard(hdid, type, userId, "", "", "", ""); - case 2: - return jszWxStepService.getDataOfPrize(hdid, "", "", "", ""); - default: - break; - } - return null; - } - - @At - @ViReturn - @RequiresPermissions("jsz.cxtj.leaderboard") - public Object pageData(@Param(value = "hdid",required = false) String hdid, - @Param(value = "searchName",required = false) String searchName, - @Param(value = "searchKeyword",required = false) String searchKeyword, - @Param(value = "unionId",required = false) String unionId, - @Param(value = "unitId",required = false) String unitId) { - - if (StrUtil.isBlank(hdid)) { - return Result.error("参数错误!"); - } - - String userId = ShiroUtil.getPrincipalProperty("id").toString(); - Object today = jszWxStepService.getDataOfLeaderboard(hdid, 0, userId, unionId, unitId, searchName, searchKeyword); - Object summary = jszWxStepService.getDataOfLeaderboard(hdid, 1, userId, unionId, unitId, searchName, searchKeyword); - Object yesterday = jszWxStepService.getDataOfPrize(hdid, unionId, unitId, searchName, searchKeyword); - - NutMap map = NutMap.NEW(); - map.put("today", Map.of("list", today)); - map.put("summary", Map.of("list", summary)); - map.put("yesterday", Map.of("list", yesterday)); - return map; - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/UnionRegisterInfoCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/UnionRegisterInfoCon.java deleted file mode 100644 index 73be915..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/cxtj/UnionRegisterInfoCon.java +++ /dev/null @@ -1,739 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.cxtj; - -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.annotation.Excel; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import cn.hutool.core.util.StrUtil; -import cn.wizzer.framework.base.service.BaseService; -import cn.wizzer.framework.page.Pagination; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.sys.models.Sys_union; -import io.v.nutz.sys.services.SysUnionService; -import io.v.nutz.base.utils.ViTool; -import lombok.Data; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; -import org.nutz.lang.Lang; -import org.nutz.lang.Strings; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -import static java.util.Comparator.comparing; -import static java.util.stream.Collectors.collectingAndThen; -import static java.util.stream.Collectors.toCollection; - -/** - * @Author: 1V - * @DateTime: 2020/9/19 14:55 - * @Description: 工会报名参与信息 - */ -@At("/platform/jsz/union/registerInfo") -@Ok("json:full") -@IocBean -@RequiresAuthentication -public class UnionRegisterInfoCon { - @Inject - private WxHttpUtil wxHttpUtil; - - @At("") - @Ok("beetl:/platform/jsz/cxtj/unionRegisterInfo.html") - @RequiresPermissions("jsz.union.registerInfo") - public void index() { - } - - @Inject - private SysUnionService sysUnionService; - - @At - @ViReturn - @RequiresPermissions("jsz.union.registerInfo") - public Object getData(String activity_id, @Param("activity_tag[]") String[] activity_tag) throws IOException { - return data(activity_id, activity_tag); - } - - private List data(String activity_id, String[] activity_tag) throws IOException { - List unions = sysUnionService.query(); - Map reqBody = new HashMap<>(); - reqBody.put("unions", unions); - reqBody.put("activity_id", activity_id); - reqBody.put("activity_tag", activity_tag); - NutMap result = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "getRegisterInfo", reqBody); - List resp_data = result.getAs("resp_data", List.class); - return resp_data; - } - - @At - @Ok("void") - @RequiresPermissions("jsz.union.registerInfo") - public void exportAllUnionData(String activity_id, String activity_name, String activity_tag, HttpServletResponse response) throws IOException { - try { - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + new String((activity_name + "院级工会报名统计表.xls").getBytes("utf-8"), "ISO8859-1")); - - ArrayList list = new ArrayList<>(); - List data = data(activity_id, activity_tag.split(",")); - data.forEach(val -> { - Map v = (Map) val; - E e = new E(); - e.setName((String) v.get("unionname")); - e.setReg_num((Integer) v.get("reg_num")); - e.setSign_num((Integer) v.get("sign_num")); - list.add(e); - }); - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), E.class, list); - workbook.write(response.getOutputStream()); - } catch (Exception e) { - e.printStackTrace(); - } - - - } - - @At - @RequiresPermissions("jsz.union.registerInfo") - public void regExport(String activity_id, String activity_tag, String unionname, String unionid, HttpServletResponse response) throws IOException { - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + new String((unionname + "报名名单.xls").getBytes("utf-8"), "ISO8859-1")); - - Map reqBody = new HashMap(); - reqBody.put("activity_id", activity_id); - reqBody.put("activity_tag", Json.fromJsonAsArray(String.class, activity_tag)); - reqBody.put("unionid", unionid); - - -// NutMap result = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "getRegisterUsers", reqBody); -// List data = result.getAs("resp_data", List.class); - - Integer pageSize = 20; - Integer pageNum = 1; - List allRegister = new ArrayList<>(); - List oneData = getAllRegister(unionid, activity_id, activity_tag, pageNum, pageSize); - while (oneData.size() > 0) { - allRegister.addAll(oneData); - pageNum++; - oneData = getAllRegister(unionid, activity_id, activity_tag, pageNum, pageSize); - } - System.out.println(allRegister); - - ArrayList list = new ArrayList<>(); - allRegister.forEach(v -> { - RegE e = new RegE(); - e.setActivity_name(StrUtil.isBlank((String) v.get("activity_tag")) ? (String) v.get("activity_name") : v.get("activity_tag") + "-" + v.get("activity_name")); - e.setLoginname((String) v.get("loginname")); - e.setUsername((String) v.get("username")); - e.setSex((String) v.get("sex")); - e.setUnitname((String) v.get("unitname")); - list.add(e); - }); - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), RegE.class, list); - workbook.write(response.getOutputStream()); - -// ArrayList list = new ArrayList<>(); -// data.forEach(val -> { -// Map v = (Map) val; -// RegE e = new RegE(); -// e.setActivity_name((String) v.get("activity_name")); -// e.setLoginname((String) v.get("loginname")); -// e.setUsername((String) v.get("username")); -// e.setSex((String) v.get("sex")); -// e.setUnitname((String) v.get("unitname")); -// list.add(e); -// }); -// -// Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), RegE.class, list); -// workbook.write(response.getOutputStream()); - } - - - private List getAllRegister(String unionid, String activity_id, String activity_tag, Integer pageNumber, Integer pageSize) throws IOException { - String s = String.format( - """ - db.collection('register') - .aggregate() - .lookup({ - from: 'activity', - localField: 'activity_id', - foreignField: '_id', - as: 'activity' - }) - .addFields({ - activity_name: $.arrayElemAt(['$activity.name',0]), - activity_tag: $.arrayElemAt(['$activity.tag',0]) - }) - .match({ - unionid:'%s', - 'activity._id':_.in(%s) - }).project({ - loginname: true, - sex: true, - username: true, - unionname: true, - unionid: true, - unitname: true, - unitid: true, - mobile: true, - register_time: true, - activity_name: true, - activity_tag:true - }).sort({ 'unitid': 1, 'register_time': -1 }).skip(%d).limit(%d).end() - """, unionid, StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag)), (pageNumber - 1) * pageSize, pageSize - ); - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.aggregateUrl, s); - List data = result.getList("data", Map.class); - return data; - } - - - @At - @Ok("void") - @RequiresPermissions("jsz.union.registerInfo") - public void signExport(String activity_id, String activity_tag, String unionname, String unionid, HttpServletResponse response) throws IOException { - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + new String((unionname + "参与名单.xlsx").getBytes("utf-8"), "ISO8859-1")); - - Map reqBody = new HashMap(); - reqBody.put("activity_id", activity_id); - reqBody.put("activity_tag", Json.fromJsonAsArray(String.class, activity_tag)); - reqBody.put("unionid", unionid); - - NutMap result = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "getSignUsers", reqBody); - List data = result.getAs("resp_data", List.class); - - ArrayList list = new ArrayList<>(); - for (NutMap v : data) { - SignE e = new SignE(); -// e.setActivity_name((String) v.get("activity_name")); - e.setLoginname((String) v.get("loginname")); - e.setUsername((String) v.get("username")); - e.setSex((String) v.get("sex")); - e.setMobile((String) v.get("mobile")); - e.setUnitname((String) v.get("unitname")); - e.setSignnum(v.getInt("sign_size")); - list.add(e); - } - - ExportParams exportParams = new ExportParams(); - exportParams.setType(ExcelType.XSSF); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, SignE.class, list); - workbook.write(response.getOutputStream()); - } - - - public class RegE implements Serializable { - @Excel(name = "活动", width = 40.0D) - private String activity_name; - - public String getActivity_name() { - return activity_name; - } - - public void setActivity_name(String activity_name) { - this.activity_name = activity_name; - } - - @Excel(name = "工号", width = 20.0D) - private String loginname; - - @Excel(name = "姓名", width = 20.0D) - private String username; - - @Excel(name = "性别", width = 20.0D) - private String sex; - - @Excel(name = "电话", width = 20.0D) - private String mobile; - - @Excel(name = "单位", width = 60.0D) - private String unitname; - - public String getLoginname() { - return loginname; - } - - public void setLoginname(String loginname) { - this.loginname = loginname; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - - public String getUnitname() { - return unitname; - } - - public void setUnitname(String unitname) { - this.unitname = unitname; - } - } - - @Data - public static class SignE implements Serializable { - - @Excel(name = "工号", width = 20.0D) - private String loginname; - - @Excel(name = "姓名", width = 20.0D) - private String username; - - @Excel(name = "性别", width = 20.0D) - private String sex; - - @Excel(name = "电话", width = 20.0D) - private String mobile; - - @Excel(name = "单位", width = 60.0D) - private String unitname; - - @Excel(name = "工会", width = 60.0D) - private String unionname; - - @Excel(name = "签到点位数", width = 20.0D) - private Integer signnum; - } - - @Data - public static class E implements Serializable { - @Excel(name = "院级工会", width = 60.0D) - private String name; - - @Excel(name = "报名人数", width = 20.0D) - private Integer reg_num; - - @Excel(name = "参加人数", width = 20.0D) - private Integer sign_num; - } - - @At - @ViReturn - @RequiresPermissions("jsz.union.registerInfo") - public Object getRegisterUser(String activity_id, @Param("activity_tag[]") String[] activity_tag, String unionid, Integer pageNumber, Integer pageSize) throws IOException { - int skip = (pageNumber == 1 ? 0 : (pageNumber - 1)) * pageSize; - - Map map = new HashMap<>() {{ - put("unionid", unionid); - }}; - - /*if (Strings.isNotBlank(activity_tag)) { - map.put("activity.tag", activity_tag); - }*/ - if (Strings.isNotBlank(activity_id)) { - map.put("activity._id", activity_id); - } - - String match = Json.toJson(map); - - String s = String.format( - """ - db.collection('register') - .aggregate() - .lookup({ - from: 'activity', - localField: 'activity_id', - foreignField: '_id', - as: 'activity' - }) - .addFields({ - activity_name: $.arrayElemAt(['$activity.name',0]), - activity_tag: $.arrayElemAt(['$activity.tag',0]) - }) - .match({ - unionid:'%s', - 'activity._id':_.in(%s) - }).project({ - loginname: true, - sex: true, - username: true, - unionname: true, - unionid: true, - unitname: true, - mobile: true, - unitid: true, - register_time: true, - activity_name: true, - activity_tag:true - }).sort({ 'unitid': 1, 'register_time': -1 }).skip(%d).limit(%d).end() - """, unionid, StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(activity_tag), skip, pageSize - ); - - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.aggregateUrl, s); - - - - String count_s = String.format( - """ - db.collection('register').where( - { - unionid:'%s', - activity_id:_.in(%s) - } - ).count() - """, unionid, StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(activity_tag) - ); - NutMap countResult = wxHttpUtil.getWxResult(wxHttpUtil.countUrl, count_s); - - return new Pagination(pageNumber, pageSize, countResult.getInt("count"), result.getList("data", Map.class)); - } - - @At - @ViReturn - @RequiresPermissions("jsz.union.registerInfo") - public Object getSignUser(String activity_id, @Param("activity_tag[]") String[] activity_tag, String unionid, Integer pageNumber, Integer pageSize) throws IOException { - int skip = (pageNumber == 1 ? 0 : (pageNumber - 1)) * pageSize; - String s = """ - db.collection('sign').aggregate().match({ - activity_id: _.in(%s), - unionid:"%s"}).group({ - _id: { - activity_id: '$activity_id', - loginname: '$loginname' - }, - num: $.sum(1), - data: $.first('$$ROOT') - }).lookup({ - from: 'activity', - localField: 'data.activity_id', - foreignField: '_id', - as: 'activity' - }).addFields({ - activity: $.arrayElemAt(['$activity', 0]) - }).project({ - loginname: '$data.loginname', - sex: '$data.sex', - username: '$data.username', - unitname: '$data.unitname', - unionname: '$data.unionname', - pts_size: $.size('$activity.pts'), - sign_size: '$num' - }).skip(%d).limit(%d) - .end() - - """.formatted(StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(activity_tag), - unionid, skip, pageSize); - - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.aggregateUrl, s); - - - String count_s = """ - db.collection('sign').aggregate().match({ - activity_id:_.in(%s), - unionid:'%s' - }).group({ - _id:'$userid', - count: $.sum(1), - }).end() - """.formatted(StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(activity_tag), - unionid); - - - NutMap countResult = wxHttpUtil.getWxResult(wxHttpUtil.aggregateUrl, count_s); - - return new Pagination(pageNumber, pageSize, countResult.getList("data", Map.class).size(), result.getList("data", Map.class)); - } - - final Integer LIMIT = 1000; - - @At - @RequiresPermissions("jsz.union.registerInfo") - public void doGiftExport(String activity_id, String activity_tag, Boolean flag, HttpServletResponse response) throws IOException { - response.setContentType("application/octet-stream"); - - String fileName = flag ? "已领取礼品的用户" : "未领取礼品的用户"; - response.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xls").getBytes("utf-8"), "ISO8859-1")); - - Map reqBody = new HashMap<>(); - reqBody.put("activity_id", activity_id); - - String count = """ - db.collection('gift_voucher').where({activity_id: _.in(%s),used:%b}).count() - """.formatted((StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag))), - flag); - NutMap wxResultCount = wxHttpUtil.getWxResult(wxHttpUtil.countUrl, count); - - int count1 = wxResultCount.getInt("count"); - - List list2 = new ArrayList<>(); - - int ceil = (int) Math.ceil(count1 / LIMIT) + 1; - - for (int i = 0; i < ceil; i++) { - Integer num = i == 0 ? LIMIT : count1 - LIMIT; - String query = """ - db.collection('gift_voucher') - .where({ - activity_id: _.in(%s), - used: %s - }) - .orderBy('use_time', 'desc') - .skip(%s) - .limit(%s) - .get() - """.formatted(StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag)) - , flag, i * LIMIT, num); - - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", Map.class); - list2.addAll(data); - } - - List giftEList = list2.stream().map(v -> { - giftE e = new giftE(); - e.set_openid((String) v.get("_openid")); - e.setLoginname((String) v.get("loginname")); - e.setUsername((String) v.get("username")); - e.setUnitname((String) v.get("unitname")); - e.setUnionname((String) v.get("unionname")); - return e; - }).collect(Collectors.toList()); - ArrayList collect = giftEList.stream().collect( - collectingAndThen(toCollection(() -> new TreeSet<>(comparing(o -> o.get_openid()))), - ArrayList::new)); - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), giftE.class, collect); - workbook.write(response.getOutputStream()); - } - - @At - @Ok("void") - @RequiresPermissions("jsz.union.registerInfo") - public void doExportSummary(String activity_id, String activity_tag, HttpServletResponse response) throws Exception { - - NutMap cloudResult = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "findActivityInfo", Map.of("activity_id", activity_id, "activity_tag", Json.fromJsonAsArray(String.class, activity_tag))); - NutMap resp_data = cloudResult.getAs("resp_data", NutMap.class); - List pts = resp_data.getList("pts", NutMap.class); - int ptsLength = pts.size(); - - - Map reqBody = new HashMap<>(); - reqBody.put("activity_id", activity_id); - - String count = """ - db.collection('register').where({activity_id: _.in(%s)}).count() - """.formatted((StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag)))); - NutMap wxResultCount = wxHttpUtil.getWxResult(wxHttpUtil.countUrl, count); - int count1 = wxResultCount.getInt("count"); - - List list2 = new ArrayList<>(); - - int ceil = (int) Math.ceil(count1 / LIMIT) + 1; - for (int i = 0; i < ceil; i++) { - Integer num = i == 0 ? LIMIT : count1 - LIMIT; - String query = """ - db.collection('register') - .where({ - activity_id: _.in(%s) - }) - .orderBy('unitid', 'desc') - .skip(%s) - .limit(%s) - .get() - """.formatted(StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag)) - , i * LIMIT, num); - - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", NutMap.class); - list2.addAll(data); - } - - Map signReqBody = new HashMap(); - signReqBody.put("activity_id", activity_id); - signReqBody.put("activity_tag", Json.fromJsonAsArray(String.class, activity_tag)); - //签到数据 - NutMap result = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "getSignUserAll", signReqBody); - List signData = result.getAs("resp_data", List.class); - for (NutMap val : signData) { - NutMap v = val.getAs("data", NutMap.class); - val.setv("loginname", v.getString("loginname")); - } - - List excelExportEntities = new ArrayList<>(); - excelExportEntities.add(new ExcelExportEntity("工号", "loginname", 20)); - excelExportEntities.add(new ExcelExportEntity("姓名", "username", 20)); - excelExportEntities.add(new ExcelExportEntity("性别", "sex", 20)); - excelExportEntities.add(new ExcelExportEntity("电话", "mobile", 20)); - excelExportEntities.add(new ExcelExportEntity("工会", "unionname", 20)); - excelExportEntities.add(new ExcelExportEntity("单位", "unitname", 20)); - excelExportEntities.add(new ExcelExportEntity("是否参加", "isTakePartIn", 20)); - excelExportEntities.add(new ExcelExportEntity("签到点位数", "signNum", 20)); - - for (NutMap nutMap : list2) { - String loginname = nutMap.getString("loginname"); - Optional signDataMap = signData.stream().filter(v -> StrUtil.isNotBlank(v.getString("loginname")) && v.getString("loginname").equals(loginname)).findFirst(); - if (signDataMap.isPresent()) { - int signNum = signDataMap.get().getInt("num", 0); - nutMap.setv("isTakePartIn", signNum > 0 ? "是" : "否"); - nutMap.setv("signNum", Math.min(signNum, ptsLength)); - } else { - nutMap.setv("isTakePartIn", "否"); - nutMap.setv("signNum", 0); - } - } - -// -// ArrayList collect = giftEList.stream().collect( -// collectingAndThen(toCollection(() -> new TreeSet<>(comparing(o -> o.get_openid()))), -// ArrayList::new)); - ViTool.excelResponse(response, "活动汇总表.xls"); - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), excelExportEntities, list2); - workbook.write(response.getOutputStream()); - } - - @Data - public static class giftE implements Serializable { - - private String _openid; - - @Excel(name = "工号", width = 20D) - private String loginname; - - @Excel(name = "姓名", width = 20D) - private String username; - - @Excel(name = "单位", width = 20D) - private String unitname; - - @Excel(name = "工会", width = 20D) - private String unionname; - } - - @Inject - private BaseService baseService; - - //导出全部人员excel列数据 - private static final List excelExportEntityList = new ArrayList<>() {{ - add(new ExcelExportEntity("姓名", "username", 20)); - add(new ExcelExportEntity("工号", "loginname", 20)); - add(new ExcelExportEntity("单位", "unitname", 20)); - add(new ExcelExportEntity("工会", "unionname", 20)); - }}; - - /** - * 导出活动报名人员 - * - * @param activity_id - */ - @At - @Ok("void") - @RequiresPermissions("jsz.union.registerInfo") - public void doExportRegsiter(String activity_id, String activity_tag, HttpServletResponse response) throws IOException { - Map reqBody = new HashMap<>(); - reqBody.put("activity_id", activity_id); - - String count = """ - db.collection('register').where({activity_id: _.in(%s)}).count() - """.formatted((StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag)))); - NutMap wxResultCount = wxHttpUtil.getWxResult(wxHttpUtil.countUrl, count); - int count1 = wxResultCount.getInt("count"); - - List list2 = new ArrayList<>(); - - int ceil = (int) Math.ceil(count1 / LIMIT) + 1; - for (int i = 0; i < ceil; i++) { - Integer num = i == 0 ? LIMIT : count1 - LIMIT; - String query = """ - db.collection('register') - .where({ - activity_id: _.in(%s) - }) - .orderBy('unitid', 'desc') - .skip(%s) - .limit(%s) - .get() - """.formatted(StrUtil.isNotBlank(activity_id) ? Json.toJson(Lang.array(activity_id)) : Json.toJson(Json.fromJsonAsArray(String.class, activity_tag)) - , i * LIMIT, num); - - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", Map.class); - list2.addAll(data); - List giftEList = list2.stream().map(v -> { - giftE e = new giftE(); - e.set_openid((String) v.get("_openid")); - e.setLoginname((String) v.get("loginname")); - e.setUsername((String) v.get("username")); - e.setUnitname((String) v.get("unitname")); - e.setUnionname((String) v.get("unionname")); - return e; - }).collect(Collectors.toList()); - ArrayList collect = giftEList.stream().collect( - collectingAndThen(toCollection(() -> new TreeSet<>(comparing(o -> o.get_openid()))), - ArrayList::new)); - ViTool.excelResponse(response, "活动报名人员.xls"); - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), giftE.class, collect); - workbook.write(response.getOutputStream()); - } - } - - - /** - * 导出活动参与人员 - * - * @param activity_id - */ - @At - @Ok("void") - @RequiresPermissions("jsz.union.registerInfo") - public void doExportSign(String activity_id, String activity_tag, HttpServletResponse response) { - try { - Map reqBody = new HashMap(); - reqBody.put("activity_id", activity_id); - reqBody.put("activity_tag", Json.fromJsonAsArray(String.class, activity_tag)); - - NutMap result = wxHttpUtil.getCloudResult(wxHttpUtil.cloudUrl, "getSignUserAll", reqBody); - List data = result.getAs("resp_data", List.class); - - ArrayList list = new ArrayList<>(); - for (NutMap val : data) { - NutMap v = val.getAs("data", NutMap.class); - SignE e = new SignE(); -// e.setActivity_name((String) v.get("activity_name")); - e.setLoginname((String) v.get("loginname")); - e.setUsername((String) v.get("username")); - e.setSex((String) v.get("sex")); - e.setMobile((String) v.get("mobile")); - e.setUnitname((String) v.get("unitname")); - e.setUnionname(v.getString("unionname")); - e.setSignnum(val.getInt("num")); - list.add(e); - } - ViTool.excelResponse(response, "活动参与人员.xls"); - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), SignE.class, list); - workbook.write(response.getOutputStream()); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszApiCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszApiCon.java deleted file mode 100644 index 262304c..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszApiCon.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.mobile; - -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.sys.services.SysUserService; -import org.nutz.dao.Sqls; -import org.nutz.dao.entity.Record; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; - -import java.util.List; - -/** - * @Author: 1V - * @DateTime: 2020/9/4 10:37 - * @Description: TODO - */ -@At("/jsz/api") -@Ok("json:full") -@IocBean -public class JszApiCon { - - @Inject - private SysUserService sysUserService; - - @At - @ViReturn - public Object getUserDataByLoginName(String loginname) { - Sql sql = Sqls.create("SELECT u.id userid,u.username,u.loginname,u.sex,u.mobile,u.birthday,unit.`name` unitname,u.unitid,unit.unionid,un.unionname from sys_user u left join sys_unit unit on u.unitid = unit.id left join sys_union un on unit.unionid = un.id WHERE u.loginname = @loginname").setParam("loginname", loginname); - List list = sysUserService.list(sql); - return list.size() > 0 ? list.get(0) : new Object(); - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszFillCheckCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszFillCheckCon.java deleted file mode 100644 index 39559fa..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/JszFillCheckCon.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.mobile; - -import cn.wizzer.framework.base.Result; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.zhgh.jsz.models.Jsz_fillcheck; -import io.v.nutz.zhgh.jsz.services.JszFillCheckService; -import io.v.nutz.sys.services.SysUserService; -import org.nutz.dao.Cnd; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.POST; - -/** - * @Author: 1V - * @DateTime: 2020/9/24 10:14 - * @Description: 补签 - */ -@At("/jsz/fillcheck") -@Ok("json:full") -@IocBean -public class JszFillCheckCon { - - @At("") - @Ok("beetl:/platform/jsz/mobile/FillCheck.html") - public void index() { - } - - @Inject - private JszFillCheckService jszFillCheckService; - - @Inject - private SysUserService sysUserService; - - @At - @POST - public Object doSubmit(Jsz_fillcheck fillcheck) { - try { - if (sysUserService.count(Cnd.where("username", "=", fillcheck.getUsername()).and("loginname", "=", fillcheck.getLoginname()).and("zzzt", "=", "在职")) == 0) { - return Result.error("姓名或工号错误"); - } - - if (jszFillCheckService.count(Cnd.where("username", "=", fillcheck.getUsername()).and("loginname", "=", fillcheck.getLoginname())) > 0) { - return Result.error("存在已提交的签到记录"); - } - - fillcheck.setCheck_time(DateUtil.getDateTime()); - jszFillCheckService.insert(fillcheck); - - return Result.success("提交成功"); - } catch (Exception e) { - return Result.error("系统错误"); - } - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/jszWxStepController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/jszWxStepController.java deleted file mode 100644 index 07f1df4..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/jszWxStepController.java +++ /dev/null @@ -1,100 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.mobile; - -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.zhgh.jsz.models.JszWxStep; -import io.v.nutz.zhgh.jsz.services.JszWxStepService; -import org.nutz.dao.Chain; -import org.nutz.dao.Cnd; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; - -import java.util.Date; -import java.util.List; - -/** - * TODO - * - * @Author zhf - * @Date 2022/9/6 15:18 - */ -@At("/jsz/my/step") -@Ok("json:full") -@IocBean -public class jszWxStepController { - - @Inject - private JszWxStepService jszWxStepService; - - - /** - * 获取今天当前用户最新步数 - * - * @param userId - * @return - */ - @At - @ViReturn - public Object getStepByUserId(String userId) { - return jszWxStepService.getStepByUserId(userId); - } - - /** - * 获取今天当前用户最新步数 - * - * @param userId - * @return - */ - @At - @ViReturn - public Object getStepRankingByUserId(String userId) { - - List query = jszWxStepService.query(Cnd.where("applyDate", "=", DateUtil.getDate()).desc("step")); - int k = 0; - for (int i = 0; i < query.size(); i++) { - if (query.get(i).getUserId().equals(userId)) { - k = i + 1; - } - } - - return k; - } - - /** - * 添加步数 - * - * @param userId - * @param step - * @return - */ - @At - @ViReturn - public Object addStep(String userId, Integer step) { - JszWxStep jszWxStep = new JszWxStep(); - jszWxStep.setUserId(userId); - jszWxStep.setStep(step); - jszWxStep.setApplyDate(new Date()); - jszWxStepService.insert(jszWxStep); - return null; - } - - /** - * 修改步数 - * - * @param userId - * @param step - * @return - */ - @At - @ViReturn - public Object editStep(String userId, Integer step) { - Cnd cnd = Cnd.NEW(); - cnd.and("userId", "=", userId).and("applyDate", "=", DateUtil.getDate()); - jszWxStepService.update(Chain.make("step", step), cnd); - return null; - } - - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/loginController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/loginController.java deleted file mode 100644 index 89e1d12..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/mobile/loginController.java +++ /dev/null @@ -1,77 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.mobile; - -import cn.hutool.core.util.StrUtil; -import cn.wizzer.framework.base.Result; -import io.v.nutz.sys.services.SysUserService; -import io.v.nutz.web.commons.base.Globals; -import org.nutz.dao.Cnd; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; - -/** - * @author: Aaron - * @create: 2020-09-11 13:50 - * @description: 小程序登录 - **/ -@At("/platform/jsz/login") -@Ok("json:full") -@IocBean -public class loginController { - - @Inject - private SysUserService sysUserService; - - @At("/") - public Object index(String username, String loginname) { - try { - Sql sql = Sqls.create(""" - SELECT - u.id userid, - u.username, - u.loginname, - u.sex, - u.mobile, - u.birthday, - unit.`name` unitname, - u.unitid, - u.member, - unit.unionid, - un.unionname, - group_concat(sr.`code`) roles, - '$schoolCode' as schoolCode - FROM - sys_user u - LEFT JOIN sys_unit unit ON u.unitid = unit.id - LEFT JOIN sys_union un ON unit.unionid = un.id - LEFT JOIN sys_user_role sur ON sur.userId = u.id - LEFT JOIN sys_role sr ON sr.id = sur.roleId - $condition - """).setParam("loginname", loginname).setParam("username", username); - sql.setVar("schoolCode", Globals.schoolCode); - Cnd cnd = Cnd.NEW(); - cnd.and("LOWER(u.loginname)", "=", loginname.trim().toLowerCase()); - cnd.and("LOWER(u.username)", "=", username.trim().toLowerCase()); - sql.setCondition(cnd); - sql.setCallback(Sqls.callback.map()); - sysUserService.dao().execute(sql); - NutMap user = (NutMap) sql.getResult(); - if (StrUtil.isBlank(user.getString("userid"))) { - return Result.error().addMsg("系统查询不到您的信息,请与工会管理员联系!"); - } -// if(user.getInt("member",0)==0){ -// return Result.error().addMsg("您没有权限参加本次健步行,请与工会管理员联系!"); -// } - /*if (user.getInt("member", 0) != 1 && !user.getString("sex", "").equals("女")) { - return Result.error().addMsg("您没有权限参加本次健步行,请与工会管理员联系!"); - }*/ - return Result.success().addData(user); - } catch (Exception e) { - return Result.error(); - } - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/HdMangeCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/HdMangeCon.java deleted file mode 100644 index 78b7929..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/HdMangeCon.java +++ /dev/null @@ -1,671 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.wizzer.framework.base.Result; -import cn.wizzer.framework.page.Pagination; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.sys.models.Sys_task; -import io.v.nutz.sys.services.SysTaskService; -import io.v.nutz.sys.services.SysUserService; -import io.v.nutz.task.services.TaskPlatformService; -import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.web.commons.base.Globals; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.dao.Cnd; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; -import org.nutz.lang.Lang; -import org.nutz.lang.Strings; -import org.nutz.lang.util.NutMap; -import org.nutz.log.Log; -import org.nutz.log.Logs; -import org.nutz.mvc.annotation.AdaptBy; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; -import org.nutz.mvc.upload.TempFile; -import org.nutz.mvc.upload.UploadAdaptor; -import org.nutz.plugins.wkcache.annotation.CacheDefaults; -import org.nutz.plugins.wkcache.annotation.CacheRemove; -import org.nutz.plugins.wkcache.annotation.CacheRemoveAll; - -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @Author: 1V - * @DateTime: 2020/9/1 9:48 - * @Description: 健身走活动管理 - */ -@At("/platform/jsz/hdMange") -@Ok("json") -@IocBean -@RequiresAuthentication -@CacheDefaults(cacheName = "jsz_activity") -public class HdMangeCon { - - private static final Log log = Logs.get(); - - @Inject - private WxHttpUtil wxHttpUtil; - - private final String JOB_CLASS = "io.v.nutz.task.job.jszLotteryJob"; //调用类 - @Inject - private TaskPlatformService taskPlatformService; - @Inject - private SysTaskService sysTaskService; - @Inject - private SysUserService sysUserService; - - @At("") - @Ok("beetl:/platform/jsz/pc/HdMange.html") - @RequiresPermissions("jsz.hdmange") - public void index() { - } - - @At - @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) - @RequiresPermissions("jsz.hdmange") - public Object doAdd(String data, TempFile file) { - try { - - String picid = null; - - if (Objects.nonNull(file)) { - NutMap picmap = wxHttpUtil.getUploadFile("activity/" + file.getSubmittedFileName()); - picid = wxHttpUtil.uploadFile(picmap, file, "activity/" + file.getSubmittedFileName()); - } - - NutMap map = Json.fromJson(NutMap.class, data); - StringBuilder ptsBuffer = new StringBuilder(""); - NutMap[] pts = map.getArray("pts", NutMap.class); - for (int i = 0; i < pts.length; i++) { - NutMap pt = pts[i]; - ptsBuffer.append("{") - .append("issueIds:").append(pt.getAsList("issueIds", String.class).stream().map(v -> "'" + v + "'").collect(Collectors.toList())).append(",") - .append("code:'").append(pt.getString("code")).append("',") - .append("name:'").append(pt.getString("name")).append("',") - .append("radius:").append(pt.getInt("radius")).append(",") - .append("interval:").append(pt.getInt("interval", 0)).append(",") - .append("receivePoint:").append(pt.getBoolean("receivePoint")).append(",") - .append("location:new db.Geo.Point(") - .append(pt.getDouble("lng")).append(",") - .append(pt.getDouble("lat")).append(")") - .append("}"); - if (i < pts.length - 1) { - ptsBuffer.append(","); - } - } - - StringBuilder lpBuffer = new StringBuilder(""); - ArrayList[] linePoints = map.getArray("linePoints", ArrayList.class); - for (int i = 0; i < linePoints.length; i++) { - ArrayList linePoint = linePoints[i]; - lpBuffer.append("new db.Geo.Point(" + linePoint.get(0) + "," + linePoint.get(1) + ")"); - if (i < linePoints.length - 1) { - lpBuffer.append(","); - } - } - - String pic = Strings.isNotBlank(picid) ? picid : map.getString("pic"); - - String query = """ - db.collection('activity') - .add({ - data: - [{ - groupId:%s, - questionId:'%s', - hasAnswer:%b, - tag:'%s', - name:'%s', - activityModel:'%s', - dailyLottery:'%d', - walkingStepCount:'%d', - lotteryChance:%b, - repeatedlyLottery:%b, - leaderboardNum:'%d', - drawTime:%d, - lotteryTime:'%s', - address:'%s', - note:'%s', - apply_start_time:%d, - apply_end_time:%d, - start_time:%d, - end_time:%d, - pts:[%s], - linePoints:[%s], - toast_num:%d, - toast_msg: '%s', - check_all_msg: '%s', - checkControl:%d, - pic:'%s', - showGift:%b, - gift_name:'%s', - schoolCode:'%s', - activity_apply_user:'%s', - sendNotify:%b - }] - }) - """.formatted( - map.getString("groupId"), - map.getString("questionId", ""), - map.getBoolean("hasAnswer"), - map.getString("tag", ""), - map.getString("name"), - map.getString("activityModel"), - map.getInt("dailyLottery"), - map.getInt("walkingStepCount"), - map.getBoolean("lotteryChance"), - map.getBoolean("repeatedlyLottery"), - map.getInt("leaderboardNum"), - map.getLong("drawTime"), - map.getString("lotteryTime"), - map.getString("address"), - map.getString("note").replaceAll("\r|\n", ""), - map.getLong("apply_start_time"), - map.getLong("apply_end_time"), - map.getLong("start_time"), - map.getLong("end_time"), - ptsBuffer.toString(), - lpBuffer.toString(), - map.get("toast_num") == null ? 0 : map.getInt("toast_num"), - map.getString("toast_msg", ""), - map.getString("check_all_msg", ""), - map.getInt("checkControl"), - pic, - map.getBoolean("showGift"), - map.getString("gift_name"), - Globals.schoolCode, - ShiroUtil.getUserId(), - map.getBoolean("sendNotify", false) - ); - - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.insertUrl, query); - log.debug(query); - - if (result.getInt("errcode") == 0 && result.getString("errmsg").equals("ok")) { -// addTask(map); - List idList = result.getList("id_list", String.class); - map.put("_id", idList.get(0)); - addNotifyTask(map); - return Result.success(); - } - return Result.error(); - } catch (Exception e) { - e.printStackTrace(); - return Result.error(); - } - } - - @At - @ViReturn - @RequiresPermissions("jsz.hdmange") - public Object pageData(@Param(value = "year", required = false) Integer year, - @Param(value = "type", required = false) String type, - @Param(value = "searchName", required = false) String searchName, - @Param(value = "searchKeyword", required = false) String searchKeyword, - @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, - @Param(value = "pageOrderName", required = true) String pageOrderName, - @Param(value = "pageOrderBy", required = false) String pageOrderBy) throws IOException { - int skip = (pageNumber == 1 ? 0 : (pageNumber - 1)) * pageSize; - - String query = """ - db.collection('activity') - .where(%s) - .skip(%d) - .limit(%d) - .orderBy('start_time','desc').get() - """; - - List and = new ArrayList<>(); - String search_sql = ""; - String ts_sql = ""; - StringBuilder s = new StringBuilder(); - - if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { - search_sql = """ - _.or([ - { - name:{$regex:'%s',$options: 'i'} - }, - { - tag:{$regex:'%s',$options: 'i'} - } - ]) - """.formatted(searchKeyword, searchKeyword); - } - if (year != null) { - Calendar calendar = Calendar.getInstance(); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - long start_ts = calendar.getTimeInMillis(); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - calendar.roll(Calendar.DAY_OF_YEAR, -1); - long end_ts = calendar.getTimeInMillis(); - String activity_apply_user_cnd = "_.neq(null)"; - if (!ShiroUtil.hasRole("sysadmin")) { - activity_apply_user_cnd = "'" + ShiroUtil.getUserId() + "'"; - } - ts_sql = "{apply_start_time:_.and(_.gte(%d),_.lte(%d)),activity_apply_user:%s}".formatted(start_ts, end_ts, activity_apply_user_cnd); - } - - if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { - s.append(search_sql); - if (year != null) { - s.append(".and("); - s.append(ts_sql); - s.append(")"); - } - } - if (year != null && Strings.isBlank(searchKeyword)) { - s.append(ts_sql); - } - - query = query.formatted(s, skip, pageSize); - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - - NutMap pager = result.getAs("pager", NutMap.class); - - return new Pagination(pageNumber, pageSize, pager.getInt("Total"), result.getList("data", Map.class)); - } - - - @At - @ViReturn - @RequiresPermissions("jsz.hdmange") - public Object getData(String id) throws IOException { - String query = "db.collection('activity').doc('%s').get()".formatted(id); - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", Map.class); - return data.size() > 0 ? data.get(0) : new Object(); - } - - @At - @Ok("json") - @RequiresPermissions("jsz.hdmange") - public Object getFile(String pic) { - try { - NutMap res = NutMap.NEW(); - String imgurl = wxHttpUtil.getWxFileUrl(pic); - HashMap imgmap = new HashMap<>(); - imgmap.put("status", "success"); - imgmap.put("name", imgurl.substring(imgurl.lastIndexOf("/") + 1)); - imgmap.put("id", imgurl); - imgmap.put("url", imgurl); - res.setv("img", imgmap); - return Result.success().addData(res); - } catch (Exception e) { - return Result.error(); - } - } - - - @At - @CacheRemoveAll - @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) - @RequiresPermissions("jsz.hdmange") - public Object doEdit(String data, TempFile file) { - try { - String picid = ""; - if (file != null) { - NutMap picmap = wxHttpUtil.getUploadFile("activity/" + file.getSubmittedFileName()); - picid = wxHttpUtil.uploadFile(picmap, file, "activity/" + file.getSubmittedFileName()); - } - - NutMap map = Json.fromJson(NutMap.class, data); - - StringBuilder ptsBuffer = new StringBuilder(""); - NutMap[] pts = map.getArray("pts", NutMap.class); - for (int i = 0; i < pts.length; i++) { - NutMap pt = pts[i]; - ptsBuffer.append("{") - .append("issueIds:").append(pt.getAsList("issueIds", String.class).stream().map(v -> "'" + v + "'").collect(Collectors.toList())).append(",") - .append("code:'").append(pt.getString("code")).append("',") - .append("name:'").append(pt.getString("name")).append("',") - .append("radius:").append(pt.getInt("radius")).append(",") - .append("interval:").append(pt.getInt("interval", 0)).append(",") - .append("receivePoint:").append(pt.getBoolean("receivePoint")).append(",") - .append("location:new db.Geo.Point(").append(pt.getDouble("lng")).append(",") - .append(pt.getDouble("lat")).append(")").append("}"); - if (i < pts.length - 1) { - ptsBuffer.append(","); - } - } - - StringBuilder lpBuffer = new StringBuilder(""); - ArrayList[] linePoints = map.getArray("linePoints", ArrayList.class); - for (int i = 0; i < linePoints.length; i++) { - ArrayList linePoint = linePoints[i]; - lpBuffer.append("new db.Geo.Point(").append(linePoint.get(0)).append(",") - .append(linePoint.get(1)).append(")"); - if (i < linePoints.length - 1) { - lpBuffer.append(","); - } - } - String picSql = ""; - if (Strings.isNotBlank(picid)) { - picSql = String.format("pic:'%s'", picid); - } - - String query = """ - db.collection('activity').doc('%s') - .update({ - data: - { - groupId:%s, - questionId:'%s', - hasAnswer:%b, - showGift:%b, - gift_name:'%s', - tag:'%s', - name:'%s', - activityModel:'%s', - dailyLottery:'%d', - walkingStepCount:'%d', - lotteryChance:%b, - repeatedlyLottery:%b, - leaderboardNum:'%d', - drawTime:%d, - lotteryTime:'%s', - address:'%s', - note:'%s', - apply_start_time:%d, - apply_end_time:%d, - start_time:%d, - end_time:%d, - pts:[%s], - linePoints:[%s], - toast_num:%d, - toast_msg: '%s', - check_all_msg: '%s', - checkControl:%d, - schoolCode:'%s', - activity_apply_user:'%s', - sendNotify:%b, - %s - } - }) - """.formatted( - map.getString("_id"), - map.getString("groupId"), - map.getString("questionId"), - map.getBoolean("hasAnswer"), - map.getBoolean("showGift"), - map.getString("gift_name"), - map.getString("tag"), - map.getString("name"), - map.getString("activityModel"), - map.getInt("dailyLottery"), - map.getInt("walkingStepCount"), - map.getBoolean("lotteryChance"), - map.getBoolean("repeatedlyLottery"), - map.getInt("leaderboardNum"), - map.getLong("drawTime"), - map.getString("lotteryTime"), - map.getString("address"), - map.getString("note").replaceAll("\r|\n", ""), - map.getLong("apply_start_time"), - map.getLong("apply_end_time"), - map.getLong("start_time"), - map.getLong("end_time"), - ptsBuffer.toString(), - lpBuffer.toString(), - map.get("toast_num") == null ? 0 : map.getInt("toast_num"), - map.getString("toast_msg"), - map.getString("check_all_msg"), - map.getInt("checkControl"), - Globals.schoolCode, - ShiroUtil.getUserId(), - map.getBoolean("sendNotify", false), - picSql - ); - log.debug(query); - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.updateUrl, query); - if (result.getInt("errcode") == 0 && result.getString("errmsg").equals("ok")) { - addNotifyTask(map); - return Result.success(); - } - return Result.error(); - } catch (Exception e) { - return Result.error(); - } - } - - - public void addTask(NutMap map) { -// Trans.exec(() -> { -// try { -// if (map.getInt("dailyLottery") > 0) { -// //先删除在添加 -// List sys_tasks = sysTaskService.query(Cnd.where("note", "=", map.getString("_id"))); -// if (sys_tasks != null) { -// sys_tasks.forEach(v -> { -// taskPlatformService.delete(v.getId(), v.getId()); -// sysTaskService.delete(v.getId()); -// }); -// -// } -// -// -// Sys_task sys_task = new Sys_task(); -// sys_task.setName(map.getString("name")); -// sys_task.setNote(map.getString("_id")); -// sys_task.setJobClass(JOB_CLASS); -// sys_task.setData(Json.toJson(new HashMap() {{ -// put("id", map.getString("_id")); -// }})); -// sys_task.setDisabled(false); -// if (!map.getBoolean("repeatedlyLottery")) { -// Date drawTime = new Date(map.getLong("drawTime")); -// String cron = io.v.nutz.base.utils.DateUtil.getCron(drawTime); -// sys_task.setCron(cron); -// List cronExeTimes = taskPlatformService.getCronExeTimes(cron); -// if (cronExeTimes.size() == 0) { -// return; -// } -// sys_task = sysTaskService.insert(sys_task); -// taskPlatformService.add(sys_task.getId(), sys_task.getId(), sys_task.getJobClass(), sys_task.getCron(), sys_task.getNote(), sys_task.getData()); -// } else { -// String lotteryTime = map.getString("lotteryTime"); -// long start_time_long = map.getLong("start_time"); -// long end_time_long = map.getLong("end_time"); -// -// List taskDates = new ArrayList<>(); -// int offsetDay = 0; -// while (DateUtil.offsetDay(new Date(start_time_long), offsetDay).compareTo(new Date(end_time_long)) < 0 || -// DateUtil.offsetDay(new Date(start_time_long), offsetDay).compareTo(new Date(end_time_long)) == 0) { -// taskDates.add(DateUtil.offsetDay(new Date(start_time_long), offsetDay)); -// offsetDay++; -// } -// -// for (Date taskDate : taskDates) { -// Calendar instance = Calendar.getInstance(); -// instance.setTime(taskDate); -// int year = instance.get(Calendar.YEAR); -// int month = instance.get(Calendar.MONTH) + 1; -// int day = instance.get(Calendar.DATE); -// String[] time = lotteryTime.split(":"); -// String cron = time[2] + " " + time[1] + " " + time[0] + " " + day + " " + month + " " + " ? " + year + " "; -// sys_task.setCron(cron); -// List cronExeTimes = taskPlatformService.getCronExeTimes(cron); -// if (cronExeTimes.size() == 0) { -// return; -// } -// sys_task = sysTaskService.insert(sys_task); -// taskPlatformService.add(sys_task.getId(), sys_task.getId(), sys_task.getJobClass(), sys_task.getCron(), sys_task.getNote(), sys_task.getData()); -// } -// -// -// } -// -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// }); - } - - - @At - @ViReturn - @CacheRemove - @RequiresPermissions("jsz.hdmange") - public Object delete(String id) throws IOException { - String query = "db.collection('activity').doc('" + id + "').remove()"; - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.deleteUrl, query); - if (wxResult.getInt("errcode") == 0 && wxResult.getString("errmsg").equals("ok")) { - - String s1 = "db.collection('register').where({\n" + - " activity_id: '" + id + "'\n" + - "}).remove()\n"; - String s2 = "db.collection('sign').where({\n" + - " activity_id: '" + id + "'\n" + - "}).remove()\n"; - - wxHttpUtil.getWxResult(wxHttpUtil.deleteUrl, s1); - wxHttpUtil.getWxResult(wxHttpUtil.deleteUrl, s2); - List sys_tasks = sysTaskService.query(Cnd.where("note", "=", id)); - if (sys_tasks != null) { - sys_tasks.forEach(v -> { - taskPlatformService.delete(v.getId(), v.getId()); - sysTaskService.delete(v.getId()); - }); - - } - return Result.success(); - } - - return Result.error(); - } - - @At - @ViReturn - public Object getFitnessData() throws IOException { - String query = "db.collection('activity').where({schoolCode:'%s'}).orderBy('apply_start_time', 'desc').get()".formatted(Globals.schoolCode); - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = result.getList("data", NutMap.class); - return data.size() > 0 ? data : new ArrayList<>(); - //return Collections.emptyList(); - } - - @At - @ViReturn - public Object getActivityData() throws IOException { - - Long yearStartTime = getYearStartTime(); - Long yearEndTime = getYearEndTime(); - - String query = "db.collection('activity')\n" + - " .where({\n" + - " apply_start_time: _.and(_.gte(" + yearStartTime + "), _.lte(" + yearEndTime + "))\n" + - " }).get()"; - - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", Map.class); - return data; - - } - - /** - * 获取当年的开始时间戳 - * - * @return - */ - public static Long getYearStartTime() { - Calendar calendar = Calendar.getInstance();// 获取当前日期 - calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); - calendar.setTimeInMillis(System.currentTimeMillis()); - calendar.add(Calendar.YEAR, 0); - calendar.add(Calendar.DATE, 0); - calendar.add(Calendar.MONTH, 0); - calendar.set(Calendar.DAY_OF_YEAR, 1); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - return calendar.getTimeInMillis(); - } - - /** - * 获取当年的最后时间戳 - * - * @return - */ - public static Long getYearEndTime() { - Calendar calendar = Calendar.getInstance();// 获取当前日期 - calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); - calendar.setTimeInMillis(System.currentTimeMillis()); - int year = calendar.get(Calendar.YEAR); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - calendar.set(Calendar.MILLISECOND, 999); - calendar.roll(Calendar.DAY_OF_YEAR, -1); - return calendar.getTimeInMillis(); - } - - /** - * 健身走健步模式通知提醒 - * - * @param map - */ - private void addNotifyTask(NutMap map) { - if (map.getBoolean("sendNotify")) { - String id = map.getString("_id"); - String name = map.getString("name"); - String groupId = map.getString("groupId"); - - //提醒频率 - int notifyGap = 10; - - List sys_tasks = sysTaskService.query(Cnd.where("note", "=", id)); - if (Lang.isNotEmpty(sys_tasks)) { - sys_tasks.forEach(v -> { - taskPlatformService.delete(v.getId(), v.getId()); - sysTaskService.delete(v.getId()); - }); - } - - DateTime startTime = DateUtil.date(map.getLong("start_time")); - DateTime endTime = DateUtil.date(map.getLong("end_time")); - - Set result = new HashSet<>(); - DateTime offsetDay = DateUtil.offsetDay(startTime, notifyGap); - while (offsetDay.isBefore(endTime) && offsetDay.isAfter(new Date())) { - result.add(offsetDay); - offsetDay = DateUtil.offsetDay(offsetDay, notifyGap); - } - //活动结束前一天再添加一个日期提醒 - result.add(DateUtil.offsetDay(endTime, -1)); - - for (DateTime dateTime : result) { - Sys_task sys_task = new Sys_task(); - sys_task.setName(name); - sys_task.setNote(id); - sys_task.setJobClass("io.v.nutz.task.job.walking.WalkingNotifyJob"); - sys_task.setData(Json.toJson(Map.of("groupId", groupId))); - sys_task.setDisabled(false); - - String dateFormat = "ss mm HH dd MM ? yyyy"; - SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); - String corn = sdf.format(dateTime); - sys_task.setCron(corn); - - sysTaskService.insert(sys_task); - - taskPlatformService.add(sys_task.getId(), sys_task.getId(), sys_task.getJobClass(), sys_task.getCron(), sys_task.getNote(), sys_task.getData()); - } - } - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCloudBackUpController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCloudBackUpController.java deleted file mode 100644 index 133f588..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCloudBackUpController.java +++ /dev/null @@ -1,307 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.http.HttpUtil; -import cn.wizzer.framework.base.Result; -import com.alibaba.fastjson.JSONObject; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.page.Pagination; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.base.utils.WxTokenUtil; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.zhgh.jsz.models.Jsz_backup; -import io.v.nutz.sys.services.SysUserService; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.boot.starter.ftp.FtpService; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.*; -import java.util.concurrent.*; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -@IocBean -@At("/platform/jsz/cloudbackup") -@Slf4j -@Ok("json:full") -public class JszCloudBackUpController { - - @Inject - private WxTokenUtil wxTokenUtil; - - @Inject - private FtpService ftpService; - - @Inject - private SysUserService userService; - - @Inject - private Dao dao; - - private static final String UPLOAD_FILE_PATH = "/jsz"; - - @At("") - @Ok("beetl:/platform/jsz/pc/cloudbackup.html") - @RequiresPermissions("jsz.cloudbackup") - public void index() { - } - - - /** - * 集合名称 - * - * @return {@link Object} - */ - @At - @ViReturn - @RequiresPermissions("jsz.cloudbackup") - public Object databasecollectionget() { - String accessToken = wxTokenUtil.getAccessToken(); - Map dataMap = new HashMap<>(4); - dataMap.put("env", WxHttpUtil.env); - String response = HttpUtil.post("https://api.weixin.qq.com/tcb/databasecollectionget?access_token=" + accessToken, Json.toJson(dataMap)); - JSONObject jsonObject = JSONObject.parseObject(response); - if (jsonObject.getString("errmsg").equals("ok")) { - return jsonObject.getJSONArray("collections"); - } - return Result.error(); - } - - /** - * 备份 - * - * @param collections 集合名称 - * @return {@link Object} - */ - @At - @ViReturn - @RequiresPermissions("jsz.cloudbackup") - public Object databaseMigrateExport(@Param("collections") String[] collections) { - String accessToken = wxTokenUtil.getAccessToken(); - - Map jobIdMap = new ConcurrentHashMap<>(); - - // 获取每个集合的导出任务id存到jobIdMap - List> jobIdFutures = Arrays.stream(collections) - .map(collection -> CompletableFuture.runAsync(() -> { - Map dataMap = new HashMap<>(4); - dataMap.put("env", WxHttpUtil.env); - dataMap.put("file_path", "backup_export"); - dataMap.put("file_type", 1); - dataMap.put("query", "db.collection('" + collection + "').get()"); - String response = HttpUtil.post("https://api.weixin.qq.com/tcb/databasemigrateexport?access_token=" + accessToken, Json.toJson(dataMap)); - JSONObject jsonObject = JSONObject.parseObject(response); - if ("ok".equals(jsonObject.getString("errmsg"))) { - jobIdMap.computeIfAbsent(collection, k -> jsonObject.getLong("job_id")); - } - })) - .collect(Collectors.toList()); - - CompletableFuture.allOf(jobIdFutures.toArray(new CompletableFuture[0])).join(); - log.debug(jobIdMap.toString()); - - // 获取导出任务的执行状态,全部执行完后返回 - List resultList = new CopyOnWriteArrayList<>(); - - CompletableFuture resultAllOf = CompletableFuture.allOf(jobIdMap.entrySet().stream() - .map(entry -> executeAsyncRequest(entry, accessToken, resultList)) - .toArray(CompletableFuture[]::new)); - resultAllOf.join(); - - //上传文件并且插入到数据库 - String backUpTime = DateUtil.format(new Date(), "yyyyMMddHHmmss"); - List> futures = resultList.stream().map(v -> insertBackUp(v, backUpTime, ftpService, dao)).collect(Collectors.toList()); - CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); - return Result.success(); - - -// Map jobIdMap = new ConcurrentHashMap<>(); -// //获取每个集合的导出任务id -// List jobIdFutures = Arrays.stream(collections) -// .map(collection -> CompletableFuture.runAsync(() -> { -// Map dataMap = new HashMap<>(4); -// dataMap.put("env", WxHttpUtil.env); -// dataMap.put("file_path", "backup_export"); -// dataMap.put("file_type", 1); -// dataMap.put("query", "db.collection('" + collection + "').get()"); -// String response = HttpUtil.post("https://api.weixin.qq.com/tcb/databasemigrateexport?access_token=" + accessToken, Json.toJson(dataMap)); -// JSONObject jsonObject = JSONObject.parseObject(response); -// if (jsonObject.getString("errmsg").equals("ok")) { -// jobIdMap.put(collection, jsonObject.getLong("job_id")); -// } -// })) -// .collect(Collectors.toList()); -// CompletableFuture allOf = CompletableFuture.allOf(jobIdFutures.toArray(new CompletableFuture[0])); -// allOf.join(); -// log.debug(jobIdMap.toString()); -// -// //获取导出任务的执行状态,全部执行完后返回 -// Map resultMap = new ConcurrentHashMap<>(); -// -// List resultList = new CopyOnWriteArrayList<>(); -// -// CompletableFuture resultAllOf = CompletableFuture.allOf(jobIdMap.entrySet().stream().map(entry -> executeAsyncRequest(entry, accessToken, resultMap, resultList)).toArray(CompletableFuture[]::new)); -// -// -// try { -// resultAllOf.get(); -// } catch (InterruptedException | ExecutionException e) { -// throw new RuntimeException(e); -// } -// -// //插入到本地 -// String backUpTime = DateUtil.format(new Date(), "yyyyMMddHHmmss"); -// String filepath = UPLOAD_FILE_PATH + "/" + backUpTime; -// List> futures = resultList.stream().map(v -> CompletableFuture.runAsync(() -> { -// byte[] bytes = HttpUtil.get(v.getString("file_url")).getBytes(); -// InputStream inputStream = new ByteArrayInputStream(bytes); -// String fileName = v.getString("collection") + ".json"; -// //上传文件到本地 -// ftpService.upload(filepath, fileName, inputStream); -// //插入数据库记录 -// Jsz_backup backup = new Jsz_backup(); -// backup.setCollection(v.getString("collection")); -// backup.setFilePath(filepath + "/" + fileName); -// backup.setFileName(fileName); -// backup.setBackUpDate(backUpTime); -// dao.insert(backup); -// })).collect(Collectors.toList()); -// CompletableFuture allOfLocal = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); -// allOfLocal.join(); -// return Result.success(); - } - - /** - * 迁移状态查询 微信转json也需要耗时 需要不断递归去查询是否转换完成 - * - * @param entry 集合->任务ID - * @param accessToken token - * @param resultList 返回list - * @return - */ - private static CompletableFuture executeAsyncRequest(Map.Entry entry, String accessToken, List resultList) { - String k = entry.getKey(); - Long v = entry.getValue(); - Supplier> futureSupplier = () -> CompletableFuture.supplyAsync(() -> { - Map dataMap = new HashMap<>(2); - dataMap.put("env", WxHttpUtil.env); - dataMap.put("job_id", v); - - String response = HttpUtil.post("https://api.weixin.qq.com/tcb/databasemigratequeryinfo?access_token=" + accessToken, Json.toJson(dataMap)); - JSONObject jsonObject = JSONObject.parseObject(response); - - System.out.println(jsonObject.getString("status")); - System.out.println(jsonObject.getString("error_msg")); - - if ("success".equals(jsonObject.getString("status"))) { - jsonObject.put("collection", k); - jsonObject.put("jobId", v); - resultList.add(jsonObject); - } else if ("fail".equals(jsonObject.getString("status"))) { - throw new RuntimeException(jsonObject.getString("error_msg")); - } else { - // 如果 status 不是 success,继续发送请求 - executeAsyncRequest(entry, accessToken, resultList).join(); - } - return null; - }); - - // 使用 thenCompose 实现递归调用 - return CompletableFuture.supplyAsync(() -> null).thenCompose(ignore -> futureSupplier.get()); - } - - private static CompletableFuture insertBackUp(JSONObject v, String backUpTime, FtpService ftpService, Dao dao) { - String filepath = UPLOAD_FILE_PATH + "/" + backUpTime; - - byte[] bytes = HttpUtil.get(v.getString("file_url")).getBytes(); - InputStream inputStream = new ByteArrayInputStream(bytes); - String fileName = v.getString("collection") + ".json"; - // 上传文件到本地 - ftpService.upload(filepath, fileName, inputStream); - // 插入数据库记录 - Jsz_backup backup = new Jsz_backup(); - backup.setCollection(v.getString("collection")); - backup.setFilePath(filepath + "/" + fileName); - backup.setFileName(fileName); - backup.setBackUpDate(backUpTime); - dao.insert(backup); - return CompletableFuture.supplyAsync(() -> null); - } - - /** - * pageData - * - * @param pageForm pageForm - * @return {@link Object} - */ - @At - @ViReturn - @RequiresPermissions("jsz.cloudbackup") - public Object pageData(PageForm pageForm) { - Sql sql = Sqls.create(""" - SELECT - jb.backUpDate, - u.username - FROM - jsz_backup jb - left join sys_user u on u.id = jb.createdBy - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.groupBy("jb.backUpDate"); - sql.setCondition(cnd); - - Pagination pagination = userService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); - List list = pagination.getList(); - for (NutMap nutMap : list) { - nutMap.put("list", dao.query(Jsz_backup.class, Cnd.where("backUpDate", "=", nutMap.getString("backUpDate")))); - } - return pagination; - } - - /** - * 下载 - * - * @param filePath - * @param response - */ - @At - @Ok("void") - @RequiresPermissions("jsz.cloudbackup") - public void download(String filePath, HttpServletResponse response) { - int lastSlashIndex = filePath.lastIndexOf('/'); - String fileName = filePath.substring(lastSlashIndex + 1); - ServletOutputStream outputStream; - try { - response.setContentType("image/jpg"); - response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1")); - outputStream = response.getOutputStream(); - ftpService.download(filePath, outputStream); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @At - @ViReturn - @RequiresPermissions("jsz.cloudbackup") - public Object restoreData(@Param("backup") Jsz_backup backup) { - return null; - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCommonCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCommonCon.java deleted file mode 100644 index 8587c9f..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszCommonCon.java +++ /dev/null @@ -1,151 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.wizzer.framework.base.Result; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.zhgh.jsz.services.JszTypeService; -import io.v.nutz.zhgh.question.model.Question_issue; -import io.v.nutz.zhgh.question.model.Question_reply; -import io.v.nutz.zhgh.question.service.QuestionIssueService; -import io.v.nutz.zhgh.question.service.QuestionReplyService; -import io.v.nutz.zhgh.question.service.QuestionService; -import io.v.nutz.zhgh.question.service.QuestionWorService; -import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.web.commons.base.Globals; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.nutz.dao.Cnd; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Strings; -import org.nutz.lang.random.R; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.adaptor.JsonAdaptor; -import org.nutz.mvc.annotation.AdaptBy; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import java.io.IOException; -import java.util.Calendar; -import java.util.List; -import java.util.Map; - -/** - * @Author: 1V - * @DateTime: 2020/9/1 10:02 - * @Description: TODO - */ -@At("/jsz/common") -@Ok("json") -@IocBean -@RequiresAuthentication -public class JszCommonCon { - @Inject - private JszTypeService jszTypeService; - - @Inject - private WxHttpUtil wxHttpUtil; - - /** - * 获取类型 - * - * @return - */ - @At - @ViReturn - public Object getTypes() { - return jszTypeService.query(Cnd.NEW().asc("location")); - } - - /** - * 获取所有的活动 - * - * @return - */ - @At - public Object getAllHd(Integer year, String beforeTime, String endTime) { - try { - String str = ""; - -// if (Strings.isNotBlank(beforeTime) && Strings.isNotBlank(endTime)) { -// str = "start_time:_.gt(" + beforeTime + "),start_time:_.lt(" + endTime + ")"; -// } - - if (year != null) { - Calendar calendar = Calendar.getInstance(); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - long start_ts = calendar.getTimeInMillis(); - calendar.clear(); - calendar.set(Calendar.YEAR, year); - calendar.roll(Calendar.DAY_OF_YEAR, -1); - long end_ts = calendar.getTimeInMillis(); - String activity_apply_user_cnd = "_.neq(null)"; - if (!ShiroUtil.hasRole("sysadmin")) { - activity_apply_user_cnd = "'" + ShiroUtil.getUserId() + "'"; - } - str = "apply_start_time:_.and(_.gte(%d),_.lte(%d)),schoolCode:'%s',activity_apply_user:%s".formatted(start_ts, end_ts, Globals.schoolCode, activity_apply_user_cnd); - } - - String query = "db.collection('activity').where({\n" + - str + - "}).field({\n" + - "tag: true,\n" + - "name: true,\n" + - "startTime: true,\n" + - "endTime: true,\n" + - "activityModel: true,\n" + - "}).orderBy('startTime', 'desc').get()"; - - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", Map.class); - return Result.success().addData(data); - } catch (IOException e) { - e.printStackTrace(); - return Result.error(); - } - } - - - @Inject - private QuestionService questionService; - - @Inject - private QuestionIssueService questionIssueService; - - @Inject - private QuestionWorService questionWorService; - - @Inject - private QuestionReplyService questionReplyService; - - @At - @ViReturn - public Object getQuestion() { - return questionService.query(Cnd.where("qflag", "=", 2)); - } - - @At - @ViReturn - public Object getIssueById(String id) { - List questionIssues = questionIssueService.query(Cnd.where("iqid", "=", id).asc("ipxbh")); - questionIssues.forEach(issue -> { - issue.setWors(questionWorService.query(Cnd.where("wiid", "=", issue.getIid()).asc("wpxbh"))); - }); - return questionIssues; - } - - @At - @ViReturn - @AdaptBy(type = JsonAdaptor.class) - public Object saveAnswer(@Param("reply") Question_reply[] replys) { - for (Question_reply reply : replys) { - reply.setSave(false); - reply.setRidentity(R.UU32()); - reply.setRtime(DateUtil.getDate()); - questionReplyService.insert(reply); - } - return null; - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszLoginRecordCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszLoginRecordCon.java deleted file mode 100644 index 18b6b8a..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszLoginRecordCon.java +++ /dev/null @@ -1,120 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.wizzer.framework.base.Result; -import cn.wizzer.framework.page.Pagination; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.WxHttpUtil; -import io.v.nutz.web.commons.base.Globals; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; -import org.nutz.lang.Strings; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -/** - * @Author: 1V - * @DateTime: 2020/9/24 15:32 - * @Description: TODO - */ -@At("/platform/jsz/login/record") -@Ok("json") -@IocBean -@RequiresAuthentication -public class JszLoginRecordCon { - - @Inject - private WxHttpUtil wxHttpUtil; - - @At("") - @Ok("beetl:/platform/jsz/pc/LoginRecord.html") - @RequiresPermissions("jsz.login.record") - public void index() { - } - - @At - @ViReturn - @RequiresPermissions("jsz.login.record") - public Object pageData(@Param(value = "keyWord",required = false) String keyWord, - @Param(value = "searchName",required = false) String searchName, - @Param(value = "searchKeyword",required = false) String searchKeyword, - @Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize, - @Param(value = "pageOrderName",required = false) String pageOrderName, - @Param(value = "pageOrderBy",required = false) String pageOrderBy) throws IOException { - String cnd = ""; - - if (Strings.isNotBlank(keyWord)) { - cnd = " _.or([{\n" + - " loginname: db.RegExp({\n" + - " regexp: '" + keyWord + "',\n" + - " options: 'i',\n" + - " })},{\n" + - " username: db.RegExp({\n" + - " regexp: '" + keyWord + "',\n" + - " options: 'i',\n" + - " })\n" + - " }]).and({schoolCode:'" + Globals.schoolCode + "'})"; - } else { - cnd = "{schoolCode:'" + Globals.schoolCode + "'}"; - } - - - int skip = (pageNumber == 1 ? 0 : (pageNumber - 1)) * pageSize; - - String query = "db.collection('login_record').where(" + cnd - + ").field({ data: false }).skip(" + skip + ").limit(" + pageSize + ").get()"; - - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - - NutMap pager = result.getAs("pager", NutMap.class); - - List list = result.getList("data", Map.class); - list.forEach(v -> { - String openid = (String) v.get("openid"); - v.put("openid", openid.substring(0, 3) + "******" + openid.substring(openid.length() - 3)); - }); - - return new Pagination(pageNumber, pageSize, pager.getInt("Total"), list); - } - - - @At - @RequiresPermissions("jsz.login.record") - public Object delete(String[] ids) throws IOException { - try { - String s = "db.collection('login_record').where({_id:_.in(" + Json.toJson(ids) + ")}).remove()\n"; - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.deleteUrl, s); - if (wxResult.getInt("errcode") == 0 && wxResult.getString("errmsg").equals("ok")) { - return Result.success(); - } - return Result.error(); - } catch (Exception e) { - return Result.error(); - } - } - - @At - @RequiresPermissions("jsz.login.record") - public Object deleteAll() throws IOException { - try { - String s = "db.collection('login_record').where({schoolCode: _.eq('" + Globals.schoolCode + "')}).remove()\n"; - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.deleteUrl, s); - if (wxResult.getInt("errcode") == 0 && wxResult.getString("errmsg").equals("ok")) { - return Result.success(); - } - return Result.error(); - } catch (Exception e) { - return Result.error(); - } - } - - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszPrizeController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszPrizeController.java deleted file mode 100644 index 642646b..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszPrizeController.java +++ /dev/null @@ -1,123 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import cn.hutool.core.date.DateUtil; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.ViTool; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.dao.util.Daos; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import javax.servlet.http.HttpServletResponse; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @FileName io.v.nutz.jsz.controller.pc.JszPrizeController - * @Description: TODO - * @Author zxc - * @Date 2022/9/8:15:06 - * @Version V1.0 - **/ -@IocBean -@At("/platform/jsz/prize") -public class JszPrizeController { - - @At("") - @Ok("beetl:/platform/jsz/pc/prize.html") - @RequiresAuthentication - public void index() { - } - - @Inject - private Dao dao; - - private String getSql() { - return """ - SELECT - u.loginname, - u.username, - u.unionname, - u.unitname, - al.applyDate, - date_format(al.applyDate,'%Y-%m-%d') as prizeData - FROM - `jsz_award_list` al - LEFT JOIN `user` u ON u.id = al.userId - $condition - """; - } - - @At("/prizeDataList") - @Ok("json:full") - @ViReturn - public Object prizeDataList(@Param("activityId") String activityId) { - Date toDay = new Date(); - - Sql sql = Sqls.create(getSql()); - Cnd cnd = Cnd.NEW(); - cnd.and("activityId", "=", activityId); - sql.setCondition(cnd); - List list = (List) Daos.query(dao, sql.toString(), Sqls.callback.maps()); - - List yesterdayList = list.stream().filter(v -> v.getString("applyDate").substring(0, 10).equals(DateUtil.format(DateUtil.offsetDay(toDay, -1), "yyyy-MM-dd"))).collect(Collectors.toList()); -// List toDayList = list.stream().filter(v -> v.getString("applyDate").substring(0, 10).equals(DateUtil.format(toDay, "yyyy-MM-dd"))).collect(Collectors.toList()); - - return Map.of("toDayList", Collections.emptyList(), "yesterdayList", yesterdayList, "totalList", list); - } - - @At("/exportExcel") - @Ok("void") - @RequiresAuthentication - public void exportExcel(@Param("activityId") String activityId, - @Param("currentSelectedType") String currentSelectedType, - HttpServletResponse response) { - Date toDay = new Date(); - - Sql sql = Sqls.create(getSql()); - Cnd cnd = Cnd.NEW(); - cnd.and("activityId", "=", activityId); - sql.setCondition(cnd); - - List exportList = new ArrayList<>(); - - List list = (List) Daos.query(dao, sql.toString(), Sqls.callback.maps()); - if ("yesterdayList".equals(currentSelectedType)) { - exportList = list.stream().filter(v -> v.getString("applyDate").substring(0, 10).equals(DateUtil.format(DateUtil.offsetDay(toDay, -1), "yyyy-MM-dd"))).collect(Collectors.toList()); - } else { - exportList = list; - } - - List entityList = new ArrayList<>() {{ - add(new ExcelExportEntity("姓名", "username", 20)); - add(new ExcelExportEntity("工号", "loginname", 20)); - add(new ExcelExportEntity("单位", "unitname", 20)); - add(new ExcelExportEntity("分工会", "unionname", 20)); - add(new ExcelExportEntity("日期", "prizeData", 20)); - }}; - - try { - ViTool.excelResponse(response, "导出数据.xlsx"); - ExportParams exportParams = new ExportParams(); - exportParams.setType(ExcelType.XSSF); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, exportList); - workbook.write(response.getOutputStream()); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszStepCountingRankCon.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszStepCountingRankCon.java deleted file mode 100644 index bba3843..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/JszStepCountingRankCon.java +++ /dev/null @@ -1,140 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.page.Pagination; -import io.v.nutz.base.service.BaseService; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.base.utils.ViTool; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.dao.Cnd; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.List; - -/** - * TODO - * - * @Author zhf - * @Date 2022/9/9 14:07 - */ -@IocBean -@At("/platform/jsz/StepCountingRank") -public class JszStepCountingRankCon { - - - @At("") - @Ok("beetl:/platform/jsz/pc/stepCountingRank.html") - @RequiresPermissions("jsz.StepCountingRank") - public void index() { - } - - @Inject - private BaseService baseService; - - private String getSql() { - return """ - SELECT - u.loginname, - u.username, - u.unionname, - u.unitname, - al.applyDate, - al.step, - date_format(al.applyDate,'%Y-%m-%d') as prizeData - FROM - `jsz_wx_step` al - LEFT JOIN `user` u ON u.id = al.userId - $condition - """; - } - - @At - @Ok("json:full") - @ViReturn - @RequiresPermissions("jsz.StepCountingRank") - public Object pageData(PageForm pageForm, - @Param(value = "year",required = false) Integer year, - @Param(value = "hdid",required = false) String hdid, - @Param(value = "activityDate",required = false) String[] activityDate, - @Param(value = "unionId",required = false) String unionId, - @Param(value = "unitId",required = false) String unitId) { - Cnd cnd = Cnd.NEW(); - Sql sql = Sqls.create(getSql()); - if (Lang.isNotEmpty(activityDate)) { - cnd.and("date_format(al.applyDate,'%Y-%m-%d')", ">=", activityDate[0]); - cnd.and("date_format(al.applyDate,'%Y-%m-%d')", ">=", activityDate[1]); - } - cnd.andEX("YEAR(al.applyDate)", "=", year); - cnd.andEX("al.activityId", "=", hdid); - cnd.andEX("u.unionid", "=", unionId); - cnd.andEX("u.unitId", "=", unitId); - cnd.desc("al.step"); - cnd.desc("u.unioncode"); - - sql.setCondition(cnd); - Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); - return pagination; - } - - - @At("/exportExcel") - @Ok("void") - @RequiresAuthentication - @RequiresPermissions("jsz.StepCountingRank") - public void exportExcel(@Param(value = "hdid",required = false) String hdid, - @Param(value = "activityDate",required = false) String[] activityDate, - @Param(value = "unionId",required = false) String unionId, - @Param(value = "unitId",required = false) String unitId, HttpServletResponse response) { - Cnd cnd = Cnd.NEW(); - Sql sql = Sqls.create(getSql()); - if (activityDate.length > 0) { - cnd.and("date_format(al.applyDate,'%Y-%m-%d')", ">=", activityDate[0]); - cnd.and("date_format(al.applyDate,'%Y-%m-%d')", ">=", activityDate[1]); - } - cnd.andEX("al.activityId", "=", hdid); - cnd.andEX("u.unionid", "=", unionId); - cnd.andEX("u.unitId", "=", unitId); - cnd.desc("al.step"); - cnd.desc("u.unioncode"); - - List exportList = baseService.listMap(sql); - - List entityList = new ArrayList<>() {{ - add(new ExcelExportEntity("姓名", "username", 20)); - add(new ExcelExportEntity("工号", "loginname", 20)); - add(new ExcelExportEntity("单位", "unitname", 20)); - add(new ExcelExportEntity("分工会", "unionname", 20)); - add(new ExcelExportEntity("当前步数", "step", 20)); - add(new ExcelExportEntity("日期", "prizeData", 20)); - }}; - - try { - ViTool.excelResponse(response, "导出数据.xlsx"); - ExportParams exportParams = new ExportParams(); - exportParams.setType(ExcelType.XSSF); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, exportList); - workbook.write(response.getOutputStream()); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/TkMangeController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/TkMangeController.java deleted file mode 100644 index 27845f8..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/TkMangeController.java +++ /dev/null @@ -1,178 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.wizzer.framework.base.Result; -import cn.wizzer.framework.page.Pagination; -import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.WxHttpUtil; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.authz.annotation.RequiresAuthentication; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; -import org.nutz.lang.Strings; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; -import org.nutz.plugins.wkcache.annotation.CacheDefaults; -import org.nutz.plugins.wkcache.annotation.CacheRemove; -import org.nutz.plugins.wkcache.annotation.CacheRemoveAll; -import org.nutz.plugins.wkcache.annotation.CacheResult; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * @author: Aaron - * @create: 2020-09-03 14:12 - * @description: 健身走题库管理 - **/ -@At("/platform/jsz/tkMange") -@Ok("json") -@IocBean -@RequiresAuthentication -@CacheDefaults(cacheName = "jsz_topic") -public class TkMangeController { - - - - @Inject - private WxHttpUtil wxHttpUtil; - - @At("") - @Ok("beetl:/platform/jsz/pc/TkMange.html") - @RequiresPermissions("jsz.tkmange") - public void index() { - } - - @At - @ViReturn - @RequiresPermissions("jsz.tkmange") - public Object pageData(@Param(value = "searchName",required = false) String searchName, - @Param(value = "searchKeyword",required = false) String searchKeyword, - @Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize) { - try { - List and = new ArrayList<>(); - - if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { - and.add("" + searchName + ":{$regex:'" + searchKeyword + "',$options: 'i'}"); - } - - int skip = pageNumber == 1 ? 0 : (pageNumber - 1) * pageSize; - - String query = "db.collection('topic')\n" + - " .where({" + StringUtils.join(and, ",") + "})\n" + - " .skip(0)\n" + - " .limit(10)\n" + - " .get()"; - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - - NutMap pager = result.getAs("pager", NutMap.class); - - return new Pagination(pageNumber, pageSize, pager.getInt("Total"), result.getList("data", Map.class)); - } catch (Exception e) { - return Result.error(); - } - } - - @At - @RequiresPermissions("jsz.tkmange") - public Object doAdd(String issue) { - try { - NutMap map = Json.fromJson(NutMap.class, issue); - StringBuffer optionsBuffer = new StringBuffer(""); - NutMap[] options = map.getArray("options", NutMap.class); - for (int i = 0; i < options.length; i++) { - NutMap op = options[i]; - optionsBuffer.append("{" + - "option_name:'" + op.getString("option_name") + "'," + - "option_iswor:" + op.getBoolean("option_iswor") + "" + - "}"); - if (i < options.length - 1) { - optionsBuffer.append(","); - } - } - String query = "db.collection('topic')\n" + - " .add({\n" + - " data: [\n" + - " {\n" + - " issue_multiple: " + map.getBoolean("issue_multiple") + ",\n" + - " issue_name: '" + map.getString("issue_name") + "',\n" + - " options: [" + optionsBuffer.toString() + "]\n" + - " }\n" + - " ]\n" + - " })"; - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.insertUrl, query); - if (result.getInt("errcode") == 0 && result.getString("errmsg").equals("ok")) { - return Result.success(); - } - return Result.error(); - } catch (Exception e) { - return Result.error(); - } - } - - @At - @ViReturn - @CacheResult - @RequiresPermissions("jsz.tkmange") - public Object findOne(String id) throws IOException { - String query = "db.collection('topic').doc('" + id + "').get()"; - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.queryUrl, query); - List data = wxResult.getList("data", Map.class); - return data.size() > 0 ? data.get(0) : new Object(); - } - - @At - @CacheRemoveAll - @RequiresPermissions("jsz.tkmange") - public Object doEdit(String issue) { - try { - NutMap map = Json.fromJson(NutMap.class, issue); - StringBuffer optionsBuffer = new StringBuffer(""); - NutMap[] options = map.getArray("options", NutMap.class); - for (int i = 0; i < options.length; i++) { - NutMap op = options[i]; - optionsBuffer.append("{" + - "option_name:'" + op.getString("option_name") + "'," + - "option_iswor:" + op.getBoolean("option_iswor") + "" + - "}"); - if (i < options.length - 1) { - optionsBuffer.append(","); - } - } - String query = "db.collection('topic').doc('" + map.getString("_id") + "')\n" + - " .update({\n" + - " data: {\n" + - " issue_multiple: " + map.getBoolean("issue_multiple") + ",\n" + - " issue_name: '" + map.getString("issue_name") + "',\n" + - " options: [" + optionsBuffer.toString() + "]\n" + - " }\n" + - " })"; - NutMap result = wxHttpUtil.getWxResult(wxHttpUtil.updateUrl, query); - if (result.getInt("errcode") == 0 && result.getString("errmsg").equals("ok")) { - return Result.success(); - } - return Result.error(); - } catch (Exception e) { - return Result.error(); - } - } - - @At - @ViReturn - @CacheRemove - @RequiresPermissions("jsz.tkmange") - public Object delete(String id) throws IOException { - String query = "db.collection('topic').doc('" + id + "').remove()"; - NutMap wxResult = wxHttpUtil.getWxResult(wxHttpUtil.deleteUrl, query); - if (wxResult.getInt("errcode") == 0 && wxResult.getString("errmsg").equals("ok")) { - return Result.success(); - } - return Result.error(); - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/stepCountingController.java b/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/stepCountingController.java deleted file mode 100644 index dcf18ea..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/controller/pc/stepCountingController.java +++ /dev/null @@ -1,169 +0,0 @@ -package io.v.nutz.zhgh.jsz.controller.pc; - -import cn.hutool.captcha.generator.RandomGenerator; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.StrUtil; -import cn.wizzer.framework.base.Result; -import io.v.nutz.base.annontation.ViReturn; - -import io.v.nutz.zhgh.jsz.models.JszWxStep; -import io.v.nutz.sys.models.Sys_user; -import io.v.nutz.sys.services.SysUserService; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.dao.util.Daos; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; -import org.nutz.lang.util.NutMap; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; - -import java.io.IOException; -import java.util.*; - -/** - * @FileName io.v.nutz.jsz.controller.pc.stepCountingController - * @Description: TODO - * @Author zxc - * @Date 2022/9/6:14:39 - * @Version V1.0 - **/ -@IocBean -@At("/platform/jsz/stepCounting") -public class stepCountingController { - - - - @Inject - private Dao dao; - - @Inject - private SysUserService sysUserService; - - @At("/sendSmsCode") - @Ok("json:full") - public Object sendSmsCode(@Param("loginName") String loginName) { - int count = dao.count(Sys_user.class, Cnd.where("loginName", "=", loginName)); - if (count == 0) { - return Result.error("系统中查询不到您的工号!"); - } - RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4); - String code = randomGenerator.generate(); - try { -// sendMsg.sendTextMesg(loginName, "健步走验证码:" + code); - return Result.success().addData(code); - } catch (Exception e) { - e.printStackTrace(); - return Result.error(); - } - } - - @At("/getUserInfo") - @Ok("json:full") - public Object getUserInfo(@Param("loginName") String loginName) { - Sql sql = Sqls.create(""" - SELECT - u.id userid, - u.username, - u.loginname, - u.sex, - u.mobile, - u.birthday, - unit.`name` unitname, - u.unitid, - u.member, - unit.unionid, - un.unionname, - group_concat(sr.`code`) roles - FROM - sys_user u - LEFT JOIN sys_unit unit ON u.unitid = unit.id - LEFT JOIN sys_union un ON unit.unionid = un.id - LEFT JOIN sys_user_role sur ON sur.userId = u.id - LEFT JOIN sys_role sr ON sr.id = sur.roleId - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.and("LOWER(u.loginname)", "=", loginName.toLowerCase()); - sql.setCondition(cnd); - NutMap userMap = (NutMap) Daos.query(dao, sql.toString(), Sqls.callback.map()); - if (StrUtil.isBlank(userMap.getString("userid"))) { - return Result.error().addMsg("系统查询不到您的信息,请与工会管理员联系!"); - } - return Result.success().addData(userMap); - } - - /** - * get week step - * - * @param userId user id - * @return {@link Object} - */ - @At("/getWeekStep") - @Ok("json:full") - @ViReturn - public Object getWeekStep(@Param("userId") String userId, @Param("activityId") String activityId) { - Assert.notBlank(activityId); - Assert.notBlank(userId); - Cnd cnd = Cnd.where("userId", "=", userId); - cnd.and("activityId", "=", activityId); - cnd.and("applyDate", ">", DateUtil.offsetDay(new Date(), -7)); - cnd.asc("applyDate"); - List wxSteps = dao.query(JszWxStep.class, cnd); - - List results = new ArrayList<>(); - for (int i = 7; i >= 0; i--) { - int offset = (i) * -1; - DateTime offsetDay = DateUtil.offsetDay(new Date(), offset); - String dateStr = offsetDay.toString("yyyy-MM-dd"); - - Optional jszWxStepOptional = wxSteps.stream().filter(v -> DateUtil.format(v.getApplyDate(), "yyyy-MM-dd").equals(dateStr)).findFirst(); - - results.add(new HashMap<>() {{ - put("day", dateStr); - put("step", jszWxStepOptional.isPresent() ? jszWxStepOptional.get().getStep() : 0); - }}); - - } - return results; - } - - /** - * 更新步数 - * - * @param activityId 活动id - * @param userId 用户id - * @param step 一步 - * @return {@link Object} - */ - @At - @Ok("json:full") - @ViReturn - public Object updateStep(String activityId, String userId, Integer step) { - Assert.notBlank(activityId); - Assert.notBlank(userId); - - Cnd cnd = Cnd.NEW(); - cnd.and("userId", "=", userId); - cnd.and("applyDate", "=", io.v.nutz.base.utils.DateUtil.getDate()); - cnd.and("activityId", "=", activityId); - - JszWxStep wxStep = dao.fetch(JszWxStep.class, cnd); - if (Lang.isEmpty(wxStep)) { - wxStep = new JszWxStep(); - wxStep.setActivityId(activityId); - wxStep.setUserId(userId); - wxStep.setApplyDate(new Date()); - } - wxStep.setStep(step); - dao.insertOrUpdate(wxStep); - return null; - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/JszAwardList.java b/src/main/java/io/v/nutz/zhgh/jsz/models/JszAwardList.java deleted file mode 100644 index fe5143f..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/JszAwardList.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import lombok.Data; -import org.nutz.dao.entity.annotation.*; -import org.nutz.dao.interceptor.annotation.PrevInsert; - -import java.util.Date; - -/** - * TODO - * 健身走获奖名单 - * - * @Author zhf - * @Date 2022/9/8 9:24 - */ -@Table -@Data -public class JszAwardList { - - - @Column - @Name - @ColDefine(type = ColType.VARCHAR, width = 32) - @PrevInsert(uu32 = true) - private String id; - - @Column - @ColDefine(type = ColType.VARCHAR) - @Comment("活动") - private String activityId; - - @Column - @ColDefine(type = ColType.VARCHAR, width = 32) - @Comment("姓名Id") - private String userId; - - - @Column - @ColDefine(type = ColType.DATETIME) - @Comment("时间") - private Date applyDate; - - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/JszWxStep.java b/src/main/java/io/v/nutz/zhgh/jsz/models/JszWxStep.java deleted file mode 100644 index 1c00436..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/JszWxStep.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import lombok.Data; -import org.nutz.dao.entity.annotation.*; -import org.nutz.dao.interceptor.annotation.PrevInsert; - -import java.util.Date; - -/** - * TODO - * - * @Author zhf - * @Date 2022/9/6 15:06 - */ -@Table -@Data -public class JszWxStep { - - @Column - @Name - @ColDefine(type = ColType.VARCHAR, width = 32) - @PrevInsert(uu32 = true) - private String id; - - @Column - @ColDefine(type = ColType.VARCHAR) - @Comment("时间") - private String activityId; - - @Column - @ColDefine(type = ColType.VARCHAR, width = 32) - @Comment("姓名Id") - private String userId; - - @Column - @ColDefine(customType = "int") - @Comment("步数") - private Integer step; - - @Column - @ColDefine(type = ColType.DATE) - @Comment("时间") - private Date applyDate; - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_activity.java b/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_activity.java deleted file mode 100644 index 9a26fb2..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_activity.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import io.v.nutz.base.model.BaseModel; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.nutz.dao.entity.annotation.*; -import org.nutz.dao.interceptor.annotation.PrevInsert; - -import java.util.List; - -@EqualsAndHashCode(callSuper = true) -//@Table -@Data -public class Jsz_activity extends BaseModel { - - @Name - @Comment("ID") - @ColDefine(type = ColType.VARCHAR, width = 32) - @PrevInsert(uu32 = true) - private String id; - - @Column - @Comment("_id") - @ColDefine(type = ColType.VARCHAR, width = 32) - private String _id; - - @Column - @Comment("活动模式") - @ColDefine(type = ColType.VARCHAR, width = 10) - private String activityModel; - - @Column - @Comment("校内") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String address; - - @Column - @Comment("报名开始时间") - private Long apply_start_time; - - @Column - @Comment("报名截至时间") - private Long apply_end_time; - - @Column - @Comment("控制方式") - @ColDefine(type = ColType.INT, width = 1) - private Integer checkControl; - - @Column - @Comment("打卡完成提示信息") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String check_all_msg; - - @Column - @Comment("活动开始时间") - private Long start_time; - - @Column - @Comment("活动截至时间") - private Long end_time; - - @Column - @Comment("活动人员范围组别") - @ColDefine(type = ColType.INT, width = 1) - private Integer groupId; - - @Column - @Comment("点位答题") - @ColDefine(type = ColType.BOOLEAN) - private Boolean hasAnswer; - - @Column - @Comment("线路点位信息") - @ColDefine(type = ColType.BOOLEAN) - private List linePoints; - - @Column - @Comment("活动名称") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String name; - - @Column - @Comment("活动介绍") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String note; - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_backup.java b/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_backup.java deleted file mode 100644 index ecca8c7..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_backup.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import io.v.nutz.base.model.BaseModel; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.nutz.dao.entity.annotation.*; -import org.nutz.dao.interceptor.annotation.PrevInsert; - -@EqualsAndHashCode(callSuper = true) -@Table -@Data -public class Jsz_backup extends BaseModel { - - @Name - @Comment("ID") - @ColDefine(type = ColType.VARCHAR, width = 32) - @PrevInsert(uu32 = true) - private String id; - - @Column - @Comment("集合名称") - @ColDefine(type = ColType.VARCHAR, width = 100) - private String collection; - - @Column - @Comment("文件路径") - @ColDefine(type = ColType.VARCHAR, width = 100) - private String filePath; - - @Column - @Comment("文件名") - @ColDefine(type = ColType.VARCHAR, width = 100) - private String fileName; - - @Column - @Comment("备份日期") - @ColDefine(type = ColType.VARCHAR, width = 20) - private String backUpDate; - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_fillcheck.java b/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_fillcheck.java deleted file mode 100644 index 51a613f..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_fillcheck.java +++ /dev/null @@ -1,78 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import org.nutz.dao.entity.annotation.*; - -/** - * @Author: 1V - * @DateTime: 2020/9/24 10:04 - * @Description: TODO - */ -@Table("Jsz_fillcheck") -public class Jsz_fillcheck { - @Column - @Name - @Comment("ID") - @ColDefine(type = ColType.VARCHAR, width = 32) - @Prev(els = {@EL("uuid()")}) - private String id; - - @Column - @Comment("用户名") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String loginname; - - @Column - @Comment("姓名") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String username; - - @Column - @Comment("校区") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String campus; - - @Column - @Comment("签到时间") - @ColDefine(type = ColType.VARCHAR, width = 30) - private String check_time; - - public String getCheck_time() { - return check_time; - } - - public void setCheck_time(String check_time) { - this.check_time = check_time; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getLoginname() { - return loginname; - } - - public void setLoginname(String loginname) { - this.loginname = loginname; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getCampus() { - return campus; - } - - public void setCampus(String campus) { - this.campus = campus; - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_sign.java b/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_sign.java deleted file mode 100644 index a7284fd..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_sign.java +++ /dev/null @@ -1,61 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import io.v.nutz.base.model.BaseModel; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.nutz.dao.entity.annotation.*; -import org.nutz.dao.interceptor.annotation.PrevInsert; - -/** - * 健身走打卡记录 - * - * @author jug - * @date 2024/01/30 - */ -@EqualsAndHashCode(callSuper = true) -//@Table -@Data -public class Jsz_sign extends BaseModel { - - @Name - @Comment("ID") - @ColDefine(type = ColType.VARCHAR, width = 32) - @PrevInsert(uu32 = true) - private String id; - - @Column - @Comment("_id") - @ColDefine(type = ColType.VARCHAR, width = 32) - private String _id; - - @Column - @Comment("_openid") - @ColDefine(type = ColType.VARCHAR, width = 32) - private String _openid; - - @Column - @Comment("活动id") - @ColDefine(type = ColType.VARCHAR, width = 32) - private String activity_id; - - @Column - @Comment("签到坐标") - @ColDefine(type = ColType.VARCHAR, width = 32) - private String address; - - @Column - @Comment("签到点位编码") - @ColDefine(type = ColType.VARCHAR, width = 10) - private String pts_code; - - @Column - @Comment("签到时间") - private Long signDate; - - @Column - @Comment("工号") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String loginname; - - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_type.java b/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_type.java deleted file mode 100644 index e4e99b4..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/models/Jsz_type.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.v.nutz.zhgh.jsz.models; - -import org.nutz.dao.DB; -import org.nutz.dao.entity.annotation.*; - -/** - * @Author: 1V - * @DateTime: 2020/9/1 9:42 - * @Description: 活动类型 - */ -@Table("Jsz_type") -public class Jsz_type { - - @Column - @Name - @Comment("ID") - @ColDefine(type = ColType.VARCHAR, width = 32) - @Prev(els = {@EL("uuid()")}) - private String id; - - @Column - @Comment("类型名称") - @ColDefine(type = ColType.VARCHAR, width = 255) - private String name; - - @Column - @Comment("排序") - @Prev({ - @SQL(db = DB.MYSQL, value = "SELECT IFNULL(MAX(location),0)+1 FROM Jsz_type"), - @SQL(db = DB.ORACLE, value = "SELECT COALESCE(MAX(location),0)+1 FROM Jsz_type") - }) - private Integer location; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Integer getLocation() { - return location; - } - - public void setLocation(Integer location) { - this.location = location; - } -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/services/JszFillCheckService.java b/src/main/java/io/v/nutz/zhgh/jsz/services/JszFillCheckService.java deleted file mode 100644 index 8feb376..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/services/JszFillCheckService.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.v.nutz.zhgh.jsz.services; - -import cn.wizzer.framework.base.service.BaseService; -import io.v.nutz.zhgh.jsz.models.Jsz_fillcheck; - - -/** - * @author 1V - */ -public interface JszFillCheckService extends BaseService { -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/services/JszTypeService.java b/src/main/java/io/v/nutz/zhgh/jsz/services/JszTypeService.java deleted file mode 100644 index 81faf5d..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/services/JszTypeService.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.v.nutz.zhgh.jsz.services; - - -import io.v.nutz.base.service.BaseService; -import io.v.nutz.zhgh.jsz.models.Jsz_type; - -public interface JszTypeService extends BaseService { -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/services/JszWxStepService.java b/src/main/java/io/v/nutz/zhgh/jsz/services/JszWxStepService.java deleted file mode 100644 index 33687a8..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/services/JszWxStepService.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.v.nutz.zhgh.jsz.services; - -import io.v.nutz.zhgh.jsz.models.JszWxStep; -import io.v.nutz.base.service.ViService; - -public interface JszWxStepService extends ViService { - - - /** - * 获取今天当前用户最新步数 - */ - Object getStepByUserId(String userId); - - /** - * 获取当日榜或者累计排榜榜 - * - * @param hdid: 活动id - * @param type: 0-当日榜, 1-累计排行榜 - * @return null - * @author JyuHsin - * @date 2022/9/7 - */ - Object getDataOfLeaderboard(String hdid, Integer type, String userId, String unionId, String unitId, String searchName, String searchKeyword); - - /** - * 获取当日中奖榜 - * - * @param hdid: 活动id - * @return java.lang.Object - * @author JyuHsin - * @date 2022/9/7 - */ - Object getDataOfPrize(String hdid, String unionId, String unitId, String searchName, String searchKeyword); - - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszFillCheckServiceImpl.java b/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszFillCheckServiceImpl.java deleted file mode 100644 index f0bfa1b..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszFillCheckServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.v.nutz.zhgh.jsz.services.impl; - -import cn.wizzer.framework.base.service.BaseServiceImpl; -import io.v.nutz.zhgh.jsz.models.Jsz_fillcheck; -import io.v.nutz.zhgh.jsz.services.JszFillCheckService; -import org.nutz.dao.Dao; -import org.nutz.ioc.loader.annotation.IocBean; - - -/** - * @author 1V - */ -@IocBean(args = {"refer:dao"}) -public class JszFillCheckServiceImpl extends BaseServiceImpl implements JszFillCheckService { - - public JszFillCheckServiceImpl(Dao dao) { - super(dao); - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszTypeServiceImpl.java b/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszTypeServiceImpl.java deleted file mode 100644 index 2ce6c3c..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszTypeServiceImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.v.nutz.zhgh.jsz.services.impl; - -import io.v.nutz.base.service.impl.BaseServiceImpl; -import io.v.nutz.zhgh.jsz.models.Jsz_type; -import io.v.nutz.zhgh.jsz.services.JszTypeService; -import org.nutz.dao.Dao; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.plugins.wkcache.annotation.CacheDefaults; - - -@IocBean(args = {"refer:dao"}) -@CacheDefaults(cacheName = "jsz_type") -public class JszTypeServiceImpl extends BaseServiceImpl implements JszTypeService { - - public JszTypeServiceImpl(Dao dao) { - super(dao); - } - -} diff --git a/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszWxStepServiceImpl.java b/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszWxStepServiceImpl.java deleted file mode 100644 index 7acd90d..0000000 --- a/src/main/java/io/v/nutz/zhgh/jsz/services/impl/JszWxStepServiceImpl.java +++ /dev/null @@ -1,119 +0,0 @@ -package io.v.nutz.zhgh.jsz.services.impl; - -import cn.hutool.core.date.DateUtil; -import io.v.nutz.base.dao.CndPlus; -import io.v.nutz.zhgh.jsz.models.JszWxStep; -import io.v.nutz.zhgh.jsz.services.JszWxStepService; -import io.v.nutz.base.service.impl.ViServiceImpl; -import io.v.nutz.sys.models.Sys_user; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; -import org.nutz.lang.Strings; -import org.nutz.lang.util.NutMap; - -import java.util.Date; -import java.util.List; - -/** - * TODO - * - * @Author zhf - * @Date 2022/9/6 15:12 - */ -@IocBean(args = {"refer:dao"}) -public class JszWxStepServiceImpl extends ViServiceImpl implements JszWxStepService { - public JszWxStepServiceImpl(Dao dao) { - super(dao); - } - - @Override - public Object getStepByUserId(String userId) { - Cnd cnd = Cnd.NEW(); - cnd.and("userId", "=", userId).and("applyDate", "=", DateUtil.today()); - return fetch(cnd); - } - - @Override - public Object getDataOfLeaderboard(String hdid, Integer type, String userId, String unionId, String unitId, String searchName, String searchKeyword) { - Sys_user user = dao().fetch(Sys_user.class, userId); - CndPlus cnd = CndPlus.create(); - Sql sql = Sqls.create(""" - SELECT - userId, - sum(step) as step, - u.username, - u.loginname - FROM - `jsz_wx_step` step - LEFT JOIN sys_user u ON step.userId = u.id - $condition - """); - //0查当日 - if (type == 0) { - cnd.and("left(applyDate, 10)", "=", DateUtil.today()); - } - cnd.and("activityId", "=", hdid); - cnd.andEx("u.unitId", "=", unitId); - cnd.andEx("u.unionId", "=", unionId); - - if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { - cnd.and(searchName, "LIKE", "%" + searchKeyword + "%"); - } - - cnd.groupBy("userId"); - cnd.desc("step"); - - sql.setCondition(cnd); - List lists = listMap(sql); - - Sql sqlMy = sql.duplicate().setCondition(cnd.clone().and("userId", "=", userId)); - List myStep = listMap(sqlMy); - - if (Lang.isEmpty(myStep)) { - NutMap map = NutMap.NEW().setv("username", user.getUsername()) - .setv("loginname", user.getLoginname()) - .setv("userId", user.getId()) - .setv("step", 0); - myStep.add(map); - } - lists.addAll(0, myStep); - return lists; - } - - @Override - public Object getDataOfPrize(String hdid, String unionId, String unitId, String searchName, String searchKeyword) { - - CndPlus cnd = CndPlus.create(); - Sql sql = Sqls.create(""" - SELECT - userId, - u.username, - u.loginname, - un.`name` as unitname - FROM - `jsz_award_list` award - LEFT JOIN sys_user u ON award.userId = u.id - LEFT JOIN sys_unit un ON un.id = u.unitid - $condition - """); - cnd.and("activityId", "=", hdid); - cnd.and("left(applyDate, 10)", "=", DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd")); - - cnd.andEx("u.unitId", "=", unitId); - cnd.andEx("u.unionId", "=", unionId); - - if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { - cnd.and(searchName, "LIKE", "%" + searchKeyword + "%"); - } - - cnd.groupBy("userId"); - - sql.setCondition(cnd); - List nutMaps = listMap(sql); - return nutMaps; - } -} diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareAgendaController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareAgendaController.java index 2a8a880..f64b376 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareAgendaController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareAgendaController.java @@ -2,9 +2,9 @@ package io.v.nutz.zhgh.welfare.controller; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.utils.Vi; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.member.constant.MemberChangeApplyState; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; -import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.welfare.constant.WelfareMemberApplyState; import io.v.nutz.zhgh.welfare.service.WelfareMemberService; import org.nutz.dao.Sqls; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareCommonController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareCommonController.java index 6cd9c49..9c0cd14 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareCommonController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareCommonController.java @@ -9,36 +9,42 @@ import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.policy.HackLoopTableRenderPolicy; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.dao.CndPlus; +import io.v.nutz.base.utils.ExpressSelectUtil; import io.v.nutz.base.utils.OfficeTemplateUtil; import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.dao.CndPlus; -import io.v.nutz.zhgh.member.service.MemberService; +import io.v.nutz.base.utils.ViTool; import io.v.nutz.sys.models.Sys_dict; import io.v.nutz.sys.services.SysDictService; -import io.v.nutz.base.utils.ViTool; import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.member.service.MemberService; import io.v.nutz.zhgh.welfare.feature.WelfareFeature; import io.v.nutz.zhgh.welfare.mode.WelfareMemberMode; import io.v.nutz.zhgh.welfare.mode.WelfareProvideMode; import io.v.nutz.zhgh.welfare.mode.WelfareUnitMode; +import io.v.nutz.zhgh.welfare.model.WelfareCourierNumber; import io.v.nutz.zhgh.welfare.model.WelfareProject; import io.v.nutz.zhgh.welfare.model.WelfareProjectSubject; +import io.v.nutz.zhgh.welfare.model.WelfareUserSelection; import io.v.nutz.zhgh.welfare.service.WelfareProjectService; import lombok.Data; import org.apache.commons.io.IOUtils; import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.apache.shiro.authz.annotation.RequiresRoles; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; import org.nutz.lang.Lang; import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; @@ -71,13 +77,17 @@ public class WelfareCommonController { @Inject private MemberService memberService; - @Inject private WelfareProjectService projectService; @Inject private OfficeTemplateUtil officeTemplateUtil; + @Inject + private Dao dao; + + @Inject + private ExpressSelectUtil expressSelectUtil; /** * 查询单个福利信息 @@ -505,8 +515,8 @@ public class WelfareCommonController { public void exportReceive(String projectId, String welfareUnit, @Param("welfareTwoUnit") String[] welfareTwoUnit, - @Param("personTypes")String[] personTypes, - @Param("userStates")String[] userStates, + @Param("personTypes") String[] personTypes, + @Param("userStates") String[] userStates, HttpServletResponse response) { WelfareProject welfareProject = projectService.fetch(projectId); CndPlus cnd = CndPlus.create(); @@ -583,8 +593,86 @@ public class WelfareCommonController { } catch (Exception e) { e.printStackTrace(); } - } + + /** + * 查看快递物流信息 + * + * @param welfareId 福利id + * @param userId 用户id + * @return {@link Object} + */ + @At + @ViReturn + public Object courierNumberInfo(String welfareId, String userId) { + //查询的时候去触发福利最新信息 + List welfareCourierNumberList = dao.query(WelfareCourierNumber.class, Cnd.where("welfareId", "=", welfareId).and("selectUserId", "=", userId)); + for (WelfareCourierNumber courierNumber : welfareCourierNumberList) { + //如果有上次查询的时间 + + if (Lang.isNotEmpty(courierNumber.getSelectExpressDate()) && DateUtil.offsetHour(courierNumber.getSelectExpressDate(), 2).getTime() > new Date().getTime()) { + //还在有效期内 + continue; + } + + if (Lang.isNotEmpty(courierNumber.getLogisticsTrace()) && List.of("AGENT_SIGN", "SIGN").contains(courierNumber.getLogisticsTrace().getLogisticsStatus())) { + //签收了 + continue; + } + + if (Lang.isEmpty(courierNumber.getCourierNumber())) { + //没快递单号 + continue; + } + + WelfareUserSelection userSelection = dao.fetch(WelfareUserSelection.class, Cnd.where("welfareId", "=", welfareId).and("selectUserId", "=", userId)); + + //需要去查询最新的物流信息 + String receiveAddress = userSelection.getReceiveAddress(); + String mobile = receiveAddress.substring(receiveAddress.length() - 11); + + JSONObject jsonObject = expressSelectUtil.getExpressInfo(courierNumber.getCourierNumber(), mobile); + WelfareUserSelection.LogisticsTrace logisticsTrace = new WelfareUserSelection.LogisticsTrace(); + logisticsTrace.setTheLastTime(jsonObject.getDate("theLastTime")); + logisticsTrace.setTheLastMessage(jsonObject.getString("theLastMessage")); + logisticsTrace.setLogisticsStatusDesc(jsonObject.getString("logisticsStatusDesc")); + logisticsTrace.setLogisticsStatus(jsonObject.getString("logisticsStatus")); + List logisticsTraceDetailList = Json.fromJsonAsList(NutMap.class, jsonObject.getString("logisticsTraceDetailList")); + logisticsTrace.setLogisticsTraceDetailList(logisticsTraceDetailList); + + dao.update(WelfareCourierNumber.class, + Chain.make("logisticsTrace", logisticsTrace) + .add("selectExpressDate", new Date()), + Cnd.where("id", "=", courierNumber.getId())); + } + + Sql sql = Sqls.create(""" + SELECT + wpso.optionName, + wpso.imgUrl, + wcn.courierNumber, + wcn.logisticsTrace + FROM + welfare_courier_number wcn + LEFT JOIN welfare_project_subject_option wpso ON wpso.id = wcn.selectOptionId + WHERE + wcn.welfareId = @welfareId + AND wcn.selectUserId = @userId + ORDER BY wpso.optionSort + """); + sql.setParam("welfareId", welfareId); + sql.setParam("userId", userId); + List list = projectService.listMap(sql); + + for (NutMap nutMap : list) { + nutMap.put("logisticsTrace", nutMap.getAs("logisticsTrace", WelfareUserSelection.LogisticsTrace.class)); + } + List mapList = sql.getList(NutMap.class); + + Map> listMap = mapList.stream().collect(Collectors.groupingBy(v -> v.getString("optionName"))); + return listMap; + } + } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareEvaluateStatisticsController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareEvaluateStatisticsController.java index 0a3295e..4843948 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareEvaluateStatisticsController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareEvaluateStatisticsController.java @@ -4,8 +4,11 @@ import cn.hutool.core.util.StrUtil; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.SimpleService; +import io.v.nutz.zhgh.welfare.model.WelfareProjectSubject; +import io.v.nutz.zhgh.welfare.model.WelfareProjectSubjectOption; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; @@ -13,6 +16,9 @@ import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import java.util.List; +import java.util.stream.Collectors; + /** * @ClassName WelfareEvaluateStatisticsController * @Description 评价统计 @@ -27,6 +33,9 @@ public class WelfareEvaluateStatisticsController { @Inject private SimpleService simpleService; + @Inject + private Dao dao; + @At("") @Ok("beetl:/platform/welfare/evaluateStatistics.html") @RequiresPermissions("welfare.evaluate.statistics") @@ -35,8 +44,8 @@ public class WelfareEvaluateStatisticsController { @At @ViReturn - @RequiresPermissions("welfare.user.choose") - public Object pageData(PageForm pageForm, String projectId, String unionId, String unitId, String personType, String userState, Integer evaluateScore) { + @RequiresPermissions("welfare.evaluate.statistics") + public Object pageData(PageForm pageForm, String projectId, String unionId, String unitId, String personType, String userState, Integer evaluateScore, String optionId) { Sql sql = Sqls.create(""" SELECT we.evaluateText, @@ -67,8 +76,18 @@ public class WelfareEvaluateStatisticsController { cnd.andEX("u.personType", "=", personType); cnd.andEX("u.userState", "=", userState); cnd.andEX("we.evaluateScore", "=", evaluateScore); + cnd.andEX("optionId", "=", optionId); sql.setCondition(cnd); return simpleService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); } + @At + @ViReturn + @RequiresPermissions("welfare.evaluate.statistics") + public Object welfareOptions(String projectId) { + List subjects = dao.query(WelfareProjectSubject.class, Cnd.where("projectId", "=", projectId)); + List subjectIds = subjects.stream().map(v -> v.getId()).collect(Collectors.toList()); + return dao.query(WelfareProjectSubjectOption.class, Cnd.where("subjectId", "in", subjectIds).asc("optionSort")); + } + } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareListController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareListController.java index 98e20fe..0a981f7 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareListController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareListController.java @@ -16,13 +16,11 @@ import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.ViTool; -import io.v.nutz.sys.models.Sys_user; import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.welfare.feature.WelfareFeature; import io.v.nutz.zhgh.welfare.mode.CourierNumberExcelMode; import io.v.nutz.zhgh.welfare.model.*; -import io.v.nutz.zhgh.welfare.model.template.WelfareMemberSelectionTemp; import io.v.nutz.zhgh.welfare.service.WelfareListService; import io.v.nutz.zhgh.welfare.service.WelfareProjectService; import lombok.extern.slf4j.Slf4j; @@ -41,7 +39,6 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.json.Json; import org.nutz.lang.Lang; -import org.nutz.lang.random.R; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.AdaptBy; import org.nutz.mvc.annotation.At; @@ -92,42 +89,62 @@ public class WelfareListController { public Object pageData(PageForm pageForm, WelfareFeature.Condition.PageParam pageParam, @Param(value = "projectId", required = false) String projectId, - @Param(value = "month", required = false) String month) { + @Param(value = "optionId", required = false) String optionId, + @Param(value = "month", required = false) String month, + @Param(value = "courierNumber", required = false) String courierNumber + ) { Sql sql = Sqls.create(""" SELECT - if(wus.selectUserId IS NOT NULL,1,0) AS isChoose, - wl.id, - wl.listId, - wl.username, - wl.loginname, - wl.personType, - wl.userState, - wl.unionname, - wl.unitname, - wl.threeUnitName, - wl.unionGroupName, - wus.userSign, - wus.courierNumber, - wus.receiveAddress, - GROUP_CONCAT( DISTINCT wuso.optionName, '(', 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_project wp ON wp.id = wus.welfareId - $condition + 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, '(', 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 AND wcn.welfareId = wl.projectId + LEFT JOIN welfare_project wp ON wp.id = wus.welfareId + $condition """); CndPlus cnd = CndPlus.create(); cnd.and(pageForm); cnd.and("wl.projectId", "=", projectId); - cnd.andEX("wl.unionid","=",pageParam.getWelfareUnit()); - if (StrUtil.isNotBlank(pageParam.getUnits())) { - String[] unitArray = Json.fromJsonAsArray(String.class, pageParam.getUnits()); - cnd.andEX("wl.unitid","in",unitArray); + cnd.andEX("wus.selectOptionId", "=", optionId); + cnd.andEX("wl.unionid", "=", pageParam.getWelfareUnit()); + cnd.andEX("wl.unitid", "=", pageParam.getUnit()); + + if (Lang.isNotEmpty(pageParam.getPersonTypes())) { + String personTypes = pageParam.getPersonTypes(); + String[] personTypeArray = Json.fromJsonAsArray(String.class, personTypes); + cnd.andEX("wl.personType", "in", personTypeArray); } - cnd.andEX("wl.unionGroupId","=",pageParam.getUnionGroupId()); - cnd.andEX("wl.threeUnitId","=",pageParam.getThreeUnitId()); + + if (Lang.isNotEmpty(pageParam.getUserStates())) { + String userStates = pageParam.getUserStates(); + String[] userStateArray = Json.fromJsonAsArray(String.class, userStates); + cnd.andEX("wl.userState", "in", userStateArray); + } + + cnd.andEX("wl.sex", "in", pageParam.getSex()); + + cnd.andEX("wcn.courierNumber","=",courierNumber); + cnd.groupBy("wl.id"); cnd.asc("wl.unitCode"); cnd.asc("wl.loginname"); @@ -239,7 +256,9 @@ public class WelfareListController { selection.setSelectNum(v.getInt("selectNum")); return selection; }).collect(Collectors.toList()); - dao.insert(userSelections); + + List userSelections1 = userSelections.stream().filter(v -> v.getSelectNum() > 0).collect(Collectors.toList()); + dao.insert(userSelections1); dao.update(WelfareList.class, Chain.make("isReceive", true), Cnd.where("projectId", "=", editData.getString("projectId")) @@ -274,7 +293,7 @@ public class WelfareListController { * @param projectId */ @At - @Ok("json") + @Ok("void") @RequiresPermissions("welfare.list.mange") public void exportSelectData(String projectId, HttpServletResponse response) { WelfareProject welfareProject = dao.fetch(WelfareProject.class, Cnd.where("id", "=", projectId)); @@ -283,11 +302,10 @@ public class WelfareListController { Sql sql = Sqls.create(""" SELECT u.loginname, - u.threeUnitName, u.username, u.mobile, - unionname, - unitname, + vwl.unionname, + vwl.unitname, IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress, wpus.selectNum, wpso.optionName @@ -295,6 +313,7 @@ public class WelfareListController { welfare_project_user_selection wpus left join `user` u on u.id = wpus.selectUserId left join welfare_project_subject_option wpso on wpso.id = wpus.selectOptionId + left join view_welfare_list vwl on vwl.id = wpus.selectUserId $condition """); cnd.and("wpus.welfareId", "=", projectId); @@ -306,6 +325,7 @@ public class WelfareListController { if (Globals.MyConfig.getBoolean("isThreeUnit")) { cnd.and("u.unionGroupId", "is not", null); } + cnd.groupBy("wpus.selectUserId", "wpus.selectOptionId"); cnd.asc("u.unitcode"); sql.setCondition(cnd); List list = projectService.listMap(sql); @@ -350,7 +370,10 @@ public class WelfareListController { @Aop(TransAop.READ_COMMITTED) @RequiresPermissions("welfare.list.mange") @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) - public Object importCourierNumber(@Param("file") TempFile file, @Param("projectId") String projectId) { + public Object importCourierNumber(@Param("file") TempFile file, + @Param("projectId") String projectId, + @Param("optionId") String optionId + ) { if (Lang.isEmpty(file)) { return Result.error("上传的文件不能为空"); } @@ -374,31 +397,68 @@ public class WelfareListController { } try { - if (excelList.stream().anyMatch(v -> StrUtil.isBlank(v.getLoginName())) || excelList.stream().anyMatch(v -> StrUtil.isBlank(v.getCourierNumber()))) { + if (excelList.stream().anyMatch(v -> StrUtil.isBlank(v.getLoginName()))) { return Result.error("工号和快递单号不能为空"); } - Map loginNameCourierMap = excelList.stream().collect(Collectors.toMap(v -> v.getLoginName().replaceAll("\n", "").replaceAll("\t", "").trim(), v -> v.getCourierNumber())); + List filterExcelList = excelList.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CourierNumberExcelMode::getLoginName))), + ArrayList::new + )); - List loginNameList = excelList.stream().map(v -> v.getLoginName().replaceAll("\n", "").replaceAll("\t", "").trim()).collect(Collectors.toList()); + + List loginNameList = filterExcelList.stream().map(v -> v.getLoginName().replaceAll("\n", "").replaceAll("\t", "").trim()).collect(Collectors.toList()); Sql loginNameSql = Sqls.create("select id,loginname from sys_user where loginname in (@loginNameList)"); loginNameSql.setParam("loginNameList", loginNameList); List loginNameMaps = welfareListService.listMap(loginNameSql); - Map kvMap = loginNameMaps.stream().collect(Collectors.toMap(v -> v.getString("id"), v -> v.getString("loginname"))); - List userIds = loginNameMaps.stream().map(v -> v.getString("id")).collect(Collectors.toList()); - List userSelectionList = welfareListService.dao().query(WelfareUserSelection.class, Cnd.where("welfareId", "=", projectId).and("selectUserId", "in", userIds)); - for (WelfareUserSelection us : userSelectionList) { - String loginName = kvMap.get(us.getSelectUserId()); - String courierNumber = loginNameCourierMap.get(loginName); - us.setCourierNumber(courierNumber); + + //根据福利和选项删除本次导入的快递单号 + welfareListService.dao().clear(WelfareCourierNumber.class, + Cnd.where("welfareId", "=", projectId) + .and("selectUserId", "in", userIds) + .and("selectOptionId", "=", optionId)); + + List welfareCourierNumbers = new ArrayList<>(); + + + for (NutMap map : loginNameMaps) { + String id = map.getString("id"); + String loginname = map.getString("loginname"); + CourierNumberExcelMode courierNumberExcelMode = filterExcelList.stream().filter(u -> u.getLoginName().replaceAll("\n", "").equals(loginname)).findFirst().orElse(null); + + + List courierNumberList = new ArrayList<>(); + if (StrUtil.isNotBlank(courierNumberExcelMode.getOneCourierNumber())) { + courierNumberList.add(courierNumberExcelMode.getOneCourierNumber()); + } + if (StrUtil.isNotBlank(courierNumberExcelMode.getTwoCourierNumber())) { + courierNumberList.add(courierNumberExcelMode.getTwoCourierNumber()); + } + if (StrUtil.isNotBlank(courierNumberExcelMode.getThreeCourierNumber())) { + courierNumberList.add(courierNumberExcelMode.getThreeCourierNumber()); + } + if (StrUtil.isNotBlank(courierNumberExcelMode.getFourCourierNumber())) { + courierNumberList.add(courierNumberExcelMode.getFourCourierNumber()); + } + + for (String number : courierNumberList) { + WelfareCourierNumber courierNumber = new WelfareCourierNumber(); + courierNumber.setCourierNumber(number); + courierNumber.setSelectUserId(id); + courierNumber.setWelfareId(projectId); + courierNumber.setSelectOptionId(optionId); + welfareCourierNumbers.add(courierNumber); + } } - welfareListService.update(userSelectionList); + welfareListService.insert(welfareCourierNumbers); + return Result.success("导入成功"); } catch (Exception e) { log.error(e.getMessage()); + e.printStackTrace(); return Result.error("导入快递单号失败"); } @@ -408,91 +468,97 @@ public class WelfareListController { @At @Ok("void") @RequiresPermissions("welfare.list.mange") - public void downloadImport(HttpServletResponse response) { - try { - ViTool.excelResponse(response, "福利导入模版.xlsx"); + public void doExcelByOptionId(@Param(value = "projectId", required = false) String projectId, + @Param(value = "optionId", required = false) String optionId, + HttpServletResponse response) { + WelfareProject project = welfareListService.dao().fetch(WelfareProject.class, projectId); + WelfareProjectSubjectOption subjectOption = welfareListService.dao().fetch(WelfareProjectSubjectOption.class, optionId); + + Sql sql = Sqls.create(""" + SELECT + u.id, + u.loginname, + u.username, + wl.personType, + un.unionname, + it.`name` unitname, + wpus.selectNum + FROM + welfare_project_user_selection_copy1 wpus + LEFT JOIN `welfare_list` wl ON wpus.selectUserId = wl.userId + LEFT JOIN `sys_user` u ON u.id = wl.userId + LEFT JOIN sys_union un ON un.id = wl.welfareUnitId + LEFT JOIN sys_unit it ON it.id = wl.welfareSecondLevelUnitId + WHERE + wpus.welfareId = @welfareId + AND wpus.selectOptionId = @selectOptionId and wpus.selectNum!=0 + + """).setParam("welfareId", projectId).setParam("selectOptionId", optionId); + +// GROUP BY wpus.selectUserId,wpus.selectOptionId ORDER BY un.unioncode + + List mapList = welfareListService.listMap(sql); + + List userId = mapList.stream().map(m -> m.getString("id")).collect(Collectors.toList()); + + List courierNumberList = welfareListService.dao().query(WelfareCourierNumber.class, + Cnd.where("selectUserId", "in", userId) + .and("welfareId", "=", projectId) + .and("selectOptionId", "=", optionId)); + + List nameList = List.of("one", "two", "three", "four"); + for (NutMap map : mapList) { + List userCourierNumbers = courierNumberList.stream() + .filter(c -> c.getSelectUserId().equals(map.getString("id"))).collect(Collectors.toList()); + for (int i = 0; i < userCourierNumbers.size(); i++) { + map.setv(nameList.get(i) + "CourierNumber", userCourierNumbers.get(i).getCourierNumber()); + } + } + + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("工号", "loginname", 20)); + exportEntities.add(new ExcelExportEntity("姓名", "username", 20)); + exportEntities.add(new ExcelExportEntity("人员类别", "personType", 20)); + exportEntities.add(new ExcelExportEntity("所在分工会", "unionname", 20)); + exportEntities.add(new ExcelExportEntity("所在部门", "unitname", 20)); + exportEntities.add(new ExcelExportEntity("份数", "selectNum", 20)); + for (int i = 0; i < nameList.size(); i++) { + exportEntities.add(new ExcelExportEntity("快递单号" + (i + 1), nameList.get(i) + "CourierNumber", 20)); + } + + List unitList = List.of("在职教职工", "劳务派遣", "空状态"); + + Workbook workbook = new XSSFWorkbook(); + for (String un : unitList) { + List v = new ArrayList<>(); + if (un.equals("在职教职工")) { + v = mapList.stream().filter(m -> StrUtil.isNotBlank(m.getString("personType")) && + (!m.getString("personType").equals("劳务人才派遣") && !m.getString("personType").equals("其他类")) + ).collect(Collectors.toList()); + } + if (un.equals("劳务派遣")) { + v = mapList.stream().filter(m -> StrUtil.isNotBlank(m.getString("personType")) && + (m.getString("personType").equals("劳务人才派遣") || m.getString("personType").equals("其他类"))).collect(Collectors.toList()); + } + if (un.equals("空状态")) { + v = mapList.stream().filter(m -> StrUtil.isBlank(m.getString("personType"))).collect(Collectors.toList()); + } + ExcelExportService service = new ExcelExportService(); ExportParams exportParams = new ExportParams(); exportParams.setType(ExcelType.XSSF); - Workbook sheets = ExcelExportUtil.exportExcel(exportParams, WelfareMemberSelectionTemp.class, new ArrayList<>()); - ServletOutputStream outputStream = response.getOutputStream(); - sheets.write(outputStream); - outputStream.close(); - } catch (Exception e) { - log.error(e.getMessage()); + exportParams.setTitle(project.getName() + subjectOption.getOptionName() + "发放名单(" + un + ")"); + exportParams.setSheetName(un); + service.createSheetForMap(workbook, exportParams, exportEntities, v); } + + try (ServletOutputStream outputStream = response.getOutputStream()) { + ViTool.excelResponse(response, project.getName() + subjectOption.getOptionName() + ".xlsx"); + workbook.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + } + } - /** - * 导入选择详情 - * - * @param file - * @param projectId - * @return - */ - @At - @Ok("json") - @Aop(TransAop.READ_COMMITTED) - @RequiresPermissions("welfare.list.mange") - @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) - public Object doImport(@Param("file") TempFile file, @Param("projectId") String projectId) { - if (Lang.isEmpty(file)) { - return Result.error("上传的文件不能为空"); - } - String extName = FileUtil.extName(file.getFile()); - if (!List.of("xls", "xlsx").contains(extName.toLowerCase())) { - return Result.error("请上传xls,xlsx文件"); - } - - List welfareMemberSelectionImportList = ExcelImportUtil.importExcel(file.getFile(), WelfareMemberSelectionTemp.class, new ImportParams()); - - WelfareProject welfareProject = projectService.projectInfo(projectId); - List options = welfareProject.getWelfareProjectSubjects().get(0).getOptions(); - - List importLoginNameList = welfareMemberSelectionImportList.stream().map(v -> v.getLoginName()).collect(Collectors.toList()); - List userList = dao.query(Sys_user.class, Cnd.where("loginname", "in", importLoginNameList)); - Map userMap = userList.stream().collect(Collectors.toMap(Sys_user::getLoginname, v -> v)); - - try { - dao.clear(WelfareUserSelection.class, Cnd.where("welfareId", "=", projectId).and("selectUserId", "in", userList.stream().map(Sys_user::getId).collect(Collectors.toList()))); - List welfareUserSelectionList = new ArrayList<>(); - welfareMemberSelectionImportList.forEach(v -> { - Sys_user user = userMap.get(v.getLoginName()); - if (v.getFuPin() != null) { - List optionListFp = options.stream().filter(item -> item.getOptionName().equals("全校统一消费帮扶(300元)")).collect(Collectors.toList()); - List userSelectionsFp = welfareListService.buildUserSelection(welfareProject, user.getId(), optionListFp, v.getFuPin()); - if (Lang.isNotEmpty(userSelectionsFp)) welfareUserSelectionList.addAll(userSelectionsFp); - } - - if (v.getSixFuPin() != null) { - List optionListSixFp = options.stream().filter(item -> item.getOptionName().equals("六院部消费帮扶(500元)")).collect(Collectors.toList()); - List userSelectionsSixFp = welfareListService.buildUserSelection(welfareProject, user.getId(), optionListSixFp, v.getFuPin()); - if (Lang.isNotEmpty(userSelectionsSixFp)) welfareUserSelectionList.addAll(userSelectionsSixFp); - } - - if (v.getDuanWu() != null) { - List optionListDw = options.stream().filter(item -> item.getOptionName().equals("端午节")).collect(Collectors.toList()); - List userSelectionsDw = welfareListService.buildUserSelection(welfareProject, user.getId(), optionListDw, v.getDuanWu()); - if (Lang.isNotEmpty(userSelectionsDw)) welfareUserSelectionList.addAll(userSelectionsDw); - } - - if (v.getZhongQiu() != null) { - List optionListZq = options.stream().filter(item -> item.getOptionName().equals("中秋节")).collect(Collectors.toList()); - List userSelectionsZq = welfareListService.buildUserSelection(welfareProject, user.getId(), optionListZq, v.getZhongQiu()); - if (Lang.isNotEmpty(userSelectionsZq)) welfareUserSelectionList.addAll(userSelectionsZq); - } - - if (v.getYuanDan() != null) { - List optionListCj = options.stream().filter(item -> item.getOptionName().equals("春节")).collect(Collectors.toList()); - List userSelectionsCj = welfareListService.buildUserSelection(welfareProject, user.getId(), optionListCj, v.getYuanDan()); - if (Lang.isNotEmpty(userSelectionsCj)) welfareUserSelectionList.addAll(userSelectionsCj); - } - }); - if (Lang.isNotEmpty(welfareUserSelectionList)) dao.fastInsert(welfareUserSelectionList); - return Result.success(); - } catch (Exception e) { - log.error(e.getMessage()); - return Result.error("操作失败"); - } - } } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberAdjustmentController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberAdjustmentController.java index 8f37c6d..bea3113 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberAdjustmentController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberAdjustmentController.java @@ -1,16 +1,15 @@ package io.v.nutz.zhgh.welfare.controller; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import cn.wizzer.framework.page.Pagination; import com.google.common.base.Joiner; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.lang.Lang; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; -import io.v.nutz.sys.models.Sys_user; +import io.v.nutz.base.lang.Lang; +import io.v.nutz.base.model.Audit; +import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.utils.Vi; +import io.v.nutz.sys.models.User; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.data.constant.UserChangeType; -import io.v.nutz.zhgh.data.model.UserHistory; import io.v.nutz.zhgh.data.service.HistoryUserService; import io.v.nutz.zhgh.member.MemberMode; import io.v.nutz.zhgh.member.constant.MemberChangeApplyState; @@ -18,27 +17,21 @@ import io.v.nutz.zhgh.member.constant.MemberChangeOrigin; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle; import io.v.nutz.zhgh.member.model.MemberChangeRecord; -import io.v.nutz.base.model.Audit; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.sys.models.User; -import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.welfare.constant.WelfareMemberApplyState; import io.v.nutz.zhgh.welfare.feature.WelfareFeature; +import io.v.nutz.zhgh.welfare.handle.WelfareMemberApplyAuditHandle; import io.v.nutz.zhgh.welfare.mode.WelfareMemberMode; +import io.v.nutz.zhgh.welfare.model.WelfareMemberApplyRecord; import io.v.nutz.zhgh.welfare.service.WelfareMemberService; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.aop.interceptor.ioc.TransAop; -import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.Static; -import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; @@ -74,10 +67,11 @@ public class WelfareMemberAdjustmentController { @ViReturn @RequiresPermissions("welfare.member.adjustment") public Object pageData(@Param(value = "changeDateBefore", required = false) String changeDateBefore, - @Param(value = "changeDateEnd", required = false) String changeDateEnd, PageForm pageForm, + @Param(value = "changeDateEnd", required = false) String changeDateEnd, + PageForm pageForm, WelfareFeature.Condition.PageParam pageParam, @Param(value = "changeDate", required = false) String changeDate, - @Param(value = "changeType", required = false) Integer changeType, + @Param(value = "changeType", required = false) String changeType, @Param(value = "welfareMember", required = false) Integer welfareMember, @Param(value = "member", required = false) Integer member, @Param(value = "changed", required = false) Integer changed) { @@ -102,13 +96,18 @@ public class WelfareMemberAdjustmentController { mcr_state.stateColor mcrStateColor FROM `user` u + LEFT JOIN user_history_latest his ON his.loginname = u.loginname + LEFT JOIN welfare_member_apply_record_latest wmar ON wmar.userId = u.id + LEFT JOIN member_change_record_latest mcr on mcr.userId = u.id + LEFT JOIN audit_state state ON wmar.stateId = state.stateId + LEFT JOIN audit_state mcr_state ON mcr_state.stateId = mcr.stateId $condition - """) + """) .setParam("recordMode", MemberChangeRecordMode.WELFARE_MEMBER.getCode()) .setParam("changeUnitAuditing", MemberChangeApplyState.SCHOOL_UNION) .setParam("changeUnitError", MemberChangeApplyState.SCHOOL_UNION_FAIL); @@ -121,12 +120,12 @@ public class WelfareMemberAdjustmentController { cnd.andEX("u.unionGroupId", "=", pageParam.getUnionGroupId()); - if (!ShiroUtil.hasAnyRoles("sysadmin,H03,A06")) { - if (ShiroUtil.hasRole("H04")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { + if (ShiroUtil.hasAnyRoles("H04,gh12")) { cnd.and("u.unionId", "=", Vi.getUnionId()); } else if (ShiroUtil.hasRole("ghxzzz")) { SqlExpressionGroup seg = new SqlExpressionGroup(); - seg.or("u.unionGroupId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); + seg.or("u.unionGroupId", "in", ShiroUtil.getUnionGroupIds()); seg.or("u.unionGroupId", "is", null); cnd.and(seg); cnd.and("u.unionid", "=", Vi.getUnionId()); @@ -163,27 +162,16 @@ public class WelfareMemberAdjustmentController { WelfareFeature.Condition.judgmentAuthority(cnd, "u"); - if (StrUtil.isNotBlank(pageParam.getUnit())){ - cnd.and("u.unitid","=",pageParam.getUnit()); - } + cnd.and(pageForm); + cnd.desc("u.threeUnitId"); + cnd.asc("u.loginname"); + + pageParam.participate(cnd, "u"); if (Lang.notNull(changeDateBefore, changeDateEnd)) { cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", changeDateBefore, changeDateEnd))); } -// cnd.andEX("his.changeType", "=", changeType); - - if (changeType != null) { - cnd.and(new Static("JSON_CONTAINS(his.changeTypes, CAST(%d AS JSON), '$')".formatted(changeType))); - } - - pageParam.participate(cnd, "u"); - - cnd.and(pageForm); - cnd.desc("his.changeTypes"); - cnd.desc("u.threeUnitId"); - cnd.asc("u.loginname"); - - + cnd.andEx("his.changeType", "=", changeType); sql.setCondition(cnd); return welfareMemberService.list(pageForm, sql); @@ -192,11 +180,18 @@ public class WelfareMemberAdjustmentController { @At @ViReturn @RequiresPermissions(value = {"welfare.member.adjustment", "welfare.member.check.union"}, logical = Logical.OR) - public Object getChangeNumber(@Param(value = "changeDateBefore", required = false) String changeDateBefore, - @Param(value = "changeDateEnd", required = false) String changeDateEnd, PageForm pageForm, WelfareFeature.Condition.PageParam pageParam, + public Object getChangeNumber(PageForm pageForm, + WelfareFeature.Condition.PageParam pageParam, + @Param(value = "changeDateBefore", required = false) String changeDateBefore, + @Param(value = "changeDateEnd", required = false) String changeDateEnd, @Param(value = "changeType", required = false) String changeType, @Param(value = "welfareMember", required = false) Integer welfareMember, - @Param(value = "member", required = false) Integer member, Integer changed) { + @Param(value = "member", required = false) Integer member, Integer changed, + @Param(value = "userStates", required = false) String[] userStates, + @Param(value = "personTypes", required = false) String[] personTypes, + @Param(value = "changeTypes", required = false) Integer[] changeTypes, + @Param(value = "changeOrigin", required = false) Integer[] changeOrigins + ) { Sql sql = Sqls.create(""" SELECT COUNT(1) AS `all`, @@ -226,12 +221,12 @@ public class WelfareMemberAdjustmentController { } } cnd.andEX("u.unionGroupId", "=", pageParam.getUnionGroupId()); - if (!ShiroUtil.hasAnyRoles("sysadmin,H03,A06")) { - if (ShiroUtil.hasRole("H04")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { + if (ShiroUtil.hasAnyRoles("H04,gh12")) { cnd.and("u.unionId", "=", Vi.getUnionId()); } else if (ShiroUtil.hasRole("ghxzzz")) { SqlExpressionGroup seg = new SqlExpressionGroup(); - seg.or("u.unionGroupId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); + seg.or("u.unionGroupId", "in", ShiroUtil.getUnionGroupIds()); seg.or("u.unionGroupId", "is", null); cnd.and(seg); cnd.and("u.unionid", "=", Vi.getUnionId()); @@ -247,16 +242,45 @@ public class WelfareMemberAdjustmentController { } WelfareFeature.Condition.judgmentAuthority(cnd, "u"); - cnd.and(pageForm); - pageParam.participate(cnd, "u"); - if (Lang.notNull(changeDateBefore, changeDateEnd)) { cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", changeDateBefore, changeDateEnd))); } - cnd.andEX("his.changeType", "=", changeType); +// cnd.andEx("his.changeType", "=", changeType); + + if (org.nutz.lang.Lang.isNotEmpty(changeTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer type : changeTypes) { + seg.or(new Static("JSON_CONTAINS(his.changeTypes, CAST(%d AS JSON), '$')".formatted(type))); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(userStates)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String state : userStates) { + seg.orEquals("u.userState", state); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(personTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String personType : personTypes) { + seg.orEquals("u.personType", personType); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(changeOrigins)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer c : changeOrigins) { + seg.orEquals("u.changeOrigin", c); + } + cnd.and(seg); + } sql.setCondition(cnd); @@ -282,9 +306,8 @@ public class WelfareMemberAdjustmentController { @At @ViReturn @RequiresPermissions("welfare.member.adjustment") - @Aop(TransAop.READ_COMMITTED) public Object joinWelfareMember(String[] userIds) { - if (ShiroUtil.hasAnyRoles("sysadmin,A06,flwyh01")) { + if (ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { WelfareMemberMode.joinWelfareMember(Arrays.stream(userIds).collect(Collectors.toList())); return null; } @@ -297,12 +320,11 @@ public class WelfareMemberAdjustmentController { audit.setUsername(ShiroUtil.getPrincipalProperty("username").toString()); audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); historyUserService.insert(audit); - for (String userId : userIds) { User user = historyUserService.dao().fetch(User.class, Cnd.where("id", "=", userId)); MemberChangeRecord changeRecord = new MemberChangeRecord(); changeRecord.setType(UserChangeType.NEW.getCode()); - changeRecord.setApplyOrigin(io.v.nutz.web.commons.utils.ShiroUtil.hasRole("H04") ? MemberChangeOrigin.UNION.getCode() : MemberChangeOrigin.UNION_GROUP.getCode()); + changeRecord.setApplyOrigin(ShiroUtil.hasAnyRoles("H04,gh12") ? MemberChangeOrigin.UNION.getCode() : MemberChangeOrigin.UNION_GROUP.getCode()); changeRecord.setStateId(MemberChangeApplyState.SCHOOL_UNION); changeRecord.setUpdateWelfareMember(true); changeRecord.setUserId(userId); @@ -316,10 +338,8 @@ public class WelfareMemberAdjustmentController { maps.add(changeRecord); } historyUserService.insert(maps); - historyUserService.dao().update(Sys_user.class, Chain.make("schoolTime", DateUtil.today()),Cnd.where("id","in",userIds)); + WelfareMemberApplyAuditHandle.CREATE.next(Arrays.stream(userIds).map(v -> new WelfareMemberApplyRecord().setUserId(v)).collect(Collectors.toList()), null); return null; - /* WelfareMemberApplyAuditHandle.CREATE.next(Arrays.stream(userIds).map(v -> new WelfareMemberApplyRecord().setUserId(v)).collect(Collectors.toList()), null); - return null;*/ } /** @@ -345,53 +365,4 @@ public class WelfareMemberAdjustmentController { return null; } - - @At - @ViReturn - @RequiresPermissions("welfare.member.adjustment") - public Object getPostdoctoralExit(PageForm pageForm){ - Sql sql = Sqls.create(""" - SELECT - u.id, - u.loginname, - u.username, - u.unitname, - u.unionname, - threeUnitName, - unionGroupName, - his.id hisId, - his.changeType, - his.changeTypes, - his.changeTime - FROM - `user` u - LEFT JOIN user_history_latest his ON his.loginname = u.loginname - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.and("u.userState","=","博士后出站"); - - sql.setCondition(cnd); - Pagination pagination = welfareMemberService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); - - List list = pagination.getList(); - - //查询表中新入职的 - List newUserList = welfareMemberService.dao().query(UserHistory.class, - Cnd.where(new Static("JSON_CONTAINS(changeTypes, CAST(%d AS JSON), '$')" - .formatted(UserChangeType.NEW.getCode())))); - - list.forEach(v->{ - //博士后出站后,判断新入职的姓名是否相同,相同就返回 - List identicalUserNameList = newUserList.stream().filter(item -> item.getUsername().equals(v.getString("username"))).collect(Collectors.toList()); - if (org.nutz.lang.Lang.isNotEmpty(identicalUserNameList)) { - v.setv("isExitAfterEntry",true); - v.setv("entryData", identicalUserNameList); - } else { - v.setv("isExitAfterEntry",false); - } - }); - return pagination; - } - } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberChangeApplyAuditController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberChangeApplyAuditController.java index 1125a1c..521b2f6 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberChangeApplyAuditController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberChangeApplyAuditController.java @@ -2,16 +2,16 @@ package io.v.nutz.zhgh.welfare.controller; import io.v.nutz.base.annontation.ViRequired; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.lang.Enum; +import io.v.nutz.base.model.Audit; +import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.service.ViService; +import io.v.nutz.base.utils.Vi; import io.v.nutz.zhgh.member.constant.MemberChangeApplyState; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle; import io.v.nutz.zhgh.member.model.MemberChangeRecord; -import io.v.nutz.base.model.Audit; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.base.service.ViService; import io.v.nutz.zhgh.welfare.mode.WelfareUnitMode; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Sqls; @@ -75,7 +75,7 @@ public class WelfareMemberChangeApplyAuditController { wun.welfareUnitId realWelfareUnitId, wun.welfareUnitCode realWelfareUnitCode, wun.welfareUnitName realWelfareUnitName, - u.mobile AS userMobile, + u.mobile, state.stateName, state.stateColor, originUnit.unitcode originUnitCode, diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberMangeController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberMangeController.java index 2a75c1b..54579f1 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberMangeController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMemberMangeController.java @@ -8,22 +8,21 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.hutool.core.util.StrUtil; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.result.Result; -import io.v.nutz.base.utils.Roles; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.result.Result; import io.v.nutz.base.service.AsyncService; +import io.v.nutz.base.utils.Roles; +import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.ViTool; -import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.member.MemberMode; -import io.v.nutz.zhgh.member.WelfareMemberMode; import io.v.nutz.sys.models.Sys_unit; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.models.Sys_user_role; import io.v.nutz.sys.models.User; import io.v.nutz.sys.services.SysUserService; -import io.v.nutz.zhgh.therapyRecuperation.model.TheRapyRecuperationEnroll; +import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.member.MemberMode; +import io.v.nutz.zhgh.member.WelfareMemberMode; import io.v.nutz.zhgh.welfare.feature.WelfareFeature; import io.v.nutz.zhgh.welfare.model.template.WelfareMemberTemp; import io.v.nutz.zhgh.welfare.service.WelfareMemberService; @@ -53,7 +52,6 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMineController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMineController.java index 58698e1..fc31c02 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMineController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareMineController.java @@ -73,14 +73,14 @@ public class WelfareMineController { END AS isChoose, GROUP_CONCAT(DISTINCT wuso.optionName,wus.selectNum) AS gist_list, wus.receiveAddress, - wus.courierNumber, - we.evaluateScore + wcn.courierNumber, + wl.userId FROM welfare_project wp LEFT JOIN welfare_project_user_selection wus ON wp.id = wus.welfareId AND wus.selectUserId = @selectUserId + LEFT JOIN welfare_courier_number wcn ON wp.id = wcn.welfareId AND wcn.selectUserId = @selectUserId LEFT JOIN welfare_list wl ON wp.id = wl.projectId AND wl.userId = @selectUserId LEFT JOIN welfare_project_subject_option wuso ON wus.selectOptionId = wuso.id - LEFT JOIN welfare_evaluate we ON we.projectId=wp.id AND we.userId=@selectUserId $condition """); sql.setParam("selectUserId", ShiroUtil.getUserId()); @@ -132,7 +132,11 @@ public class WelfareMineController { wpus.userSign, wpus.courierNumber, wpus.selectTime, - wpso.imgUrl + wpso.imgUrl, + wpso.simpleDesc, + wpso.simpleDesc, + wpso.supplier, + (select COUNT(1) FROM welfare_evaluate we WHERE we.projectId=@projectId AND we.optionId=wpso.id) isPj FROM `welfare_project_user_selection` wpus LEFT JOIN welfare_project_subject_option wpso ON wpso.id = wpus.selectOptionId @@ -164,10 +168,10 @@ public class WelfareMineController { @At @ViReturn @RequiresPermissions("welfare.mine") - public Object finOneWelfareEvaluate(String projectId) { + public Object finOneWelfareEvaluate(String projectId, String optionId) { WelfareEvaluate welfareEvaluate = welfareProjectService.dao().fetch(WelfareEvaluate.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) - .and("projectId", "=", projectId)); + .and("projectId", "=", projectId).and("optionId", "=", optionId)); return welfareEvaluate; } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareProjectMangeController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareProjectMangeController.java index bcae63b..19a129b 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareProjectMangeController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareProjectMangeController.java @@ -1,17 +1,16 @@ package io.v.nutz.zhgh.welfare.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.utils.MsgApi; +import io.v.nutz.base.utils.Vi; +import io.v.nutz.sys.services.SysTaskService; import io.v.nutz.task.services.TaskPlatformService; import io.v.nutz.zhgh.data.model.MatchConditionStructure; import io.v.nutz.zhgh.data.service.MatchConditionStructureService; import io.v.nutz.zhgh.mobileHome.service.MobileHomeService; -import io.v.nutz.sys.services.SysTaskService; import io.v.nutz.zhgh.welfare.model.WelfareProject; import io.v.nutz.zhgh.welfare.model.WelfareProjectSubject; import io.v.nutz.zhgh.welfare.model.WelfareProjectSubjectOption; @@ -38,6 +37,7 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import org.nutz.trans.Trans; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -235,9 +235,9 @@ public class WelfareProjectMangeController { dao.update(project); } -// if (project.getIsPushHome() != 0) { -// mobileHomeService.handle(project, "welfare", "/mobile/welfare/list/receive?projectId=" + project.getId(), project.getIsPushHome()); -// } + if (project.getIsPushHome() != 0) { + mobileHomeService.handle(project, "welfare", "/mobile/welfare/list/receive?projectId=" + project.getId(), project.getIsPushHome()); + } }); return null; } @@ -309,11 +309,11 @@ public class WelfareProjectMangeController { sql.setParam("projectId", projectId); List userList = listService.listMap(sql); - /*for (NutMap map : userList) { - msgApi.sendMsg(sendMsgValue, "", "", "", "4", new ArrayList<>() {{ - add(NutMap.NEW().addv("userId", map.getString("loginname"))); - }}); - }*/ +// for (NutMap map : userList) { +// msgApi.sendMsg(sendMsgValue, "", "", "", "4", new ArrayList<>() {{ +// add(NutMap.NEW().addv("userId", map.getString("loginname"))); +// }}); +// } return null; } @@ -332,29 +332,4 @@ public class WelfareProjectMangeController { return null; } - - /** - * 查询是否全年节日选择 - * @return - */ - @At - @ViReturn - @RequiresPermissions("welfare.list.mange") - public Object isCheckAnnualFestival(){ - return projectService.count(Cnd.where("`year`", "=", DateUtil.thisYear()).and("isAnnualFestival","=",1)); - } - - - /** - * 关闭本年节日选择项目 - * @return - */ - @At - @ViReturn - @RequiresPermissions("welfare.list.mange") - public Object closeAnnualFestivalByThisYear(){ - projectService.update(Chain.make("isAnnualFestival",0),Cnd.where("`year`", "=", DateUtil.thisYear())); - return null; - } - } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareSelfAgentController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareSelfAgentController.java index 1aecc1e..57922e4 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareSelfAgentController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareSelfAgentController.java @@ -3,10 +3,10 @@ package io.v.nutz.zhgh.welfare.controller; import cn.hutool.core.date.DateUtil; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.service.BaseService; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.model.MemberCheckSelfTask; import io.v.nutz.zhgh.member.model.MemberCheckTask; -import io.v.nutz.web.commons.utils.ShiroUtil; import org.nutz.dao.Cnd; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareUserChooseController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareUserChooseController.java index 6590893..41b5719 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareUserChooseController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/WelfareUserChooseController.java @@ -20,7 +20,6 @@ import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.json.Json; -import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; @@ -66,8 +65,7 @@ public class WelfareUserChooseController { END AS isChoose, wus.selectTime, GROUP_CONCAT(DISTINCT wuso.optionName ,'(',wus.selectNum,'份)') AS gist_list, - wus.receiveAddress, - wl.welfareUnitId + wus.receiveAddress FROM welfare_project wp LEFT JOIN welfare_project_user_selection wus ON wp.id = wus.welfareId AND wus.selectUserId = @selectUserId diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareCheckPersonalController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareCheckPersonalController.java index 6b2aac0..6620bb0 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareCheckPersonalController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareCheckPersonalController.java @@ -4,11 +4,11 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; -import io.v.nutz.zhgh.member.service.MemberCheckPersonalService; import io.v.nutz.base.query.PageForm; -import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.ViTool; +import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.member.service.MemberCheckPersonalService; import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckSchoolController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckSchoolController.java index 6262c4d..c2a6b14 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckSchoolController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckSchoolController.java @@ -6,14 +6,14 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.hutool.core.util.StrUtil; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.SimpleService; import io.v.nutz.base.utils.Roles; +import io.v.nutz.base.utils.ViTool; import io.v.nutz.zhgh.data.constant.UserChangeType; import io.v.nutz.zhgh.member.constant.MemberChangeApplyState; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.model.MemberChangeRecord; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.base.utils.ViTool; import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckTaskController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckTaskController.java index 39098fe..1bbd696 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckTaskController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckTaskController.java @@ -2,16 +2,15 @@ package io.v.nutz.zhgh.welfare.controller.check; import cn.hutool.core.lang.Assert; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.SimpleService; +import io.v.nutz.sys.models.Sys_union; +import io.v.nutz.sys.models.Sys_user; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.model.MemberChangeRecord; import io.v.nutz.zhgh.member.model.MemberCheckSelfTask; import io.v.nutz.zhgh.member.model.MemberCheckTask; import io.v.nutz.zhgh.member.model.MemberCheckUnionTask; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.sys.models.SysUnionGroup; -import io.v.nutz.sys.models.Sys_union; -import io.v.nutz.sys.models.Sys_user; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckUnionController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckUnionController.java index b5af773..4d116da 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckUnionController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/check/WelfareMemberCheckUnionController.java @@ -4,11 +4,19 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.hutool.core.util.StrUtil; +import cn.wizzer.framework.base.Result; import com.google.common.base.Joiner; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.dao.CndPlus; +import io.v.nutz.base.model.Audit; +import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.SimpleService; import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.dao.CndPlus; +import io.v.nutz.base.utils.ViTool; +import io.v.nutz.sys.models.Sys_config; +import io.v.nutz.sys.models.User; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.data.constant.UserChangeType; import io.v.nutz.zhgh.member.constant.MemberChangeApplyState; import io.v.nutz.zhgh.member.constant.MemberChangeOrigin; @@ -16,11 +24,6 @@ import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle; import io.v.nutz.zhgh.member.model.MemberChangeRecord; import io.v.nutz.zhgh.member.model.MemberCheckUnionTask; -import io.v.nutz.base.model.Audit; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.sys.models.User; -import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.base.utils.ViTool; import io.v.nutz.zhgh.welfare.constant.WelfareMemberApplyState; import io.v.nutz.zhgh.welfare.feature.WelfareFeature; import io.v.nutz.zhgh.welfare.mode.WelfareMemberMode; @@ -35,16 +38,14 @@ import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -75,18 +76,25 @@ public class WelfareMemberCheckUnionController { @ViReturn @RequiresPermissions("welfare.member.check.union") public Object pageData(PageForm pageForm, + WelfareFeature.Condition.PageParam pageParam, @Param(value = "taskId", required = false) String taskId, @Param(value = "unionId", required = false) String unionId, @Param(value = "unitId", required = false) String unitId, @Param(value = "changed", required = false) Integer changed, @Param(value = "changeType", required = false) String changeType, @Param(value = "isMember", required = false) Integer isMember, - WelfareFeature.Condition.PageParam pageParam, - @Param(value = "welfareMember", required = false) Integer welfareMember) { + @Param(value = "welfareMember", required = false) Integer welfareMember, + @Param(value = "userStates", required = false) String[] userStates, + @Param(value = "personTypes", required = false) String[] personTypes, + @Param(value = "changeTypes", required = false) Integer[] changeTypes, + @Param(value = "changeOrigin", required = false) Integer[] changeOrigins + ) { Sql sql = Sqls.create(""" SELECT u.*, + his.id hisId, his.changeType, + his.changeTypes, his.changeTime, IF ( his.id IS NULL, FALSE, TRUE ) hasHis, @@ -102,15 +110,10 @@ public class WelfareMemberCheckUnionController { mcr_state.stateColor mcrStateColor FROM `user` u - LEFT JOIN user_history_latest his ON his.loginname = u.loginname - LEFT JOIN welfare_member_apply_record_latest wmar ON wmar.userId = u.id - LEFT JOIN member_change_record_latest mcr on mcr.userId = u.id - LEFT JOIN audit_state state ON wmar.stateId = state.stateId - LEFT JOIN audit_state mcr_state ON mcr_state.stateId = mcr.stateId $condition """) @@ -128,12 +131,12 @@ public class WelfareMemberCheckUnionController { /* if (!ShiroUtil.hasAnyRoles("sysadmin,A06,flwyh01")) { cnd.and("u.unionGroupId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); }*/ - if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionMemberAdmin,A06")) { - if (ShiroUtil.hasRole("H04")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { + if (ShiroUtil.hasAnyRoles("H04,gh12")) { cnd.and("u.unionId", "=", Vi.getUnionId()); } else if (ShiroUtil.hasRole("ghxzzz")) { SqlExpressionGroup seg = new SqlExpressionGroup(); - seg.or("u.unionGroupId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); + seg.or("u.unionGroupId", "in", ShiroUtil.getUnionGroupIds()); seg.or("u.unionGroupId", "is", null); cnd.and(seg); cnd.and("u.unionid", "=", Vi.getUnionId()); @@ -150,7 +153,6 @@ public class WelfareMemberCheckUnionController { } } - if (welfareMember == 1) { cnd.and("u.welfareMember", "=", WelfareMemberMode.NORMAL.getCode()); } else if (welfareMember == 2) { @@ -168,6 +170,37 @@ public class WelfareMemberCheckUnionController { cnd.asc("u.unitid"); cnd.asc("u.loginname"); + if (Lang.isNotEmpty(changeTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer type : changeTypes) { + seg.or(new Static("JSON_CONTAINS(his.changeTypes, CAST(%d AS JSON), '$')".formatted(type))); + } + cnd.and(seg); + } + + if (Lang.isNotEmpty(userStates)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String state : userStates) { + seg.orEquals("u.userState", state); + } + cnd.and(seg); + } + + if (Lang.isNotEmpty(personTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String personType : personTypes) { + seg.orEquals("u.personType", personType); + } + cnd.and(seg); + } + + if (Lang.isNotEmpty(changeOrigins)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer c : changeOrigins) { + seg.orEquals("u.changeOrigin", c); + } + cnd.and(seg); + } sql.setCondition(cnd); return simpleService.list(pageForm, sql); @@ -193,16 +226,55 @@ public class WelfareMemberCheckUnionController { @At @ViReturn @RequiresPermissions("welfare.member.check.union") - public Object doSubmitChangeUser(MemberChangeRecord record) { - record.setRecordMode(MemberChangeRecordMode.WELFARE_MEMBER.getCode()); - record.setApplyOrigin(MemberChangeOrigin.UNION.getCode()); - record = MemberChangeAuditHandle.CREATE.next(record, null); + public Object doSubmitChangeUser(MemberChangeRecord memberChangeRecord) { + if (Objects.equals(memberChangeRecord.getType(), UserChangeType.NEW.getCode())) { + return Result.error("您已经入职,可以选择恢复功能入会!"); + } + if (Objects.equals(memberChangeRecord.getType(), UserChangeType.UNIT_CHANGE.getCode())) { + boolean unionGroupEnable = Optional.ofNullable(dao.fetch(Sys_config.class, Cnd.where("configKey", "=", "isThreeUnit"))).map(v -> v.getConfigValue()).orElse("false").equals("true"); + + if (unionGroupEnable && memberChangeRecord.getCurrentThreeUnitId().equals(memberChangeRecord.getOriginThreeUnitId())) { + return Result.error("请选择不同的单位!"); + } else if (!unionGroupEnable && memberChangeRecord.getCurrentUnitId().equals(memberChangeRecord.getOriginUnitId())) { + return Result.error("请选择不同的单位!"); + } + } + if (!Objects.equals(memberChangeRecord.getType(), UserChangeType.UNIT_CHANGE.getCode())) { + memberChangeRecord.setCurrentUnitId(null); + memberChangeRecord.setCurrentUnionId(null); + } + + Sql userSql = Sqls.fetchString("select userState from sys_user where id = @userId"); + userSql.setParam("userId", memberChangeRecord.getUserId()); + dao.execute(userSql); + String userState = StrUtil.blankToDefault(userSql.getString(), ""); + + if (memberChangeRecord.getType() == UserChangeType.ON_DUTY.getCode()) { + if (userState.equals(UserChangeType.ON_DUTY.getDescription())) { + return Result.error("该用户当前的状态已经是" + UserChangeType.ON_DUTY.getDescription() + ",您无需变更!"); + } + } + if (memberChangeRecord.getType() == UserChangeType.RESIGN.getCode()) { + if (userState.equals(UserChangeType.RESIGN.getDescription())) { + return Result.error("该用户当前的状态已经是" + UserChangeType.RESIGN.getDescription() + ",您无需变更!"); + } + } + if (memberChangeRecord.getType() == UserChangeType.RETIREMENT.getCode()) { + if (userState.equals(UserChangeType.RETIREMENT.getDescription())) { + return Result.error("该用户当前的状态已经是" + UserChangeType.RETIREMENT.getDescription() + ",您无需变更!"); + } + } + + + memberChangeRecord.setRecordMode(MemberChangeRecordMode.WELFARE_MEMBER.getCode()); + memberChangeRecord.setApplyOrigin(MemberChangeOrigin.UNION.getCode()); + memberChangeRecord = MemberChangeAuditHandle.CREATE.next(memberChangeRecord, null); Audit audit = new Audit(); audit.setAuditPass(true); - audit.setAuditOpinion(record.getRemark()); + audit.setAuditOpinion(memberChangeRecord.getRemark()); - MemberChangeAuditHandle.UNION.next(record, audit); + MemberChangeAuditHandle.UNION.next(memberChangeRecord, audit); return null; } @@ -238,7 +310,7 @@ public class WelfareMemberCheckUnionController { public Object doWelfareMember(String[] userIds, String taskId, @Param(value = "threeUnitId", required = false) String threeUnitId, @Param(value = "unitId", required = false) String unitId) { - if (ShiroUtil.hasAnyRoles("sysadmin,A06,flwyh01")) { + if (ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { WelfareMemberMode.joinWelfareMember(Arrays.stream(userIds).collect(Collectors.toList())); return null; } @@ -300,7 +372,7 @@ public class WelfareMemberCheckUnionController { excelExportEntities.add(new ExcelExportEntity("姓名", "username", 20)); excelExportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); excelExportEntities.add(new ExcelExportEntity("所属工会", "unionname", 20)); - excelExportEntities.add(new ExcelExportEntity("所属单位", "unitname", 20)); + excelExportEntities.add(new ExcelExportEntity("所属单位", "unitname", 50)); try { ViTool.excelResponse(response, "福利名单.xlsx"); diff --git a/src/main/java/io/v/nutz/zhgh/welfare/controller/statistics/WelfareSingleController.java b/src/main/java/io/v/nutz/zhgh/welfare/controller/statistics/WelfareSingleController.java index 6cdd8d9..3f666e1 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/controller/statistics/WelfareSingleController.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/controller/statistics/WelfareSingleController.java @@ -23,8 +23,6 @@ import io.v.nutz.zhgh.welfare.model.WelfareUserSelection; import io.v.nutz.zhgh.welfare.service.WelfareSingleService; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.IOUtils; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -48,7 +46,6 @@ import org.nutz.mvc.annotation.Param; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.BufferedOutputStream; -import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; @@ -296,9 +293,9 @@ public class WelfareSingleController { $notGroupIdCnd """).setParam("welfareId", projectId); Cnd cnd = Cnd.NEW(); -// if (Globals.MyConfig.getBoolean("isThreeUnit")) { -// sql.setVar("notGroupIdCnd", "and u.unionGroupId is not null"); -// } + if (Globals.MyConfig.getBoolean("isThreeUnit")) { + sql.setVar("notGroupIdCnd", "and u.unionGroupId is not null"); + } cnd.andEX("u.unionGroupId", "=", unionGroupId); if (Strings.isNotBlank(month)) { cnd.andEX("SUBSTR(u.birthday,6,2)", "=", month.substring(5, 7)); @@ -630,8 +627,8 @@ public class WelfareSingleController { response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(welfareProject.getName() + "签收表.xlsx", "UTF-8")); //获取这个福利项目下的所有数据 -// List allUser = welfareSingleService.getUserByProjectId(projectId, month, unionGroupId); -// List userChoose = welfareSingleService.getUserChooseByProjectId(projectId, month, unionGroupId); + List allUser = welfareSingleService.getUserByProjectId(projectId, month, unionGroupId); + List userChoose = welfareSingleService.getUserChooseByProjectId(projectId, month, unionGroupId); welfareSingleService.exportReceiveDetail(projectId, welfareUnitId, new ArrayList<>(), new ArrayList<>(), response.getOutputStream()); ViTool.excelResponse(response, sysUnion.getUnioncode() + sysUnion.getUnionname() + welfareProject.getName() + "签收表.xlsx"); } catch (Exception e) { @@ -691,18 +688,22 @@ public class WelfareSingleController { Sql sql = Sqls.create(""" SELECT u.loginname, - u.threeUnitName, u.username, u.mobile, - unionname, - unitname, + wl.userState, + wl.personType, + gh.unionname, + dw.name as unitname, IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress, wpus.selectNum, wpso.optionName FROM - welfare_project_user_selection wpus - left join `user` u on u.id = wpus.selectUserId + welfare_project_user_selection_copy1 wpus + left join sys_user u on u.id = wpus.selectUserId left join welfare_project_subject_option wpso on wpso.id = wpus.selectOptionId + left join welfare_list wl on wl.userId = wpus.selectUserId + left join sys_union gh on gh.id = wl.welfareUnitId + left join sys_unit dw on dw.id = wl.welfareSecondLevelUnitId $condition """); cnd.and("wpus.welfareId", "=", projectId); @@ -710,13 +711,10 @@ public class WelfareSingleController { if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionWelfareAdmin")) { cnd.and("u.unionId", "=", Vi.getUnionId()); } - - if (Globals.MyConfig.getBoolean("isThreeUnit")) { - cnd.and("u.unionGroupId", "is not", null); - } + cnd.and("wpus.selectNum", "!=", 0); cnd.andEX("u.unioncode", "=", welfareUnitCode); - cnd.asc("u.threeUnitCode"); - cnd.asc("u.unitcode"); + //下次活动必须打开 + //cnd.groupBy("wpus.selectUserId", "wpus.selectOptionId"); sql.setCondition(cnd); List list = welfareSingleService.listMap(sql); Map> optionGroupData = list.stream().collect(Collectors.groupingBy(v -> v.getString("optionName"))); @@ -725,12 +723,14 @@ public class WelfareSingleController { exportEntities.add(new ExcelExportEntity("工号", "loginname", 20)); exportEntities.add(new ExcelExportEntity("姓名", "username", 20)); exportEntities.add(new ExcelExportEntity("电话号码", "mobile", 20)); + exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); + exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20)); exportEntities.add(new ExcelExportEntity("所在分工会", "unionname", 30)); exportEntities.add(new ExcelExportEntity("所在单位", "unitname", 50)); exportEntities.add(new ExcelExportEntity("选择份数", "selectNum", 20)); - if (Globals.MyConfig.getBoolean("isThreeUnit")) { - exportEntities.add(new ExcelExportEntity("所在部门", "threeUnitName", 50)); - } +// if (Globals.MyConfig.getBoolean("isThreeUnit")) { +// exportEntities.add(new ExcelExportEntity("所在部门", "threeUnitName", 50)); +// } exportEntities.add(new ExcelExportEntity("收货地址", "receiveAddress", 100)); Workbook workbook = new XSSFWorkbook(); diff --git a/src/main/java/io/v/nutz/zhgh/welfare/feature/WelfareFeature.java b/src/main/java/io/v/nutz/zhgh/welfare/feature/WelfareFeature.java index 7f94325..93355bf 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/feature/WelfareFeature.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/feature/WelfareFeature.java @@ -1,8 +1,8 @@ package io.v.nutz.zhgh.welfare.feature; import cn.hutool.core.bean.BeanUtil; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.welfare.mode.WelfareUnitMode; import lombok.Data; @@ -90,8 +90,8 @@ public interface WelfareFeature { // cnd.andEX(Condition.getPrefix(prefix) + "unitid", "=", getUnit()); cnd.andEX(Condition.getPrefix(prefix) + WelfareUnitMode.getMode().getField(), "=", getWelfareUnit()); cnd.andEX(Condition.getPrefix(prefix) + "campusId", "=", getCampus()); - cnd.andEX(Condition.getPrefix(prefix) + "personType", "=", getPersonType()); - cnd.andEX(Condition.getPrefix(prefix) + "userState", "=", getUserState()); +// cnd.andEX(Condition.getPrefix(prefix) + "personType", "=", getPersonType()); +// cnd.andEX(Condition.getPrefix(prefix) + "userState", "=", getUserState()); cnd.andEX(Condition.getPrefix(prefix) + "sex", "=", getSex()); cnd.andEX(Condition.getPrefix(prefix) + "threeUnitId", "=", getThreeUnitId()); diff --git a/src/main/java/io/v/nutz/zhgh/welfare/handle/WelfareMemberApplyAuditHandle.java b/src/main/java/io/v/nutz/zhgh/welfare/handle/WelfareMemberApplyAuditHandle.java index ad885b8..4cf0829 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/handle/WelfareMemberApplyAuditHandle.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/handle/WelfareMemberApplyAuditHandle.java @@ -1,12 +1,15 @@ package io.v.nutz.zhgh.welfare.handle; +import io.v.nutz.base.model.Audit; import io.v.nutz.base.service.AuditService; +import io.v.nutz.base.utils.Roles; import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.ViResource; -import io.v.nutz.zhgh.member.constant.MemberApplyState; -import io.v.nutz.base.model.Audit; +import io.v.nutz.sys.models.Sys_user_role; import io.v.nutz.sys.services.SysUserService; +import io.v.nutz.zhgh.member.constant.MemberApplyState; import io.v.nutz.zhgh.welfare.constant.WelfareMemberApplyState; +import io.v.nutz.zhgh.welfare.feature.WelfareFeature; import io.v.nutz.zhgh.welfare.mode.WelfareMemberMode; import io.v.nutz.zhgh.welfare.model.WelfareMemberApplyRecord; import io.v.nutz.zhgh.welfare.service.WelfareMemberService; @@ -14,6 +17,7 @@ import lombok.Getter; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,8 +43,8 @@ public enum WelfareMemberApplyAuditHandle { @Override public void next(List records, Audit audit) { - WelfareMemberMode.joinWelfareMember(records.stream().map(v -> v.getUserId()).collect(Collectors.toList())); - /* if (WelfareFeature.judgmentAuthority()) { +// WelfareMemberMode.joinWelfareMember(records.stream().map(v -> v.getUserId()).collect(Collectors.toList())); + if (WelfareFeature.judgmentAuthority()) { WelfareMemberMode.joinWelfareMember(records.stream().map(v -> v.getUserId()).collect(Collectors.toList())); } else { Date now = new Date(); @@ -49,7 +53,7 @@ public enum WelfareMemberApplyAuditHandle { record.setStateId(WelfareMemberApplyState.SCHOOL_UNION); } service.dao().insert(records); - }*/ + } } }, /** @@ -77,7 +81,18 @@ public enum WelfareMemberApplyAuditHandle { service.update(records); if (audit.getAuditPass()) { - service.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()).add("welfareMemberJoinTime", new Date()), Cnd.where("id", "in", records.stream().map(v -> v.getUserId()).collect(Collectors.toList()))); + List userIds = records.stream().map(WelfareMemberApplyRecord::getUserId).collect(Collectors.toList()); + service.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()).add("welfareMemberJoinTime", new Date()), Cnd.where("id", "in", userIds)); + service.dao().clear(Sys_user_role.class, Cnd.where("id", "in", userIds).and("roleId", "=", Roles.WELFARE_MEMBER)); + + List roles = new ArrayList<>(); + userIds.forEach(u -> { + Sys_user_role userRole = new Sys_user_role(); + userRole.setUserId(u); + userRole.setRoleId(Roles.WELFARE_MEMBER); + roles.add(userRole); + }); + getService().insert(roles); } }); } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/mode/CourierNumberExcelMode.java b/src/main/java/io/v/nutz/zhgh/welfare/mode/CourierNumberExcelMode.java index 03bed40..1143118 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/mode/CourierNumberExcelMode.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/mode/CourierNumberExcelMode.java @@ -12,7 +12,16 @@ public class CourierNumberExcelMode { @Excel(name = "姓名", width = 20) private String userName; - @Excel(name = "快递单号", width = 30) - private String courierNumber; + @Excel(name = "快递单号1", width = 30) + private String oneCourierNumber; + + @Excel(name = "快递单号2", width = 30) + private String twoCourierNumber; + + @Excel(name = "快递单号3", width = 30) + private String threeCourierNumber; + + @Excel(name = "快递单号4", width = 30) + private String fourCourierNumber; } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/mode/WelfareUnitMode.java b/src/main/java/io/v/nutz/zhgh/welfare/mode/WelfareUnitMode.java index 06794c1..7681815 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/mode/WelfareUnitMode.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/mode/WelfareUnitMode.java @@ -1,8 +1,8 @@ package io.v.nutz.zhgh.welfare.mode; import io.v.nutz.base.lang.Enum; -import io.v.nutz.sys.services.SysUnitService; import io.v.nutz.base.utils.ViResource; +import io.v.nutz.sys.services.SysUnitService; import io.v.nutz.web.commons.base.Globals; import io.v.nutz.zhgh.welfare.model.view.WelfareUnit; import lombok.AllArgsConstructor; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareCourierNumber.java b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareCourierNumber.java new file mode 100644 index 0000000..ae3e42a --- /dev/null +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareCourierNumber.java @@ -0,0 +1,76 @@ +package io.v.nutz.zhgh.welfare.model; + +import lombok.Data; +import lombok.experimental.Accessors; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; +import org.nutz.lang.util.NutMap; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName WelfareCourierNumber + * @Description TODO + * @Author zhf + * @Date 2024/6/27 9:46 + */ +@Data +@Accessors(chain = true) +@Table +@Comment("福利用户快递单号") +public class WelfareCourierNumber { + + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("所属福利") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String welfareId; + + @Column + @Comment("选择项") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String selectOptionId; + + @Column + @Comment("选择用户") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String selectUserId; + + @Column + @Comment("快递单号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String courierNumber; + + @Column + @Comment("物流信息") + @ColDefine(type = ColType.MYSQL_JSON) + private WelfareUserSelection.LogisticsTrace logisticsTrace; + + @Column + @Comment("上次查询物流信息的时间") + @ColDefine(type = ColType.DATETIME) + private Date selectExpressDate; + + @Data + public static class LogisticsTrace { + //运单号物流流转当前最新变更时间 + private Date theLastTime; + //运单号物流流转当前最新描述 + private String theLastMessage; + //运单号当前物流状态文字描述 + private String logisticsStatusDesc; + //物流流转状态(WAIT_ACCEPT:) + private String logisticsStatus; + //物流流转明细 + private List logisticsTraceDetailList; + } + + +} diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareEvaluate.java b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareEvaluate.java index 507a9a7..b4c4e59 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareEvaluate.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareEvaluate.java @@ -32,6 +32,11 @@ public class WelfareEvaluate extends BaseModel implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 32) private String projectId; + @Column + @Comment("套餐ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String optionId; + @Column @Comment("用户ID") @ColDefine(type = ColType.VARCHAR, width = 32) diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareList.java b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareList.java index 1b5927c..f6ec84c 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareList.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareList.java @@ -42,13 +42,29 @@ public class WelfareList { @ColDefine(type = ColType.VARCHAR, width = 32) private String welfareUnitId; + @Column + @Comment("福利二级单位ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String welfareSecondLevelUnitId; + @Column @Comment("是否签收") @ColDefine(type = ColType.BOOLEAN) - private boolean isReceive; + private Boolean isReceive; @Column @Comment("是否下次福利自动选择当前提货券") @ColDefine(type = ColType.BOOLEAN) - private boolean isAutoSelect; + private Boolean isAutoSelect; + + @Column + @Comment("人员类型") + @ColDefine(type = ColType.VARCHAR) + private String personType; + + @Column + @Comment("在职状态") + @ColDefine(type = ColType.VARCHAR) + private String userState; + } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProject.java b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProject.java index 9410b53..84da064 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProject.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProject.java @@ -215,34 +215,4 @@ public class WelfareProject extends ViBaseModel { @ColDefine(type = ColType.BOOLEAN) private Boolean isDisabled; - @Column - @Comment("是否全年选择节日") - @ColDefine(type = ColType.BOOLEAN) - private Boolean isAnnualFestival; - - @Column - @Comment("允许选择的工会Id") - @ColDefine(type = ColType.MYSQL_JSON) - private List unionIdList; - - @Column - @Comment("是否使用配置") - @ColDefine(type = ColType.BOOLEAN) - private Boolean isConfig; - - @Column - @Comment("新入职老师选择") - @ColDefine(type = ColType.MYSQL_JSON) - private List teacherSelectList; - - - @Data - public static class NewlyHiredTeacherSelect{ - //开始时间 - private Date startTime; - //结束时间 - private Date endTime; - //可选选项id - private List optionIdList; - } } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProjectSubjectOption.java b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProjectSubjectOption.java index 2eb5a5e..b072718 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProjectSubjectOption.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareProjectSubjectOption.java @@ -60,12 +60,6 @@ public class WelfareProjectSubjectOption extends BaseModel { @ColDefine(type = ColType.BOOLEAN) private Boolean isSystemDefault; - - @Column - @Comment("默认选择几个") - @ColDefine(type = ColType.INT) - private Integer defaultSelectNum; - @Column @Comment("图片地址") @ColDefine(type = ColType.VARCHAR, width = 100) diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareUserSelection.java b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareUserSelection.java index 6973671..5d9256d 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareUserSelection.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/WelfareUserSelection.java @@ -80,15 +80,14 @@ public class WelfareUserSelection { @Comment("物流信息") @ColDefine(type = ColType.MYSQL_JSON) private LogisticsTrace logisticsTrace; + @Column @Comment("上次查询物流信息的时间") @ColDefine(type = ColType.DATETIME) private Date selectExpressDate; - @Data public static class LogisticsTrace { - //运单号物流流转当前最新变更时间 private Date theLastTime; //运单号物流流转当前最新描述 @@ -99,8 +98,6 @@ public class WelfareUserSelection { private String logisticsStatus; //物流流转明细 private List logisticsTraceDetailList; - - } } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/model/template/WelfareExportEntityTc.java b/src/main/java/io/v/nutz/zhgh/welfare/model/template/WelfareExportEntityTc.java index b597cec..0a949b3 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/model/template/WelfareExportEntityTc.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/model/template/WelfareExportEntityTc.java @@ -24,8 +24,8 @@ public class WelfareExportEntityTc { @Excel(name = "所属工会", width = 20d) private String unionName; - @Excel(name = "所属单位", width = 60d) - private String unitName; +// @Excel(name = "所属单位", width = 60d) +// private String unitName; @Excel(name = "已选福利", width = 80d) private String optionName; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/service/WelfareListService.java b/src/main/java/io/v/nutz/zhgh/welfare/service/WelfareListService.java index e3bb175..d1ce6e3 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/service/WelfareListService.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/service/WelfareListService.java @@ -2,9 +2,6 @@ package io.v.nutz.zhgh.welfare.service; import io.v.nutz.base.service.ViService; import io.v.nutz.zhgh.welfare.model.WelfareList; -import io.v.nutz.zhgh.welfare.model.WelfareProject; -import io.v.nutz.zhgh.welfare.model.WelfareProjectSubjectOption; -import io.v.nutz.zhgh.welfare.model.WelfareUserSelection; import org.nutz.lang.util.NutMap; import java.util.List; @@ -33,7 +30,4 @@ public interface WelfareListService extends ViService { void joinWelfareList(String projectId, List userIds); List getToNotWelfareUsers(String projectId); - - - List buildUserSelection(WelfareProject project, String userId, List options, Integer selectNum); } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareListServiceImpl.java b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareListServiceImpl.java index 6b70f3a..6cf5d67 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareListServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareListServiceImpl.java @@ -1,6 +1,5 @@ package io.v.nutz.zhgh.welfare.service.impl; -import cn.hutool.core.util.StrUtil; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.service.impl.ViServiceImpl; import io.v.nutz.base.utils.DateUtil; @@ -8,7 +7,6 @@ import io.v.nutz.sys.models.Sys_user; import io.v.nutz.zhgh.welfare.mode.WelfareUnitMode; import io.v.nutz.zhgh.welfare.model.WelfareList; import io.v.nutz.zhgh.welfare.model.WelfareProject; -import io.v.nutz.zhgh.welfare.model.WelfareProjectSubjectOption; import io.v.nutz.zhgh.welfare.model.WelfareUserSelection; import io.v.nutz.zhgh.welfare.service.WelfareListService; import io.v.nutz.zhgh.welfare.service.WelfareProjectService; @@ -20,12 +18,12 @@ 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.IocBean; -import org.nutz.lang.Lang; -import org.nutz.lang.random.R; import org.nutz.lang.util.NutMap; import org.nutz.plugins.wkcache.annotation.CacheDefaults; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; import java.util.stream.Collectors; @@ -42,7 +40,6 @@ public class WelfareListServiceImpl extends ViServiceImpl implement @Inject private WelfareProjectService projectService; - @Override @Aop(TransAop.READ_COMMITTED) public void createList(String projectId, boolean created) { @@ -56,7 +53,7 @@ public class WelfareListServiceImpl extends ViServiceImpl implement List userIds; - if (project.getIsYearBirthday() != null && project.getIsYearBirthday()) { + if (project.getIsYearBirthday()!=null && project.getIsYearBirthday()) { //如果是生日福利 //从user找出生日在今天之后的,并且不符合发放范围的人 @@ -110,9 +107,6 @@ public class WelfareListServiceImpl extends ViServiceImpl implement Sql sql = Sqls.create("SELECT * from `welfare_member` $condition"); sql.setCondition(cnd); joinWelfareList(listMap(sql), projectId); - if (project.getIsAnnualFestival()) { - renewWelfareSelection(project); - } // addflUser(projectId, created); } @@ -154,6 +148,7 @@ public class WelfareListServiceImpl extends ViServiceImpl implement list.setProjectId(projectId); list.setUserId(user.getString("id")); list.setWelfareUnitId(user.getString(field)); + list.setWelfareSecondLevelUnitId(user.getString("unitid")); lists.add(list); } dao().insert(lists); @@ -169,189 +164,4 @@ public class WelfareListServiceImpl extends ViServiceImpl implement } - /** - * 更新教工所选择的福利 - * - * @param project - */ - private void renewWelfareSelection(WelfareProject project) { - String projectId = project.getId(); - Sql sql = Sqls.create(""" - SELECT - member.*, - list.welfareUnitId as oldunionid, - IF(member.unionid = list.welfareUnitId,0,1) as changeUnion - FROM - `welfare_member` member - LEFT JOIN `welfare_list` list ON list.userId = member.id - where list.projectId = @projectId - """).setParam("projectId", projectId); - List users = listMap(sql); - - //所有的福利 - List options = project.getWelfareProjectSubjects().get(0).getOptions(); - - //六院部以外的福利 - List optionList = options.stream().filter(v -> !v.getOptionName().contains("六院部")).collect(Collectors.toList()); - - //此福利用户选择 - List userSelectionList = dao().query(WelfareUserSelection.class, Cnd.where("welfareId", "=", projectId)); - - Map> userSelectionMap = userSelectionList.stream().collect(Collectors.groupingBy(WelfareUserSelection::getSelectUserId)); - - //能选择的分工会Id - List canChooseUnionIdList = project.getUnionIdList(); - - //不能选择的分工会用户 - List notChooseUsers = users.stream().filter(v -> StrUtil.isNotBlank(v.getString("unionid")) && !canChooseUnionIdList.contains(v.getString("unionid"))).collect(Collectors.toList()); - - if (Lang.isEmpty(userSelectionList)) { - //如果选择表中没有记录 - List needInsertWelfareSelectionList = new ArrayList<>(); - notChooseUsers.forEach(v -> { - List welfareProjectSubjectOptions = buildUserOptions(project, v, optionList, null, canChooseUnionIdList); - List oneUserSelections = buildUserSelection(project, v.getString("id"), welfareProjectSubjectOptions, 1); - if (Lang.isNotEmpty(oneUserSelections)) needInsertWelfareSelectionList.addAll(oneUserSelections); - }); - dao().fastInsert(needInsertWelfareSelectionList); - } else { - //有记录,福利选项可能会减少或增加 - List needInsertWelfareSelectionList = new ArrayList<>(); - - users.forEach(v -> { - List userSelections = userSelectionMap.get(v.getString("id")); - List welfareProjectSubjectOptions = new ArrayList<>(); - //六院部的教工以外,六院部自己选择 - if (!canChooseUnionIdList.contains(v.getString("unionid"))) { - welfareProjectSubjectOptions = buildUserOptions(project, v, optionList, userSelections, canChooseUnionIdList); - } else { - welfareProjectSubjectOptions = buildUserOptions(project, v, options, userSelections, canChooseUnionIdList); - } - List oneUserSelections = buildUserSelection(project, v.getString("id"), welfareProjectSubjectOptions, 1); - if (Lang.isNotEmpty(oneUserSelections)) needInsertWelfareSelectionList.addAll(oneUserSelections); - }); - - if (Lang.isNotEmpty(needInsertWelfareSelectionList)) dao().fastInsert(needInsertWelfareSelectionList); - } - - } - - - /** - * 构建六院部以外的用户选择节日 - * - * @param project - * @param userId - * @param options - * @param selectNum - * @return - */ - @Override - public List buildUserSelection(WelfareProject project, String userId, List options, Integer selectNum) { - if (Lang.isEmpty(options)) return null; - String projectId = project.getId(); - return options.stream().map(v -> { - WelfareUserSelection welfareUserSelection = new WelfareUserSelection(); - welfareUserSelection.setId(R.UU32()); - welfareUserSelection.setSelectUserId(userId); - welfareUserSelection.setWelfareId(projectId); - welfareUserSelection.setSelectOptionId(v.getId()); - welfareUserSelection.setSubjectId(v.getSubjectId()); - welfareUserSelection.setSelectTime(cn.hutool.core.date.DateUtil.date()); - welfareUserSelection.setSelectNum(selectNum); - return welfareUserSelection; - }).collect(Collectors.toList()); - } - - - /** - * 看根据入职时间,看新进的教工能选择那些节日 - * - * @param project - * @param user - * @param options 福利选项 - * @param userSelections 用户已选择的 - * @return - */ - private List buildUserOptions( - WelfareProject project, NutMap user, - List options, - List userSelections, - List canChooseUnionIdList) { - - String unionId = user.getString("unionid"); - boolean canChoose = canChooseUnionIdList.contains(unionId); - boolean hasSelections = userSelections != null && !userSelections.isEmpty(); - - // 如果用户不能选择,并且没有选择任何项目,返回全部选项 - if (!canChoose && !hasSelections) { - return new ArrayList<>(options); - } - - // 检查是否为新入职教师 - boolean isNewlyHired = false; - String schoolTimeStr = user.getString("schoolTime"); - if (StrUtil.isNotBlank(schoolTimeStr)) { - isNewlyHired = project.getTeacherSelectList().stream() - .anyMatch(v -> cn.hutool.core.date.DateUtil.parseDate(schoolTimeStr).isAfterOrEquals(v.getStartTime()) && - cn.hutool.core.date.DateUtil.parseDate(schoolTimeStr).isBeforeOrEquals(v.getEndTime())); - } - - if (isNewlyHired) { - // 新入职用户只能选择特定选项 - Set allowedOptionIds = project.getTeacherSelectList().stream().flatMap(v -> v.getOptionIdList().stream()).collect(Collectors.toSet()); - - Set optionIds = options.stream().filter(v -> allowedOptionIds.contains(v.getOptionName())).map(v -> v.getId()).collect(Collectors.toSet()); - - // 检查userSelections是否为空,并获取用户已选择的选项ID集合 - Set userSelectedOptionIds = (userSelections != null) ? userSelections.stream().map(WelfareUserSelection::getSelectOptionId).collect(Collectors.toSet()) : Collections.emptySet(); - - // 检查用户选择的选项ID集合是否包含所有允许的选项ID - boolean containsAllAllowedOptions = !userSelectedOptionIds.isEmpty() && userSelectedOptionIds.containsAll(optionIds); - - // 如果用户已经选择了所有允许的特定选项,则返回空集合 - if (containsAllAllowedOptions) { - return Collections.emptyList(); - } - - return options.stream().filter(option -> allowedOptionIds.contains(option.getOptionName())).collect(Collectors.toList()); - } else { - // 非新入职用户,根据是否有选择权和已选择的项目进行筛选 - if (!canChoose) { - //选择了节日 - if (hasSelections) { - Set selectedOptionIds = userSelections.stream().map(WelfareUserSelection::getSelectOptionId).collect(Collectors.toSet()); - return options.stream().filter(option -> !selectedOptionIds.contains(option.getId())).collect(Collectors.toList()); - } else { - // 如果用户没有选择权且没有选择任何项目,返回空列表 - return options; - } - } else { - // 用户有选择权,返回所有选项 - if (hasSelections) { - // 找出特定名称的选项ID集合 - Set sixOptionIds = options.stream().filter(v -> v.getOptionName().contains("六院部消费帮扶")).map(WelfareProjectSubjectOption::getId).collect(Collectors.toSet()); - - // 找出用户已选择的选项ID集合 - Set userSelectedIds = userSelections.stream().map(WelfareUserSelection::getSelectOptionId).collect(Collectors.toSet()); - - // 检查用户是否选择了特定名称的选项 - boolean selectedSpecificOption = !Collections.disjoint(sixOptionIds, userSelectedIds); - - if (selectedSpecificOption) { - // 如果用户已经选择了特定选项,返回空列表 - return Collections.emptyList(); - } else { - // 如果用户没有选择特定选项,返回这些选项 - return options.stream().filter(option -> sixOptionIds.contains(option.getId())).collect(Collectors.toList()); - } - } else { - // 如果用户没有选择权,返回空列表 - return Collections.emptyList(); - } - } - } - } - - } diff --git a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareMemberServiceImpl.java b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareMemberServiceImpl.java index 18cd00f..41b9af9 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareMemberServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareMemberServiceImpl.java @@ -1,7 +1,7 @@ package io.v.nutz.zhgh.welfare.service.impl; -import io.v.nutz.base.utils.Roles; import io.v.nutz.base.service.impl.ViServiceImpl; +import io.v.nutz.base.utils.Roles; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.models.Sys_user_role; import io.v.nutz.sys.services.SysRoleService; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java index 0d5f5fc..1de8b31 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java @@ -2,9 +2,9 @@ package io.v.nutz.zhgh.welfare.service.impl; import cn.hutool.core.date.DateUtil; import io.v.nutz.base.service.BaseService; -import io.v.nutz.zhgh.data.model.MatchConditionStructure; import io.v.nutz.base.service.impl.ViServiceImpl; import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.data.model.MatchConditionStructure; import io.v.nutz.zhgh.welfare.model.WelfareProject; import io.v.nutz.zhgh.welfare.model.WelfareProjectSubject; import io.v.nutz.zhgh.welfare.service.WelfareProjectService; diff --git a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareSingleServiceImpl.java b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareSingleServiceImpl.java index 1e2c141..f6ca7f5 100644 --- a/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareSingleServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/welfare/service/impl/WelfareSingleServiceImpl.java @@ -1,6 +1,5 @@ package io.v.nutz.zhgh.welfare.service.impl; -import cn.afterturn.easypoi.entity.ImageEntity; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.entity.ExportParams; @@ -43,8 +42,10 @@ import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; -import java.io.*; -import java.lang.reflect.Method; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -163,14 +164,14 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl @Override public List getUserSelectionByProjectId(String projectId, String month) { Cnd cnd = Cnd.NEW(); - cnd.and("u.unionid", "is not", null); + cnd.and("wl.welfareUnitId", "is not", null); if (Globals.MyConfig.getBoolean("isThreeUnit")) { - cnd.and("u.unionGroupId", "is not", null); +// cnd.and("u.unionGroupId", "is not", null); } cnd.andEX("wpus.welfareId", "=", projectId); - if (Strings.isNotBlank(month)) { - cnd.andEX("SUBSTR(u.birthday,6,2)", "=", month.substring(5, 7)); - } +// if (Strings.isNotBlank(month)) { +// cnd.andEX("SUBSTR(u.birthday,6,2)", "=", month.substring(5, 7)); +// } cnd.asc("wpus.selectUserId"); Sql sql = Sqls.create(""" SELECT @@ -181,13 +182,10 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl wpus.receiveAddress, wpus.welfareId, wpus.selectUserId, - u.unionid AS unionId, - u.unioncode AS unionCode, - u.unitcode AS unitCode, - u.unionGroupId + wl.welfareUnitId as unionId FROM - `welfare_project_user_selection` wpus - LEFT JOIN `user` u ON u.id = wpus.selectUserId + `welfare_project_user_selection_copy1` wpus + LEFT JOIN welfare_list wl on wl.userId = wpus.selectUserId $condition """); sql.setCondition(cnd); @@ -244,7 +242,7 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl //循环每个分工会 welfareUnitList.forEach(v -> { //找出这个分工会的人数 - List collect = viewMap.stream().filter(view -> view.getString("unioncode").equals(v.getString("welfareUnitCode"))).collect(Collectors.toList()); + List collect = viewMap.stream().filter(view -> view.getString("unionid").equals(v.getString("welfareUnitId"))).collect(Collectors.toList()); v.addv("teacherSum", collect.size()); }); @@ -256,30 +254,35 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl for (NutMap wUnit : welfareUnitList) { //该分工会选择数据 List thisUnionSelectionList; - if (StrUtil.isNotBlank(unionGroupId)) { - thisUnionSelectionList = userSelectionList.stream().filter(x -> - x.getString("unionCode").equals(wUnit.getString("welfareUnitCode")) && - x.getString("welfareId").equals(projectId) && - x.getString("unionGroupId").equals(unionGroupId)).collect(Collectors.toList()); - } else { - thisUnionSelectionList = userSelectionList.stream().filter(x -> - x.getString("unionCode").equals(wUnit.getString("welfareUnitCode")) && - x.getString("welfareId").equals(projectId)).collect(Collectors.toList()); - } + thisUnionSelectionList = userSelectionList.stream().filter(x -> + x.getString("unionId").equals(wUnit.getString("welfareUnitId")) && + x.getString("welfareId").equals(projectId)).collect(Collectors.toList()); +// if (StrUtil.isNotBlank(unionGroupId)) { +// thisUnionSelectionList = userSelectionList.stream().filter(x -> +// x.getString("unionCode").equals(wUnit.getString("welfareUnitId")) && +// x.getString("welfareId").equals(projectId) && +// x.getString("unionGroupId").equals(unionGroupId)).collect(Collectors.toList()); +// } else { +// +// } optionList.forEach(o -> { int count = 0; - if (StrUtil.isNotBlank(unionGroupId)) { - count = userSelectionList.stream().filter(x -> - x.getString("unionCode").equals(wUnit.getString("welfareUnitCode")) && - x.getString("welfareId").equals(projectId) && - x.getString("unionGroupId").equals(unionGroupId) && - x.getString("selectOptionId").equals(o.getString("id"))).mapToInt(x -> x.getInt("selectNum")).sum(); - } else { - count = userSelectionList.stream().filter(x -> - x.getString("unionCode").equals(wUnit.getString("welfareUnitCode")) && - x.getString("welfareId").equals(projectId) && - x.getString("selectOptionId").equals(o.getString("id"))).mapToInt(x -> x.getInt("selectNum")).sum(); - } + count = userSelectionList.stream().filter(x -> + x.getString("unionId").equals(wUnit.getString("welfareUnitId")) && + x.getString("welfareId").equals(projectId) && + x.getString("selectOptionId").equals(o.getString("id"))).mapToInt(x -> x.getInt("selectNum")).sum(); +// if (StrUtil.isNotBlank(unionGroupId)) { +// count = userSelectionList.stream().filter(x -> +// x.getString("unionCode").equals(wUnit.getString("welfareUnitId")) && +// x.getString("welfareId").equals(projectId) && +// x.getString("unionGroupId").equals(unionGroupId) && +// x.getString("selectOptionId").equals(o.getString("id"))).mapToInt(x -> x.getInt("selectNum")).sum(); +// } else { +// count = userSelectionList.stream().filter(x -> +// x.getString("unionCode").equals(wUnit.getString("welfareUnitId")) && +// x.getString("welfareId").equals(projectId) && +// x.getString("selectOptionId").equals(o.getString("id"))).mapToInt(x -> x.getInt("selectNum")).sum(); +// } //每一项选择的人数 /* Cnd optionCountCnd = Cnd.NEW(); Sql optionCountSql = Sqls.create(""" @@ -461,9 +464,8 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl SELECT u.loginname AS loginName, u.username AS userName, - u.unitname AS unitName, - u.threeUnitName AS threeUnitName, - u.unionname AS unionName, + vwl.unionname, + vwl.unitname, u.idcard AS idCard, u.mobile, IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress, @@ -474,29 +476,23 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl welfare_project_user_selection wpus LEFT JOIN `user` u ON u.id = wpus.selectUserId LEFT JOIN welfare_project_subject_option wpso ON wpso.id = wpus.selectOptionId + LEFT JOIN view_welfare_list vwl on vwl.id = wpus.selectUserId $condition $monthCnd """).setParam("welfareId", projectId); Cnd cnd = Cnd.NEW(); - if (Strings.isNotBlank(month)) { - cnd.andEX("SUBSTR(u.birthday,6,2)", "=", month.substring(5, 7)); - } cnd.groupBy("u.loginname "); switch (WelfareUnitMode.getMode().name()) { case "UNION" -> { - cnd.andEX("u.unioncode", "=", welfareUnitCode); - cnd.asc("u.unioncode"); + cnd.andEX("wu.welfareUnitCode", "=", welfareUnitCode); + cnd.asc("wu.welfareUnitCode"); } case "UNIT" -> { cnd.andEX("u.unitcode", "=", welfareUnitCode); cnd.asc("u.unitcode"); } } - if (Globals.MyConfig.getBoolean("isThreeUnit")) { - cnd.and("u.unionGroupId", "is not", null); - } cnd.and("wpus.welfareId", "=", projectId); - cnd.desc("u.threeUnitName"); cnd.desc("wpus.selectOptionId"); sql.setCondition(cnd); return listMap(sql); @@ -534,6 +530,14 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl * 未领取人员信息 * * @param projectId + * + * + * + * + * + * + * + * * @param welfareUnitCode * @return */ @@ -649,8 +653,7 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl SELECT w2.id, w2.optionName FROM `welfare_project_subject` w1 JOIN `welfare_project_subject_option` w2 ON w1.id = w2.subjectId - WHERE w1.projectId = @projectId - order by w2.optionSort asc + WHERE w1.projectId = @projectId; """); optionSql.setParam("projectId", projectId); List options = (List) Daos.query(dao(), optionSql.toString(), Sqls.callback.maps()); @@ -661,7 +664,6 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl vwl.username, vwl.unionid, vwl.unionname, - vwl.unionGroupName, wpus.userSign, wpus.selectOptionId, wpus.selectNum @@ -695,10 +697,7 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl List exportEntities = new ArrayList<>(); exportEntities.add(new ExcelExportEntity("序号", "no", 20)); - exportEntities.add(new ExcelExportEntity("工号", "loginname", 20)); exportEntities.add(new ExcelExportEntity("姓名", "username", 20)); - exportEntities.add(new ExcelExportEntity("工会", "unionname", 20)); - exportEntities.add(new ExcelExportEntity("工会小组", "unionGroupName", 20)); for (NutMap option : options) { exportEntities.add(new ExcelExportEntity(option.getString("optionName"), option.getString("id"), 20)); } @@ -710,17 +709,12 @@ public class WelfareSingleServiceImpl extends ViServiceImpl impl excelExportEntity.setExportImageType(2); exportEntities.add(excelExportEntity); - - List loginnames = list.stream().map(v -> v.getString("loginname")).distinct().collect(Collectors.toList()); List dataList = loginnames.stream().map(v -> { NutMap data = NutMap.NEW(); NutMap userMap = list.stream().filter(x -> x.getString("loginname").equals(v)).findFirst().get(); - data.put("loginname", userMap.getString("loginname")); data.put("username", userMap.getString("username")); - data.put("unionname", userMap.getString("unionname")); - data.put("unionGroupName", userMap.getString("unionGroupName")); data.put("qzBytes", userMap.get("qzBytes")); for (NutMap option : options) { if (StrUtil.isNotBlank(userMap.getString("selectOptionId"))) { diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceAgentController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceAgentController.java index 13873ff..5cefac5 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceAgentController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceAgentController.java @@ -8,6 +8,8 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.utils.Vi; +import io.v.nutz.sys.models.Sys_menu; +import io.v.nutz.sys.models.Sys_user; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.service.CondolenceService; import org.nutz.dao.Cnd; @@ -15,12 +17,15 @@ import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @IocBean @Ok("json:full") @@ -37,34 +42,24 @@ public class CondolenceAgentController { private static final String UCR = "/platform/fw/condolence/ucr"; private static final String FR = "/platform/fw/condolence/fr"; - private static final String VCR = "/platform/fw/condolence/vcr"; + private static final String VCR = "/platform/fw/condolence/vcr/school"; private static final String ECR = "/platform/fw/condolence/ecr"; @At @ViReturn public Object getAgenda() { + final String title = "【职工慰问】"; + List result = new ArrayList<>(); - if (ShiroUtil.hasAnyRoles("sysadmin")) { - result.add(new NutMap().setv("url", UCR).setv("iconClass", vi.getIconByPath(UCR)).setv("label", "六必访基层工会审核").setv("number", getUcrCount())); - result.add(new NutMap().setv("url", FR).setv("iconClass", vi.getIconByPath(FR)).setv("label", "六必访待工会会计审核").setv("number", getFrCount())); - result.add(new NutMap().setv("url", VCR).setv("iconClass", vi.getIconByPath(VCR)).setv("label", "六必访校工会主席审核").setv("number", getVcrCount())); - result.add(new NutMap().setv("url", ECR).setv("iconClass", vi.getIconByPath(ECR)).setv("label", "六必访待工会常务副主席审核").setv("number", getEcrCount())); - } else { - if (ShiroUtil.hasAnyRoles("H01,gh01")) { - result.add(new NutMap().setv("url", UCR).setv("iconClass", vi.getIconByPath(UCR)).setv("label", "六必访基层工会审核").setv("number", getUcrCount())); - } - if (ShiroUtil.hasRole("xghkj")) { - result.add(new NutMap().setv("url", FR).setv("iconClass", vi.getIconByPath(FR)).setv("label", "六必访待工会会计审核").setv("number", getFrCount())); - } - if (ShiroUtil.hasRole("wyh02")) { - result.add(new NutMap().setv("url", VCR).setv("iconClass", vi.getIconByPath(VCR)).setv("label", "六必访校工会主席审核").setv("number", getVcrCount())); - }//暂时没用 - if (ShiroUtil.hasRole("wyh02")) { - result.add(new NutMap().setv("url", ECR).setv("iconClass", vi.getIconByPath(ECR)).setv("label", "六必访待工会常务副主席审核").setv("number", getEcrCount())); - } - } - return result; + + result.add(new NutMap().setv("title", title).setv("url", UCR).setv("iconClass", vi.getIconByPath(UCR)).setv("label", "待院级工会审核").setv("number", getUcrCount())); + result.add(new NutMap().setv("title", title).setv("url", FR).setv("iconClass", vi.getIconByPath(FR)).setv("label", "待二级党组织审核").setv("number", getFrCount())); + result.add(new NutMap().setv("title", title).setv("url", VCR).setv("iconClass", vi.getIconByPath(VCR)).setv("label", "待校工会审核").setv("number", getVcrCount())); + result.add(new NutMap().setv("title", title).setv("url", ECR).setv("iconClass", vi.getIconByPath(ECR)).setv("label", "待工会常务副主席审核").setv("number", getEcrCount())); + Sys_user user = (Sys_user) ShiroUtil.getPrincipal(); + List menus = Optional.ofNullable(user).orElse(new Sys_user()).getMenus(); + return result.stream().filter(v -> Strings.isNotBlank(v.getString("url")) && menus.stream().anyMatch(x -> Strings.isNotBlank(x.getHref()) && v.getString("url").equals(x.getHref()))).distinct().collect(Collectors.toList()); } @@ -76,7 +71,7 @@ public class CondolenceAgentController { private Integer getUcrCount() { Cnd cnd = Cnd.NEW(); Sql sql = Sqls.create(""" - SELECT COUNT(1) FROM condolence con LEFT JOIN `user` us ON con.manager=us.id $condition + SELECT COUNT(1) FROM condolence con LEFT JOIN `user` us ON con.be_user=us.id $condition """); cnd.and("con.state_id", "=", 2000); if (!ShiroUtil.hasAnyRoles("sysadmin")) { @@ -88,11 +83,12 @@ public class CondolenceAgentController { /** * 待工会会计审核 - *暂时没用 + * 暂时没用 + * * @return */ private Integer getFrCount() { - return condolenceService.count(Cnd.where("state_id", "=", 2020)); + return condolenceService.count(Cnd.where("state_id", "=", 2012)); } /** @@ -101,12 +97,14 @@ public class CondolenceAgentController { * @return */ private Integer getVcrCount() { - return condolenceService.count(Cnd.where("state_id", "=", 2040)); + int state_id = condolenceService.count(Cnd.where("state_id", "=", 2020)); + return state_id; } /** * 待工会常务副主席审核 - *暂时没用 + * 暂时没用 + * * @return */ private Integer getEcrCount() { diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceApplyCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceApplyCon.java index a0a43d9..74ce793 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceApplyCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceApplyCon.java @@ -1,48 +1,41 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; -import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.utils.Vi; -import io.v.nutz.sys.models.Sys_local_process_instance; import io.v.nutz.sys.models.Sys_signature; -import io.v.nutz.sys.models.User; import io.v.nutz.sys.services.SysSignatureService; import io.v.nutz.sys.services.SysUserService; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.condolence.CondolenceToDoHandler; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.service.CondolenceService; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; -import org.nutz.dao.entity.Record; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; import org.nutz.lang.Strings; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import java.util.List; -import java.util.stream.Collectors; /** * @Author: 1V * @DateTime: 2020/11/20 11:49 * @Description: 慰问申请 */ -@At("/platform/fw/condolence/apply") +@At({"/platform/fw/condolence/apply", "/platform/fw/condolence/applyWrite"}) @IocBean -@RequiresAuthentication @Ok("json") public class CondolenceApplyCon { @@ -64,10 +57,21 @@ public class CondolenceApplyCon { @At @ViReturn + @RequiresPermissions("fw.condolence.apply") public Object queryUser(String query) { - Sql sql = Sqls.create("SELECT u.id,u.username,u.loginname from sys_user u left join sys_unit unit on u.unitid = unit.id left join sys_union un on unit.unionid = un.id $condition"); + Sql sql = Sqls.create(""" + SELECT u.id, + u.username, + u.loginname, + IFNULL(u.unitname,'暂无') as unitname, + u.sex + from user u + left join sys_unit unit on u.unitid = unit.id + left join sys_union un on unit.unionid = un.id + $condition + """); Cnd cnd = Cnd.NEW(); - + cnd.and("u.id", "!=", ShiroUtil.getPlatformUid()); if (!ShiroUtil.hasAnyRoles("sysadmin")) { cnd.and("un.id", "=", vi.getUnionId()); } @@ -75,8 +79,9 @@ public class CondolenceApplyCon { SqlExpressionGroup group = new SqlExpressionGroup(); group.orLike("u.username", query); group.orLike("u.loginname", query); + group.orEquals("u.id", query); cnd.and(group); - + cnd.asc("u.unionname").asc("unitname"); sql.setCondition(cnd); return condolenceService.listPage(1, 50, sql).getList(); @@ -90,8 +95,9 @@ public class CondolenceApplyCon { @At @ViReturn + @RequiresPermissions("fw.condolence.apply") @Aop(TransAop.READ_COMMITTED) - public Object doAdd(@Param("data") Condolence condolence, String sign, + public Object doAdd(@Param(value = "data", required = false) Condolence condolence, @Param(value = "sign", required = false) String sign, @Param(value = "hospital_stay_1", required = false) String hospital_stay_1, @Param(value = "hospital_stay_2", required = false) String hospital_stay_2) { @@ -100,55 +106,71 @@ public class CondolenceApplyCon { } condolence.setManager(ShiroUtil.getPrincipalProperty("id").toString()); - condolence.setApply_time(DateUtil.getDate()); + condolence.setApply_time(DateUtil.getDateTime()); condolence.setStarting_time(hospital_stay_1); condolence.setEnd_time(hospital_stay_2); - /*if (ShiroUtil.hasAnyRoles("H04,gh01")) { + /* if (ShiroUtil.hasAnyRoles("H04,gh01")) { condolence.setState_id("2040"); }*/ condolence.setState_id("2000"); -// condolenceService.add(condolence); + condolenceService.add(condolence); - if (StrUtil.isBlank(condolence.getId())) { - Condolence add = condolenceService.add(condolence); - - //开启流程 - CondolenceToDoHandler.START_PROCESS.exec(add, null); - - //提交后分工会审核 - CondolenceToDoHandler.CREATE_UNION_TASK.exec(add, null); -// //提交申请,发企业微信通知给基层工会主席 -// List unionManageByCurrentUser = vi.getUnionManageByCurrentUser(); -// for (User item : unionManageByCurrentUser) { -// String msg = "%s您好,%s老师提交了日常慰问申请,请您登录OA办公系统(待办中心)或登陆智慧工会平台进行审核。".formatted(item.getUsername(), ShiroUtil.getPlatformUsername()); -// msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(item.getLoginname()), ""); -// } - } else { - Condolence edit = condolenceService.edit(condolence); - - if (StrUtil.isNotBlank(edit.getVice_chairman_review()) || StrUtil.isNotBlank(edit.getUnion_chairman_review())) { - int count = condolenceService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "condolence_apply@" + edit.getId())); - if (count > 0) { - CondolenceToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(edit, "退回重新提交"); - CondolenceToDoHandler.CREATE_UNION_TASK.exec(edit, null); - } - } + Sql unionAdminSql = Sqls.create(""" + SELECT + u.username, + u.loginname + FROM + sys_user_role sur + LEFT JOIN sys_user u ON u.id = sur.userId\s + AND sur.unionid = @unionId + WHERE + sur.roleId = '5d342e614e9a48288d50154bcdcc75d3'\s + AND sur.unionid = @unionId + """); + unionAdminSql.setParam("unionId", Vi.getUnionId()); + List unionAdmins = condolenceService.listMap(unionAdminSql); + for (NutMap unionAdmin : unionAdmins) { + String msg = "%s主席您好!您分工会下的%s老师申请了一条慰问,请您登录智慧工会系统职工服务>职工慰问下审核.".formatted( + unionAdmin.getString("username"), ShiroUtil.getPrincipalProperty("username")); +// msgApi.sendMsg(unionAdmin.getString("loginname"), msg); + System.out.println(msg); } + CondolenceToDoHandler.START_PROCESS.exec(condolence, null); + CondolenceToDoHandler.CREATE_UNION_TASK.exec(condolence, null); + return null; + } + + @At + @ViReturn + @RequiresPermissions("fw.condolence.info") + public Object doEdit(@Param("data") Condolence condolence, + @Param(value = "sign", required = false) String sign, + @Param(value = "hospital_stay_1", required = false) String hospital_stay_1, + @Param(value = "hospital_stay_2", required = false) String hospital_stay_2) { + if (Strings.isNotBlank(sign)) { + condolence.setManager_sign(sysSignatureService.insert(new Sys_signature(sign)).getId()); + } + condolence.setState_id("2000"); + condolence.setStarting_time(hospital_stay_1); + condolence.setEnd_time(hospital_stay_2); + condolenceService.updateIgnoreNull(condolence); + +// CondolenceToDoHandler.START_PROCESS.exec(condolence, null); +// CondolenceToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(condolence, null); +// CondolenceToDoHandler.CREATE_UNION_TASK.exec(condolence, null); + return null; } @At + @RequiresPermissions("fw.condolence.apply") public Object getUserData(String userId) { Sql sql = Sqls.create(""" - SELECT us.*,unit.id,unit.`name` FROM sys_user us LEFT JOIN sys_unit unit ON us.unitid=unit.id WHERE us.id=@userId + SELECT us.*,unit.id unitid,unit.`name` FROM sys_user us LEFT JOIN sys_unit unit ON us.unitid=unit.id WHERE us.id=@userId """); sql.setParam("userId", userId); - List list = sysUserService.list(sql); - if (Lang.isNotEmpty(list)) { - return Result.success().addData(list.get(0)); - } - return null; + return Result.success().addData(sysUserService.list(sql).get(0)); } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceCon.java index 4f83f1c..a107269 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceCon.java @@ -1,63 +1,33 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; -import cn.hutool.core.convert.Convert; -import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.service.BaseService; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.data.PictureRenderData; -import com.deepoove.poi.policy.HackLoopTableRenderPolicy; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.client.j2se.MatrixToImageWriter; -import com.google.zxing.common.BitMatrix; -import com.google.zxing.qrcode.QRCodeWriter; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.model.Review; -import io.v.nutz.base.utils.Roles; +import io.v.nutz.base.utils.OfficeTemplateUtil; import io.v.nutz.base.utils.Vi; -import io.v.nutz.sys.models.Sys_file; import io.v.nutz.sys.models.Sys_signature; import io.v.nutz.sys.services.SysSignatureService; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.handler.condolence.CondolenceToDoHandler; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.service.CondolenceService; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; -import org.nutz.dao.entity.Record; 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.IocBean; -import org.nutz.json.Json; import org.nutz.lang.Strings; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; -import javax.servlet.http.HttpServletResponse; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.DecimalFormat; -import java.util.Base64; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.apache.commons.beanutils.ConvertUtils.convert; - /** * @Author: 1V * @DateTime: 2020/11/20 11:49 * @Description: 慰问信息 */ -@At("/platform/fw/condolence") +@At({"/platform/fw/condolence", "/platform/fw/condolence/myList"}) @IocBean @RequiresAuthentication @Ok("json:full") @@ -78,8 +48,12 @@ public class CondolenceCon { @Inject private BaseService baseService; + @Inject + private OfficeTemplateUtil officeTemplateUtil; + @At @ViReturn + @RequiresPermissions("fw.condolence.info") public Object findOne(String id) { return condolenceService.findOne(id); } @@ -87,7 +61,17 @@ public class CondolenceCon { @At @ViReturn - public Object pageData(String year, String unitId, String unionId, String type, String way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.info") + public Object pageData(@Param(value = "year", required = false) String year, + @Param(value = "unitId", required = false) String unitId, + @Param(value = "unionId", required = false) String unionId, + @Param(value = "type", required = false) String type, + @Param(value = "way", required = false) String way, + @Param(value = "searchName", required = false) String searchName, + @Param(value = "searchKeyword", required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName", required = false) String pageOrderName, + @Param(value = "pageOrderBy", required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT @@ -100,68 +84,14 @@ public class CondolenceCon { be.unitname be_unitname, be.unionname be_unionname, state.state_name, - state.state_color,( - CASE - state.state_id - WHEN @state1 THEN - ( - SELECT - GROUP_CONCAT( u.username ) - FROM - sys_user_role sur - LEFT JOIN sys_user u ON sur.userId = u.id - WHERE - sur.unionid = be.unionid - AND sur.roleId = @role1 - ) - WHEN @state2 THEN - ( - SELECT - GROUP_CONCAT( u.username ) - FROM - sys_user_role sur - LEFT JOIN sys_user u ON sur.userId = u.id - WHERE - sur.roleId = @role2 - ) - WHEN @state3 THEN - ( - SELECT - GROUP_CONCAT( u.username ) - FROM - sys_user_role sur - LEFT JOIN sys_user u ON sur.userId = u.id - WHERE - sur.roleId = @role3 - ) - WHEN @state4 THEN - ( - SELECT - GROUP_CONCAT( u.username ) - FROM - sys_user_role sur - LEFT JOIN sys_user u ON sur.userId = u.id - WHERE - sur.roleId = @role4 - ) ELSE NULL - END - ) shrname + state.state_color FROM condolence con - LEFT JOIN `user` be ON con.be_user = be.id + LEFT JOIN `user` be ON con.be_user = be.id LEFT JOIN `user` sqr ON con.manager= sqr.id LEFT JOIN state state ON state.state_id = con.state_id LEFT JOIN condolence_type type ON type.id=con.type $condition """); - sql.setParam("role1", Roles.UNION_MANGER); - sql.setParam("role2", Roles.XGHKJ); - sql.setParam("role3", Roles.GH_WYH_CWFZX); -// 暂时没用 - sql.setParam("role4", Roles.GH_WYH_CWFZX); - sql.setParam("state1", 2000); - sql.setParam("state2", 2020); - sql.setParam("state3", 2040); - sql.setParam("state4", 2060); Cnd cnd = Cnd.NEW(); if (!ShiroUtil.hasAnyRoles("sysadmin")) { cnd.and("con.manager", "=", ShiroUtil.getPrincipalProperty("id")); @@ -180,7 +110,7 @@ public class CondolenceCon { if (Vi.isNotBlank(pageOrderName, pageOrderBy)) { cnd.orderBy(pageOrderName, pageOrderBy); } else { - cnd.desc("con.apply_time").asc("type.`code`"); + cnd.desc("con.apply_time"); } sql.setCondition(cnd); @@ -193,7 +123,12 @@ public class CondolenceCon { @At @ViReturn - public Object doEdit(@Param("data") Condolence condolence, String[] delNotesList, String sign) { + @RequiresPermissions("fw.condolence.info") + public Object doEdit(@Param("data") Condolence condolence, + @Param(value = "delNotesList", required = false) String[] delNotesList, + @Param(value = "sign", required = false) String sign, + @Param(value = "hospital_stay_1", required = false) String hospital_stay_1, + @Param(value = "hospital_stay_2", required = false) String hospital_stay_2) { if (delNotesList != null && delNotesList.length > 0) { for (String s : delNotesList) { if (Strings.isNotBlank(s)) { @@ -212,7 +147,13 @@ public class CondolenceCon { if (Strings.isNotBlank(sign)) { condolence.setManager_sign(sysSignatureService.insert(new Sys_signature(sign)).getId()); } - condolenceService.edit(condolence); + if (condolence.getState_id().equals("1990") || condolence.getState_id().equals("1995")) { + condolence.setState_id("2000"); + } + + condolence.setStarting_time(hospital_stay_1); + condolence.setEnd_time(hospital_stay_2); + condolenceService.updateIgnoreNull(condolence); return null; } @@ -221,250 +162,13 @@ public class CondolenceCon { @At @ViReturn - @Aop(TransAop.READ_COMMITTED) + @RequiresPermissions("fw.condolence.info") public Object doDelete(String id) { Condolence condolence = condolenceService.fetch(id); vi.deleteSysFiles(condolence.getFiles()); baseService.clear("goods", Cnd.where("reid", "=", id)); condolenceService.del(id); - CondolenceToDoHandler.DELETE_PROCESS_AND_TASK.exec(condolence,null); return null; } - private PictureRenderData getImg(String base64) throws IOException { - try{ - if(StrUtil.isBlank(base64)){ - return new PictureRenderData(70, 30, ".png", new byte[]{}); - } - System.out.println(base64); - String s = base64.split(",")[1]; - byte[] bytes = Base64.getDecoder().decode(s); - return new PictureRenderData(70, 30, ".png", bytes); - }catch (Exception e) { - return null; - } - } - - - /** - * 导出报销表 - * - * @param id - * @param response - * @throws Exception - */ - @At - @Ok("void") - public void doExport(String id, HttpServletResponse response) throws Exception { - Record record = condolenceService.findOne(id); - - List query1 = baseService.dao().query("goods", Cnd.where("reid", "=", id)); - - - double price = record.getDouble("money"); - int money_int = (int) price; - BigDecimal b1 = new BigDecimal(Double.toString(price)); - BigDecimal b2 = new BigDecimal(Double.toString(money_int)); - double moneyAngle = b1.subtract(b2).doubleValue(); - BigDecimal b3 = new BigDecimal(moneyAngle); - - - record.set("one", money_int >= 1000000 ? (money_int / 1000000) % 10 : null); - record.set("two", money_int >= 100000 ? (money_int / 100000) % 10 : null); - record.set("three", money_int >= 10000 ? (money_int / 10000) % 10 : null); - record.set("four", money_int >= 1000 ? (money_int / 1000) % 10 : null); - record.set("five", money_int >= 100 ? (money_int / 100) % 10 : null); - record.set("six", money_int >= 10 ? (money_int / 10) % 10 : null); - record.set("seven", money_int >= 10 ? money_int % 10 : null); - record.set("eight", (int) (moneyAngle * 10)); - record.set("nine", (int) (moneyAngle * 100 % 10)); - - String files = record.getString("files"); - if (Strings.isNotBlank(files)) { - record.set("invoice_num", Json.fromJsonAsList(Sys_file.class, files).size()); - } - - Object vcr = record.get("vcr"); - if (vcr != null) { - Review review = (Review) vcr; - record.set("vcr", review.getSign() != null ? getImg(review.getSign()) : null); - } - - Object ucr = record.get("ucr"); - if (ucr != null) { - Review review = (Review) ucr; - record.set("ucr", review.getSign() != null ? getImg(review.getSign()) : null); - } - - Object ecr = record.get("ecr"); - if (ecr != null) { - Review review = (Review) ecr; - record.set("ecr", review.getSign() != null ? getImg(review.getSign()) : null); - } - - Object fr = record.get("fr"); - if (fr != null) { - Review review = (Review) fr; - record.set("fr", review.getSign() != null ? getImg(review.getSign()) : null); - } - - String ms = record.getString("manager_sign"); - if (Strings.isNotBlank(ms)) { - record.set("ms", getImg(ms)); - } - - record.set("money_big", Convert.digitToChinese(record.getDouble("money"))); - - String suffix = "中国药科大学报销凭证"; - - record.set("suffix", suffix); - - response.addHeader("Content-Type", "application/octet-stream"); - response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(suffix.getBytes("UTF-8"), "ISO-8859-1") + "\".docx"); - - HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); - Configure config = Configure.newBuilder().bind("goods", policy).build(); - record.set("goods", query1); - - InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/condolence/condolence.docx"); - XWPFTemplate.compile(inputStream, config).render(record, response.getOutputStream()); - inputStream.close(); - - } - - - -/* @At - @ViReturn - public void export(String id, HttpServletResponse response) throws Exception { - - response.addHeader("Content-Type", "application/octet-stream"); - response.addHeader("Content-Disposition", "attachment; filename=\"" + new String("职工慰问报销审批单".getBytes("UTF-8"), "ISO-8859-1") + "\".docx"); - Record record = condolenceService.findOne(id); - - QRCodeWriter qrCodeWriter = new QRCodeWriter(); - BitMatrix bitMatrix = qrCodeWriter.encode(record.getString("document_no"), BarcodeFormat.QR_CODE, 80, 80); - BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix); - PictureRenderData pictureRenderData = new PictureRenderData(80, 80, ".png", bufferedImage); - record.set("qrcode", pictureRenderData); - - //自己签字 - String ms = record.getString("manager_sign"); - if (Strings.isNotBlank(ms)) { - record.set("ms", getImg(ms)); - } - - //分工会主席 - Object ucr = record.get("ucr"); - if (ucr != null) { - Review review = (Review) ucr; - record.set("ucr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("ucrTime", review.getTime()); - record.set("ucrOpinion", review.getOpinion()); - } - - //财务 - Object fr = record.get("fr"); - if (fr != null) { - Review review = (Review) fr; - record.set("fr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("frTime", review.getTime()); - record.set("frOpinion", review.getOpinion()); - } - - - //工会副主席 - Object vcr = record.get("vcr"); - if (vcr != null) { - Review review = (Review) vcr; - record.set("vcr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("vcrTime", review.getTime()); - record.set("vcrOpinion", review.getOpinion()); - } - - //校工会常务副主席 - Object ecr = record.get("ecr"); - if (ecr != null) { - Review review = (Review) ecr; - record.set("ecr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("ecrTime", review.getTime()); - record.set("ecrOpinion", review.getOpinion()); - } - - - record.set("money_big", MoneyUtil.toRMBUpper(record.getString("money"))); - - Configure config = Configure.newBuilder().build(); - - InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/condolence/record.docx"); - XWPFTemplate.compile(inputStream, config).render(record, response.getOutputStream()); - inputStream.close(); - - }*/ - - - @At - @Ok("void") - public void export(String id, HttpServletResponse response) throws Exception { - Record record = condolenceService.findOne(id); - List query1 = baseService.dao().query("goods", Cnd.where("reid", "=", id)); - - //自己签字 - String ms = record.getString("manager_sign"); - if (Strings.isNotBlank(ms)) { - record.set("ms", getImg(ms)); - } - - //分工会主席 - Object ucr = record.get("ucr"); - if (ucr != null) { - Review review = (Review) ucr; - record.set("ucr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("ucrTime", review.getTime()); - record.set("ucrOpinion", review.getOpinion()); - } - - //财务 - Object fr = record.get("fr"); - if (fr != null) { - Review review = (Review) fr; - record.set("fr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("frTime", review.getTime()); - record.set("frOpinion", review.getOpinion()); - } - - - //工会副主席 - Object vcr = record.get("vcr"); - if (vcr != null) { - Review review = (Review) vcr; - record.set("vcr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("vcrTime", review.getTime()); - record.set("vcrOpinion", review.getOpinion()); - } - - //校工会常务副主席 - Object ecr = record.get("ecr"); - if (ecr != null) { - Review review = (Review) ecr; - record.set("ecr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("ecrTime", review.getTime()); - record.set("ecrOpinion", review.getOpinion()); - } - - HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); - Configure config = Configure.newBuilder().bind("goods", policy).build(); - HashMap map = new HashMap<>(); - map.put("c", record); - map.put("goods", query1); - - String fileName = "中国药科大学在职工会会员慰问审批表"; - response.addHeader("Content-Type", "application/octet-stream"); - response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1") + "\".docx"); - InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/condolence/must_visit.docx"); - XWPFTemplate.compile(inputStream, config).render(record, response.getOutputStream()); - inputStream.close(); - } - - } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceEcrCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceEcrCon.java index 74fbe91..7d0b525 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceEcrCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceEcrCon.java @@ -1,10 +1,10 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.model.Review; import io.v.nutz.base.service.ReviewService; import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.model.Review; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.service.CondolenceService; @@ -17,6 +17,7 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @Author: 1V @@ -32,13 +33,6 @@ public class CondolenceEcrCon { @Inject private Vi vi; - @Inject - private CondolenceService condolenceService; - - @Inject - private ReviewService reviewService; - - @At("") @Ok("beetl:/platform/zgfw/condolence/ecr.html") @RequiresPermissions("fw.condolence.ecr") @@ -48,7 +42,17 @@ public class CondolenceEcrCon { @At @ViReturn - public Object pageData(String unionid, Boolean isAudit, Integer year, Integer type, Integer way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.ecr") + public Object pageData(@Param(value = "unionid",required = false) String unionid, + @Param(value = "isAudit",required = false) Boolean isAudit, + @Param(value = "year",required = false) Integer year, + @Param(value = "type",required = false) Integer type, + @Param(value = "way",required = false) Integer way, + @Param(value = "searchName",required = false) String searchName, + @Param(value = "searchKeyword",required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName",required = false) String pageOrderName, + @Param(value = "pageOrderBy",required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT con.*, @@ -94,8 +98,15 @@ public class CondolenceEcrCon { } + @Inject + private CondolenceService condolenceService; + + @Inject + private ReviewService reviewService; + @At @ViReturn + @RequiresPermissions("fw.condolence.ecr") public Object doReview(String id, boolean pass, Review review) { review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); review.setUsername(ShiroUtil.getPrincipalProperty("username").toString()); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceFrCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceFrCon.java index a32583d..5aedfee 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceFrCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceFrCon.java @@ -1,22 +1,28 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.model.Review; import io.v.nutz.base.service.ReviewService; +import io.v.nutz.base.utils.DateUtil; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.zgfw.handler.condolence.CondolenceToDoHandler; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.service.CondolenceService; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; 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.IocBean; +import org.nutz.lang.Lang; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @Author: 1V @@ -41,35 +47,49 @@ public class CondolenceFrCon { @At @ViReturn - public Object pageData(String unitId, Boolean isAudit, String year, String type, String way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.fr") + public Object pageData(@Param(value = "unitId", required = false) String unitId, + @Param(value = "unionId", required = false) String unionId, + @Param(value = "isAudit", required = false) Boolean isAudit, + @Param(value = "year", required = false) Integer year, + @Param(value = "type", required = false) Integer type, + @Param(value = "way", required = false) Integer way, + @Param(value = "searchName", required = false) String searchName, + @Param(value = "searchKeyword", required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName", required = false) String pageOrderName, + @Param(value = "pageOrderBy", required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT - con.*, - type.`name` type_name, - be.username be_username, - be_unit.`name` be_unitname, - man.username man_username, - be_union.unionname, - state.state_name, - state.state_color - FROM - condolence con - LEFT JOIN sys_user be ON con.be_user = be.id - LEFT JOIN sys_user man ON con.manager = man.id - LEFT JOIN sys_unit be_unit ON be.unitid = be_unit.id - LEFT JOIN sys_union be_union ON be_unit.unionid = be_union.id - LEFT JOIN state state ON state.state_id = con.state_id - LEFT JOIN condolence_type type ON type.id=con.type $condition - """); + con.*, + type.`name` type_name, + be.username be_username, + be.loginname be_loginname, + sqr.username sqr_username, + be.unitname be_unitname, + be.unionname be_unionname, + state.state_name, + state.state_color + FROM + condolence con + LEFT JOIN `user` be ON con.be_user = be.id + LEFT JOIN `user` sqr ON con.manager= sqr.id + LEFT JOIN state state ON state.state_id = con.state_id + LEFT JOIN condolence_type type ON type.id=con.type $condition + """); Cnd cnd = Cnd.NEW(); - cnd.and("con.state_id", isAudit ? ">" : "=", 2020); + cnd.and("con.state_id", isAudit ? ">" : "in", isAudit ? 2012 : Lang.array(2012, 2031)); + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionCondolenceAdmin")) { + Vi.cndPlus(cnd, "be.unitid", "=", ShiroUtil.getPrincipalProperty("unitid")); + } Vi.cndPlus(cnd, "YEAR(con.apply_time)", "=", year); Vi.cndPlus(cnd, "con.type", "=", type); Vi.cndPlus(cnd, "con.way", "=", way); - Vi.cndPlus(cnd, "be_unit.id", "=", unitId); + Vi.cndPlus(cnd, "be.unitid", "=", unitId); + Vi.cndPlus(cnd, "be.unionid", "=", unionId); if (Vi.isNotBlank(searchName, searchKeyword)) { cnd.where().andLike(searchName, searchKeyword); @@ -95,7 +115,9 @@ public class CondolenceFrCon { @At @ViReturn - public Object doReview(String id, boolean pass, Review review, double money) { + @RequiresPermissions("fw.condolence.fr") + @Aop(TransAop.READ_COMMITTED) + public Object doReview(String id, Integer pass, Review review, double money) { review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); review.setUsername(ShiroUtil.getPrincipalProperty("username").toString()); review.setTime(DateUtil.getDate()); @@ -103,8 +125,33 @@ public class CondolenceFrCon { Condolence condolence = condolenceService.fetch(id); condolence.setMoney(money); condolence.setFinance_review(review.getId()); - condolence.setState_id(pass ? "2040" : "2030"); + if (pass == 1) { + condolence.setState_id("2014"); + } else if (pass == 2) { + condolence.setState_id("2015"); + } else { + condolence.setState_id("2020"); + } condolenceService.edit(condolence); + + CondolenceToDoHandler.COMPLETE_FINANCE_TASK.exec(condolence, review.getOpinion()); + CondolenceToDoHandler.COMPLETE_BACK_SCHOOL_TASK.exec(condolence, review.getOpinion()); + //1拒绝 3通过 + if (pass == 1){ + CondolenceToDoHandler.COMPLETE_PROCESS.exec(condolence, review.getOpinion()); + } else if(pass == 2) { + CondolenceToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(condolence, review.getOpinion()); + } else if (pass == 3){ + CondolenceToDoHandler.CREATE_SCHOOL_TASK.exec(condolence,null); + } + return null; + } + + @At + @ViReturn + @RequiresPermissions("fw.condolence.fr") + public Object doEdit(String id) { + condolenceService.update(Chain.make("state_id", 2012), Cnd.where("id", "=", id)); return null; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceReadCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceReadCon.java index af7aec2..eced31b 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceReadCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceReadCon.java @@ -1,26 +1,25 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.hutool.core.convert.Convert; -import com.artofsolving.jodconverter.DocumentConverter; -import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; -import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; -import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; +import cn.hutool.core.date.DateUtil; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; -import com.deepoove.poi.data.PictureRenderData; -import com.deepoove.poi.data.TableRenderData; -import com.deepoove.poi.policy.HackLoopTableRenderPolicy; -import com.deepoove.poi.policy.TableRenderPolicy; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.client.j2se.MatrixToImageWriter; -import com.google.zxing.common.BitMatrix; -import com.google.zxing.qrcode.QRCodeWriter; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.model.Review; +import io.v.nutz.base.utils.OfficeTemplateUtil; +import io.v.nutz.base.utils.Vi; +import io.v.nutz.base.utils.ViTool; +import io.v.nutz.sys.models.Sys_signature; +import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.zgfw.model.condolence.CondolenceType; +import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.service.CondolenceService; -import org.apache.commons.io.IOUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; @@ -30,22 +29,30 @@ import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.Strings; -import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletResponse; -import java.awt.image.BufferedImage; -import java.io.*; -import java.util.Base64; +import java.io.BufferedOutputStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; /** * @Author: 1V * @DateTime: 2020/11/20 11:49 * @Description: 阅览 */ -@At("/platform/fw/condolence/read") +@At({"/platform/fw/condolence/doRead", "/platform/fw/condolence/read"}) @IocBean @RequiresAuthentication @Ok("json") @@ -56,6 +63,9 @@ public class CondolenceReadCon { @Inject private Vi vi; + @Inject + private OfficeTemplateUtil officeTemplateUtil; + @At("") @Ok("beetl:/platform/zgfw/condolence/read.html") @RequiresPermissions("fw.condolence.read") @@ -65,7 +75,17 @@ public class CondolenceReadCon { @At @ViReturn - public Object pageData(String unitId, String unionId, Integer year, String type, String way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.read") + public Object pageData(@Param(value = "unitId", required = false) String unitId, + @Param(value = "unionId", required = false) String unionId, + @Param(value = "year", required = false) Integer year, + @Param(value = "type", required = false) String type, + @Param(value = "way", required = false) Integer way, + @Param(value = "searchName", required = false) String searchName, + @Param(value = "searchKeyword", required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName", required = false) String pageOrderName, + @Param(value = "pageOrderBy", required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT con.*, @@ -88,13 +108,13 @@ public class CondolenceReadCon { Cnd cnd = Cnd.NEW(); - if (!ShiroUtil.hasAnyRoles("sysadmin,wyh02")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,A06,wyh02")) { SqlExpressionGroup group2 = new SqlExpressionGroup(); if (ShiroUtil.hasAnyRoles("gh01,H04")) { group2.or("be.unionid", "=", vi.getUnionId()); /*group2.or("con.state_id", ">=", 2000);*/ - }/* - if (ShiroUtil.hasAnyRoles("xghkj")) { + } + /* if (ShiroUtil.hasAnyRoles("SchoolUnionAccountant")) { group2.or("con.state_id", ">=", 2020); } if (ShiroUtil.hasAnyRoles("A06")) { @@ -102,7 +122,8 @@ public class CondolenceReadCon { }*/ /* if (ShiroUtil.hasAnyRoles("")) { group2.or("con.state_id", ">=", 2060); - } */else { + } */ + else { group2.or("con.be_user", "=", ShiroUtil.getPrincipalProperty("id").toString()); group2.or("con.manager", "=", ShiroUtil.getPrincipalProperty("id").toString()); } @@ -114,7 +135,7 @@ public class CondolenceReadCon { Vi.cndPlus(cnd, "con.way", "=", way); Vi.cndPlus(cnd, "be.unitid", "=", unitId); Vi.cndPlus(cnd, "be.unionid", "=", unionId); - + cnd.and("con.state_id", ">=", "2040"); if (Vi.isNotBlank(searchName, searchKeyword)) { cnd.where().andLike(searchName, searchKeyword); } @@ -130,102 +151,289 @@ public class CondolenceReadCon { return condolenceService.listPage(pageNumber, pageSize, sql); } - @At @Ok("void") - public void doPrint(String id, HttpServletResponse response) throws Exception { - response.setContentType("application/pdf"); - + @RequiresPermissions("fw.condolence.read") + public void exportReceipt(String id, HttpServletResponse response) throws Exception { Record record = condolenceService.findOne(id); + List typeList = condolenceService.dao().query(CondolenceType.class, Cnd.NEW()); + typeList.forEach(item -> { + if (item.getId().equals(record.getString("type"))) { + record.put(item.getCode(), "☑"); + } else { + record.put(item.getCode(), "□"); + } + }); - QRCodeWriter qrCodeWriter = new QRCodeWriter(); - BitMatrix bitMatrix = qrCodeWriter.encode(record.getString("document_no"), BarcodeFormat.QR_CODE, 80, 80); - BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix); - PictureRenderData pictureRenderData = new PictureRenderData(80, 80, ".png", bufferedImage); - record.set("qrcode", pictureRenderData); - - //自己签字 - String ms = record.getString("manager_sign"); - if (Strings.isNotBlank(ms)) { - record.set("ms", getImg(ms)); - } - - //分工会主席 - Object ucr = record.get("ucr"); - if (ucr != null) { - Review review = (Review) ucr; - record.set("ucr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("ucrTime", review.getTime()); - record.set("ucrOpinion", review.getOpinion()); - } - - //财务 - Object fr = record.get("fr"); - if (fr != null) { - Review review = (Review) fr; - record.set("fr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("frTime", review.getTime()); - record.set("frOpinion", review.getOpinion()); - } - - - //工会副主席 + record.set("apply_time", DateUtil.format(DateUtil.parseDate(record.getString("apply_time")), "yyyy年MM月dd日")); Object vcr = record.get("vcr"); if (vcr != null) { Review review = (Review) vcr; - record.set("vcr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("vcrTime", review.getTime()); - record.set("vcrOpinion", review.getOpinion()); + record.set("vcr", review.getSign() != null ? ViTool.poiBase64Image(review.getSign(), 130, 100) : null); } - //校工会常务副主席 - Object ecr = record.get("ecr"); - if (ecr != null) { - Review review = (Review) ecr; - record.set("ecr", review.getSign() != null ? getImg(review.getSign()) : null); - record.set("ecrTime", review.getTime()); - record.set("ecrOpinion", review.getOpinion()); + Object ucr = record.get("ucr"); + if (ucr != null) { + Review review = (Review) ucr; + record.set("ucr", review.getSign() != null ? ViTool.poiBase64Image(review.getSign(), 130, 100) : null); } - record.set("money_big", Convert.digitToChinese(record.getDouble("money"))); - String uuid = R.UU32(); + String ms = record.getString("manager_sign_data"); + if (Strings.isNotBlank(ms)) { + record.set("applySign", ViTool.poiBase64Image(ms, 100, 50)); + } - File docx = new File(uuid + ".docx"); - File pdf = new File(uuid + ".pdf"); + record.set("bigMoney", Convert.digitToChinese(record.getDouble("money"))); - OutputStream outputStream = new FileOutputStream(docx); + String fileName = Globals.schoolName + "领取通知单"; - HackLoopTableRenderPolicy tableRenderPolicy = new HackLoopTableRenderPolicy(); - Configure config = Configure.newBuilder().bind("goods",tableRenderPolicy).build(); - InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/condolence/must_visit.docx"); - XWPFTemplate.compile(inputStream, config).render(record, outputStream); - inputStream.close(); - outputStream.close(); + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); - //打开连接 - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100); - connection.connect(); - DocumentConverter converter = new OpenOfficeDocumentConverter(connection); - //执行转换 - converter.convert(docx, pdf); - connection.disconnect(); - - - InputStream pdfStream = new FileInputStream(pdf); - - IOUtils.copy(pdfStream, response.getOutputStream()); - - pdfStream.close(); - docx.delete(); - pdf.delete(); + Configure config = Configure.builder().build(); + XWPFTemplate.compile(officeTemplateUtil.getPath("condolence_pay"), config).render(record).writeAndClose(response.getOutputStream()); } + @At + @Ok("void") + @RequiresPermissions("fw.condolence.read") + public void exportAllPay(String year, HttpServletResponse response) throws Exception { + List typeList = condolenceService.dao().query(CondolenceType.class, Cnd.NEW()); + //查询用户 + List userList = condolenceService.dao().query("user", Cnd.NEW()); + Map userMap = userList.stream().collect(Collectors.toMap(o -> o.getString("id"), o -> o)); - private PictureRenderData getImg(String base64) throws IOException { - String s = base64.split(",")[1]; - byte[] bytes = Base64.getDecoder().decode(s); - return new PictureRenderData(70, 30, ".png", bytes); + //根据年度查询所有的慰问 + List condolenceList = condolenceService.query(Cnd.NEW().andEX("year(apply_time)", "=", year)); + + //导出为一个压缩包 + response.setContentType("application/octet-stream"); + response.setHeader("content-disposition", "attachment;filename=" + + URLEncoder.encode("职工慰问领取通知单汇总.zip", "UTF-8")); + ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); + + for (int i = 0; i < condolenceList.size(); i++) { + Condolence con = condolenceList.get(i); + + Record applyUser = userMap.get(con.getManager()); + Record bzUser = userMap.get(con.getBe_user()); + Record payUser = userMap.get(con.getPayee()); + + NutMap conMap = Lang.obj2map(con, NutMap.class); + typeList.forEach(item -> { + if (item.getId().equals(con.getType())) { + conMap.put(item.getCode(), "☑"); + } else { + conMap.put(item.getCode(), "□"); + } + }); + + conMap.put("apply_time", DateUtil.format(DateUtil.parseDate(con.getApply_time()), "yyyy年MM月dd日")); + if (Strings.isNotBlank(con.getManager_sign())) { + Sys_signature signature = condolenceService.dao().fetch(Sys_signature.class, con.getManager_sign()); + conMap.put("applySign", ViTool.poiBase64Image(signature.getData(), 100, 50)); + } + if (Strings.isNotBlank(con.getUnion_chairman_review())) { + Review review = condolenceService.dao().fetch(Review.class, con.getUnion_chairman_review()); + conMap.put("ucr", review.getSign() != null ? ViTool.poiBase64Image(review.getSign(), 130, 100) : null); + } + if (Strings.isNotBlank(con.getVice_chairman_review())) { + Review review = condolenceService.dao().fetch(Review.class, con.getVice_chairman_review()); + conMap.put("vcr", review.getSign() != null ? ViTool.poiBase64Image(review.getSign(), 130, 100) : null); + } + conMap.put("bigMoney", Convert.digitToChinese(con.getMoney())); + conMap.put("be_username", bzUser.getString("username")); + conMap.put("be_loginname", bzUser.getString("loginname")); + conMap.put("be_unitname", bzUser.getString("unitname")); + conMap.put("m_loginname", payUser.getString("loginname")); + conMap.put("m_name", payUser.getString("username")); + String fileName = (i + 1) + bzUser.getString("username") + "职工慰问领取通知单.docx"; + zipOutputStream.putNextEntry(new ZipEntry(fileName)); + + String officeTemplateUtilPath = officeTemplateUtil.getPath("condolence_pay"); + assert officeTemplateUtilPath != null; + Configure config = Configure.builder().build(); + XWPFTemplate.compile(officeTemplateUtilPath, config).render(conMap).write(zipOutputStream); + zipOutputStream.closeEntry(); + } + zipOutputStream.flush(); + zipOutputStream.close(); + response.getOutputStream().close(); } + @At + @Ok("void") + @RequiresPermissions("fw.condolence.read") + public void exportApply(String id, HttpServletResponse response) throws Exception { + NutMap conMap = getData(id, null).get(0); + + String fileName = Globals.schoolName + "在职教职工慰问金申请表"; + + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); + + Configure config = Configure.builder().build(); + XWPFTemplate.compile(officeTemplateUtil.getPath("condolence_apply"), config).render(conMap).writeAndClose(response.getOutputStream()); + } + + @At + @Ok("void") + @RequiresPermissions("fw.condolence.read") + public void exportAllApply(String year, HttpServletResponse response) throws Exception { + List mapList = getData(null, year); + + //导出为一个压缩包 + response.setContentType("application/octet-stream"); + response.setHeader("content-disposition", "attachment;filename=" + + URLEncoder.encode("职工慰问金申请表.zip", "UTF-8")); + ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); + for (int i = 0; i < mapList.size(); i++) { + NutMap conMap = mapList.get(i); + String fileName = (i + 1) + conMap.getString("be_username") + "慰问金申请表.docx"; + zipOutputStream.putNextEntry(new ZipEntry(fileName)); + + String officeTemplateUtilPath = officeTemplateUtil.getPath("condolence_apply"); + assert officeTemplateUtilPath != null; + Configure config = Configure.builder().build(); + XWPFTemplate.compile(officeTemplateUtilPath, config).render(conMap).write(zipOutputStream); + zipOutputStream.closeEntry(); + } + zipOutputStream.flush(); + zipOutputStream.close(); + response.getOutputStream().close(); + } + + @At + @Ok("void") + @RequiresPermissions("fw.condolence.read") + public void exportSummary(String exportType, String conType, HttpServletResponse response) throws Exception { + CondolenceType condolenceType = condolenceService.dao().fetch(CondolenceType.class, conType); + + response.setContentType("application/octet-stream"); + response.setHeader("content-disposition", "attachment;filename=" + + URLEncoder.encode(condolenceType.getName() + "汇总表.zip", "UTF-8")); + + Sql sql = Sqls.create(""" + SELECT + con.*, + type.`name` type_name, + be.username be_username, + be.loginname be_loginname, + sqr.username sqr_username, + be.unitname be_unitname, + be.unionname be_unionname, + state.state_name, + state.state_color, + type.`code`, + year(apply_time) applyYear, + month(apply_time) applyMonth + FROM + condolence con + LEFT JOIN `user` be ON con.be_user = be.id + LEFT JOIN `user` sqr ON con.manager= sqr.id + LEFT JOIN state state ON state.state_id = con.state_id + LEFT JOIN condolence_type type ON type.id=con.type $condition + """); + + Cnd cnd = Cnd.NEW(); + cnd.and("con.state_id", ">=", "2040"); + cnd.andEX("con.type", "=", conType); + cnd.desc("con.apply_time"); + sql.setCondition(cnd); + + List listMap = condolenceService.listMap(sql); + Map> resultList = listMap.stream().collect(Collectors.groupingBy(o -> o.getString("year".equals(exportType) ? "applyYear" : "applyMonth"))); + + ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream())); + + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("慰问对象", "be_username", 20)); + exportEntities.add(new ExcelExportEntity("慰问对象工号", "be_loginname", 20)); + exportEntities.add(new ExcelExportEntity("申请人", "sqr_username", 20)); + exportEntities.add(new ExcelExportEntity("所在工会", "be_unionname", 30)); + exportEntities.add(new ExcelExportEntity("所在单位", "be_unitname", 30)); + exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20)); + exportEntities.add(new ExcelExportEntity("慰问类型", "type_name", 30)); + exportEntities.add(new ExcelExportEntity("慰问金额", "money", 20)); + exportEntities.add(new ExcelExportEntity("申请时间", "apply_time", 20)); + for (String key : resultList.keySet()) { + try { + zipOutputStream.putNextEntry(new ZipEntry(key + ("year".equals(exportType) ? "年" : "月") + "慰问申请汇总表.xls")); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), exportEntities, resultList.get(key)); + workbook.write(zipOutputStream); + zipOutputStream.closeEntry(); + } catch (Exception e) { + e.printStackTrace(); + } + } + zipOutputStream.flush(); + zipOutputStream.close(); + } + + public List getData(String id, String year) throws Exception { + List typeList = condolenceService.dao().query(CondolenceType.class, Cnd.NEW()); + //查询用户 + List userList = condolenceService.dao().query("user", Cnd.NEW()); + Map userMap = userList.stream().collect(Collectors.toMap(o -> o.getString("id"), o -> o)); + + List condolenceList = condolenceService.query(Cnd.NEW().andEX("id", "=", id).andEX("year(apply_time)", "=", year)); + + List result = new ArrayList<>(); + for (Condolence condolence : condolenceList) { + Record applyUser = userMap.get(condolence.getManager()); + Record bzUser = userMap.get(condolence.getBe_user()); + + NutMap conMap = Lang.obj2map(condolence, NutMap.class); + + conMap.put("apply_time", DateUtil.format(DateUtil.parseDate(condolence.getApply_time()), "yyyy年MM月dd日")); + if (Strings.isNotBlank(condolence.getUnion_chairman_review())) { + Review review = condolenceService.dao().fetch(Review.class, condolence.getUnion_chairman_review()); + conMap.put("ucr", review.getSign() != null ? ViTool.poiBase64Image(review.getSign(), 110, 70) : null); + conMap.put("ucrOpinion", review.getOpinion()); + } + if (Strings.isNotBlank(condolence.getVice_chairman_review())) { + Review review = condolenceService.dao().fetch(Review.class, condolence.getVice_chairman_review()); + conMap.put("vcr", review.getSign() != null ? ViTool.poiBase64Image(review.getSign(), 110, 70) : null); + conMap.put("vcrOpinion", review.getOpinion()); + } + conMap.put("sName", Globals.schoolName); + conMap.put("be_username", bzUser.getString("username")); + conMap.put("be_loginname", bzUser.getString("loginname")); + conMap.put("be_sex", bzUser.getString("sex")); + conMap.put("be_unitname", bzUser.getString("unitname")); + conMap.put("a_username", applyUser.getString("username")); + conMap.put("a_loginname", applyUser.getString("loginname")); + conMap.put("a_unitname", applyUser.getString("unitname")); + conMap.put("a_sex", applyUser.getString("sex")); + conMap.put("the_hospital", condolence.getThe_hospital()); + conMap.put("h_num", condolence.getThe_hospital_house_num()); + conMap.put("b_num", condolence.getThe_hospital_house_bed_num()); + conMap.put("hospital_by", condolence.getHospital_by()); + conMap.put("bigMoney", Convert.digitToChinese(condolence.getMoney())); + CondolenceType type = typeList.stream().filter(o -> o.getId().equals(conMap.getString("type"))).findAny().orElse(null); + conMap.put("typeName", type.getName()); + String content = "慰问事由:" + condolence.getRemark(); + if ("F".equals(type.getCode())) { + conMap.put("remark", content + "\n" + "去世者与本人关系:" + condolence.getDeadImmediateFamily());//直系亲属去世 + } else if ("B".equals(type.getCode())) { + conMap.put("remark", content + "\n" + "孩次:" + condolence.getBirth_child_num());//生育 + } else if ("C".equals(type.getCode())) { + conMap.put("remark", content + + "\n" + "治疗医院:" + condolence.getThe_hospital() + + "\n" + "病房号:" + condolence.getThe_hospital_house_num() + + "\n" + "床号:" + condolence.getThe_hospital_house_bed_num()); + } else if ("D".equals(type.getCode())) { + conMap.put("remark", content + + "\n" + "治疗医院:" + condolence.getThe_hospital() + + "\n" + "病房号:" + condolence.getThe_hospital_house_num() + + "\n" + "床号:" + condolence.getThe_hospital_house_bed_num() + + "\n" + "患病病种:" + condolence.getHospital_by()); + } else { + conMap.put("remark", condolence.getRemark());//结婚、教职工去世 + } + result.add(conMap); + } + return result; + } } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceTypeMangeController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceTypeMangeController.java index 4180b7d..2f51cf3 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceTypeMangeController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceTypeMangeController.java @@ -11,6 +11,7 @@ import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Strings; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @author zhf @@ -34,7 +35,12 @@ public class CondolenceTypeMangeController { @At @ViReturn - public Object pageData(String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.type") + public Object pageData(@Param(value = "searchName", required = false) String searchName, + @Param(value = "searchKeyword", required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName", required = false) String pageOrderName, + @Param(value = "pageOrderBy", required = false) String pageOrderBy) { Cnd cnd = Cnd.NEW(); if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { cnd.where().andLike(searchName, searchKeyword); @@ -51,6 +57,7 @@ public class CondolenceTypeMangeController { @At @ViReturn + @RequiresPermissions("fw.condolence.type") public Object doAdd(CondolenceType type) { if (condolenceTypeViService.count(Cnd.where("code", "=", type.getCode())) > 0) { @@ -64,6 +71,7 @@ public class CondolenceTypeMangeController { @At @ViReturn + @RequiresPermissions("fw.condolence.type") public Object doEdit(CondolenceType type) { if (condolenceTypeViService.count(Cnd.where("code", "=", type.getCode()).and("id", "!=", type.getId())) > 0) { @@ -83,6 +91,7 @@ public class CondolenceTypeMangeController { @At @ViReturn + @RequiresPermissions("fw.condolence.type") public Object doDelete(String id) { condolenceTypeViService.delete(id); return Result.success(); @@ -92,7 +101,8 @@ public class CondolenceTypeMangeController { @At @ViReturn public Object getAll() { - return Result.success().addData(condolenceTypeViService.query(Cnd.NEW().asc("code"))); +// return Result.success().addData(condolenceTypeViService.query(Cnd.where("isDisabled", "=", 0).asc("sortNum"))); + return condolenceTypeViService.query(Cnd.NEW().asc("sortNum")); } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceUcrCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceUcrCon.java index 5daf706..75c137f 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceUcrCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceUcrCon.java @@ -1,14 +1,11 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.model.Review; +import io.v.nutz.base.service.ReviewService; import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.model.Review; -import io.v.nutz.base.service.ReviewService; -import io.v.nutz.sys.models.Sys_local_process_instance; -import io.v.nutz.sys.models.Sys_user; -import io.v.nutz.sys.models.User; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.condolence.CondolenceToDoHandler; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; @@ -16,6 +13,7 @@ import io.v.nutz.zhgh.zgfw.service.CondolenceService; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; @@ -24,16 +22,14 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; -import org.nutz.trans.Trans; - -import java.util.List; +import org.nutz.mvc.annotation.Param; /** * @Author: 1V * @DateTime: 2020/11/20 11:49 - * @Description: 基层工会主席审核 + * @Description: 院级工会主席审核 */ -@At("/platform/fw/condolence/ucr") +@At({"/platform/fw/condolence/ucr", "/platform/fw/condolence/ucr/union"}) @IocBean @RequiresAuthentication @Ok("json") @@ -45,16 +41,32 @@ public class CondolenceUcrCon { @Inject private MsgApi msgApi; + @Inject + private CondolenceService condolenceService; + + @Inject + private ReviewService reviewService; + @At("") @Ok("beetl:/platform/zgfw/condolence/ucr.html") @RequiresPermissions("fw.condolence.ucr") public void index() { } - @At @ViReturn - public Object pageData(String year,String unitId, String unionId, Boolean isAudit,String type, String way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.ucr") + public Object pageData(@Param(value = "year", required = false) String year, + @Param(value = "unitId", required = false) String unitId, + @Param(value = "unionId", required = false) String unionId, + @Param(value = "isAudit", required = false) Boolean isAudit, + @Param(value = "type", required = false) String type, + @Param(value = "way", required = false) String way, + @Param(value = "searchName", required = false) String searchName, + @Param(value = "searchKeyword", required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName", required = false) String pageOrderName, + @Param(value = "pageOrderBy", required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT con.*, @@ -103,62 +115,44 @@ public class CondolenceUcrCon { return condolenceService.listPage(pageNumber, pageSize, sql); } - - @Inject - private CondolenceService condolenceService; - - @Inject - private ReviewService reviewService; + @At + @ViReturn + @RequiresPermissions("fw.condolence.ucr") + public Object doEdit(String id) { + condolenceService.update(Chain.make("state_id", 2000), Cnd.where("id", "=", id)); + return null; + } @At @ViReturn + @RequiresPermissions("fw.condolence.ucr") @Aop(TransAop.READ_COMMITTED) - public Object doReview(String id, boolean pass, Review review) { + public Object doReview(String id, Integer pass, Review review) { review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); review.setUsername(ShiroUtil.getPrincipalProperty("username").toString()); review.setTime(DateUtil.getDate()); review = reviewService.insert(review); Condolence condolence = condolenceService.fetch(id); condolence.setUnion_chairman_review(review.getId()); - condolence.setState_id(pass ? "2040" : "2010"); - condolenceService.edit(condolence); - - Sys_user sysUser = condolenceService.dao().fetch(Sys_user.class, condolence.getManager()); - //审核发通知 - if(pass) { - List schoolPresident = vi.getSchoolPresident(); - schoolPresident.forEach(item -> { - String msg = "%s您好,%s老师的日常慰问申请基层工会已通过,转为待校工会审核,请您登录智慧工会平台进行审核。".formatted(item.getUsername(), sysUser.getUsername()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(item.getLoginname()), ""); - }); + if (pass == 1) { + condolence.setState_id("2010"); + } else if (pass == 2) { + condolence.setState_id("2011"); } else { - String msg = "%s您好,您申请的日常慰问被分工会审核拒绝,拒绝原因:%s。".formatted(sysUser.getUsername(), review.getOpinion()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); + condolence.setState_id("2012"); } - - int count = condolenceService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "condolence_apply@" + condolence.getId())); - - if (count > 0) { - //完成分工会任务 - CondolenceToDoHandler.COMPLETE_UNION_TASK.exec(condolence,pass ? "基层工会通过" : "基层工会拒绝"); - - if (pass) { - //如果通过到下一流程节点 - CondolenceToDoHandler.CREATE_SCHOOL_TASK.exec(condolence,null); - } else { - CondolenceToDoHandler.REFUSE_UNION_TASK.exec(condolence,"基层工会退回修改"); - } - } - return null; - } - - @At - @ViReturn - @Aop(TransAop.READ_COMMITTED) - public Object doWithdraw(String id) { - Condolence condolence = condolenceService.fetch(id); - condolence.setState_id("2000"); condolenceService.edit(condolence); + + CondolenceToDoHandler.COMPLETE_UNION_TASK.exec(condolence, review.getOpinion()); + // 1 拒绝;3 通过 + if (pass == 1){ + CondolenceToDoHandler.COMPLETE_PROCESS.exec(condolence, review.getOpinion()); + } else if(pass == 2) { + CondolenceToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(condolence, review.getOpinion()); + } else { + CondolenceToDoHandler.CREATE_FINANCE_TASK.exec(condolence,null); + } + return null; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceVcrCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceVcrCon.java index b2a1fe8..32988b7 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceVcrCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/CondolenceVcrCon.java @@ -1,19 +1,14 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.model.Review; import io.v.nutz.base.service.ReviewService; -import io.v.nutz.sys.models.Sys_local_process_instance; -import io.v.nutz.sys.models.Sys_user; -import io.v.nutz.sys.models.User; +import io.v.nutz.base.utils.DateUtil; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.condolence.CondolenceToDoHandler; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.service.CondolenceService; -import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfService; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.aop.interceptor.ioc.TransAop; @@ -25,16 +20,14 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; - -import java.util.List; -import java.util.Map; +import org.nutz.mvc.annotation.Param; /** * @Author: 1V * @DateTime: 2020/11/20 11:49 * @Description: 校工会审核 */ -@At("/platform/fw/condolence/vcr") +@At({"/platform/fw/condolence/vcr","/platform/fw/condolence/vcr/school"}) @IocBean @RequiresAuthentication @Ok("json") @@ -43,9 +36,6 @@ public class CondolenceVcrCon { @Inject private Vi vi; - @Inject - private MsgApi msgApi; - @At("") @Ok("beetl:/platform/zgfw/condolence/vcr.html") @RequiresPermissions("fw.condolence.vcr") @@ -55,12 +45,23 @@ public class CondolenceVcrCon { @At @ViReturn - public Object pageData(String unitId, String unionId, Boolean isAudit, Integer year, String type, String way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.vcr") + public Object pageData(@Param(value = "year",required = false) String year, + @Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, + @Param(value = "isAudit",required = false) Boolean isAudit, + @Param(value = "type",required = false) String type, + @Param(value = "way",required = false) String way, + @Param(value = "searchName",required = false) String searchName, + @Param(value = "searchKeyword",required = false) String searchKeyword, + @Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize, + @Param(value = "pageOrderName",required = false) String pageOrderName, + @Param(value = "pageOrderBy",required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT con.*, type.`name` type_name, - be.username be_username, + be.username be_username, be.loginname be_loginname, sqr.username sqr_username, be.unitname be_unitname, @@ -77,7 +78,7 @@ public class CondolenceVcrCon { Cnd cnd = Cnd.NEW(); - cnd.and("con.state_id", isAudit ? ">" : "=", 2040); + cnd.and("con.state_id", isAudit ? ">" : "=", 2020); Vi.cndPlus(cnd, "YEAR(con.apply_time)", "=", year); Vi.cndPlus(cnd, "con.type", "=", type); @@ -107,59 +108,34 @@ public class CondolenceVcrCon { @Inject private ReviewService reviewService; - @Inject - private ZgfwKnbfService zgfwKnbfService; - @At @ViReturn + @RequiresPermissions("fw.condolence.vcr") @Aop(TransAop.READ_COMMITTED) - public Object doReview(String id, boolean pass, Review review) { + public Object doReview(String id, Integer pass, Review review) { review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); review.setUsername(ShiroUtil.getPrincipalProperty("username").toString()); review.setTime(DateUtil.getDate()); review = reviewService.insert(review); Condolence condolence = condolenceService.fetch(id); condolence.setVice_chairman_review(review.getId()); - condolence.setState_id(pass ? "2080" : "2050"); - condolenceService.edit(condolence); - - Sys_user sysUser = condolenceService.dao().fetch(Sys_user.class, condolence.getManager()); - //审核发通知 - if (pass) { - String msg = "%s您好,您申请的日常慰问已经审核通过。".formatted(sysUser.getUsername()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); + if (pass == 1) { + condolence.setState_id("2030"); + } else if (pass == 2) { + condolence.setState_id("2031"); + } else if (pass == 4) { + condolence.setState_id("2050"); } else { - String msg = "%s您好,您申请的日常慰问被校工会审核拒绝,拒绝原因:%s。".formatted(sysUser.getUsername(), review.getOpinion()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); + condolence.setState_id("2040"); } - - int count = condolenceService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "condolence_apply@" + condolence.getId())); - - if (count > 0){ - CondolenceToDoHandler.COMPLETE_SCHOOL_TASK.exec(condolence, pass ? "校工会通过" : "校工会拒绝"); - if (pass) { - CondolenceToDoHandler.COMPLETE_PROCESS.exec(condolence, null); - } else { - CondolenceToDoHandler.REFUSE_UNION_TASK.exec(condolence,"校工会退回修改"); - } - } - return null; - } - - @At - @ViReturn - public Object getApplyNum(String userId, String type) { - int conNum = condolenceService.count(Cnd.where("be_user", "=", userId).and("YEAR(apply_time)", "=", DateUtil.getYear()).and("type", "=", type).and("state_id", "=", 2080)); - int knbfNum = zgfwKnbfService.count(Cnd.where("bbzrusername", "=", userId).and("YEAR(sqsj)", "=", DateUtil.getYear()).and("sq_bzlx", "=", type).and("zt", "=", 500)); - return Map.of("conNum", conNum, "knbfNum", knbfNum); - } - - @At - @ViReturn - public Object doWithdraw(String id) { - Condolence condolence = condolenceService.fetch(id); - condolence.setState_id("2040"); condolenceService.updateIgnoreNull(condolence); + CondolenceToDoHandler.COMPLETE_SCHOOL_TASK.exec(condolence, review.getOpinion()); + if (pass == 1){ + CondolenceToDoHandler.COMPLETE_PROCESS.exec(condolence, review.getOpinion()); + } else if (pass == 2){ + CondolenceToDoHandler.CREATE_BACK_SCHOOL_TASK.exec(condolence, review.getOpinion()); + } + CondolenceToDoHandler.COMPLETE_PROCESS.exec(condolence,null); return null; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/StatisticsController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/StatisticsController.java index 74d9312..aee3432 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/StatisticsController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/condolence/StatisticsController.java @@ -1,9 +1,9 @@ package io.v.nutz.zhgh.zgfw.controller.condolence; +import cn.hutool.core.util.StrUtil; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.service.ViService; +import io.v.nutz.base.utils.Vi; import io.v.nutz.zhgh.zgfw.model.condolence.CondolenceType; import io.v.nutz.zhgh.zgfw.service.CondolenceService; import org.apache.shiro.authz.annotation.RequiresAuthentication; @@ -13,9 +13,11 @@ import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.Strings; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @author zhf @@ -37,13 +39,66 @@ public class StatisticsController { @At("") @Ok("beetl:/platform/zgfw/condolence/statistics.html") - @RequiresPermissions("fw.condolence.statistics2") + @RequiresPermissions("fw.condolence.statistics") public void index() { } @At @ViReturn - public Object condolencesType(String year, String unionid, String type, String way) { + @RequiresPermissions("fw.condolence.statistics") + public Object condolencesType(@Param(value = "year", required = false) Integer year, + @Param(value = "yearMonth", required = false) String[] yearMonth, + @Param(value = "unionid", required = false) String unionid, + @Param(value = "type", required = false) String type, + @Param(value = "way", required = false) String way, + @Param(value = "reiItemId", required = false) String reiItemId) { + Sql sql = Sqls.create(""" + SELECT + rei.*, + be.username be_username, + state.stateName, + state.stateColor + FROM + `reimbursement_new` rei + LEFT JOIN `user` be ON be.id = rei.userId + LEFT JOIN audit_state state ON state.stateId = rei.state + WHERE rei.State=3100 + $timeCnd + $unionidCnd + $typeCnd + $wayCnd + $reiItemIdCnd + """); + if (yearMonth != null && yearMonth.length == 2) { + String timeSql = StrUtil.format("AND DATE_FORMAT ( rei.applyTime,'%Y-%m' ) >= '{}' AND DATE_FORMAT ( rei.applyTime,'%Y-%m' ) <= '{}'", yearMonth[0], yearMonth[1]); + sql.setVar("timeCnd", timeSql); + } + if (Lang.isNotEmpty(year)) { + sql.setVar("yearCnd", "AND YEAR(rei.applyTime) = %s".formatted(year)); + } + if (Strings.isNotBlank(unionid)) { + sql.setVar("unionidCnd", String.format("AND rei.unionId = '%s' ", unionid)); + } + if (Strings.isNotBlank(type)) { + sql.setVar("typeCnd", String.format("AND con.type = '%s' ", type)); + } + if (Strings.isNotBlank(way)) { + sql.setVar("wayCnd", String.format("AND con.way = '%s' ", way)); + } + if (Strings.isNotBlank(reiItemId)) { + sql.setVar("reiItemIdCnd", String.format("AND rei.reimbursementItemId = '%s' ", reiItemId)); + } + return condolenceTypeViService.list(sql); + + } + + @At + @ViReturn + @RequiresPermissions("fw.condolence.statistics") + public Object condolencesType2(@Param(value = "year", required = false) String year, + @Param(value = "unionid", required = false) String unionid, + @Param(value = "type", required = false) String type, + @Param(value = "way", required = false) String way) { Sql sql = Sqls.create(""" SELECT type.`name`, @@ -55,7 +110,7 @@ public class StatisticsController { condolence con LEFT JOIN `user` us ON us.id = con.be_user WHERE - type.id = con.type and con.state_id=2080 + type.id = con.type $yearCnd $unionidCnd $typeCnd @@ -76,7 +131,7 @@ public class StatisticsController { if (Strings.isNotBlank(way)) { sql.setVar("wayCnd", String.format("AND con.way = '%s' ", way)); } - CndPlus cnd = CndPlus.create(); + Cnd cnd = Cnd.NEW(); cnd.asc("type.location"); sql.setCondition(cnd); return condolenceTypeViService.list(sql); @@ -86,34 +141,39 @@ public class StatisticsController { @At @ViReturn - public Object pageData(String conType, String unionid, String year, String type, String way, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy) { + @RequiresPermissions("fw.condolence.statistics") + public Object pageData(@Param(value = "reiItemId", required = false) String reiItemId, + @Param(value = "unionid", required = false) String unionid, @Param("yearMonth") String[] yearMonth, + @Param(value = "type", required = false) String type, + @Param(value = "way", required = false) String way, + @Param(value = "searchName", required = false) String searchName, + @Param(value = "searchKeyword", required = false) String searchKeyword, + @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, + @Param(value = "pageOrderName", required = false) String pageOrderName, + @Param(value = "pageOrderBy", required = false) String pageOrderBy) { Sql sql = Sqls.create(""" SELECT - con.*, - type.`name` type_name, + rei.*, be.username be_username, - be_unit.`name` be_unitname, - be_union.unionname, - state.state_name, - state.state_color + state.stateName, + state.stateColor FROM - condolence con - LEFT JOIN sys_user be ON con.be_user = be.id - LEFT JOIN sys_unit be_unit ON be.unitid = be_unit.id - LEFT JOIN sys_union be_union ON be_unit.unionid = be_union.id - LEFT JOIN state state ON state.state_id = con.state_id - LEFT JOIN condolence_type type ON type.id=con.type $condition + `reimbursement_new` rei + LEFT JOIN `user` be ON be.id = rei.userId + LEFT JOIN audit_state state ON state.stateId = rei.state $condition """); Cnd cnd = Cnd.NEW(); - cnd.and("con.state_id", "=", 2080); + cnd.and("rei.State", "=", 3100); - Vi.cndPlus(cnd, "YEAR(con.apply_time)", "=", year); - Vi.cndPlus(cnd, "con.type", "=", type); - Vi.cndPlus(cnd, "con.type", "=", conType); - Vi.cndPlus(cnd, "con.way", "=", way); - Vi.cndPlus(cnd, "be_union.id", "=", unionid); + if (null != yearMonth && yearMonth.length == 2) { + Vi.cndPlus(cnd, "DATE_FORMAT ( rei.applyTime,'%Y-%m' )", ">=", yearMonth[0]); + Vi.cndPlus(cnd, "DATE_FORMAT ( rei.applyTime,'%Y-%m' )", "<=", yearMonth[1]); + } + + Vi.cndPlus(cnd, "rei.unionId", "=", unionid); + Vi.cndPlus(cnd, "rei.reimbursementItemId", "=", reiItemId); if (Vi.isNotBlank(searchName, searchKeyword)) { cnd.where().andLike(searchName, searchKeyword); @@ -122,14 +182,14 @@ public class StatisticsController { if (Vi.isNotBlank(pageOrderName, pageOrderBy)) { cnd.orderBy(pageOrderName, pageOrderBy); } else { - cnd.asc("con.state_id"); - cnd.desc("con.apply_time"); + cnd.asc("rei.State"); + cnd.desc("rei.applyTime"); } sql.setCondition(cnd); - return condolenceService.listPage(pageNumber, pageSize, sql); + return condolenceService.listPageMap(pageNumber, pageSize, sql); } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultAgentController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultAgentController.java index 74b44a4..5dff120 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultAgentController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultAgentController.java @@ -43,29 +43,31 @@ public class DifficultAgentController { @At @ViReturn public Object getAgenda() { + final String title = "【困难帮扶】"; + List result = new ArrayList<>(); if (ShiroUtil.hasAnyRoles("sysadmin")) { - result.add(new NutMap().setv("url", UNIONCHAIRMAN).setv("iconClass", vi.getIconByPath(UNIONCHAIRMAN)).setv("label", "困难帮扶基层工会主席审核").setv("number", getUnionChairmanCount())); - result.add(new NutMap().setv("url", SCHOOLMANAGER).setv("iconClass", vi.getIconByPath(SCHOOLMANAGER)).setv("label", "困难帮扶待校工会主席审核").setv("number", getSchoolManagerCount())); + result.add(new NutMap().setv("title", title).setv("url", UNIONCHAIRMAN).setv("iconClass", vi.getIconByPath(UNIONCHAIRMAN)).setv("label", "待院级工会审核").setv("number", getUnionChairmanCount())); + result.add(new NutMap().setv("title", title).setv("url", SCHOOLMANAGER).setv("iconClass", vi.getIconByPath(SCHOOLMANAGER)).setv("label", "待校工会审核").setv("number", getSchoolManagerCount())); //暂时没用到 - result.add(new NutMap().setv("url", SCHOOLVICECHAIRMAN).setv("iconClass", vi.getIconByPath(SCHOOLVICECHAIRMAN)).setv("label", "困难帮扶待校工会副主席审核").setv("number", getSchoolviceChairmanCount())); + result.add(new NutMap().setv("title", title).setv("url", SCHOOLVICECHAIRMAN).setv("iconClass", vi.getIconByPath(SCHOOLVICECHAIRMAN)).setv("label", "待校工会副主席审核").setv("number", getSchoolviceChairmanCount())); //暂时没用到 - result.add(new NutMap().setv("url", SCHOOLSTANDING).setv("iconClass", vi.getIconByPath(SCHOOLSTANDING)).setv("label", "困难帮扶待校工会常务副主席审核").setv("number", getSchoolStandingCount())); + result.add(new NutMap().setv("title", title).setv("url", SCHOOLSTANDING).setv("iconClass", vi.getIconByPath(SCHOOLSTANDING)).setv("label", "待校工会常务副主席审核").setv("number", getSchoolStandingCount())); } else { - if (ShiroUtil.hasAnyRoles("H01,gh01")) { - result.add(new NutMap().setv("url", UNIONCHAIRMAN).setv("iconClass", vi.getIconByPath(UNIONCHAIRMAN)).setv("label", "困难帮扶基层工会主席审核").setv("number", getUnionChairmanCount())); + if (ShiroUtil.hasAnyRoles("H04,gh01")) { + result.add(new NutMap().setv("title", title).setv("url", UNIONCHAIRMAN).setv("iconClass", vi.getIconByPath(UNIONCHAIRMAN)).setv("label", "待院级工会审核").setv("number", getUnionChairmanCount())); } - if (ShiroUtil.hasRole("wyh02")) { - result.add(new NutMap().setv("url", SCHOOLMANAGER).setv("iconClass", vi.getIconByPath(SCHOOLMANAGER)).setv("label", "困难帮扶待校工会主席审核").setv("number", getSchoolManagerCount())); + if (ShiroUtil.hasAnyRoles("A06,wyh02")) { + result.add(new NutMap().setv("title", title).setv("url", SCHOOLMANAGER).setv("iconClass", vi.getIconByPath(SCHOOLMANAGER)).setv("label", "待校工会审核").setv("number", getSchoolManagerCount())); }//暂时没用到 if (ShiroUtil.hasRole("wyh01")) { - result.add(new NutMap().setv("url", SCHOOLVICECHAIRMAN).setv("iconClass", vi.getIconByPath(SCHOOLVICECHAIRMAN)).setv("label", "困难帮扶待校工会副主席审核").setv("number", getSchoolviceChairmanCount())); + result.add(new NutMap().setv("title", title).setv("url", SCHOOLVICECHAIRMAN).setv("iconClass", vi.getIconByPath(SCHOOLVICECHAIRMAN)).setv("label", "待校工会副主席审核").setv("number", getSchoolviceChairmanCount())); }//暂时没用到 if (ShiroUtil.hasRole("wyh02")) { - result.add(new NutMap().setv("url", SCHOOLSTANDING).setv("iconClass", vi.getIconByPath(SCHOOLSTANDING)).setv("label", "困难帮扶待校工会常务副主席审核").setv("number", getSchoolStandingCount())); + result.add(new NutMap().setv("title", title).setv("url", SCHOOLSTANDING).setv("iconClass", vi.getIconByPath(SCHOOLSTANDING)).setv("label", "待校工会常务副主席审核").setv("number", getSchoolStandingCount())); } } @@ -94,7 +96,7 @@ public class DifficultAgentController { } /** - * 待校工会经办人审核 + * 待校工会审核 * * @return */ diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApply.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApply.java index bd7edd1..c9dce7b 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApply.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApply.java @@ -1,15 +1,11 @@ package io.v.nutz.zhgh.zgfw.controller.difficult; -import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.service.AuditService; -import io.v.nutz.sys.models.Sys_local_process_instance; +import io.v.nutz.base.utils.DateUtil; +import io.v.nutz.base.utils.Vi; import io.v.nutz.sys.models.Sys_signature; -import io.v.nutz.sys.models.User; import io.v.nutz.sys.services.SysSignatureService; import io.v.nutz.sys.services.SysUserService; import io.v.nutz.web.commons.utils.ShiroUtil; @@ -60,8 +56,6 @@ public class DifficultyApply { @Inject private Vi vi; - @Inject - private MsgApi msgApi; @At("") @Ok("beetl:/platform/zgfw/difficulty/apply.html") @@ -69,8 +63,10 @@ public class DifficultyApply { public void index() { } + @At @ViReturn + @RequiresPermissions("difficulty.apply") public Object querySqr(String key) { Cnd cnd = Cnd.NEW(); Sql sql = Sqls.create(""" @@ -85,9 +81,7 @@ public class DifficultyApply { LEFT JOIN sys_unit un ON un.id = su.unitid LEFT JOIN sys_union uni ON uni.id = un.unionid $condition """); - if (!ShiroUtil.hasRole("sysadmin")){ - cnd.and("uni.id", "=", vi.getUnionId()); - } + cnd.and("uni.id", "=", vi.getUnionId()); if (Strings.isNotBlank(key)) { SqlExpressionGroup group = new SqlExpressionGroup(); group.orLike("su.username", key); @@ -101,27 +95,23 @@ public class DifficultyApply { @At @ViReturn + @RequiresPermissions("difficulty.apply") @Aop(TransAop.READ_COMMITTED) - public Object doAdd(Zgfw_knbf knbf) { + public Object doAdd(Zgfw_knbf knbf, Boolean flag) { if (Strings.isNotBlank(knbf.getApplicantsign())) { knbf.setApplicantsign(sysSignatureService.insert(new Sys_signature(knbf.getApplicantsign())).getId()); } - knbf.setZt(100); + if (knbf.getApply_mode().equals("1")) { + knbf.setBbzrusername(ShiroUtil.getPrincipalProperty("id").toString()); + } + knbf.setZt(flag ? 100 : 98); knbf.setSqr(ShiroUtil.getPrincipalProperty("id").toString()); knbf.setSqsj(DateUtil.getDate()); +// zgfwKnbfService.insert(knbf); zgfwKnbfService.insertWith(knbf, "jtcys"); - //提交申请,发企业微信通知给基层工会主席 - List unionManageByCurrentUser = vi.getUnionManageByCurrentUser(); - unionManageByCurrentUser.forEach(item -> { - String msg = "%s您好,%s老师提交了元旦春节困难补助(慰问)申请,请您登录智慧工会平台进行审核。".formatted(item.getUsername(), ShiroUtil.getPlatformUsername()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(item.getLoginname()), ""); - }); - - //提交申请 - DifficultToDoHandler.START_PROCESS.exec(knbf,null); - //创建分工会审核任务 - DifficultToDoHandler.CREATE_UNION_TASK.exec(knbf,null); + DifficultToDoHandler.START_PROCESS.exec(knbf); + DifficultToDoHandler.CREATE_UNION_TASK.exec(knbf); return Result.success(); } @@ -129,22 +119,25 @@ public class DifficultyApply { @At @ViReturn + @RequiresPermissions("difficulty.apply") @Aop(TransAop.READ_COMMITTED) - public Object doEdit(Zgfw_knbf knbf) { + public Object doEdit(Zgfw_knbf knbf, Boolean flag) { if (Strings.isNotBlank(knbf.getApplicantsign())) { knbf.setApplicantsign(sysSignatureService.insert(new Sys_signature(knbf.getApplicantsign())).getId()); } - zgfwKnbfService.update(knbf); + if (knbf.getApply_mode().equals("1")) { + knbf.setBbzrusername(ShiroUtil.getPrincipalProperty("id").toString()); + } + knbf.setZt(flag ? 100 : 98); + zgfwKnbfService.updateIgnoreNull(knbf); zgfwKnbfJtcyService.clear(Cnd.where("sqid", "=", knbf.getId())); zgfwKnbfService.insertLinks(knbf, "jtcys"); - zgfwKnbfService.updateWith(knbf, "jtcys"); - - int count = zgfwKnbfService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "zgfw_knbf@" + knbf.getId())); - if (count > 0) { - if (StrUtil.isNotBlank(knbf.getUnion_president_audit()) || StrUtil.isNotBlank(knbf.getSchool_manager_audit())) { - DifficultToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(knbf, "基层工会审核"); - } + DifficultToDoHandler.START_PROCESS.exec(knbf); + DifficultToDoHandler.CREATE_UNION_TASK.exec(knbf); + if (List.of(150,156,250,350,450).contains(knbf.getZt())){ + DifficultToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(knbf); } +// zgfwKnbfService.updateWith(knbf, "jtcys"); return Result.success(); } @@ -155,6 +148,7 @@ public class DifficultyApply { */ @At @ViReturn + @RequiresPermissions("difficulty.apply") public Object getUserData() { Sql sql = Sqls.create(""" SELECT diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApplyList.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApplyList.java index 769938e..fba2cc4 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApplyList.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/DifficultyApplyList.java @@ -8,19 +8,16 @@ import io.v.nutz.base.service.AuditService; import io.v.nutz.sys.services.SysUnionService; import io.v.nutz.sys.services.SysUserService; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.handler.difficult.DifficultToDoHandler; -import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfJtcyService; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfService; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Cnd; -import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @author zhf @@ -32,8 +29,6 @@ import org.nutz.mvc.annotation.Ok; @At("/platform/fw/difficulty/applylist") public class DifficultyApplyList { - - @Inject private FtpService ftpService; @@ -62,11 +57,13 @@ public class DifficultyApplyList { @At() @ViReturn - public Object pageData(Integer year, String unitId, String unionId,PageForm page) { + @RequiresPermissions("difficulty.applylist") + public Object pageData(@Param(value = "year",required = false) Integer year, + @Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); if (!ShiroUtil.hasAnyRoles("sysadmin")) { - cnd.and("sq.sqr", "=", ShiroUtil.getPrincipalProperty("id").toString()) - /* .or("sq.bbzrusername", "=", ShiroUtil.getPrincipalProperty("id").toString())*/; + cnd.and(Cnd.exps("sq.sqr", "=", ShiroUtil.getPlatformUid()).or("sq.bbzrusername", "=", ShiroUtil.getPlatformUid())); } return zgfwKnbfService.pageData(cnd, page, year, unitId,unionId); } @@ -74,6 +71,7 @@ public class DifficultyApplyList { @At @ViReturn + @RequiresPermissions("difficulty.applylist") public Object findOne(String id) { return zgfwKnbfService.findOne(id); } @@ -81,13 +79,15 @@ public class DifficultyApplyList { @At @ViReturn - @Aop(TransAop.READ_COMMITTED) + @RequiresPermissions("difficulty.applylist") public Object doDelete(String id) { - Zgfw_knbf knbf = zgfwKnbfService.fetch(id); zgfwKnbfJtcyService.clear(Cnd.where("sqid", "=", id)); zgfwKnbfService.delete(id); - DifficultToDoHandler.DELETE_PROCESS_AND_TASK.exec(knbf,null); return Result.success(); + } + + + } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ReadingController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ReadingController.java index e384cb0..b2b946d 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ReadingController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ReadingController.java @@ -1,9 +1,5 @@ package io.v.nutz.zhgh.zgfw.controller.difficult; -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import com.deepoove.poi.XWPFTemplate; @@ -11,31 +7,25 @@ import com.deepoove.poi.config.Configure; import com.deepoove.poi.data.PictureRenderData; import com.deepoove.poi.policy.HackLoopTableRenderPolicy; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.model.Audit; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.service.BaseService; +import io.v.nutz.base.utils.OfficeTemplateUtil; +import io.v.nutz.base.utils.Vi; import io.v.nutz.sys.models.Sys_file; import io.v.nutz.sys.models.Sys_signature; import io.v.nutz.sys.models.Sys_union; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.services.SysUnionService; import io.v.nutz.sys.services.SysUserService; -import io.v.nutz.base.utils.ViTool; +import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.FileUtil; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfJtcyService; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfService; import org.apache.commons.io.IOUtils; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.HorizontalAlignment; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFCellStyle; -import org.apache.poi.xssf.usermodel.XSSFFont; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Cnd; @@ -47,16 +37,20 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Strings; import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletResponse; import java.io.*; -import java.math.BigDecimal; import java.net.URLEncoder; -import java.util.ArrayList; +import java.nio.charset.StandardCharsets; import java.util.Base64; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; /** * @author zhf @@ -81,9 +75,14 @@ public class ReadingController { @Inject private SysUnionService sysUnionService; + @Inject + private BaseService baseService; + @Inject private Vi vi; + @Inject + private OfficeTemplateUtil officeTemplateUtil; @At("") @Ok("beetl:/platform/zgfw/difficulty/reading.html") @@ -94,9 +93,13 @@ public class ReadingController { @At() @ViReturn - public Object pageData(String[] dateRange, Integer year, String unitId, String unionId, PageForm page, String sq_bzlx) { + @RequiresPermissions("difficulty.reading") + public Object pageData(@Param(value = "dateRange", required = false) String[] dateRange, + @Param(value = "year", required = false) Integer year, + @Param(value = "unitId", required = false) String unitId, + @Param(value = "unionId", required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); - if (!ShiroUtil.hasAnyRoles("sysadmin,A06,A06")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,A06,wyh03,wyh02")) { SqlExpressionGroup group2 = new SqlExpressionGroup(); if (ShiroUtil.hasAnyRoles("gh01,H04")) { group2.or("sqr.unionid", "=", vi.getUnionId()); @@ -111,12 +114,12 @@ public class ReadingController { cnd.and("sq.sqsj", ">=", dateRange[0]); cnd.and("sq.sqsj", "<=", dateRange[1]); } - cnd.andEX("sq.sq_bzlx", "=", sq_bzlx); return zgfwKnbfService.pageData(cnd, page, year, unitId, unionId); } @At @ViReturn + @RequiresPermissions("difficulty.reading") public Object findOne(String id) { return zgfwKnbfService.findOne(id); } @@ -129,41 +132,37 @@ public class ReadingController { * @param response * @throws Exception */ - @At - @ViReturn @Ok("void") - public void doExport(String id, HttpServletResponse response) throws Exception { + @ViReturn + @RequiresPermissions("difficulty.reading") + public void doExport(@Param("id") String id, HttpServletResponse response) throws Exception { Record record = zgfwKnbfService.findOne(id); + record.put("knbf", "☑"); + Object app = record.get("app"); + if (app != null) { + Sys_signature signature = (Sys_signature) app; + if (Strings.isNotBlank(signature.getData())) { + record.set("appimg", ((Sys_signature) app).getData() != null ? getImg(((Sys_signature) app).getData()) : null); + } + } Object upa = record.get("upa"); if (upa != null) { Audit audit = (Audit) upa; - if (Strings.isNotBlank(audit.getAuditSign())) { - record.set("upaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); - } + record.set("upaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); } Object sua = record.get("sua"); if (sua != null) { Audit audit = (Audit) sua; - if (Strings.isNotBlank(audit.getAuditSign())) { - record.set("suaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); - } + record.set("suaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); } + record.set("subsidy_amount_big", Convert.digitToChinese(record.getDouble("xghbzje"))); - if (Strings.isNotBlank(record.getString("xghbzje"))) { - record.set("subsidy_amount_big", Convert.digitToChinese(record.getDouble("xghbzje"))); - } - - - double price = record.getDouble("xghbzje"); - int money_int = (int) price; - BigDecimal b1 = new BigDecimal(price); - BigDecimal b2 = new BigDecimal(money_int); - double moneyAngle = b1.subtract(b2).doubleValue(); - - + /*int price = record.getInt("xghbzje"); + int money_int = price; + int money_decimal = money_int - price; record.set("one", money_int >= 1000000 ? (money_int / 1000000) % 10 : null); record.set("two", money_int >= 100000 ? (money_int / 100000) % 10 : null); record.set("three", money_int >= 10000 ? (money_int / 10000) % 10 : null); @@ -171,23 +170,22 @@ public class ReadingController { record.set("five", money_int >= 100 ? (money_int / 100) % 10 : null); record.set("six", money_int >= 10 ? (money_int / 10) % 10 : null); record.set("seven", money_int >= 10 ? money_int % 10 : null); - record.set("eight", (int) (moneyAngle * 10)); - record.set("nine", (int) (moneyAngle * 100 % 10)); + record.set("eight", (int) (money_decimal * 10)); + record.set("nine", (int) (money_decimal % 0.1 * 100));*/ - if (record.getInt("sq_bzlx") == 1) { + /* if (record.getInt("sq_bzlx") == 1) { record.set("bzlx_name", "日常补助慰问"); } else if (record.getInt("sq_bzlx") == 2) { record.set("bzlx_name", "“元旦、春节”困难补助慰问"); - } + }*/ Configure config = Configure.newBuilder().build(); - String suffix = "困难帮扶报销表"; - InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/difficulty/reimbursement.docx"); + String suffix = "领取通知单"; + //InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/difficulty/knbf_reimbursement.docx"); response.addHeader("Content-Type", "application/octet-stream"); response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(suffix.getBytes("UTF-8"), "ISO-8859-1") + "\".docx"); - XWPFTemplate.compile(inputStream, config).render(record, response.getOutputStream()); - inputStream.close(); + XWPFTemplate.compile(officeTemplateUtil.getPath("knbf_pay"), config).render(record).writeAndClose(response.getOutputStream()); } @@ -198,20 +196,24 @@ public class ReadingController { * @param response * @throws Exception */ + + @At - @Ok("void") - public void export(String id, HttpServletResponse response) throws Exception { + @RequiresPermissions("difficulty.reading") + public void export(@Param("id") String id, HttpServletResponse response) throws Exception { - Record record = zgfwKnbfService.findOne(id); - String suffix; +// Record record = zgfwKnbfService.findOne(id); + String suffix = "江南大学工会会员困难补助申请表"; - if (record.getString("sq_knlx").equals("1")) { - suffix = "中国药科大学在职工会会员生病住院补助备案表"; + /* if (record.getString("sq_knlx").equals("1")) { + suffix = Globals.schoolName + "工会审批表"; } else if (record.getString("sq_knlx").equals("3")) { - suffix = "中国药科大学在职工会会员去世慰问金备案表"; + suffix = Globals.schoolName + "工会审批表"; } else { - suffix = "中国药科大学困难补助(慰问)金申报表"; - } + suffix = Globals.schoolName + "工会审批表"; + }*/ + + response.addHeader("Content-Type", "application/octet-stream"); response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(suffix.getBytes("UTF-8"), "ISO-8859-1") + "\".docx"); Export(id, response.getOutputStream()); @@ -233,12 +235,11 @@ public class ReadingController { record.set("familyList", recordList); } - if (record.getInt("sq_bzlx") == 1) { + /* if (record.getInt("sq_bzlx") == 1) { record.set("bzlx_name", "日常补助慰问"); } else if (record.getInt("sq_bzlx") == 2) { record.set("bzlx_name", "“元旦、春节”困难补助慰问"); - } - + }*/ //分工会 Object app = record.get("app"); @@ -253,40 +254,46 @@ public class ReadingController { Object upa = record.get("upa"); if (upa != null) { Audit audit = (Audit) upa; - if (Strings.isNotBlank(audit.getAuditSign())) { - record.set("upaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); - record.set("upaTime", audit.getAuditTime() != null ? DateUtil.formatDate(audit.getAuditTime()) : null); - record.set("upaOpinion", audit.getAuditOpinion()); - } + record.set("upaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); + record.set("upaTime", audit.getAuditTime() != null ? DateUtil.formatDate(audit.getAuditTime()) : null); + record.set("upaOpinion", audit.getAuditOpinion()); + } + + //二级党委组织 + Object tda = record.get("tda"); + if (tda != null) { + Audit audit = (Audit) tda; + record.set("tdaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); + record.set("tdaTime", audit.getAuditTime() != null ? DateUtil.formatDate(audit.getAuditTime()) : null); + record.set("tdaOpinion", audit.getAuditOpinion()); } //校工会主席 - Object sua = record.get("sua"); - if (sua != null) { - Audit audit = (Audit) sua; - if (Strings.isNotBlank(audit.getAuditSign())) { - record.set("suaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); - record.set("suaTime", audit.getAuditTime() != null ? DateUtil.formatDate(audit.getAuditTime()) : null); - record.set("suaOpinion", audit.getAuditOpinion()); - } + Object sma = record.get("sma"); + if (sma != null) { + Audit audit = (Audit) sma; + record.set("smaimg", audit.getAuditSign() != null ? getImg(audit.getAuditSign()) : null); + record.set("smaTime", audit.getAuditTime() != null ? DateUtil.formatDate(audit.getAuditTime()) : null); + record.set("smaOpinion", audit.getAuditOpinion()); } if (Strings.isNotBlank(record.getString("xghbzje"))) { record.set("subsidy_amount_big", Convert.digitToChinese(record.getDouble("xghbzje"))); - } else { - record.set("subsidy_amount_big", null); } - InputStream inputStream; + record.set("schoolName", Globals.schoolName); - if (record.getString("sq_knlx").equals("1")) { - inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/difficulty/sick.docx"); + InputStream inputStream; + String officeTemplateUtilPath = officeTemplateUtil.getPath("knbf_apply"); + /* if (record.getString("sq_knlx").equals("1")) { + officeTemplateUtilPath = officeTemplateUtil.getPath("knbf_sick"); } else if (record.getString("sq_knlx").equals("3")) { - inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/difficulty/die.docx"); + officeTemplateUtilPath = officeTemplateUtil.getPath("knbf_die"); } else { - inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/difficulty/subsidy.docx"); - } - XWPFTemplate.compile(inputStream, config).render(record, outputStream); - inputStream.close(); + officeTemplateUtilPath = officeTemplateUtil.getPath("knbf_summary"); + }*/ + assert officeTemplateUtilPath != null; + XWPFTemplate.compile(officeTemplateUtilPath, config).render(record, outputStream); + } @@ -300,7 +307,8 @@ public class ReadingController { @At @ViReturn - public void downloadAnnex(String id, HttpServletResponse response) throws Exception { + @RequiresPermissions("difficulty.reading") + public void downloadAnnex(@Param("id") String id, HttpServletResponse response) throws Exception { response.reset(); response.setContentType("application/x-msdownload;charset=utf-8"); @@ -331,12 +339,10 @@ public class ReadingController { } } - FileOutputStream outputStream = new FileOutputStream(tmpDir.getPath() + "/" + "职工慰问报销审批单.docx"); Export(id, outputStream); outputStream.close(); - String aimsDir = "zipTmp/" + R.UU32(); String aimsName = fileName + ".zip"; String aimsPath = aimsDir + "/" + aimsName; @@ -357,66 +363,72 @@ public class ReadingController { @At + @ViReturn @Ok("void") - public void doExcel(Integer year, String[] dateRange, String sq_bzlx, HttpServletResponse response) throws IOException { + @RequiresPermissions("difficulty.reading") + public void doExcel(@Param(value = "year", required = false) Integer year, + @Param(value = "dateRange", required = false) String[] dateRange, + @Param(value = "unionId", required = false) String unionId, + @Param(value = "unitId", required = false) String unitId, HttpServletResponse response) throws IOException { Sql sql = Sqls.create(""" SELECT su.username, - su.loginname, - su.unitname, - bf.apply_reason, - bf.zyzkyybz, - bf.xghbzje, - bf.yhkh, - bf.lxfs, - knlx.lxName as sq_knlx, - IF(bf.sq_bzlx = 1,'日常补助慰问','元旦、春节困难补助慰问') as sq_bzlx, - bf.sqsj, - bf.zt + su.loginname, + su.unitname, + su.unionname, + su.sex, + su.jobTitle, + bf.zc, + bf.zw, + bf.zyzkyybz, + bf.xghbzje, + bf.yhkh, + bf.lxfs, + bf.apply_reason FROM zgfw_knbf bf - LEFT JOIN `user` su ON su.id = bf.bbzrusername - left join `zgfw_knlx` knlx on bf.sq_knlx = knlx.`code` $condition + LEFT JOIN `user` su ON su.id = bf.bbzrusername $condition """); -// Cnd cnd = Cnd.where("bf.zt", "=", 500); - CndPlus cnd = CndPlus.create(); + Map map = new HashMap<>(); + + Cnd cnd = Cnd.where("bf.zt", "=", 500); if (dateRange != null && dateRange.length == 2) { cnd.and("bf.sqsj", ">=", dateRange[0]); cnd.and("bf.sqsj", "<=", dateRange[1]); } - cnd.andEX("bf.sq_bzlx", "=", sq_bzlx); + if (!ShiroUtil.hasAnyRoles("sysadmin,A06,wyh03,wyh02")) { + if (ShiroUtil.hasAnyRoles("gh01,H04")) { + cnd.andEX("su.unionid", "=", vi.getUnionId()); + map.put("union", "院级工会主席"); + + } + map.put("union", "校工会"); + } + cnd.andEX("su.unionid", "=", unionId); + cnd.andEX("su.unitid", "=", unitId); + cnd.asc("su.unionname"); + cnd.asc("su.unitname"); + cnd.asc("bf.sqsj"); + sql.setCondition(cnd); - List list = zgfwKnbfService.list(sql); + List nutMap = sysUserService.listMap(sql); + AtomicInteger listIndex = new AtomicInteger(1); + nutMap.forEach(v -> { + v.put("index", listIndex.get()); + listIndex.getAndIncrement(); + }); + map.put("exportDate", io.v.nutz.base.utils.DateUtil.getDate()); + map.put("knbf", nutMap); - ExportParams exportParams = new ExportParams(); - exportParams.setType(ExcelType.XSSF); - if (dateRange != null) { - exportParams.setTitle(dateRange[0] + "-" + dateRange[1] + "困难帮扶汇总表"); - } else { - exportParams.setTitle("困难帮扶汇总表"); - } - List excelExportEntities = new ArrayList<>(); - excelExportEntities.add(new ExcelExportEntity("工号", "loginname", 20)); - excelExportEntities.add(new ExcelExportEntity("姓名", "username", 20)); - excelExportEntities.add(new ExcelExportEntity("单位", "unitname", 20)); - excelExportEntities.add(new ExcelExportEntity("联系电话", "lxfs", 20)); - excelExportEntities.add(new ExcelExportEntity("银行卡号", "yhkh", 20)); - excelExportEntities.add(new ExcelExportEntity("困难情况简要", "apply_reason", 50)); - excelExportEntities.add(new ExcelExportEntity("主要致困原因备注", "zyzkyybz", 20)); - excelExportEntities.add(new ExcelExportEntity("困难类型", "sq_knlx", 20)); - excelExportEntities.add(new ExcelExportEntity("补助类型", "sq_bzlx", 20)); - excelExportEntities.add(new ExcelExportEntity("申请时间", "sqsj", 20)); -// excelExportEntities.add(new ExcelExportEntity("申请状态", "zt", 20)); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, excelExportEntities, list); - try { - ViTool.excelResponse(response,"困难帮扶汇总表.xlsx"); - workbook.write(response.getOutputStream()); - } catch (Exception e) { - e.printStackTrace(); - } + HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); + Configure config = Configure.newBuilder().bind("knbf", policy).build(); + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(("院级工会教职工困难补助申报汇总表").getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); + XWPFTemplate.compile(officeTemplateUtil.getPath("knbf_summary"), config).render(map).writeAndClose(response.getOutputStream()); + } @@ -426,12 +438,5 @@ public class ReadingController { return new PictureRenderData(70, 30, ".png", bytes); } - private String none2str(String s) { - if (Strings.isBlank(s)) { - return ""; - } - return s; - } - } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolManagerController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolManagerController.java index ade8e15..81176aa 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolManagerController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolManagerController.java @@ -1,29 +1,24 @@ package io.v.nutz.zhgh.zgfw.controller.difficult; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.model.Audit; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.AuditService; -import io.v.nutz.sys.models.Sys_local_process_instance; -import io.v.nutz.sys.models.Sys_user; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.difficult.DifficultToDoHandler; import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.aop.interceptor.ioc.TransAop; -import org.nutz.dao.Cnd; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import java.util.Date; -import java.util.List; /** * @author zhf @@ -42,12 +37,6 @@ public class SchoolManagerController { @Inject private AuditService auditService; - @Inject - private Vi vi; - - @Inject - private MsgApi msgApi; - @At("") @Ok("beetl:/platform/zgfw/difficulty/schoolmanager.html") @@ -57,17 +46,21 @@ public class SchoolManagerController { @At @ViReturn - public Object pageData(Boolean isAudit, Integer year, String unitId,String unionId, PageForm page ,String bzlx) { + @RequiresPermissions("fw.difficulty.schoolmanager") + public Object pageData(@Param(value = "isAudit", required = false) Boolean isAudit, + @Param(value = "year", required = false) Integer year, + @Param(value = "unitId", required = false) String unitId, + @Param(value = "unionId", required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); cnd.and("sq.zt", isAudit ? ">" : "=", 200); - cnd.andEX("sq.sq_bzlx", "=", bzlx); - return zgfwKnbfService.pageData(cnd, page, year, unitId,unionId); + return zgfwKnbfService.pageData(cnd, page, year, unitId, unionId); } @At @ViReturn + @RequiresPermissions("fw.difficulty.schoolmanager") @Aop(TransAop.READ_COMMITTED) - public Object doReview(String id, Integer pass, Audit audit, String xghbzje) { + public Object doReview(String id, Integer pass, Audit audit, @Param(value = "xghbzje", required = false) String xghbzje) { audit.setAuditor(ShiroUtil.getPrincipalProperty("id").toString()); audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); audit.setUsername(ShiroUtil.getPrincipalProperty("username").toString()); @@ -75,56 +68,28 @@ public class SchoolManagerController { audit = auditService.insert(audit); Zgfw_knbf zgfw_knbf = zgfwKnbfService.fetch(id); zgfw_knbf.setSchool_manager_audit(audit.getId()); - zgfw_knbf.setXghbzje(xghbzje); - - String nodeName = ""; - Sys_user sysUser = zgfwKnbfService.dao().fetch(Sys_user.class, zgfw_knbf.getSqr()); - if (pass==1){ - nodeName = "校工会拒绝"; +// zgfw_knbf.setXghbzje(xghbzje); + if (pass == 1) { + //不通过 zgfw_knbf.setZt(250); - String msg = "%s您好,您申请的元旦春节困难补助(慰问)被校工会审核拒绝,拒绝原因:%s。".formatted(sysUser.getUsername(), audit.getAuditOpinion()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); } - if (pass==2){ - nodeName = "校工会通过"; + if (pass == 2) { + //通过 zgfw_knbf.setZt(500); - String msg = "%s您好,您申请的元旦春节困难补助(慰问)已经审核通过。".formatted(sysUser.getUsername()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); } - if (pass==3){ - nodeName = "校工会退回修改"; - zgfw_knbf.setZt(100); - String msg = "%s您好,您申请的元旦春节困难补助(慰问)被校工会退回修改,退回原因:%s。".formatted(sysUser.getUsername(), audit.getAuditOpinion()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); + if (pass == 3) { + zgfw_knbf.setZt(252); } zgfwKnbfService.updateIgnoreNull(zgfw_knbf); - int count = zgfwKnbfService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "zgfw_knbf@" + zgfw_knbf.getId())); - - if (count > 0){ - DifficultToDoHandler.COMPLETE_SCHOOL_TASK.exec(zgfw_knbf,nodeName); - if (pass == 1) { - DifficultToDoHandler.REFUSE_UNION_TASK.exec(zgfw_knbf,"校工会拒绝"); - } else if (pass==2){ - DifficultToDoHandler.COMPLETE_PROCESS.exec(zgfw_knbf,null); - } else if (pass==3){ - DifficultToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(zgfw_knbf,"校工会退回修改"); - } + if (pass == 1){ + DifficultToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(zgfw_knbf); + } else if (pass == 2){ + DifficultToDoHandler.COMPLETE_PROCESS.exec(zgfw_knbf); } + DifficultToDoHandler.COMPLETE_SCHOOL_TASK.exec(zgfw_knbf); return null; } - - @At - @ViReturn - public Object doWithdraw(String id) { - Zgfw_knbf zgfw_knbf = zgfwKnbfService.fetch(id); - zgfw_knbf.setZt(200); - zgfwKnbfService.updateIgnoreNull(zgfw_knbf); - return null; - } - - - } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolStandingController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolStandingController.java index 44d82ab..55dc9a3 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolStandingController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolStandingController.java @@ -13,6 +13,7 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import java.util.Date; @@ -26,6 +27,7 @@ import java.util.Date; @IocBean public class SchoolStandingController { + @Inject private ZgfwKnbfService zgfwKnbfService; @@ -34,7 +36,7 @@ public class SchoolStandingController { @At("") - @Ok("beetl:/platform/zgfw/difficulty/schoolstanding.html") + @Ok("beetl:/platform/fw/difficulty/schoolstanding.html") @RequiresPermissions("fw.difficulty.schoolstanding") public void index() { } @@ -42,7 +44,11 @@ public class SchoolStandingController { @At() @ViReturn - public Object pageData(Boolean isAudit,Integer year, String unitId,String unionId, PageForm page) { + @RequiresPermissions("fw.difficulty.schoolstanding") + public Object pageData(@Param(value = "isAudit",required = false) Boolean isAudit, + @Param(value = "year",required = false) Integer year, + @Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); cnd.and("sq.zt", isAudit ? ">" : "=", 400); return zgfwKnbfService.pageData(cnd, page, year, unitId,unionId); @@ -51,6 +57,7 @@ public class SchoolStandingController { @At @ViReturn + @RequiresPermissions("fw.difficulty.schoolstanding") public Object doReview(String id, boolean pass, Audit audit, String jb, String xghbzje) { audit.setAuditor(ShiroUtil.getPrincipalProperty("id").toString()); audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolViceChairmanCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolViceChairmanCon.java index 0977382..baea84a 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolViceChairmanCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/SchoolViceChairmanCon.java @@ -13,6 +13,7 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import java.util.Date; @@ -36,7 +37,7 @@ public class SchoolViceChairmanCon { @At("") - @Ok("beetl:/platform/zgfw/difficulty/schoolvicechairman.html") + @Ok("beetl:/platform/fw/difficulty/schoolvicechairman.html") @RequiresPermissions("fw.difficulty.schoolvicechairman") public void index() { } @@ -44,7 +45,11 @@ public class SchoolViceChairmanCon { @At() @ViReturn - public Object pageData(Boolean isAudit,Integer year, String unitId,String unionId, PageForm page) { + @RequiresPermissions("fw.difficulty.schoolvicechairman") + public Object pageData(@Param(value = "isAudit",required = false) Boolean isAudit, + @Param(value = "year",required = false) Integer year, + @Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); cnd.and("sq.zt", isAudit ? ">" : "=", 300); return zgfwKnbfService.pageData(cnd, page, year, unitId,unionId); @@ -53,6 +58,7 @@ public class SchoolViceChairmanCon { @At @ViReturn + @RequiresPermissions("fw.difficulty.schoolvicechairman") public Object doReview(String id, boolean pass, Audit audit) { audit.setAuditor(ShiroUtil.getPrincipalProperty("id").toString()); audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/TwoOrganizationController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/TwoOrganizationController.java index a5773e6..71f56b1 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/TwoOrganizationController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/TwoOrganizationController.java @@ -1,11 +1,11 @@ package io.v.nutz.zhgh.zgfw.controller.difficult; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.model.Audit; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.AuditService; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.difficult.DifficultToDoHandler; import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; @@ -79,15 +79,15 @@ public class TwoOrganizationController { zgfw_knbf.setZt(157); } zgfw_knbf.setXghbzje(xghbzje); -// zgfw_knbf.setTwo_dzz_audit(audit.getId()); + zgfw_knbf.setTwo_dzz_audit(audit.getId()); zgfwKnbfService.updateIgnoreNull(zgfw_knbf); if (pass == 1){ - DifficultToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(zgfw_knbf,null); + DifficultToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(zgfw_knbf); }else if (pass == 2){ - DifficultToDoHandler.CREATE_SCHOOL_TASK.exec(zgfw_knbf,null); + DifficultToDoHandler.CREATE_SCHOOL_TASK.exec(zgfw_knbf); } - DifficultToDoHandler.COMPLETE_FINANCE_TASK.exec(zgfw_knbf,null); + DifficultToDoHandler.COMPLETE_FINANCE_TASK.exec(zgfw_knbf); return null; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/UnionChairmanController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/UnionChairmanController.java index 2d006fd..8cd2482 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/UnionChairmanController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/UnionChairmanController.java @@ -1,30 +1,27 @@ package io.v.nutz.zhgh.zgfw.controller.difficult; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.model.Audit; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.AuditService; -import io.v.nutz.sys.models.Sys_local_process_instance; -import io.v.nutz.sys.models.Sys_user; -import io.v.nutz.sys.models.User; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.difficult.DifficultToDoHandler; import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import java.util.Date; -import java.util.List; /** * @author zhf @@ -46,9 +43,6 @@ public class UnionChairmanController { @Inject private Vi vi; - @Inject - private MsgApi msgApi; - @At("") @Ok("beetl:/platform/zgfw/difficulty/unionchairman.html") @RequiresPermissions("fw.difficulty.unionchairman") @@ -57,18 +51,42 @@ public class UnionChairmanController { @At() @ViReturn - public Object pageData(Boolean isAudit, Integer year, String unitId, String unionId, PageForm page) { + @RequiresPermissions("fw.difficulty.unionchairman") + public Object pageData(@Param(value = "isAudit",required = false) Boolean isAudit, + @Param(value = "year",required = false) Integer year, + @Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); - if (!ShiroUtil.hasAnyRoles("sysadmin")) { + if (!ShiroUtil.hasAnyRoles("sysadmin")){ cnd.and("un.id", "=", vi.getUnionId()); } cnd.and("sq.zt", isAudit ? ">" : "=", 100); - return zgfwKnbfService.pageData(cnd, page, year, unitId, unionId); + return zgfwKnbfService.pageData(cnd, page, year, unitId,unionId); } @At @ViReturn + @RequiresPermissions("fw.difficulty.unionchairman") + public Object doEdit(String id) { + Zgfw_knbf knbf = zgfwKnbfService.fetch(id); + int zt = 0; + //审核通过,撤回为待校工会审核 + if(knbf.getZt().equals(500)){ + zt=200; + } else if (knbf.getZt().equals(200)){//待校工会审核,撤回为待二级党组织审核 + zt=155; + }else if (knbf.getZt().equals(155)){//待二级党组织审核,撤回为待分工会审核 + zt=100; + } + zgfwKnbfService.update(Chain.make("zt", zt), Cnd.where("id", "=", id)); + return null; + } + + + @At + @ViReturn + @RequiresPermissions("fw.difficulty.unionchairman") @Aop(TransAop.READ_COMMITTED) public Object doReview(String id, Integer pass, Audit audit) { audit.setAuditor(ShiroUtil.getPrincipalProperty("id").toString()); @@ -77,53 +95,24 @@ public class UnionChairmanController { audit.setAuditTime(new Date()); audit = auditService.insert(audit); Zgfw_knbf zgfw_knbf = zgfwKnbfService.fetch(id); - - Sys_user sysUser = zgfwKnbfService.dao().fetch(Sys_user.class, zgfw_knbf.getSqr()); - // 1拒绝;2通过,3退回 - String nodeName = ""; if (pass == 1) { - nodeName = "基层工会拒绝"; + //不通过 zgfw_knbf.setZt(150); - String msg = "%s您好,您申请的元旦春节困难补助(慰问)被分工会审核拒绝,拒绝原因:%s。".formatted(sysUser.getUsername(), audit.getAuditOpinion()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); } else if (pass == 2) { - nodeName = "基层工会通过"; - zgfw_knbf.setZt(200); - List schoolPresident = vi.getSchoolPresident(); - schoolPresident.forEach(item -> { - String msg = "%s您好,%s老师提交了元旦春节困难补助(慰问)申请,请您登录智慧工会平台进行审核。".formatted(item.getUsername(), sysUser.getUsername()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(item.getLoginname()), ""); - }); - } else if (pass == 3){ - nodeName = "基层工会退回修改"; - zgfw_knbf.setZt(100); - String msg = "%s您好,您申请的元旦春节困难补助(慰问)被分工会退回修改,退回原因:%s。".formatted(sysUser.getUsername(), audit.getAuditOpinion()); - msgApi.sendWxMsg("智慧工会", "", "text", msg, List.of(sysUser.getLoginname()), ""); + zgfw_knbf.setZt(152); + } else { + //通过 + zgfw_knbf.setZt(155); } zgfw_knbf.setUnion_president_audit(audit.getId()); zgfwKnbfService.updateIgnoreNull(zgfw_knbf); - int count = zgfwKnbfService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "zgfw_knbf@" + zgfw_knbf.getId())); - - if (count > 0) { - DifficultToDoHandler.COMPLETE_UNION_TASK.exec(zgfw_knbf, null); - if (pass == 1) { - DifficultToDoHandler.REFUSE_UNION_TASK.exec(zgfw_knbf, "基层工会拒绝"); - } else if (pass == 2) { - DifficultToDoHandler.CREATE_SCHOOL_TASK.exec(zgfw_knbf, null); - } else if (pass == 3) { - DifficultToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(zgfw_knbf, "基层工会退回修改"); - } + if (pass == 1){ + DifficultToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(zgfw_knbf); + }else if (pass == 3){ + DifficultToDoHandler.CREATE_FINANCE_TASK.exec(zgfw_knbf); } - return null; - } - - @At - @ViReturn - public Object doWithdraw(String id) { - Zgfw_knbf zgfw_knbf = zgfwKnbfService.fetch(id); - zgfw_knbf.setZt(100); - zgfwKnbfService.updateIgnoreNull(zgfw_knbf); + DifficultToDoHandler.COMPLETE_UNION_TASK.exec(zgfw_knbf); return null; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwKnbfSjdrCon.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwKnbfSjdrCon.java index 022956f..2bffd89 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwKnbfSjdrCon.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwKnbfSjdrCon.java @@ -64,11 +64,12 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { @Ok("re") @RequiresPermissions("zgfw.knbf.sjdr") public String index() { - return "beetl:/platform/zgfw/difficulty/sjdr.html"; + return "beetl:/platform/fw/difficulty/sjdr.html"; } @At + @RequiresPermissions("zgfw.knbf.sjdr") public Object queryUser(String query) { try { Sql sql = Sqls.create("SELECT u.*,un.`name` unitname from sys_user u left join sys_unit un on u.unitid = un.id $condition"); @@ -77,7 +78,7 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { if (!ShiroUtil.hasAnyRoles("sysadmin", "A06")) { SqlExpressionGroup group = new SqlExpressionGroup(); if (ShiroUtil.hasRole("H04")) { - //基层工会 + //院级工会 group.or("unit.unionid", "in", getFghIdStr()); } cnd.and(group); @@ -98,6 +99,7 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { } @At + @RequiresPermissions("zgfw.knbf.sjdr") public Object doAdd(Zgfw_knbf zgfw_knbf) { try { zgfw_knbf.setZyzkyy("[]"); @@ -118,6 +120,7 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { * @throws IOException */ @At + @RequiresPermissions("zgfw.knbf.sjdr") public void downLoadTemp(HttpServletResponse response) throws IOException { File file = null; InputStream fin = null; @@ -147,7 +150,8 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { @At @Ok("json") @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) - public Object getRow(@Param("file") TempFile tempFile, String year) { + @RequiresPermissions("zgfw.knbf.sjdr") + public Object getRow(@Param("file") TempFile tempFile,@Param(value = "year",required = false) String year) { try { if (tempFile == null) { return Result.error("文件为空!"); @@ -239,7 +243,6 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { jb = cell11.getStringCellValue(); } - Sql sql = Sqls.create("SELECT u.*,un.`name` unitname from sys_user u left join sys_unit un on u.unitid = un.id WHERE u.loginname = @loginname LIMIT 1").setParam("loginname", loginname); List list = sysUserService.list(sql); if (list.size() > 0) { @@ -380,6 +383,7 @@ public class ZgfwKnbfSjdrCon extends ZgfwUtil { @At @Ok("json") + @RequiresPermissions("zgfw.knbf.sjdr") public Object write(Zgfw_knbf[] zgfw_knbfs, String sqsj) { try { if (Strings.isBlank(sqsj)) { diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwUtil.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwUtil.java index f20d82f..2472931 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwUtil.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/difficult/ZgfwUtil.java @@ -73,7 +73,7 @@ public class ZgfwUtil { return result; } - protected static final String FGH_ROLE_ID = "5d342e614e9a48288d50154bcdcc75d3"; //基层工会 + protected static final String FGH_ROLE_ID = "5d342e614e9a48288d50154bcdcc75d3"; //院级工会 protected static final String XGH_ROLE_ID = "9b01918f873645048f8a85a4fc06d135"; // 校工会 /** @@ -86,7 +86,7 @@ public class ZgfwUtil { if (isSuperAdmin()) { result = 1; //超级管理员 } else { - if (hasRole(FGH_ROLE_ID)) //基层工会 + if (hasRole(FGH_ROLE_ID)) //院级工会 result = 2; else if (hasRole(XGH_ROLE_ID)) //校工会 result = 3; @@ -107,7 +107,7 @@ public class ZgfwUtil { return hasRole(HY_ROLE_ID); } - //根据当前用户查询管理的基层工会 + //根据当前用户查询管理的院级工会 protected List getFghId() { List result = new ArrayList<>(); Sql sql = Sqls.create("SELECT sur.`unionid` as fghid FROM sys_user_role AS sur WHERE sur.`userId`= @userid AND sur.`roleId`= @fghrole"); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjBeiAnController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjBeiAnController.java index 46bdd35..2db899b 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjBeiAnController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjBeiAnController.java @@ -1,9 +1,9 @@ package io.v.nutz.zhgh.zgfw.controller.rxdj; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.BaseService; import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.query.PageForm; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; import org.apache.shiro.authz.annotation.RequiresPermissions; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjPlanController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjPlanController.java index 18fe695..0620b69 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjPlanController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjPlanController.java @@ -5,13 +5,13 @@ import cn.wizzer.framework.base.Result; import cn.wizzer.framework.base.service.BaseService; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.zhgh.member.MemberMode; import io.v.nutz.sys.models.Sys_msg; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.services.SysMsgService; import io.v.nutz.sys.services.SysMsgUserService; import io.v.nutz.sys.services.SysUserRoleService; import io.v.nutz.sys.services.SysUserService; +import io.v.nutz.zhgh.member.MemberMode; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj_year; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Chain; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjShController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjShController.java index d6060b9..1b39c42 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjShController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjShController.java @@ -1,29 +1,63 @@ package io.v.nutz.zhgh.zgfw.controller.rxdj; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateTime; import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; import cn.wizzer.framework.base.service.BaseService; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.policy.HackLoopTableRenderPolicy; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.utils.*; +import io.v.nutz.sys.models.Sys_dict; import io.v.nutz.sys.models.Sys_file; +import io.v.nutz.sys.models.Sys_unit; +import io.v.nutz.sys.services.SysDictService; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.handler.rxdj.RxdjToDoHandler; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; +import io.v.nutz.zhgh.zgfw.template.rxdj.RxdjTemp; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.apache.shiro.authz.annotation.RequiresRoles; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; import org.nutz.dao.Sqls; +import org.nutz.dao.entity.Record; 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.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.Strings; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.AdaptBy; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import org.nutz.mvc.upload.TempFile; +import org.nutz.mvc.upload.UploadAdaptor; +import org.springframework.beans.BeanUtils; -import java.util.List; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.stream.Collectors; @IocBean @At("/platform/zgfw/rxdj/sh") @@ -33,6 +67,18 @@ public class RxdjShController { @Inject private BaseService baseService; + @Inject + private SysDictService dictService; + + @Inject + private Dao dao; + + @Inject + private OfficeTemplateUtil officeTemplateUtil; + + @Inject + private MsgApi msgApi; + @At @Ok("beetl:/platform/zgfw/rxdj/fghsh.html") @RequiresPermissions("zgfw.rxdj.fghsh") @@ -84,13 +130,14 @@ public class RxdjShController { cnd.and("dj.dj_sqzt", "=", 5100); } } else { - if (isAudit == 1) { - cnd.and("dj.dj_sqzt", "in", List.of(5200, 5215, 5218, 5300)); - } else if (isAudit == 2) { - cnd.and("dj.dj_sqzt", "in", List.of(5215, 5218, 5300)); - } else { - cnd.and("dj.dj_sqzt", "=", 5200); - } +// if (isAudit == 1) { +// cnd.and("dj.dj_sqzt", "in", List.of(5200, 5215, 5218, 5300)); +// } else if (isAudit == 2) { +// cnd.and("dj.dj_sqzt", "in", List.of(5215, 5218, 5300)); +// } else { +// cnd.and("dj.dj_sqzt", "=", 5200); +// } + cnd.and("dj.dj_sqzt", "=", 5300); } if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) { cnd.andEX("ur.unionid", "=", Vi.getUnionId()); @@ -117,26 +164,31 @@ public class RxdjShController { @At @ViReturn @RequiresPermissions(value = {"zgfw.rxdj.fghsh", "zgfw.rxdj.xghsh"}, logical = Logical.OR) + @Aop(TransAop.READ_COMMITTED) public Object doch(Fw_rxdj rxdj) { Fw_rxdj fw_rxdj = baseService.dao().fetch(Fw_rxdj.class, rxdj.getDj_id()); - - if (List.of(5115, 5118, 5200).contains(fw_rxdj.getDj_sqzt())) { - fw_rxdj.setDj_fghshr(null); - fw_rxdj.setDj_fghshsj(null); - fw_rxdj.setDj_fghshyj(null); - fw_rxdj.setDj_sqzt(5100); - } else { - fw_rxdj.setDj_xghshr(null); - fw_rxdj.setDj_xghshsj(null); - fw_rxdj.setDj_xghshyj(null); - fw_rxdj.setDj_sqzt(5200); - } + fw_rxdj.setDj_fghshr(null); + fw_rxdj.setDj_fghshsj(null); + fw_rxdj.setDj_fghshyj(null); + fw_rxdj.setDj_sqzt(5100); +// if (List.of(5115, 5118, 5200).contains(fw_rxdj.getDj_sqzt())) { +// fw_rxdj.setDj_fghshr(null); +// fw_rxdj.setDj_fghshsj(null); +// fw_rxdj.setDj_fghshyj(null); +// fw_rxdj.setDj_sqzt(5100); +// } else { +// fw_rxdj.setDj_xghshr(null); +// fw_rxdj.setDj_xghshsj(null); +// fw_rxdj.setDj_xghshyj(null); +// fw_rxdj.setDj_sqzt(5200); +// } baseService.update(fw_rxdj); return Result.success(); } @At @RequiresPermissions(value = {"zgfw.rxdj.fghsh"}) + @Aop(TransAop.READ_COMMITTED) public Object dofghSh(Fw_rxdj rxdj) { try { rxdj.setDj_fghshr((String) ShiroUtil.getPrincipalProperty("username")); @@ -144,10 +196,13 @@ public class RxdjShController { baseService.updateIgnoreNull(rxdj); RxdjToDoHandler.COMPLETE_UNION_TASK.exec(rxdj); - if (List.of(5115,5118).contains(rxdj.getDj_sqzt())){ + if (Objects.equals(5118, rxdj.getDj_sqzt())) { RxdjToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(rxdj); + } else if (rxdj.getDj_sqzt() == 5115) { + RxdjToDoHandler.COMPLETE_UNION_TASK_REJECTED.exec(rxdj); } else if (rxdj.getDj_sqzt() == 5200) { - RxdjToDoHandler.CREATE_SCHOOL_TASK.exec(rxdj); +// RxdjToDoHandler.CREATE_SCHOOL_TASK.exec(rxdj); + RxdjToDoHandler.COMPLETE_PROCESS.exec(rxdj); } return Result.success(); @@ -167,7 +222,7 @@ public class RxdjShController { RxdjToDoHandler.COMPLETE_SCHOOL_TASK.exec(rxdj); - if (List.of(5215,5218).contains(rxdj.getDj_sqzt())){ + if (List.of(5215, 5218).contains(rxdj.getDj_sqzt())) { RxdjToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(rxdj); } else if (rxdj.getDj_sqzt() == 5300) { RxdjToDoHandler.COMPLETE_PROCESS.exec(rxdj); @@ -194,8 +249,348 @@ public class RxdjShController { } return null; - } + /** + * 导出汇总表 + * + * @param year 年份 + * @param djlx 登记类型 + */ + @At + @Ok("void") + @RequiresPermissions(value = {"zgfw.rxdj.fghsh", "zgfw.rxdj.xghsh"}, logical = Logical.OR) + public void exportSummary(Integer year, String djlx, HttpServletResponse response) { + try { + NutMap docxMap = NutMap.NEW(); + Cnd cnd = Cnd.NEW(); + cnd.and("dj_year", "=", year); + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionZnrxAdmin")) { + cnd.and("dj_szfghid", "=", Vi.getUnionId()); + } + cnd.and("dj_djlx", "=", djlx); + cnd.and("applyType", "=", "rxdj"); + List list = dao.query(Fw_rxdj.class, cnd); + + List listMap = new ArrayList<>(); + + for (int i = 0; i < list.size(); i++) { + NutMap map = Lang.obj2nutmap(list.get(i)).addv("xh", i + 1); + map.put("jth", map.getBoolean("isCollectiveHouseholds", false) ? "是" : "否"); + listMap.add(map); + } + + docxMap.put("list", listMap); + + List schoolRegisterTypes = dictService.getSubListByCode("childrenSchoolRegisterType"); + String lxname = schoolRegisterTypes.stream().filter(x -> x.getCode().equals(djlx)).findFirst().map(v -> v.getName()).orElse(null); + docxMap.put("lxname", lxname); + docxMap.put("year", year); + docxMap.put("dw", Vi.getUnion().getUnionname()); + + HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); + Configure config = Configure.builder().bind("list", policy).build(); + + String fileName = year + "年江南大学集体户青年教职工子女报名就读" + lxname + "情况统计表"; + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); +// File file = new File("C:\\Users\\jug\\Desktop\\childrenSchool.docx"); + XWPFTemplate.compile(officeTemplateUtil.getPath("childrenSchool"), config).render(docxMap).writeAndClose(response.getOutputStream()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + @At + @Ok("void") + @RequiresPermissions(value = {"zgfw.rxdj.fghsh", "zgfw.rxdj.xghsh"}, logical = Logical.OR) + public void exportSummaryExcel(Integer year, String djlx, HttpServletResponse response) { + Map docxMap = new HashMap(); + Cnd cnd = Cnd.NEW(); + cnd.and("dj_year", "=", year); + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionZnrxAdmin")) { + cnd.and("dj_szfghid", "=", Vi.getUnionId()); + } + cnd.and("dj_djlx", "=", djlx); + cnd.and("applyType", "=", "rxdj"); + List list = dao.query(Fw_rxdj.class, cnd); + + List listMap = new ArrayList<>(); + + for (int i = 0; i < list.size(); i++) { + NutMap map = Lang.obj2nutmap(list.get(i)).addv("xh", i + 1); + map.put("jth", map.getBoolean("isCollectiveHouseholds", false) ? "是" : "否"); + map.put("zc_xl", map.getString("dj_zc") + "/" + map.getString("dj_xl")); + listMap.add(map); + } + + List schoolRegisterTypes = dictService.getSubListByCode("childrenSchoolRegisterType"); + String lxname = schoolRegisterTypes.stream().filter(x -> x.getCode().equals(djlx)).findFirst().map(v -> v.getName()).orElse(null); + + docxMap.put("maplist", listMap); + docxMap.put("lxname", lxname); + docxMap.put("year", year); + docxMap.put("dw", Vi.getUnion().getUnionname()); + + String fileName = year + "年江南大学集体户青年教职工子女报名就读" + lxname + "情况统计表"; + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); + +// List entityList = new ArrayList<>(); +// entityList.add(new ExcelExportEntity("序号", "xh", 10)); +// entityList.add(new ExcelExportEntity("青年教职工姓名", "dj_xm", 20)); +// entityList.add(new ExcelExportEntity("职称/学历", "zc_xl", 20)); +// entityList.add(new ExcelExportEntity("子女姓名", "dj_znname", 20)); +// entityList.add(new ExcelExportEntity("子女姓别", "dj_znsex", 20)); +// entityList.add(new ExcelExportEntity("子女出生年月", "dj_znzsny", 30)); +// entityList.add(new ExcelExportEntity("青年教职工家庭住址", "dj_jtzz", 50)); +// entityList.add(new ExcelExportEntity("青年教职工户口所在地派出所", "dj_hjssxq", 50)); +// entityList.add(new ExcelExportEntity("青年教职工联系电话", "dj_iphone", 20)); +// entityList.add(new ExcelExportEntity("是否集体户", "jth", 20)); +// entityList.add(new ExcelExportEntity("备注", "dj_babz", 30)); + try { + ViTool.excelResponse(response, year + "年江南大学集体户青年教职工子女报名就读" + lxname + "情况统计表.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); +// Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap); + Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(officeTemplateUtil.getPath("rxdjdc")), docxMap); + workbook.write(response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 校工会导出 + * + * @param year + * @param djlx + * @param response + */ + @At + @Ok("void") + @RequiresPermissions("zgfw.rxdj.xghsh") + public void exportSchoolUnionSummaryExcel(Integer year, String djlx, HttpServletResponse response) { + Map docxMap = new HashMap(); + Cnd cnd = Cnd.NEW(); + cnd.and("dj_year", "=", year); + cnd.and("dj_djlx", "=", djlx); + cnd.and("applyType", "=", "rxdj"); + List list = dao.query(Fw_rxdj.class, cnd); + + List listMap = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + NutMap map = Lang.obj2nutmap(list.get(i)).addv("xh", i + 1); + map.put("jth", map.getBoolean("isCollectiveHouseholds", false) ? "是" : "否"); + map.put("zc_xl", map.getString("dj_zc") + "/" + map.getString("dj_xl")); + listMap.add(map); + } + List schoolRegisterTypes = dictService.getSubListByCode("childrenSchoolRegisterType"); + String lxname = schoolRegisterTypes.stream().filter(x -> x.getCode().equals(djlx)).findFirst().map(v -> v.getName()).orElse(null); + + String fileName = year + "年江南大学集体户青年教职工子女报名就读" + lxname + "情况统计表"; + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); + + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("序号", "xh", 10)); + entityList.add(new ExcelExportEntity("青年教职工姓名", "dj_xm", 20)); + entityList.add(new ExcelExportEntity("工号", "dj_gzh", 20)); + entityList.add(new ExcelExportEntity("单位", "dj_szdw", 20)); + entityList.add(new ExcelExportEntity("分工会", "dj_szfgh", 20)); + entityList.add(new ExcelExportEntity("职称/学历", "zc_xl", 20)); + entityList.add(new ExcelExportEntity("子女姓名", "dj_znname", 20)); + entityList.add(new ExcelExportEntity("子女姓别", "dj_znsex", 20)); + entityList.add(new ExcelExportEntity("子女出生年月", "dj_znzsny", 30)); + entityList.add(new ExcelExportEntity("青年教职工家庭住址", "dj_jtzz", 50)); + entityList.add(new ExcelExportEntity("青年教职工户口所在地派出所", "dj_hjssxq", 50)); + entityList.add(new ExcelExportEntity("青年教职工联系电话", "dj_iphone", 20)); + entityList.add(new ExcelExportEntity("是否集体户", "jth", 20)); + entityList.add(new ExcelExportEntity("备注", "dj_babz", 30)); + try { + ViTool.excelResponse(response, year + "年江南大学集体户青年教职工子女报名就读" + lxname + "情况统计表.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap); + workbook.write(response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 管理员保存备注 + * + * @param fw_rxdj + * @return + */ + @At + @ViReturn + @RequiresPermissions("zgfw.rxdj.xghsh") + public Object adminSave(@Param("info") Fw_rxdj fw_rxdj) { + dao.update(fw_rxdj, "dj_babz"); + return null; + } + + + /** + * 通知未审核的分工会 + * + * @param sendTypes 发送方式 + * @param content 发送内容 + * @param year 年份 + * @return + */ + @At + @ViReturn + @RequiresRoles(value = {"sysadmin", "SchoolUnionAdmin", "SchoolUnionZnrxAdmin"}, logical = Logical.OR) + public Object confirmMsgBranchUnionAudit(@Param("sendTypes") String[] sendTypes, + @Param("content") String content, + @Param("year") Integer year) { + /*Sql sql = Sqls.create(""" + SELECT + u.username, + u.loginname + FROM + sys_user u + JOIN sys_user_role sur ON u.id = sur.userId + JOIN ( SELECT DISTINCT dj_szfghid FROM fw_rxdj WHERE YEAR ( dj_tbrq ) = @year AND dj_sqzt = 5100 ) AS subquery ON sur.unionid = subquery.dj_szfghid + WHERE + sur.roleid = '9c1f19e385914fef82bc35da7c9ded36'; + """); + sql.setParam("year", year); + List list = baseService.list(sql); + for (Record r : list) { + msgApi.sendMsg(content, "", "", "", "4", new ArrayList<>() {{ + add(NutMap.NEW().addv("userId", r.getString("loginname"))); + }}); + }*/ + return null; + } + + + /** + * 入学登记,模版下载 + * @param response + */ + @At + @Ok("void") + @RequiresRoles(value = {"sysadmin", "SchoolUnionAdmin", "SchoolUnionZnrxAdmin"}, logical = Logical.OR) + public void downloadImport(HttpServletResponse response){ + try { + ViTool.excelResponse(response, "导入模版.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + + Workbook sheets = ExcelExportUtil.exportExcel(exportParams, RxdjTemp.class, new ArrayList<>()); + ServletOutputStream outputStream = response.getOutputStream(); + sheets.write(outputStream); + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @At + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + @RequiresRoles(value = {"sysadmin", "SchoolUnionAdmin", "SchoolUnionZnrxAdmin"}, logical = Logical.OR) + public Object doImport(TempFile file, String djType, Integer year) { + try { + List rxdjTempList = ExcelImportUtil.importExcel(file.getFile(), RxdjTemp.class, new ImportParams()); + + List nowYearDjList = dao.query(Fw_rxdj.class, + Cnd.where("dj_year", "=", cn.hutool.core.date.DateUtil.thisYear()).and("dj_djlx","=",djType)); + + List unitList = dao.query(Sys_unit.class, Cnd.where("unitlevel", "=", 2)); + //单位map + Map unitMap = unitList.stream().collect(Collectors.toMap(Sys_unit::getName, Sys_unit::getId)); + + Sql sql = Sqls.create("select id,loginname,username,sex,unitid,unitname,unionid,unionname,education,jobTitle from `user` where member = 1"); + List userList = dictService.listMap(sql); + + Map userMap = userList.stream().collect(Collectors.toMap(v -> v.getString("loginname"), v -> v)); + + DateTime nowDate = cn.hutool.core.date.DateUtil.date(); + + //需要新增的 + List needInsertList = new ArrayList<>(); + + //只需要更改审核状态 + List needUpdateList = new ArrayList<>(); + + List errorInfos = new ArrayList<>(); + + rxdjTempList.forEach(v->{ + String unitId = unitMap.get(v.getDj_szdw()); + if (StrUtil.isBlank(unitId)) { + v.setRemark("获取不到填写的单位,请检查单位名称是否正确"); + errorInfos.add(v); + return; + } + NutMap user = userMap.get(v.getDj_gzh()); + if (Lang.isEmpty(user)){ + v.setRemark("获取不到该用户,请检查工号是否正确"); + errorInfos.add(v); + return; + } + + Fw_rxdj fwRxdj = nowYearDjList.stream().filter(item -> item.getDj_gzh().equals(v.getDj_gzh())) + .collect(Collectors.toList()).stream().findFirst().orElse(new Fw_rxdj()); + + if (StrUtil.isBlank(fwRxdj.getDj_id())) { + BeanUtils.copyProperties(v,fwRxdj); + fwRxdj.setDj_id(R.UU32()); + fwRxdj.setDj_year(year); + fwRxdj.setDj_szdwid(unitId); + fwRxdj.setDj_jzgid(user.getString("id")); + fwRxdj.setDj_szfgh(user.getString("unionname")); + fwRxdj.setDj_szfghid(user.getString("unionid")); + fwRxdj.setDj_zc(StrUtil.isNotBlank(fwRxdj.getDj_zc()) ? fwRxdj.getDj_zc() : user.getString("jobTitle")); + fwRxdj.setDj_xl(StrUtil.isNotBlank(fwRxdj.getDj_xl()) ? fwRxdj.getDj_xl() : user.getString("education")); + fwRxdj.setDj_iphone(StrUtil.isNotBlank(fwRxdj.getDj_iphone()) ? fwRxdj.getDj_iphone() : user.getString("mobile")); + fwRxdj.setApplyType("rxdj"); + fwRxdj.setIsCollectiveHouseholds("是".equals(v.getIsCollectiveHouseholds())); + fwRxdj.setDj_djlx(Convert.toInt(djType)); + fwRxdj.setDj_fghshyj("校工会批量导入,默认通过"); + fwRxdj.setDj_tbrq(nowDate); + fwRxdj.setDj_sqzt(5300); + needInsertList.add(fwRxdj); + } else { + if (fwRxdj.getDj_sqzt() != 5300){ + fwRxdj.setDj_sqzt(5300); + fwRxdj.setDj_fghshyj("校工会批量导入,默认通过"); + needUpdateList.add(fwRxdj); + } + } + }); + + if (Lang.isNotEmpty(needInsertList)) { + dao.fastInsert(needInsertList); + } + if (Lang.isNotEmpty(needUpdateList)) { + dao.updateIgnoreNull(needUpdateList); + } + + if (Lang.isNotEmpty(errorInfos)) { + NutMap nutMap = new NutMap(); + nutMap.setv("totalCount", rxdjTempList.size()); + nutMap.setv("successCount", needInsertList.size() + needUpdateList.size()); + nutMap.setv("errorCount", errorInfos.size()); + nutMap.setv("errorList", errorInfos.stream().map(v -> { + return NutMap.NEW().addv("工号", v.getDj_gzh()).addv("姓名", v.getDj_xm()).addv("错误原因", v.getRemark()); + }).collect(Collectors.toList())); + return Result.success(nutMap); + } + return Result.success(); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); + } + } + + + } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqController.java index 2d78aec..2f34222 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqController.java @@ -1,36 +1,29 @@ package io.v.nutz.zhgh.zgfw.controller.rxdj; -import cn.hutool.core.util.ArrayUtil; -import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.service.BaseService; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.service.ViService; +import io.v.nutz.base.utils.MsgApi; import io.v.nutz.sys.models.Sys_file; -import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.web.commons.slog.annotation.SLog; import io.v.nutz.zhgh.zgfw.handler.rxdj.RxdjToDoHandler; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; +import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj_year; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Cnd; -import org.nutz.dao.Sqls; -import org.nutz.dao.entity.Record; -import org.nutz.dao.sql.Sql; +import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; -import org.nutz.lang.Strings; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; -import org.nutz.trans.Trans; -import java.text.SimpleDateFormat; +import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; -import java.util.Map; /** @@ -53,6 +46,12 @@ public class RxdjSqController { @Inject private MsgApi msgApi; + @Inject + private Dao dao; + + @Inject("Sys_file") + private ViService fileViService; + @At("") @Ok("beetl:/platform/zgfw/rxdj/sq.html") @RequiresPermissions("sys.zgfw.rxdjsq") @@ -60,83 +59,92 @@ public class RxdjSqController { } - @At - public Object planStatus() { - try { - Sql sql = Sqls.create("select \n" + - "(SELECT nlxz FROM `fw_rxdj_year` where bmlx=1 and bmkqzt = 1 and DATE_SUB(curdate(),INTERVAL 0 DAY) BETWEEN bmkssj and bmjssj) as nlxz,\n" + - "(SELECT count(1) FROM `fw_rxdj_year` where bmlx=1 and bmkqzt = 1 and DATE_SUB(curdate(),INTERVAL 0 DAY) BETWEEN bmkssj and bmjssj) as yey,\n" + - "(SELECT count(1) FROM `fw_rxdj_year` where bmlx=2 and bmkqzt = 1 and DATE_SUB(curdate(),INTERVAL 0 DAY) BETWEEN bmkssj and bmjssj) as xx,\n" + - "(SELECT count(1) FROM `fw_rxdj_year` where bmlx=3 and bmkqzt = 1 and DATE_SUB(curdate(),INTERVAL 0 DAY) BETWEEN bmkssj and bmjssj) as cz"); - Record o = (Record) baseService.list(sql).get(0); - return o; - } catch (Exception e) { - return Result.error(); - } - } - - @At - @Ok("json") - public Object hasDJ(Fw_rxdj rxdj, String dwname, String zw, String mobile, String loginname) { - Cnd cnd = Cnd.where("dj_jzgid", "=", rxdj.getDj_jzgid()) - .and("dj_znname", "=", rxdj.getDj_znname()) - .and("dj_year", "=", new SimpleDateFormat("yyyy").format(new Date())) - .and("dj_sqzt", "in", List.of(5000, 5100, 5118, 5218)) - .and("applyType", "=", "rxdj"); - int count = baseService.count("fw_rxdj", cnd); - Fw_rxdj fw_rxdj = baseService.dao().fetch(Fw_rxdj.class, cnd); - if (Lang.isEmpty(fw_rxdj)) { - return Result.success(); - } - return Result.success().addData(Map.of("count", count, "dj_id", fw_rxdj.getDj_id())); - } - - @At - @ViReturn + @At("/include") + @Ok("beetl:/platform/zgfw/rxdj/apply_include.html") @RequiresPermissions("sys.zgfw.rxdjsq") - public Object doAdd(boolean flag, @Param("data") Fw_rxdj fw_rxdj, - @Param(value = "hkfile", required = false) Sys_file[] hkfile, - @Param(value = "csfile", required = false) Sys_file[] csfile, - @Param(value = "fcfile", required = false) Sys_file[] fcfile, - @Param(value = "qmkffile", required = false) Sys_file[] qmkffile, - @Param(value = "jszgfile", required = false) Sys_file[] jszgfile, - @Param(value = "pyhtfile", required = false) Sys_file[] pyhtfile) { - Trans.exec(() -> { - fw_rxdj.setDj_tbrfgh(Vi.getUnionId()); - fw_rxdj.setDj_tbrq(DateUtil.getDateTime()); - fw_rxdj.setDj_year(DateUtil.getYear().toString()); - fw_rxdj.setApplyType("rxdj"); - fw_rxdj.setDj_sfba(null); - fw_rxdj.setDj_sfrx(null); - if (!flag) { - baseService.insert(fw_rxdj); - } else { - if (Strings.isNotBlank(fw_rxdj.getDj_id())) { - fileViService.clear(Cnd.where("reid", "=", fw_rxdj.getDj_id())); - } - baseService.update(fw_rxdj); - } - Sys_file[] sys_files = ArrayUtil.addAll(hkfile, csfile, jszgfile, pyhtfile); - for (Sys_file file : sys_files) { - file.setReid(fw_rxdj.getDj_id()); - baseService.insert(file); - } + public void index2(HttpServletRequest request) { + String id = request.getParameter("id"); + request.setAttribute("id", request.getParameter("id")); + } + /** + * 本年入学计划 + * + * @return + */ + @At + @RequiresPermissions("sys.zgfw.rxdjsq") + @ViReturn + public Object schoolPlans() { + List plans = dao.query(Fw_rxdj_year.class, Cnd.where("bmyear", "=", cn.hutool.core.date.DateUtil.thisYear())); + return plans; + } - RxdjToDoHandler.START_PROCESS.exec(fw_rxdj); - RxdjToDoHandler.CREATE_UNION_TASK.exec(fw_rxdj); + /** + * 详情 + * + * @param id + * @return + */ + @At + @RequiresPermissions("sys.zgfw.rxdjsq") + @ViReturn + public Object findOne(String id) { + Fw_rxdj info = dao.fetch(Fw_rxdj.class, id); + return info; + } - }); + @At + @RequiresPermissions("sys.zgfw.rxdjsq") + @ViReturn + @SLog(type = "入学登记", tag = "登记", msg = "保存", param = true, result = true) + @Aop(TransAop.READ_COMMITTED) + public Object save(@Param("info") Fw_rxdj fw_rxdj) { + fw_rxdj.setDj_sqzt(5000); + fw_rxdj.setApplyType("rxdj"); + fw_rxdj.setDj_tbrq(new Date()); + fw_rxdj.setDj_year(cn.hutool.core.date.DateUtil.thisYear()); + dao.insertOrUpdate(fw_rxdj); + RxdjToDoHandler.START_PROCESS.exec(fw_rxdj); return null; } - @Inject("Sys_file") - private ViService fileViService; - @At + @RequiresPermissions("sys.zgfw.rxdjsq") @ViReturn - public Object getZnxxByJzgId() { - return baseService.dao().query(Fw_rxdj.class, Cnd.where("dj_jzgid", "=", ShiroUtil.getUserId()).and("applyType", "=", "znxx")); + @SLog(type = "入学登记", tag = "登记", msg = "提交", param = true, result = true) + @Aop(TransAop.READ_COMMITTED) + public Object submit(@Param("info") Fw_rxdj fw_rxdj) { + fw_rxdj.setDj_sqzt(5100); + fw_rxdj.setApplyType("rxdj"); + fw_rxdj.setDj_tbrq(new Date()); + fw_rxdj.setDj_year(cn.hutool.core.date.DateUtil.thisYear()); + dao.insertOrUpdate(fw_rxdj); + + RxdjToDoHandler.START_PROCESS.exec(fw_rxdj); + RxdjToDoHandler.CREATE_UNION_TASK.exec(fw_rxdj); + +// String unionId = fw_rxdj.getDj_szfghid(); +// Sql sql = Sqls.create(""" +// SELECT +// u.username, +// u.loginname\s +// FROM +// sys_user_role sur +// LEFT JOIN sys_user u ON u.id = sur.userId\s +// WHERE +// sur.roleid = '5d342e614e9a48288d50154bcdcc75d3'\s +// AND sur.unionid = @unionId +// """); +// sql.setParam("unionId", unionId); +// NutMap userMap = fileViService.fetch(sql); +// if (Lang.isNotEmpty(userMap)) { +// String msg = "您好!" + fw_rxdj.getDj_xm() + "老师申请一条子女入学登记,请您登录智慧工会系统进行审核。"; +// msgApi.sendMsg(msg, "", "", "", "4", new ArrayList<>() {{ +// add(NutMap.NEW().addv("userId", userMap.getString("loginname"))); +// }}); +// } + return null; } } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqxxController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqxxController.java index e13a1f7..17f3705 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqxxController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjSqxxController.java @@ -1,18 +1,25 @@ package io.v.nutz.zhgh.zgfw.controller.rxdj; -import cn.hutool.core.util.ArrayUtil; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; import cn.wizzer.framework.base.service.BaseService; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.utils.ViTool; +import io.v.nutz.sys.models.Sys_dict; import io.v.nutz.sys.models.Sys_file; +import io.v.nutz.sys.services.SysDictService; import io.v.nutz.web.commons.base.Globals; +import io.v.nutz.web.commons.utils.FileUtil; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.handler.rxdj.RxdjToDoHandler; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; +import org.apache.commons.io.IOUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Cnd; @@ -21,14 +28,23 @@ import org.nutz.dao.entity.Record; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.Strings; +import org.nutz.lang.random.R; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; -import org.nutz.trans.Trans; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.net.URLEncoder; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * TODO @@ -50,6 +66,9 @@ public class RxdjSqxxController { @Inject private FtpService ftpService; + @Inject + private SysDictService sysDictService; + @At("") @Ok("beetl:/platform/zgfw/rxdj/sqxx.html") @RequiresPermissions("sys.zgfw.rxdjxx") @@ -63,7 +82,9 @@ public class RxdjSqxxController { @RequiresPermissions("sys.zgfw.rxdjxx") public Object pageData(@Param(value = "year", required = false) Integer year, @Param(value = "unionId", required = false) String unionId, - @Param(value = "unitId", required = false) String unitId, PageForm pageForm) { + @Param(value = "unitId", required = false) String unitId, + @Param(value = "djlx", required = false) String djlx, + PageForm pageForm) { Sql sql = Sqls.create(""" SELECT dj.*, @@ -81,6 +102,7 @@ public class RxdjSqxxController { CndPlus cndPlus = CndPlus.create(); cndPlus.andEX("dj.dj_year", "=", year); cndPlus.andEX("dj.applyType", "=", "rxdj"); + cndPlus.andEX("dj.dj_djlx", "=", djlx); cndPlus.andEX("u.unionid", "=", unionId); cndPlus.andEX("u.unitid", "=", unitId); if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) { @@ -144,45 +166,6 @@ public class RxdjSqxxController { return Result.success().addData(nutMap); } - @At - @ViReturn - @RequiresPermissions("sys.zgfw.rxdjxx") - public Object doEdit(boolean flag, @Param("data") Fw_rxdj fw_rxdj, - @Param(value = "hkfile", required = false) Sys_file[] hkfile, - @Param(value = "csfile", required = false) Sys_file[] csfile, - @Param(value = "fcfile", required = false) Sys_file[] fcfile, - @Param(value = "qmkffile", required = false) Sys_file[] qmkffile, - @Param(value = "jszgfile", required = false) Sys_file[] jszgfile, - @Param(value = "pyhtfile", required = false) Sys_file[] pyhtfile) { - Trans.exec(() -> { - fw_rxdj.setDj_year(DateUtil.getYear().toString()); - fw_rxdj.setDj_tbrq(DateUtil.getDateTime()); - fw_rxdj.setDj_tbrfgh(Vi.getUnionId()); - fw_rxdj.setApplyType("rxdj"); - fw_rxdj.setDj_sfba(null); - fw_rxdj.setDj_sfrx(null); - fw_rxdj.setDj_sqzt(flag ? 5100 : 5000); - baseService.update(fw_rxdj); - - baseService.dao().clear(Sys_file.class, Cnd.where("reid", "=", fw_rxdj.getDj_id()).and("bz", "is not", null)); - Sys_file[] sys_files = ArrayUtil.addAll(hkfile, csfile, pyhtfile, jszgfile); - for (Sys_file file : sys_files) { - file.setReid(fw_rxdj.getDj_id()); - baseService.insert(file); - } - - RxdjToDoHandler.START_PROCESS.exec(fw_rxdj); - RxdjToDoHandler.CREATE_UNION_TASK.exec(fw_rxdj); - if (List.of(5115,5215).contains(fw_rxdj.getDj_sqzt())){ - RxdjToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(fw_rxdj); - } - - }); - - return null; - - } - @At public Object findfjList(String id) { List fjList = baseService.list(Sqls.create("select CONCAT('" + Globals.AppFileDomain + "',filepath) as url,filepath,filename,filepath id,bz from sys_file where reid = @id").setParam("id", id)); @@ -208,4 +191,168 @@ public class RxdjSqxxController { } + /** + * 导出汇总表 + * @param year + * @param djlx + * @param searchName + * @param searchKeyword + * @param response + */ + @At + @Ok("void") + @RequiresPermissions("sys.zgfw.rxdjxx") + public void doExportExcel(@Param(value = "year",required = false) Integer year, + @Param(value = "djlx",required = false) String djlx, + @Param(value = "searchName",required = false) String searchName, + @Param(value = "searchKeyword",required = false) String searchKeyword, + HttpServletResponse response){ + Sql sql = Sqls.create("SELECT * FROM fw_rxdj $condition"); + Cnd cnd = Cnd.NEW(); + cnd.and("dj_year", "=", year); + cnd.andEX("dj_djlx", "=", djlx); + cnd.and("applyType", "=", "rxdj"); + if (StrUtil.isNotBlank(searchName) && StrUtil.isNotBlank(searchKeyword)) { + cnd.and(searchName, "like", "%" + searchKeyword + "%"); + } + sql.setCondition(cnd); + List list = sysDictService.listMap(sql); + List childrenSchoolRegisterType = sysDictService.getSubListByCode("childrenSchoolRegisterType"); + Map rxdjTypeMap = childrenSchoolRegisterType.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName)); + + list.forEach(v->{ + String djName = rxdjTypeMap.get(v.getString("dj_djlx")); + v.put("jth", v.getBoolean("isCollectiveHouseholds", false) ? "是" : "否"); + v.put("zc_xl", v.getString("dj_zc") + "/" + v.getString("dj_xl")); + v.put("djName",djName); + }); + + List entityList = new ArrayList<>(); + ExcelExportEntity no = new ExcelExportEntity("序号", "no", 10); + no.setFormat("isAddIndex"); + entityList.add(no); + entityList.add(new ExcelExportEntity("青年教职工姓名", "dj_xm", 20)); + entityList.add(new ExcelExportEntity("登记类型", "djName", 20)); + entityList.add(new ExcelExportEntity("工号", "dj_gzh", 20)); + entityList.add(new ExcelExportEntity("单位", "dj_szdw", 20)); + entityList.add(new ExcelExportEntity("分工会", "dj_szfgh", 20)); + entityList.add(new ExcelExportEntity("职称/学历", "zc_xl", 20)); + entityList.add(new ExcelExportEntity("子女姓名", "dj_znname", 20)); + entityList.add(new ExcelExportEntity("子女姓别", "dj_znsex", 20)); + entityList.add(new ExcelExportEntity("子女出生年月", "dj_znzsny", 30)); + entityList.add(new ExcelExportEntity("青年教职工家庭住址", "dj_jtzz", 50)); + entityList.add(new ExcelExportEntity("青年教职工户口所在地派出所", "dj_hjssxq", 50)); + entityList.add(new ExcelExportEntity("青年教职工联系电话", "dj_iphone", 20)); + entityList.add(new ExcelExportEntity("是否集体户", "jth", 20)); + entityList.add(new ExcelExportEntity("备注", "dj_babz", 30)); + + try { + ViTool.excelResponse(response, year + "年江南大学集体户青年教职工子女报名就读情况统计表.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list); + workbook.write(response.getOutputStream()); + } catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 导出附件信息 + * @param year + * @param djlx + * @param searchName + * @param searchKeyword + * @param response + */ + @At + @Ok("void") + @RequiresPermissions("sys.zgfw.rxdjxx") + public void doExportEnclosure(@Param(value = "year",required = false) Integer year, + @Param(value = "djlx",required = false) String djlx, + @Param(value = "searchName",required = false) String searchName, + @Param(value = "searchKeyword",required = false) String searchKeyword, + HttpServletResponse response){ + Cnd cnd = Cnd.NEW(); + cnd.and("dj_year", "=", year); + cnd.andEX("dj_djlx", "=", djlx); + cnd.and("applyType", "=", "rxdj"); + if (StrUtil.isNotBlank(searchName) && StrUtil.isNotBlank(searchKeyword)) { + cnd.and(searchName, "like", "%" + searchKeyword + "%"); + } + cnd.and("files","is not",null); + cnd.and("files","!=","[]"); + + List list = baseService.dao().query(Fw_rxdj.class, cnd); + + if (Lang.isEmpty(list))return; + + Map> loginNameDjMap = list.stream().collect(Collectors.groupingBy(v -> v.getDj_gzh())); + + try { + + /** + * 创建临时文件夹 + */ + String tmpPath = "tmp/" + R.UU32(); + File tmpDir = new File(tmpPath + "/江南大学集体户青年教职工子女报名就读情况附件汇总"); + tmpDir.mkdirs(); + + loginNameDjMap.forEach((k,v)->{ + Fw_rxdj fwRxdj = v.stream().findFirst().orElse(null); + /** + * 创建临时文件夹 + */ + String fileName = fwRxdj.getDj_xm() + "(" + k + ")附件信息"; + File tDir = new File(tmpDir + "/" + fileName); + tDir.mkdirs(); + + List fileList = v.stream().flatMap(item -> item.getFiles().stream()).collect(Collectors.toList()); + + for (Sys_file file : fileList) { + try { + FileOutputStream outputStream = new FileOutputStream(tDir.getPath() + "/" + file.getFilename()); + ftpService.download(file.getFilepath(), outputStream); + outputStream.close(); + }catch (Exception e){ + e.printStackTrace(); + } + } + + }); + + String aimsDir = "zipTmp/" + R.UU32(); + String aimsName = year + "年江南大学集体户青年教职工子女报名就读情况附件汇总.zip"; + String aimsPath = aimsDir + "/" + aimsName; + FileUtil.compressToZip(tmpDir.getPath(), aimsDir, aimsName); + + response.setHeader("content-disposition", "attachment;filename=" + + URLEncoder.encode(aimsName, "UTF-8")); + + File aimsFile = new File(aimsPath); + FileInputStream inputStream = new FileInputStream(aimsFile); + IOUtils.copy(inputStream, response.getOutputStream()); + inputStream.close(); + aimsFile.delete(); + + FileUtil.deleteDir(new File(tmpPath)); + FileUtil.deleteDir(new File(aimsDir)); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 校验是否有附件 + * @return + */ + @At + @RequiresPermissions("sys.zgfw.rxdjxx") + public Object hasFiles() { + int count = baseService.dao().count(Fw_rxdj.class, Cnd.where("files", "is not", null).and("files", "!=", "[]")); + return count > 0 ? Result.success() : Result.error(); + } } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjZhcxController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjZhcxController.java index 3b472a5..97f5305 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjZhcxController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/RxdjZhcxController.java @@ -6,15 +6,15 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ZipUtil; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.dao.CndPlus; +import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.BaseService; import io.v.nutz.base.utils.OfficeTemplateUtil; import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.dao.CndPlus; -import io.v.nutz.base.query.PageForm; -import io.v.nutz.sys.models.Sys_file; -import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.base.utils.ViTool; +import io.v.nutz.sys.models.Sys_file; import io.v.nutz.web.commons.base.Globals; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; import org.apache.commons.io.FileUtils; import org.apache.commons.net.ftp.FTPClient; @@ -264,7 +264,7 @@ public class RxdjZhcxController { imageType = "学历学位证或教师资格证" + (i + 1); } String fullFileName = v.getString("username") + "(" + v.getString("loginname") + ")" + imageType; - String extName = cn.hutool.core.io.FileUtil.extName(sysFile.getFilename()); + String extName = FileUtil.extName(sysFile.getFilename()); FileOutputStream outputStream = new FileOutputStream(userNamePath.toAbsolutePath() + "\\" + fullFileName + "." + extName); ftpService.download(sysFile.getFilepath(), outputStream); outputStream.close(); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/mobile/ZgfwJzgznrxdjMobileController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/mobile/ZgfwJzgznrxdjMobileController.java index cbfdc16..dbea6ad 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/mobile/ZgfwJzgznrxdjMobileController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/rxdj/mobile/ZgfwJzgznrxdjMobileController.java @@ -7,9 +7,8 @@ package io.v.nutz.zhgh.zgfw.controller.rxdj.mobile; import cn.hutool.core.util.ArrayUtil; import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.service.ViService; +import io.v.nutz.base.utils.MsgApi; import io.v.nutz.sys.models.Sys_file; import io.v.nutz.sys.services.SysUserService; import io.v.nutz.web.commons.utils.ShiroUtil; @@ -138,38 +137,6 @@ public class ZgfwJzgznrxdjMobileController { @Inject private MsgApi msgApi; - @At - @Ok("json") - @ViReturn - public Object doSubmit(boolean flag, @Param("data") Fw_rxdj jzgznbmdj, - @Param(value = "hkfile", required = false) Sys_file[] hkfile, - @Param(value = "csfile", required = false) Sys_file[] csfile, - @Param(value = "fcfile", required = false) Sys_file[] fcfile, - @Param(value = "jszgfile", required = false) Sys_file[] jszgfile, - @Param(value = "pyhtfile", required = false) Sys_file[] pyhtfile, - @Param(value = "qmkffile", required = false) Sys_file[] qmkffile) { - Trans.exec(() -> { - try { - jzgznbmdj.setDj_sqzt(flag ? 5100 : 5000); - jzgznbmdj.setDj_sfbc(1); - jzgznbmdj.setApplyType("rxdj"); - jzgznbmdj.setDj_year(DateUtil.getYear().toString()); - jzgznbmdj.setDj_tbrq(DateUtil.getDateTime()); - Fw_rxdj insert = jzgznbmdjService.insert(jzgznbmdj); - Sys_file[] sys_files = ArrayUtil.addAll(hkfile, csfile, pyhtfile, jszgfile); - saveFiles(sys_files, insert.getDj_id()); - /* Sys_user_role userRole = sysUserService.dao().fetch(Sys_user_role.class, Cnd.where("roleid", "=", Roles.UNION_MANGER).and("unionid", "=", Vi.getUnionId())); - Sys_user user = sysUserService.dao().fetch(Sys_user.class, Cnd.where("id", "=", userRole.getUserId())); - String content = "您有一条“%s”老师提交的“%s”的摸底信息,请审核!".formatted(io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("username"), jzgznbmdj.getDj_djlx().equals(2) ? "幼升小" : "小学"); -// msgApi.pushWeChatMsg("子女入学登记通知", content, user.getLoginname());*/ - } catch (Exception e) { - e.printStackTrace(); - } - }); - return null; - } - - @At @Ok("json") @ViReturn diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/readingPublicityController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/readingPublicityController.java index 7f2dd35..51291b6 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/readingPublicityController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/readingPublicityController.java @@ -3,37 +3,29 @@ package io.v.nutz.zhgh.zgfw.controller.singleChild; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.ViService; import io.v.nutz.base.utils.ViTool; -import io.v.nutz.sys.models.Sys_file; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChild; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChildStateEnum; import lombok.Data; import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; /** * @author zhf @@ -58,7 +50,10 @@ public class readingPublicityController { @At @ViReturn - public Object pageData(String unitId, Integer year, String unionId, PageForm page) { + @RequiresPermissions("fw.singleChild.reading") + public Object pageData(@Param(value = "unitId",required = false) String unitId, + @Param(value = "year",required = false) Integer year, + @Param(value = "unionId",required = false) String unionId, PageForm page) { CndPlus cnd = CndPlus.create(); Sql sql = Sqls.create(""" SELECT @@ -107,8 +102,10 @@ public class readingPublicityController { @At @ViReturn @Ok("void") - public void export(String unitId, Integer year, String unionId, HttpServletResponse response) throws IOException { - + @RequiresPermissions("fw.singleChild.reading") + public void export(@Param(value = "unitId",required = false) String unitId, + @Param(value = "year",required = false) Integer year, + @Param(value = "unionId",required = false) String unionId, HttpServletResponse response) throws IOException { CndPlus cnd = CndPlus.create(); Sql sql = Sqls.create(""" SELECT @@ -125,7 +122,7 @@ public class readingPublicityController { cnd.andEX("u.unionid", "=", unionId); cnd.andEX("u.unitid", "=", unitId); cnd.andEX("YEAR(sc.sqsj)", "=", year); - cnd.and("sc.state", "=", SingleChildStateEnum.XGHTG.getStateCode()); + cnd.and("sc.state", "=", SingleChildStateEnum.XGHTG.getStateCode()); sql.setCondition(cnd); List singles = singleChildViService.listEntity(sql, single.class); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/reportController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/reportController.java index 9fa77a8..1f442cb 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/reportController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/reportController.java @@ -8,28 +8,23 @@ import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.ViService; import io.v.nutz.base.utils.DateUtil; import io.v.nutz.sys.models.Sys_file; -import io.v.nutz.sys.models.Sys_local_process_instance; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.handler.singleChild.SingleChildToDoHandler; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChild; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChildStateEnum; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.FieldFilter; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.Daos; -import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import java.util.Calendar; -import java.util.List; /** * @author zhf @@ -38,7 +33,6 @@ import java.util.List; */ @At("/platform/fw/singleChild/report") @IocBean -@RequiresAuthentication @Ok("json:full") public class reportController { @@ -61,7 +55,8 @@ public class reportController { @At @ViReturn - public Object pageData(PageForm page, String year) { + @RequiresPermissions("fw.singleChild.report") + public Object pageData(PageForm page, @Param(value = "year",required = false) String year) { CndPlus cnd = CndPlus.create(); Sql sql = Sqls.create(""" SELECT @@ -86,7 +81,7 @@ public class reportController { @At @ViReturn - @Aop(TransAop.READ_COMMITTED) + @RequiresPermissions("fw.singleChild.report") public Object doAdd(SingleChild singleChild) { String userid = (String) ShiroUtil.getPrincipalProperty("id"); int currentYear = Calendar.getInstance().get(Calendar.YEAR); @@ -98,29 +93,22 @@ public class reportController { singleChild.setSqsj(DateUtil.getDate()); singleChild.setState(SingleChildStateEnum.DFGHSH.getStateCode()); singleChildViService.insert(singleChild); - SingleChildToDoHandler.START_PROCESS.exec(singleChild, null); - SingleChildToDoHandler.CREATE_UNION_TASK.exec(singleChild, null); return null; } @At @ViReturn + @RequiresPermissions("fw.singleChild.report") public Object doEdit(SingleChild singleChild) { //拒绝之后的修改重新改状态 - if (List.of(SingleChildStateEnum.FGHTHDXG.getStateCode(), SingleChildStateEnum.XGHTH.getStateCode()).contains(singleChild.getState())) { + if (singleChild.getState().equals(SingleChildStateEnum.FGHTHDXG.getStateCode())) { singleChild.setFghshr(null); singleChild.setFghshsj(null); singleChild.setFghshyj(null); singleChild.setXghshyj(null); singleChild.setXghshsj(null); singleChild.setXghshyj(null); - - int count = singleChildViService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "singleChild_apply@" + singleChild.getId())); - if (count > 0) { - singleChild.setState(SingleChildStateEnum.DFGHSH.getStateCode()); - SingleChildToDoHandler.COMPLETE_APPLY_RE_MODIFY_TASK.exec(singleChild, "退回后重新申请"); - SingleChildToDoHandler.CREATE_UNION_TASK.exec(singleChild, null); - } + singleChild.setState(SingleChildStateEnum.DFGHSH.getStateCode()); } return singleChildViService.update(singleChild); } @@ -128,6 +116,7 @@ public class reportController { @At @ViReturn + @RequiresPermissions("fw.singleChild.report") public Object findOne(String id) { Sql sql = Sqls.create(""" SELECT @@ -153,6 +142,7 @@ public class reportController { @At @ViReturn + @RequiresPermissions("fw.singleChild.report") public Object doDelete(String id) { singleChildViService.delete(id); return null; @@ -168,6 +158,7 @@ public class reportController { @At @ViReturn @Ok("json") + @RequiresPermissions("fw.singleChild.report") public Object getCert(String childName) { FieldFilter fieldFilter = FieldFilter.create(SingleChild.class, "sex|bzsj|cssj|files"); Dao ext = Daos.ext(dao, fieldFilter); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/schoolUnionController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/schoolUnionController.java index b8467b0..74ecc42 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/schoolUnionController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/schoolUnionController.java @@ -7,24 +7,20 @@ import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.ViService; import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.Vi; -import io.v.nutz.sys.models.Sys_local_process_instance; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.handler.singleChild.SingleChildToDoHandler; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChild; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChildStateEnum; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; 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.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @author zhf @@ -34,7 +30,6 @@ import org.nutz.mvc.annotation.Ok; @At("/platform/fw/singleChild/school") @IocBean -@RequiresAuthentication @Ok("json:full") public class schoolUnionController { @@ -54,7 +49,11 @@ public class schoolUnionController { @At @ViReturn - public Object pageData(String unitId, String unionId, Integer isAudit, Integer year, PageForm page) { + @RequiresPermissions("fw.singleChild.school") + public Object pageData(@Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, + @Param(value = "isAudit",required = false) Integer isAudit, + @Param(value = "year",required = false) Integer year, PageForm page) { CndPlus cnd = CndPlus.create(); Sql sql = Sqls.create(""" SELECT @@ -102,36 +101,16 @@ public class schoolUnionController { @At @ViReturn - @Aop(TransAop.READ_COMMITTED) + @RequiresPermissions("fw.singleChild.school") public Object doReview(SingleChild singleChild, Integer result) { - - String nodeName = ""; - if (result == -1) { - nodeName = SingleChildStateEnum.XGHTH.getStateName(); - singleChild.setState(SingleChildStateEnum.XGHTH.getStateCode()); - } else if (result == 0) { - nodeName = SingleChildStateEnum.XGHJJ.getStateName(); - singleChild.setState(SingleChildStateEnum.XGHJJ.getStateCode()); - } else if (result == 1) { - nodeName = SingleChildStateEnum.XGHTG.getStateName(); - singleChild.setState(SingleChildStateEnum.XGHTG.getStateCode()); + switch (result) { + case -1 -> singleChild.setState(SingleChildStateEnum.XGHTH.getStateCode()); + case 0 -> singleChild.setState(SingleChildStateEnum.XGHJJ.getStateCode()); + case 1 -> singleChild.setState(SingleChildStateEnum.XGHTG.getStateCode()); } singleChild.setXghshr((String) ShiroUtil.getPrincipalProperty("id")); singleChild.setXghshsj(DateUtil.getDateTime()); singleChildViService.updateIgnoreNull(singleChild); - SingleChild child = singleChildViService.fetch(singleChild.getId()); - - int count = singleChildViService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "singleChild_apply@" + singleChild.getId())); - if (count > 0) { - SingleChildToDoHandler.COMPLETE_SCHOOL_TASK.exec(child, nodeName); - if (result == 1) { - SingleChildToDoHandler.COMPLETE_PROCESS.exec(child, null); - } else if (result == -1) { - SingleChildToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(child, nodeName); - } else if (result == 0) { - SingleChildToDoHandler.REFUSE_TASK.exec(child, nodeName); - } - } return null; } @@ -143,6 +122,7 @@ public class schoolUnionController { */ @At("/doRollBack/?") @ViReturn + @RequiresPermissions("fw.singleChild.school") public Object doRollBack(String id) { Chain chain = Chain.make("state", SingleChildStateEnum.DXGHSH.getStateCode()); chain.add("xghshr", null); @@ -162,6 +142,7 @@ public class schoolUnionController { */ @At @ViReturn + @RequiresPermissions("fw.singleChild.school") public Object batchPass(String[] ids) { Chain chain = Chain.make("state", SingleChildStateEnum.XGHTG.getStateCode()); chain.add("xghshr", ShiroUtil.getPrincipalProperty("id")); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/singleChildAgentController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/singleChildAgentController.java index bdb5c0d..9a50481 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/singleChildAgentController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/singleChildAgentController.java @@ -1,20 +1,13 @@ package io.v.nutz.zhgh.zgfw.controller.singleChild; -import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.DateUtil; -import io.v.nutz.base.utils.Vi; -import io.v.nutz.base.dao.CndPlus; -import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.ViService; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChild; -import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChildStateEnum; -import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; -import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; @@ -42,8 +35,8 @@ public class singleChildAgentController { @Inject("SingleChild") private ViService singleChildViService; - private static final String SUB = "/platform/zgfw/singleChild/sub"; - private static final String SCHOOL = "/platform/zgfw/singleChild/school"; + private static final String SUB = "/platform/fw/singleChild/sub"; + private static final String SCHOOL = "/platform/fw/singleChild/school"; @At diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/subController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/subController.java index cfc6a5d..36ca0d1 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/subController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/singleChild/subController.java @@ -7,23 +7,18 @@ import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.ViService; import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.Vi; -import io.v.nutz.sys.models.Sys_local_process_instance; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.handler.singleChild.SingleChildToDoHandler; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChild; import io.v.nutz.zhgh.zgfw.model.singleChild.SingleChildStateEnum; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.nutz.aop.interceptor.ioc.TransAop; -import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; -import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; /** * @author zhf @@ -33,7 +28,6 @@ import org.nutz.mvc.annotation.Ok; @At("/platform/fw/singleChild/sub") @IocBean -@RequiresAuthentication @Ok("json:full") public class subController { @@ -50,7 +44,11 @@ public class subController { @At @ViReturn - public Object pageData(String unitId, String unionId, Integer isAudit, PageForm page, Integer year) { + @RequiresPermissions("fw.singleChild.sub") + public Object pageData(@Param(value = "unitId",required = false) String unitId, + @Param(value = "unionId",required = false) String unionId, + @Param(value = "isAudit",required = false) Integer isAudit, + PageForm page, @Param(value = "year",required = false) Integer year) { CndPlus cnd = CndPlus.create(); Sql sql = Sqls.create(""" SELECT @@ -99,38 +97,16 @@ public class subController { @At @ViReturn - @Aop(TransAop.READ_COMMITTED) + @RequiresPermissions("fw.singleChild.sub") public Object doReview(SingleChild singleChild, Integer result) { - - String nodeName = ""; - if (result == -1) { - nodeName = SingleChildStateEnum.FGHTHDXG.getStateName(); - singleChild.setState(SingleChildStateEnum.FGHTHDXG.getStateCode()); - } else if (result == 0) { - nodeName = SingleChildStateEnum.FGHJJ.getStateName(); - singleChild.setState(SingleChildStateEnum.FGHJJ.getStateCode()); - } else if (result == 1) { - nodeName = SingleChildStateEnum.DXGHSH.getStateName(); - singleChild.setState(SingleChildStateEnum.DXGHSH.getStateCode()); + switch (result) { + case -1 -> singleChild.setState(SingleChildStateEnum.FGHTHDXG.getStateCode()); + case 0 -> singleChild.setState(SingleChildStateEnum.FGHJJ.getStateCode()); + case 1 -> singleChild.setState(SingleChildStateEnum.DXGHSH.getStateCode()); } singleChild.setFghshr((String) ShiroUtil.getPrincipalProperty("id")); singleChild.setFghshsj(DateUtil.getDateTime()); singleChildViService.updateIgnoreNull(singleChild); - SingleChild child = singleChildViService.fetch(singleChild.getId()); - - int count = singleChildViService.dao().count(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "singleChild_apply@" + singleChild.getId())); - if (count > 0) { - SingleChildToDoHandler.COMPLETE_UNION_TASK.exec(child, nodeName); - if (result == 1) { - SingleChildToDoHandler.CREATE_SCHOOL_TASK.exec(child, null); - } else if (result == -1) { - SingleChildToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(child, nodeName); - } else if (result == 0) { - SingleChildToDoHandler.REFUSE_TASK.exec(child, nodeName); - } - } - - return null; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/controller/znxx/ZnxxStatisticsController.java b/src/main/java/io/v/nutz/zhgh/zgfw/controller/znxx/ZnxxStatisticsController.java index 2c19677..8d1746d 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/controller/znxx/ZnxxStatisticsController.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/controller/znxx/ZnxxStatisticsController.java @@ -6,10 +6,10 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.hutool.core.date.DateUtil; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.annontation.ViReturn; -import io.v.nutz.base.utils.MsgApi; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.ViService; +import io.v.nutz.base.utils.MsgApi; +import io.v.nutz.base.utils.Vi; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; import org.apache.poi.ss.usermodel.Workbook; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/handler/condolence/CondolenceToDoHandler.java b/src/main/java/io/v/nutz/zhgh/zgfw/handler/condolence/CondolenceToDoHandler.java index 842c64c..441fb00 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/handler/condolence/CondolenceToDoHandler.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/handler/condolence/CondolenceToDoHandler.java @@ -1,17 +1,13 @@ package io.v.nutz.zhgh.zgfw.handler.condolence; -import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.ViResource; -import io.v.nutz.sys.models.User; import io.v.nutz.sys.services.SysLocalProcessService; import io.v.nutz.sys.services.impl.SysLocalProcessServiceImpl; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; -import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.CondolenceService; import io.v.nutz.zhgh.zgfw.service.impl.CondolenceServiceImpl; import lombok.Getter; -import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; @@ -19,6 +15,7 @@ import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import java.util.List; +import java.util.stream.Collectors; @Getter public enum CondolenceToDoHandler { @@ -29,82 +26,108 @@ public enum CondolenceToDoHandler { */ START_PROCESS() { @Override - public void exec(Condolence condolence, String nodeName) { - User user = dao.fetch(User.class, Cnd.where("id", "=", condolence.getManager())); -// Sql sql = Sqls.fetchString(Sqls.create("select username from sys_user where id = @id").setParam("id", condolence.getManager()).toString()); -// dao.execute(sql); -// String username = sql.getString(); + public void exec(Condolence condolence, String option) { + Sql sql = Sqls.fetchString(Sqls.create("select username from sys_user where id = @id").setParam("id", condolence.getManager()).toString()); + dao.execute(sql); + String username = sql.getString(); localProcessService.startProcess( - user.getUnionname() + "(" +user.getUsername() + ")老师【日常慰问】申请", + "【慰问】" + username, "condolence_apply@" + condolence.getId(), "", condolence.getManager(), - "/platform/fw/condolence", - "/platform/fw/condolence" + "/platform/fw/condolence/myList", + "/platform/fw/condolence/myList" ); } }, - /** - * 审核拒绝 - */ - REFUSE_UNION_TASK() { - @Override - public void exec(Condolence condolence, String nodeName) { - localProcessService.refuseProcess("condolence_apply@" + condolence.getId(),nodeName); - } - }, - - /** * 审核退回,重新修改申请 */ CREATE_APPLY_RE_MODIFY_TASK() { @Override - public void exec(Condolence condolence, String nodeName) { + public void exec(Condolence condolence, String option) { Sql sql = Sqls.fetchString(Sqls.create("select loginname from sys_user where id = @id").setParam("id", condolence.getManager()).toString()); dao.execute(sql); String loginname = sql.getString(); + String desc = "重新修改申请"; + localProcessService.createTask( "condolence_apply@" + condolence.getId(), - "audit_back", - nodeName, + "apply_re_modify", + desc, ShiroUtil.getUserId(), List.of(loginname), - "/platform/fw/condolence", - "/platform/fw/condolence", - "/platform/fw/condolence", - "/platform/fw/condolence" + "/platform/fw/condolence/myList", + "/platform/fw/condolence/myList", + "/platform/fw/condolence/myList", + "/platform/fw/condolence/myList" ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), nodeName); + localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), desc); } }, /** - * 审核退回后完成 + * 修改完成 */ COMPLETE_APPLY_RE_MODIFY_TASK() { @Override - public void exec(Condolence condolence, String nodeName) { + public void exec(Condolence condolence, String option) { localProcessService.completeTask( - "audit_back", + "apply_re_modify", "condolence_apply@" + condolence.getId(), ShiroUtil.getUserId(), - nodeName + option ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), nodeName); } }, + /** + * 校工会主席退回,退回给校工会节点 + */ + CREATE_BACK_SCHOOL_TASK() { + @Override + public void exec(Condolence condolence, String option) { + List schoolUnionCondolenceAdmin = condolenceService.getSchoolUnionCondolenceAdmin(); + + localProcessService.createTask( + "condolence_apply@" + condolence.getId(), + "school_leader_back", + "校工会主席退回", + ShiroUtil.getUserId(), + schoolUnionCondolenceAdmin, + "/platform/fw/condolence/fr", + "/platform/fw/condolence/fr", + "/platform/fw/condolence/fr", + "/platform/fw/condolence/fr" + ); + localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), "校工会主席退回"); + } + }, + + /** + * 校工会主席完成退回的任务 + */ + COMPLETE_BACK_SCHOOL_TASK() { + @Override + public void exec(Condolence condolence, String option) { + localProcessService.completeTask( + "school_leader_back", + "condolence_apply@" + condolence.getId(), + ShiroUtil.getUserId(), + option + ); + } + }, /** * 创建分工会任务 */ CREATE_UNION_TASK() { @Override - public void exec(Condolence condolence, String nodeName) { + public void exec(Condolence condolence, String option) { List unionLeader = condolenceService.getUnionLeader(condolence.getManager()); localProcessService.createTask( @@ -129,80 +152,39 @@ public enum CondolenceToDoHandler { */ COMPLETE_UNION_TASK() { @Override - public void exec(Condolence condolence, String nodeName) { + public void exec(Condolence condolence, String option) { localProcessService.completeTask( "union_chairman_review", "condolence_apply@" + condolence.getId(), ShiroUtil.getUserId(), - nodeName + option ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), nodeName); } }, /** - * 创建财务任务 + * 创建校工会任务 */ CREATE_FINANCE_TASK() { @Override - public void exec(Condolence condolence, String nodeName) { - List schoolUnionAccountant = Vi.getSchoolUnionAccountant(); - if (Lang.isEmpty(schoolUnionAccountant)) { + public void exec(Condolence condolence, String option) { + List schoolLeader = condolenceService.getSchoolUnionCondolenceAdmin(); + if (Lang.isEmpty(schoolLeader)) { throw new RuntimeException("找不到下一步审核人,请联系管理员设置。"); } localProcessService.createTask( "condolence_apply@" + condolence.getId(), "finance_review", - "校工会初审", + "校工会审核", ShiroUtil.getUserId(), - schoolUnionAccountant, + schoolLeader, "/platform/fw/condolence/fr", "/platform/fw/condolence/fr", "/platform/fw/condolence/fr", "/platform/fw/condolence/fr" ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), "财务审核"); - } - }, - - - /** - * 财务完成 - */ - COMPLETE_FINANCE_TASK() { - @Override - public void exec(Condolence condolence, String nodeName) { - localProcessService.completeTask( - "finance_review", - "condolence_apply@" + condolence.getId(), - ShiroUtil.getUserId(), - nodeName - ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), nodeName); - } - }, - - /** - * 创建校工会任务 - */ - CREATE_SCHOOL_TASK() { - @Override - public void exec(Condolence condolence, String nodeName) { - List schoolUnionCondolenceAdmin = condolenceService.getSchoolUnionCondolenceAdmin(); - localProcessService.createTask( - "condolence_apply@" + condolence.getId(), - "vice_chairman_review", - "校工会审核", - ShiroUtil.getUserId(), - schoolUnionCondolenceAdmin, - "/platform/fw/condolence/vcr/school", - "/platform/fw/condolence/vcr/school", - "/platform/fw/condolence/vcr/school", - "/platform/fw/condolence/vcr/school" - ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), "校工会审核"); } }, @@ -210,16 +192,65 @@ public enum CondolenceToDoHandler { /** * 校工会完成 */ + COMPLETE_FINANCE_TASK() { + @Override + public void exec(Condolence condolence, String option) { + localProcessService.completeTask( + "finance_review", + "condolence_apply@" + condolence.getId(), + ShiroUtil.getUserId(), + option + ); + } + }, + + /** + * 创建校工会主席任务 + */ + CREATE_SCHOOL_TASK() { + @Override + public void exec(Condolence condolence, String option) { + Sql sql = Sqls.create(""" + SELECT + u.loginname + FROM + sys_user_role sur + LEFT JOIN sys_user u ON u.id = sur.userid + WHERE + sur.roleId in ('3a87d9e925174f59bbbe86fcf2be3a91', '3dad064faf134a6fb6ec3437ff2e09e2', '26fa82e6f7dd4641aa1655d9fa5c875a') + GROUP BY + sur.userId + """); + List list = condolenceService.listMap(sql); + List ids = list.stream().map(v-> v.getString("loginname")).collect(Collectors.toList()); + localProcessService.createTask( + "condolence_apply@" + condolence.getId(), + "vice_chairman_review", + "校工会主席审核", + ShiroUtil.getUserId(), + ids, + "/platform/fw/condolence/vcr/school", + "/platform/fw/condolence/vcr/school", + "/platform/fw/condolence/vcr/school", + "/platform/fw/condolence/vcr/school" + ); + + localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), "校工会主席审核"); + } + }, + + /** + * 校工会主席完成 + */ COMPLETE_SCHOOL_TASK() { @Override - public void exec(Condolence condolence, String nodeName) { + public void exec(Condolence condolence, String option) { localProcessService.completeTask( "vice_chairman_review", "condolence_apply@" + condolence.getId(), ShiroUtil.getUserId(), - nodeName + option ); - localProcessService.updateProcessNodeName("condolence_apply@" + condolence.getId(), nodeName); } }, @@ -228,23 +259,13 @@ public enum CondolenceToDoHandler { */ COMPLETE_PROCESS() { @Override - public void exec(Condolence condolence, String nodeName) { + public void exec(Condolence condolence, String option) { localProcessService.completeProcess("condolence_apply@" + condolence.getId()); } - }, - - /** - * 删除流程及任务 - */ - DELETE_PROCESS_AND_TASK() { - @Override - public void exec(Condolence condolence, String nodeName) { - localProcessService.deleteProcessInstance("condolence_apply@" + condolence.getId()); - } }; - public abstract void exec(Condolence condolence, String nodeName); + public abstract void exec(Condolence condolence, String option); public Dao dao = ViResource.dao; public CondolenceService condolenceService = ViResource.ioc.get(CondolenceServiceImpl.class); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/handler/difficult/DifficultToDoHandler.java b/src/main/java/io/v/nutz/zhgh/zgfw/handler/difficult/DifficultToDoHandler.java index 7ba6e8c..656ce7b 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/handler/difficult/DifficultToDoHandler.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/handler/difficult/DifficultToDoHandler.java @@ -2,16 +2,13 @@ package io.v.nutz.zhgh.zgfw.handler.difficult; import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.ViResource; -import io.v.nutz.sys.models.User; import io.v.nutz.sys.services.SysLocalProcessService; import io.v.nutz.sys.services.impl.SysLocalProcessServiceImpl; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfService; import io.v.nutz.zhgh.zgfw.service.impl.ZgfwKnbfServiceImpl; import lombok.Getter; -import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; @@ -24,16 +21,15 @@ public enum DifficultToDoHandler { /** * 流程开始 */ - START_PROCESS() { + START_PROCESS(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { - User user = dao.fetch(User.class, Cnd.where("id", "=", knbf.getSqr())); -// Sql sql = Sqls.fetchString(Sqls.create("select username from sys_user where id = @id").setParam("id", knbf.getSqr()).toString()); -// dao.execute(sql); -// String username = sql.getString(); + public void exec(Zgfw_knbf knbf) { + Sql sql = Sqls.fetchString(Sqls.create("select username from sys_user where id = @id").setParam("id", knbf.getSqr()).toString()); + dao.execute(sql); + String username = sql.getString(); localProcessService.startProcess( - user.getUnionname() + "(" + user.getUsername() + ")老师【元旦春节困难补助(慰问)】申请", + "【困难帮扶】" + username, "zgfw_knbf@" + knbf.getId(), "", knbf.getSqr(), @@ -44,21 +40,11 @@ public enum DifficultToDoHandler { }, /** - * 审核拒绝 + * 审核拒绝,重新修改申请 */ - REFUSE_UNION_TASK(){ + CREATE_APPLY_RE_MODIFY_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { - localProcessService.refuseProcess("zgfw_knbf@" + knbf.getId(),nodeName); - } - }, - - /** - * 审核退回,重新修改申请 - */ - CREATE_APPLY_RE_MODIFY_TASK() { - @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { Sql sql = Sqls.fetchString(Sqls.create("select loginname from sys_user where id = @id").setParam("id", knbf.getSqr()).toString()); dao.execute(sql); String loginname = sql.getString(); @@ -66,7 +52,7 @@ public enum DifficultToDoHandler { localProcessService.createTask( "zgfw_knbf@" + knbf.getId(), "back", - nodeName, + "退回重新修改", ShiroUtil.getUserId(), List.of(loginname), "/platform/fw/difficulty/applylist", @@ -74,23 +60,21 @@ public enum DifficultToDoHandler { "/platform/fw/difficulty/applylist", "/platform/fw/difficulty/applylist" ); - localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), nodeName); } }, /** - * 审核退回后完成 + * 审核拒绝后完成 */ - COMPLETE_APPLY_RE_MODIFY_TASK() { + COMPLETE_APPLY_RE_MODIFY_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { localProcessService.completeTask( "back", "zgfw_knbf@" + knbf.getId(), ShiroUtil.getUserId(), "" ); - localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), nodeName); } }, @@ -98,14 +82,14 @@ public enum DifficultToDoHandler { /** * 创建分工会任务 */ - CREATE_UNION_TASK() { + CREATE_UNION_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { List unionLeader = zgfwKnbfService.getUnionLeader(knbf.getSqr()); localProcessService.createTask( "zgfw_knbf@" + knbf.getId(), "union_president_audit", - "基层工会审核", + "分工会审核", ShiroUtil.getUserId(), unionLeader, "/platform/fw/difficulty/unionchairman", @@ -113,32 +97,31 @@ public enum DifficultToDoHandler { "/platform/fw/difficulty/unionchairman", "/platform/fw/difficulty/unionchairman" ); - localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), "基层工会审核"); + localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), "分工会审核"); } }, /** * 分工会完成 */ - COMPLETE_UNION_TASK() { + COMPLETE_UNION_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { localProcessService.completeTask( "union_president_audit", "zgfw_knbf@" + knbf.getId(), ShiroUtil.getUserId(), "" ); - localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), nodeName); } }, /** * 创建财务任务 */ - CREATE_FINANCE_TASK() { + CREATE_FINANCE_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { List schoolUnionAccountant = Vi.getSchoolUnionAccountant(); localProcessService.createTask( "zgfw_knbf@" + knbf.getId(), @@ -159,25 +142,24 @@ public enum DifficultToDoHandler { /** * 财务完成 */ - COMPLETE_FINANCE_TASK() { + COMPLETE_FINANCE_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { localProcessService.completeTask( "two_dzz_audit", "zgfw_knbf@" + knbf.getId(), ShiroUtil.getUserId(), "" ); - localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), nodeName); } }, /** * 创建校工会任务 */ - CREATE_SCHOOL_TASK() { + CREATE_SCHOOL_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { List list = zgfwKnbfService.getSchoolUnionDifficultyAdmin(); localProcessService.createTask( "zgfw_knbf@" + knbf.getId(), @@ -198,42 +180,31 @@ public enum DifficultToDoHandler { /** * 校工会完成 */ - COMPLETE_SCHOOL_TASK() { + COMPLETE_SCHOOL_TASK(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { localProcessService.completeTask( "school_standing_audit", "zgfw_knbf@" + knbf.getId(), ShiroUtil.getUserId(), "" ); - localProcessService.updateProcessNodeName("zgfw_knbf@" + knbf.getId(), nodeName); } }, /** * 流程结束 */ - COMPLETE_PROCESS() { + COMPLETE_PROCESS(){ @Override - public void exec(Zgfw_knbf knbf, String nodeName) { + public void exec(Zgfw_knbf knbf) { localProcessService.completeProcess("zgfw_knbf@" + knbf.getId()); } - }, - - /** - * 删除流程及任务 - */ - DELETE_PROCESS_AND_TASK() { - @Override - public void exec(Zgfw_knbf knbf, String nodeName) { - localProcessService.deleteProcessInstance("zgfw_knbf@" + knbf.getId()); - } }; - public abstract void exec(Zgfw_knbf knbf, String nodeName); + public abstract void exec(Zgfw_knbf knbf); public Dao dao = ViResource.dao; public ZgfwKnbfService zgfwKnbfService = ViResource.ioc.get(ZgfwKnbfServiceImpl.class); public SysLocalProcessService localProcessService = ViResource.ioc.get(SysLocalProcessServiceImpl.class); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/handler/rxdj/RxdjToDoHandler.java b/src/main/java/io/v/nutz/zhgh/zgfw/handler/rxdj/RxdjToDoHandler.java index c549ea5..7418efa 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/handler/rxdj/RxdjToDoHandler.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/handler/rxdj/RxdjToDoHandler.java @@ -5,7 +5,6 @@ import io.v.nutz.base.utils.ViResource; import io.v.nutz.sys.services.SysLocalProcessService; import io.v.nutz.sys.services.impl.SysLocalProcessServiceImpl; import io.v.nutz.web.commons.utils.ShiroUtil; -import io.v.nutz.zhgh.zgfw.model.condolence.Condolence; import io.v.nutz.zhgh.zgfw.model.rxdj.Fw_rxdj; import lombok.Getter; import org.nutz.dao.Dao; @@ -65,6 +64,7 @@ public enum RxdjToDoHandler { "/platform/zgfw/rxdjxx", "/platform/zgfw/rxdjxx" ); + localProcessService.updateProcessNodeName("rxdj@" + rxdj.getDj_id(), "退回重新修改"); } }, @@ -80,6 +80,8 @@ public enum RxdjToDoHandler { ShiroUtil.getUserId(), "" ); + + localProcessService.updateProcessNodeName("rxdj@" + rxdj.getDj_id(), "退回后完成"); } }, @@ -131,9 +133,30 @@ public enum RxdjToDoHandler { ShiroUtil.getUserId(), "" ); + localProcessService.updateProcessNodeName("rxdj@" + rxdj.getDj_id(), "审核通过"); + localProcessService.completeProcess("rxdj@" + rxdj.getDj_id()); } }, + /** + * 分工会拒绝 + */ + COMPLETE_UNION_TASK_REJECTED(){ + @Override + public void exec(Fw_rxdj rxdj) { + localProcessService.completeTask( + "dj_fghshr", + "rxdj@" + rxdj.getDj_id(), + ShiroUtil.getUserId(), + "" + ); + localProcessService.updateProcessNodeName("rxdj@" + rxdj.getDj_id(), "分工会拒绝"); + localProcessService.completeProcess("rxdj@" + rxdj.getDj_id()); + } + }, + + + /** * 创建校工会任务 */ @@ -181,6 +204,7 @@ public enum RxdjToDoHandler { ShiroUtil.getUserId(), "" ); + localProcessService.updateProcessNodeName("rxdj@" + rxdj.getDj_id(), "校工会完成"); } }, diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/Condolence.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/Condolence.java index 8fe7fcf..4faa038 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/Condolence.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/Condolence.java @@ -44,7 +44,6 @@ public class Condolence { @Comment("联系电话") @ColDefine(type = ColType.VARCHAR, width = 30) private String mobile; - @Column @Comment("出生年月") @ColDefine(type = ColType.VARCHAR, width = 40) @@ -68,11 +67,6 @@ public class Condolence { @ColDefine(type = ColType.VARCHAR, width = 50) private String payee_bank_number; - @Column - @Comment("支行名称") - @ColDefine(type = ColType.VARCHAR, width = 50) - private String payee_bank_name; - @Column @Comment("慰问类型") @ColDefine(type = ColType.VARCHAR, width = 32) @@ -182,6 +176,16 @@ public class Condolence { @ColDefine(type = ColType.VARCHAR, width = 50) private String the_hospital; + @Column + @Comment("病房") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String the_hospital_house_num; + + @Column + @Comment("病房床号") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String the_hospital_house_bed_num; + @Column @Comment("住院病由") @ColDefine(type = ColType.VARCHAR, width = 100) @@ -207,6 +211,11 @@ public class Condolence { @ColDefine(type = ColType.VARCHAR, width = 50) private String birth_time; + @Column + @Comment("生育几孩(孩次)") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String birth_child_num; + @Column @Comment("去逝与被慰问人关系") @ColDefine(type = ColType.VARCHAR, width = 50) @@ -224,15 +233,22 @@ public class Condolence { @Column @Comment("单据号") - @Prev({ - @SQL(db = DB.MYSQL, value = "SELECT CONCAT(YEAR(NOW()),LPAD(RIGHT((SELECT IFNULL(MAX(document_no),0) from Condolence WHERE LEFT(document_no,4) = YEAR(NOW())),5)+1, 5, 0) )"), - }) + @Prev({@SQL(db = DB.MYSQL, value = "SELECT CONCAT(YEAR(NOW()),LPAD(RIGHT((SELECT IFNULL(MAX(document_no),0) from Condolence WHERE LEFT(document_no,4) = YEAR(NOW())),5)+1, 5, 0) )"),}) private Integer document_no; + @Column + @Comment("去世直系亲属") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String deadImmediateFamily; @Column - @Comment("住院、结婚、生育、退休慰问时间") - @ColDefine(type = ColType.VARCHAR, width = 100) - private String condolenceTime; + @Comment("手术名称") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String inpatientSurgicalName; + + @Column + @Comment("导出领据单号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String exportDocumentNo; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/CondolenceType.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/CondolenceType.java index 69b424a..addb10e 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/CondolenceType.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/condolence/CondolenceType.java @@ -43,6 +43,21 @@ public class CondolenceType { @ColDefine(type = ColType.VARCHAR, width = 20) private String way; + @Column + @Comment("是否禁用") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isDisabled; + + @Column + @Comment("是否上传附件") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isUploadFile; + + @Column + @Comment("上传附件说明") + @ColDefine(type = ColType.VARCHAR,width = 50) + private String uploadFileDesc; + @Column @Comment("排序字段") @Prev({ @@ -51,5 +66,11 @@ public class CondolenceType { }) private Integer location; + @Column + @Comment("排序") + @ColDefine(type = ColType.INT) + private int sortNum; + + } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/difficult/Zgfw_knbf.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/difficult/Zgfw_knbf.java index 4f26a0f..2063992 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/model/difficult/Zgfw_knbf.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/difficult/Zgfw_knbf.java @@ -202,7 +202,7 @@ public class Zgfw_knbf implements Serializable { @Column @Comment("附件") - @ColDefine(type = ColType.VARCHAR, width = 5000) + @ColDefine(type = ColType.VARCHAR, width = 500) private List files; @Many(field = "sqid") @@ -234,6 +234,11 @@ public class Zgfw_knbf implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 32) private String school_union_audit; + @Column + @Comment("二级党组织审核记录id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String two_dzz_audit; + @Column @Comment("校工会常务副主席审核记录id") diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_bm.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_bm.java new file mode 100644 index 0000000..9db8fe4 --- /dev/null +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_bm.java @@ -0,0 +1 @@ +package io.v.nutz.zhgh.zgfw.model.lxy; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_grxx.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_grxx.java new file mode 100644 index 0000000..9db8fe4 --- /dev/null +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_grxx.java @@ -0,0 +1 @@ +package io.v.nutz.zhgh.zgfw.model.lxy; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_hd.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_hd.java new file mode 100644 index 0000000..9db8fe4 --- /dev/null +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_hd.java @@ -0,0 +1 @@ +package io.v.nutz.zhgh.zgfw.model.lxy; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_mefp.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_mefp.java new file mode 100644 index 0000000..9db8fe4 --- /dev/null +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/lxy/Lxy_mefp.java @@ -0,0 +1 @@ +package io.v.nutz.zhgh.zgfw.model.lxy; diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj.java index 4f65fed..a51ce7f 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj.java @@ -1,9 +1,12 @@ package io.v.nutz.zhgh.zgfw.model.rxdj; +import io.v.nutz.sys.models.Sys_file; import lombok.Data; import org.nutz.dao.entity.annotation.*; import java.io.Serializable; +import java.util.Date; +import java.util.List; /** * 子女入学登记 @@ -90,15 +93,36 @@ public class Fw_rxdj implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 100) private String dj_szdw; + @Column + @Comment("所在单位id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String dj_szdwid; + + @Column + @Comment("所在分工会") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String dj_szfgh; + + @Column + @Comment("所在分工会id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String dj_szfghid; + @Column @Comment("职务") @ColDefine(type = ColType.VARCHAR, width = 20) private String dj_zw; + @Column @Comment("技术职称") @ColDefine(type = ColType.VARCHAR, width = 20) private String dj_zc; + @Column + @Comment("学历") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String dj_xl; + @Column @Comment("职称评定时间") @ColDefine(type = ColType.VARCHAR, width = 20) @@ -143,6 +167,11 @@ public class Fw_rxdj implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 32) private String dj_gzh; + @Column + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String dj_xm; + @Column @Comment("人员类型(事业编制 预任职员专职科研 统招博士后)") @ColDefine(type = ColType.VARCHAR, width = 20) @@ -213,16 +242,10 @@ public class Fw_rxdj implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 10) private String shiftGrade; - @Column - @Comment("填报人分工会") - @ColDefine(type = ColType.VARCHAR, width = 32) - private String dj_tbrfgh; - - @Column @Comment("填报日期") - @ColDefine(type = ColType.VARCHAR, width = 20) - private String dj_tbrq; + @ColDefine(type = ColType.DATETIME) + private Date dj_tbrq; @Column @Comment("申请状态(0.待修改 1.待分工审核 2.待校工会审核 3.分工会拒绝 4.校工会拒绝 5.审核通过)") @@ -231,8 +254,8 @@ public class Fw_rxdj implements Serializable { @Column @Comment("年份") - @ColDefine(type = ColType.VARCHAR, width = 10) - private String dj_year; + @ColDefine(type = ColType.INT) + private Integer dj_year; @Column @Comment("分工会审核人") @@ -314,10 +337,18 @@ public class Fw_rxdj implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 200) private String applyType; + @Column + @Comment("是否集体户") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isCollectiveHouseholds; + @Column @Comment("是否已经下载过") @ColDefine(type = ColType.BOOLEAN) - private boolean isDownload; - + private Boolean isDownload; + @Column + @Comment("附件") + @ColDefine(type = ColType.MYSQL_JSON) + private List files; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj_year.java b/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj_year.java index 9eaed68..e011c28 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj_year.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/model/rxdj/Fw_rxdj_year.java @@ -55,5 +55,10 @@ public class Fw_rxdj_year implements Serializable { @Comment("开启状态(1.开启 2.关闭)") private boolean bmkqzt; + @Column + @ColDefine(type = ColType.BOOLEAN) + @Comment("上传附件") + private Boolean needFiles; + } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/service/CondolenceService.java b/src/main/java/io/v/nutz/zhgh/zgfw/service/CondolenceService.java index f6c6111..51fee6d 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/service/CondolenceService.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/service/CondolenceService.java @@ -26,14 +26,14 @@ public interface CondolenceService extends ViService { * * @param o */ - Condolence add(Condolence o); + String add(Condolence o); /** * 修改 * * @param o */ - Condolence edit(Condolence o); + void edit(Condolence o); /** * 删除 diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/CondolenceServiceImpl.java b/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/CondolenceServiceImpl.java index 5b4a27e..aa1fdc2 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/CondolenceServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/CondolenceServiceImpl.java @@ -1,5 +1,6 @@ package io.v.nutz.zhgh.zgfw.service.impl; + import cn.wizzer.framework.base.service.BaseService; import io.v.nutz.base.service.ReviewService; import io.v.nutz.base.service.impl.ViServiceImpl; @@ -26,20 +27,25 @@ import java.util.stream.Collectors; @IocBean(args = {"refer:dao"}) public class CondolenceServiceImpl extends ViServiceImpl implements CondolenceService { + @Inject + private ReviewService reviewService; + @Inject + private BaseService baseService; + public CondolenceServiceImpl(Dao dao) { super(dao); } @Override @Aop(TransAop.READ_COMMITTED) - public Condolence add(Condolence o) { - return insertWith(o, "goods"); + public String add(Condolence o) { + return insertWith(o, "goods").getId(); } @Override @Aop(TransAop.READ_COMMITTED) - public Condolence edit(Condolence o) { - return updateWith(o, "goods"); + public void edit(Condolence o) { + updateWith(o, "goods"); } @Override @@ -48,60 +54,83 @@ public class CondolenceServiceImpl extends ViServiceImpl implements delete(id); } - @Inject - private ReviewService reviewService; - - @Inject - private BaseService baseService; - @Override public Record findOne(String id) { Sql sql = Sqls.create(""" SELECT con.*, type.`name` typename, + type.`code` typecode, manager.username manager_name, + manager.loginname manager_loginname, manager.mobile manager_mobile, be.username be_username, - payee.username payee_username, + be.loginname be_loginname, + be.unitname be_unitname, be.sex be_sex, - be.birthday be_birthday, - unit.`name` unitname, - be_unit.`name` be_unitname, - be_union.unionname, - state.state_name, - state.state_color, - manager_sign.DATA manager_sign + + payee.username payee_username, + payee.loginname payee_loginname , + payee.loginname m_loginname, + payee.username m_name, + + manager.unitname unitname, + manager.unionname, + pay_user.username as pay_username, + pay_user.loginname as pay_loginname, + re.applyTime, + re.reimbursementItemId, + re.paymentMethodName, + re.bankUserName, + re.bankCardNumber, + re.bankOfDeposit, + manager_sign.DATA manager_sign_data FROM condolence con - LEFT JOIN sys_user manager ON con.manager = manager.id - LEFT JOIN sys_user be ON con.be_user = be.id - LEFT JOIN sys_user payee ON con.payee = payee.id - LEFT JOIN sys_unit be_unit ON be.unitid = be_unit.id - LEFT JOIN sys_unit unit ON manager.unitid = unit.id - LEFT JOIN sys_union be_union ON be_unit.unionid = be_union.id - LEFT JOIN sys_signature manager_sign ON manager_sign.id = con.manager_sign - LEFT JOIN state state ON state.state_id = con.state_id - LEFT JOIN condolence_type type ON type.id=con.type WHERE con.id=@id + LEFT JOIN `user` payee ON con.payee = payee.id + LEFT JOIN `user` manager ON con.manager = manager.id + LEFT JOIN `user` be ON con.be_user = be.id + LEFT JOIN reimbursement re ON re.reimbursementId=con.id + LEFT JOIN sys_signature manager_sign ON manager_sign.id = con.manager_sign + LEFT JOIN condolence_type type ON type.id = con.type + LEFT JOIN `user` pay_user ON re.payerId = pay_user.id + WHERE con.id=@id """).setParam("id", id); Record record = list(sql).get(0); record.set("Goods", baseService.dao().query("Goods", Cnd.where("reid", "=", id))); - //小组长 +//小组长 if (Strings.isNotBlank(record.getString("union_leader_review"))) { record.set("ulr", reviewService.fetch(record.getString("union_leader_review"))); } - //分工会 +//被慰问 + if (Strings.isNotBlank(record.getString("be_sign"))) { + record.set("bs", reviewService.fetch(record.getString("be_sign"))); + } +// 分工会 if (Strings.isNotBlank(record.getString("union_chairman_review"))) { record.set("ucr", reviewService.fetch(record.getString("union_chairman_review"))); } - //工会主席 +// 书记 + if (Strings.isNotBlank(record.getString("unit_secretary_review"))) { + record.set("usr", reviewService.fetch(record.getString("unit_secretary_review"))); + } +// 工会经办人 + if (Strings.isNotBlank(record.getString("finance_review"))) { + record.set("fr", reviewService.fetch(record.getString("finance_review"))); + } +// 工会副主席主席 if (Strings.isNotBlank(record.getString("vice_chairman_review"))) { record.set("vcr", reviewService.fetch(record.getString("vice_chairman_review"))); } +// 工会常务副主席主席 + if (Strings.isNotBlank(record.getString("executive_chairman_review"))) { + record.set("ecr", reviewService.fetch(record.getString("executive_chairman_review"))); + } + return record; } diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/ZgfwKnbfServiceImpl.java b/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/ZgfwKnbfServiceImpl.java index 949a1c9..e160ffa 100644 --- a/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/ZgfwKnbfServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/zgfw/service/impl/ZgfwKnbfServiceImpl.java @@ -3,11 +3,13 @@ package io.v.nutz.zhgh.zgfw.service.impl; import cn.wizzer.framework.base.service.BaseServiceImpl; import cn.wizzer.framework.page.Pagination; -import io.v.nutz.base.utils.Roles; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.AuditService; +import io.v.nutz.base.utils.Roles; +import io.v.nutz.base.utils.Vi; import io.v.nutz.sys.services.SysSignatureService; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf; import io.v.nutz.zhgh.zgfw.service.DifficultState; import io.v.nutz.zhgh.zgfw.service.ZgfwKnbfJtcyService; @@ -52,6 +54,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z sq.*, sqr.loginname sqrloginname, sqr.username sqrname, + sqr.unitname, bbzrusername.username bbname, bbzrusername.loginname bbloginname, bbzrusername.sex bbsex, @@ -63,7 +66,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z sign.`data` sqsign FROM zgfw_knbf sq - LEFT JOIN sys_user sqr ON sq.sqr = sqr.id + LEFT JOIN `user` sqr ON sq.sqr = sqr.id LEFT JOIN sys_user bbzrusername ON sq.bbzrusername = bbzrusername.id LEFT JOIN sys_unit bbunit ON bbunit.id=bbzrusername.unitid LEFT JOIN sys_signature sign ON sign.id = sq.applicantsign @@ -76,23 +79,19 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z if (Strings.isNotBlank(record.getString("applicantsign"))) { record.set("app", sysSignatureService.fetch(record.getString("applicantsign"))); } -//基层工会 +//院级工会 if (Strings.isNotBlank(record.getString("union_president_audit"))) { record.set("upa", auditService.fetch(record.getString("union_president_audit"))); } - /* if (Strings.isNotBlank(record.getString("school_manager_audit"))) { + if (Strings.isNotBlank(record.getString("school_manager_audit"))) { record.set("sma", auditService.fetch(record.getString("school_manager_audit"))); } - if (Strings.isNotBlank(record.getString("school_vice_chairman_audit"))) { - record.set("svca", auditService.fetch(record.getString("school_vice_chairman_audit"))); + if (Strings.isNotBlank(record.getString("two_dzz_audit"))) { + record.set("tda", auditService.fetch(record.getString("two_dzz_audit"))); } - if (Strings.isNotBlank(record.getString("school_standing_audit"))) { + /*if (Strings.isNotBlank(record.getString("school_standing_audit"))) { record.set("ssa", auditService.fetch(record.getString("school_standing_audit"))); }*/ - //校工会 - if (Strings.isNotBlank(record.getString("school_manager_audit"))) { - record.set("sua", auditService.fetch(record.getString("school_manager_audit"))); - } return record; } @@ -117,7 +116,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z WHEN @state1 THEN ( SELECT - GROUP_CONCAT( u.username ) + GROUP_CONCAT(DISTINCT u.username ) FROM sys_user_role sur LEFT JOIN sys_user u ON sur.userId = u.id @@ -128,7 +127,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z WHEN @state2 THEN ( SELECT - GROUP_CONCAT( u.username ) + GROUP_CONCAT(DISTINCT u.username ) FROM sys_user_role sur LEFT JOIN sys_user u ON sur.userId = u.id @@ -138,7 +137,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z WHEN @state3 THEN ( SELECT - GROUP_CONCAT( u.username ) + GROUP_CONCAT(DISTINCT u.username ) FROM sys_user_role sur LEFT JOIN sys_user u ON sur.userId = u.id @@ -148,7 +147,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z WHEN @state4 THEN ( SELECT - GROUP_CONCAT( u.username ) + GROUP_CONCAT(DISTINCT u.username ) FROM sys_user_role sur LEFT JOIN sys_user u ON sur.userId = u.id @@ -166,7 +165,7 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z LEFT JOIN audit_state state ON sq.zt = state.stateId $condition """); sql.setParam("role1", Roles.UNION_MANGER); - sql.setParam("role2", Roles.GH_WYH_CWFZX); + sql.setParam("role2", Roles.XGHGLY); sql.setParam("role3", Roles.GH_WYH_FZX); sql.setParam("role4", Roles.GH_WYH_CWFZX); sql.setParam("state1", DifficultState.T100); @@ -177,6 +176,9 @@ public class ZgfwKnbfServiceImpl extends BaseServiceImpl implements Z if (Strings.isNotBlank(page.getSearchKeyword())) { cnd.where().andLike(page.getSearchName(), page.getSearchKeyword()); } + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionAccountant")) { + cnd.and("un.id", "=", Vi.getUnionId()); + } cnd.andEX("YEAR(sq.sqsj)", "=", year); cnd.andEX("sqr.unitid", "=", unitId); cnd.andEX("sqr.unionid", "=", unionId); diff --git a/src/main/java/io/v/nutz/zhgh/zgfw/template/rxdj/RxdjTemp.java b/src/main/java/io/v/nutz/zhgh/zgfw/template/rxdj/RxdjTemp.java new file mode 100644 index 0000000..98e9589 --- /dev/null +++ b/src/main/java/io/v/nutz/zhgh/zgfw/template/rxdj/RxdjTemp.java @@ -0,0 +1,60 @@ +package io.v.nutz.zhgh.zgfw.template.rxdj; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @version 1.0 + * @Author zzr + * @name:RxdjTemp + * @Date 2024/6/27 15:45 + * @注释 入学登记导入表 + */ +@Data +public class RxdjTemp { + + @Excel(name = "青年教职工姓名") + private String dj_xm; + + @Excel(name = "工号") + private String dj_gzh; + + @Excel(name = "单位") + private String dj_szdw; + + @Excel(name = "分工会") + private String dj_szfgh; + + @Excel(name = "职称") + private String dj_zc; + + @Excel(name = "学历") + private String dj_xl; + + @Excel(name = "子女姓名") + private String dj_znname; + + @Excel(name = "子女姓别") + private String dj_znsex; + + @Excel(name = "子女出生年月", importFormat = "yyyy-MM-dd") + private String dj_znzsny; + + @Excel(name = "青年教职工家庭住址") + private String dj_jtzz; + + @Excel(name = "青年教职工户口所在地派出所") + private String dj_hjssxq; + + @Excel(name = "青年教职工联系电话") + private String dj_iphone; + + @Excel(name = "是否集体户") + private String isCollectiveHouseholds; + + @Excel(name = "备注") + private String dj_babz; + + //备注 + private String remark; +} diff --git a/src/main/resources/static/components/condolence/Info.vue b/src/main/resources/static/components/condolence/Info.vue index 16145d3..1ead554 100644 --- a/src/main/resources/static/components/condolence/Info.vue +++ b/src/main/resources/static/components/condolence/Info.vue @@ -1,75 +1,98 @@ +