From 84ac4d182e08fcf3da4cf4719755f12c343a78d9 Mon Sep 17 00:00:00 2001 From: hly <2783385703@qq.com> Date: Thu, 28 Aug 2025 18:19:56 +0800 Subject: [PATCH] 1 --- .../controller/AppletApiOrderController.java | 15 +- .../controller/AppletApiPaperController.java | 45 ++- .../controller/AppletApiSubscribeController.java | 24 +- .../applet/service/AppletApiOrderService.java | 4 +- .../applet/service/AppletApiPaperService.java | 15 +- .../applet/service/AppletApiSubscribeService.java | 4 + .../service/impl/AppletApiOrderServiceImpl.java | 52 ++- .../service/impl/AppletApiPaperServiceImpl.java | 418 ++++++++++++++++++++- .../impl/AppletApiSubscribeServiceImpl.java | 41 +- .../appletOrder/entity/AppletOrderProduct.java | 8 +- .../entity/AppletOrderAfterSale.java | 3 + .../entity/AppletOrderEvaluate.java | 11 +- .../demo/appletPaper/entity/AppletPaper.java | 13 +- .../demo/appletPaper/entity/AppletQuestions.java | 7 + .../entity/AppletQuestionsCategory.java | 6 + .../appletPaper/entity/AppletQuestionsOptions.java | 11 + .../controller/AppletPaperReportController.java | 268 +++++++++++++ .../entity/AppletPaperReport.java | 117 ++++++ .../entity/AppletPaperReportItem.java | 81 ++++ .../mapper/AppletPaperReportItemMapper.java | 31 ++ .../mapper/AppletPaperReportMapper.java | 17 + .../mapper/xml/AppletPaperReportItemMapper.xml | 16 + .../mapper/xml/AppletPaperReportMapper.xml | 5 + .../service/IAppletPaperReportItemService.java | 22 ++ .../service/IAppletPaperReportService.java | 48 +++ .../impl/AppletPaperReportItemServiceImpl.java | 27 ++ .../service/impl/AppletPaperReportServiceImpl.java | 77 ++++ .../vo/AppletPaperReportPage.java | 86 +++++ .../vue3/AppletPaperReport.api.ts | 71 ++++ .../vue3/AppletPaperReport.data.ts | 185 +++++++++ .../vue3/AppletPaperReportList.vue | 206 ++++++++++ .../V20250828_1__menu_insert_AppletPaperReport.sql | 26 ++ .../vue3/components/AppletPaperReportForm.vue | 171 +++++++++ .../vue3/components/AppletPaperReportModal.vue | 240 ++++++++++++ .../controller/AppletSchemeController.java | 182 +++++++++ .../demo/appletScheme/entity/AppletScheme.java | 72 ++++ .../appletScheme/mapper/AppletSchemeMapper.java | 17 + .../appletScheme/mapper/xml/AppletSchemeMapper.xml | 5 + .../appletScheme/service/IAppletSchemeService.java | 14 + .../service/impl/AppletSchemeServiceImpl.java | 19 + .../demo/appletScheme/uniapp/AppletSchemeForm.vue | 95 +++++ .../demo/appletScheme/uniapp/AppletSchemeList.vue | 44 +++ .../demo/appletScheme/uniapp3/AppletSchemeData.ts | 19 + .../demo/appletScheme/uniapp3/AppletSchemeForm.vue | 232 ++++++++++++ .../demo/appletScheme/uniapp3/AppletSchemeList.vue | 148 ++++++++ .../demo/appletScheme/vue3/AppletScheme.api.ts | 64 ++++ .../demo/appletScheme/vue3/AppletScheme.data.ts | 79 ++++ .../demo/appletScheme/vue3/AppletSchemeList.vue | 206 ++++++++++ .../vue3/V20250828_1__menu_insert_AppletScheme.sql | 26 ++ .../vue3/components/AppletSchemeForm.vue | 70 ++++ .../vue3/components/AppletSchemeModal.vue | 99 +++++ .../controller/AppletSchemeCategoryController.java | 186 +++++++++ .../entity/AppletSchemeCategory.java | 80 ++++ .../mapper/AppletSchemeCategoryMapper.java | 17 + .../mapper/xml/AppletSchemeCategoryMapper.xml | 5 + .../service/IAppletSchemeCategoryService.java | 14 + .../impl/AppletSchemeCategoryServiceImpl.java | 19 + .../uniapp/AppletSchemeCategoryForm.vue | 101 +++++ .../uniapp/AppletSchemeCategoryList.vue | 44 +++ .../uniapp3/AppletSchemeCategoryData.ts | 25 ++ .../uniapp3/AppletSchemeCategoryForm.vue | 246 ++++++++++++ .../uniapp3/AppletSchemeCategoryList.vue | 148 ++++++++ .../vue3/AppletSchemeCategory.api.ts | 64 ++++ .../vue3/AppletSchemeCategory.data.ts | 92 +++++ .../vue3/AppletSchemeCategoryList.vue | 206 ++++++++++ ...0250828_1__menu_insert_AppletSchemeCategory.sql | 26 ++ .../vue3/components/AppletSchemeCategoryForm.vue | 70 ++++ .../vue3/components/AppletSchemeCategoryModal.vue | 99 +++++ .../entity/AppletSubscribeDetection.java | 18 +- .../java/org/jeecg/modules/pay/MpWxPayService.java | 2 - .../src/main/resources/application-dev.yml | 4 +- .../src/main/resources/pay_weixin.properties | 4 +- 72 files changed, 5170 insertions(+), 62 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/controller/AppletPaperReportController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReport.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReportItem.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportItemMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportItemMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportItemService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportItemServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vo/AppletPaperReportPage.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReportList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/V20250828_1__menu_insert_AppletPaperReport.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/controller/AppletSchemeController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/entity/AppletScheme.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/AppletSchemeMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/xml/AppletSchemeMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/IAppletSchemeService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/impl/AppletSchemeServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletSchemeList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/V20250828_1__menu_insert_AppletScheme.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/controller/AppletSchemeCategoryController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/entity/AppletSchemeCategory.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/AppletSchemeCategoryMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/xml/AppletSchemeCategoryMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/IAppletSchemeCategoryService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/impl/AppletSchemeCategoryServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategoryList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/V20250828_1__menu_insert_AppletSchemeCategory.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryModal.vue diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiOrderController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiOrderController.java index fe43a44..ed00d8e 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiOrderController.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiOrderController.java @@ -138,8 +138,12 @@ public class AppletApiOrderController { */ @Operation(summary = "我的评价") @PostMapping(value = "/myEvaluate") - public Result> myEvaluate(@Parameter(description = "不传为全部,0是有图,1是最新") String type) { - return Result.OK(appletApiOrderService.myEvaluate(type)); + public Result> myEvaluate(@Parameter(description = "不传为全部,0是有图,1是最新") String type, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + + Page page = new Page<>(pageNo, pageSize); + return Result.OK(appletApiOrderService.myEvaluate(type, page)); } /** * 商品评价 @@ -149,8 +153,11 @@ public class AppletApiOrderController { */ @Operation(summary = "商品评价") @PostMapping(value = "/productEvaluate") - public Result> productEvaluate(String productId) { - return Result.OK(appletApiOrderService.productEvaluate(productId)); + public Result> productEvaluate(String productId, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return Result.OK(appletApiOrderService.productEvaluate(productId, page)); } /** * 删除评价 diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiPaperController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiPaperController.java index 9150ed0..a1d6cd4 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiPaperController.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiPaperController.java @@ -1,6 +1,8 @@ package org.jeecg.modules.applet.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -9,9 +11,11 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.config.shiro.IgnoreAuth; import org.jeecg.modules.applet.service.AppletApiPaperService; import org.jeecg.modules.demo.appletPaper.entity.AppletPaper; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -29,8 +33,12 @@ public class AppletApiPaperController { @GetMapping("/paper") @Operation(summary = "试卷查询") @IgnoreAuth - public Result> paper(@Parameter(description = "类型【选填】(0已完成,1未完成)") String type){ - return Result.ok(appletApiPaperService.list(type)); + public Result> paper( + @Parameter(description = "类型【选填】(0已完成,1未完成)") String type, + @Parameter(description = "页码") @RequestParam(defaultValue = "1") Integer pageNo, + @Parameter(description = "每页大小") @RequestParam(defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return Result.ok(appletApiPaperService.list(page, type)); } @GetMapping("/paperDetail") @@ -41,16 +49,39 @@ public class AppletApiPaperController { @GetMapping("/reportById") @Operation(summary = "试卷下的报告列表") - public Result report(@Parameter(description = "试卷id") String id){ - appletApiPaperService.report(id); - return Result.ok(); + public Result> report(@Parameter(description = "试卷id") String id){ + return Result.ok(appletApiPaperService.report(id)); } @GetMapping("/reportDetail") @Operation(summary = "报告详情") - public Result reportDetail(@Parameter(description = "报告id") String id){ - appletApiPaperService.reportDetail(id); + public Result reportDetail(@Parameter(description = "报告id") String id){ + return Result.ok(appletApiPaperService.reportDetail(id)); + } + + @GetMapping("/start") + @Operation(summary = "开始答题:返回给你报告id") + public Result start(@Parameter(description = "试卷id") String id){ + return Result.ok(appletApiPaperService.start(id)); + } + + @GetMapping("/answer") + @Operation(summary = "选择/输入完成答案") + public Result answer( + @Parameter(description = "报告id") String id, + @Parameter(description = "题目id") String questionsId, + @Parameter(description = "答题(选择题为选项id多个用,分割,填空题为json,key是选项id,value是用户输入的内容" + + " 例如:{13574651687 : 'xxxxxx'}" + + ")") String answer + ){ + appletApiPaperService.answer(id, questionsId, answer); return Result.ok(); } + @GetMapping("/submit") + @Operation(summary = "提交试卷") + public Result submit(@Parameter(description = "报告id") String id){ + appletApiPaperService.submit(id); + return Result.ok(); + } } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiSubscribeController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiSubscribeController.java index 7769d4d..25cd37f 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiSubscribeController.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiSubscribeController.java @@ -74,10 +74,32 @@ public class AppletApiSubscribeController { * 预约检测提交或修改 */ @AutoLog(value = "预约检测提交或修改") - @Operation(summary = "预约检测提交或修改", description = "预约检测提交或修改 id必传") + @Operation(summary = "预约检测提交或修改", description = "预约检测提交或修改 id必传 如果修改地址也需要地址信息") @GetMapping(value = "/submitOrUpdate") public Result submitOrUpdate(AppletSubscribeDetection detection) { appletApiSubscribeService.submitOrUpdate(detection); return Result.OK(); } + + /** + * 预约检测取消 + */ + @AutoLog(value = "预约检测取消") + @Operation(summary = "预约检测取消", description = "预约检测提交或修改 id必传") + @GetMapping(value = "/cancel") + public Result cancel(String id) { + appletApiSubscribeService.cancel(id); + return Result.OK(); + } + + /** + * 线上寄回试剂盒 + */ + @AutoLog(value = "线上寄回试剂盒") + @Operation(summary = "线上寄回试剂盒", description = "线上寄回试剂盒 id必传") + @GetMapping(value = "/logistics") + public Result logistics(String id,@Parameter(description = "物流单号") String logisticsNo) { + appletApiSubscribeService.logistics(id, logisticsNo); + return Result.OK(); + } } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiOrderService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiOrderService.java index 93a7ac2..af7a446 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiOrderService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiOrderService.java @@ -45,7 +45,7 @@ public interface AppletApiOrderService { void deleteEvaluate(String id); - List productEvaluate(String productId); + IPage productEvaluate(String productId, Page page); - List myEvaluate(String type); + IPage myEvaluate(String type, Page page); } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiPaperService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiPaperService.java index cc5732d..056d162 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiPaperService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiPaperService.java @@ -1,10 +1,13 @@ package org.jeecg.modules.applet.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.demo.appletAbout.entity.AppletAbout; import org.jeecg.modules.demo.appletBanner.entity.AppletBanner; import org.jeecg.modules.demo.appletHomeVideo.entity.AppletHomeVideo; import org.jeecg.modules.demo.appletIntroduce.entity.AppletIntroduce; import org.jeecg.modules.demo.appletPaper.entity.AppletPaper; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; import org.jeecg.modules.demo.appletProduct.entity.AppletProduct; import org.jeecg.modules.demo.personalizedRecommen.entity.PersonalizedRecommen; @@ -19,11 +22,17 @@ import java.util.List; */ public interface AppletApiPaperService { - List list(String type); + IPage list(Page page, String type); - Object report(String id); + List report(String id); - void reportDetail(String id); + AppletPaperReport reportDetail(String id); AppletPaper paperDetail(String id); + + String start(String id); + + void answer(String id, String questionsId, String answer); + + void submit(String id); } \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiSubscribeService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiSubscribeService.java index 7844d64..8af53a1 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiSubscribeService.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiSubscribeService.java @@ -17,4 +17,8 @@ public interface AppletApiSubscribeService { void submitOrUpdate(AppletSubscribeDetection detection); AppletSubscribeDetection detail(String id); + + void cancel(String id); + + void logistics(String id, String logisticsNo); } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiOrderServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiOrderServiceImpl.java index 0d3bce3..a9aa01a 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiOrderServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiOrderServiceImpl.java @@ -9,6 +9,7 @@ import dev.langchain4j.service.AiServices; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.chatgpt.service.AiChatService; +import org.jeecg.common.api.IAppletUserService; import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.util.AppletUserUtil; @@ -82,6 +83,9 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService { @Autowired private IAppletSubscribeDetectionService appletSubscribeDetectionService; + @Autowired + private IAppletUserService appletUserService; + /** * 订单列表查询 * @@ -109,6 +113,7 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService { record.setAfterSales(appletOrderAfterSaleService .lambdaQuery() + .eq(AppletOrderAfterSale::getStatus, 0) .eq(AppletOrderAfterSale::getOrderId, record.getId()) .one()); } @@ -138,17 +143,23 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService { .eq(AppletOrderProduct::getOrderId, order.getId()) .list()); - order.setProcess(appletOrderAfterSaleProcessService - .lambdaQuery() - .eq(AppletOrderAfterSaleProcess::getOrderId, id) - .orderByDesc(AppletOrderAfterSaleProcess::getCreateTime) - .list()); + order.setAfterSales(appletOrderAfterSaleService .lambdaQuery() + .eq(AppletOrderAfterSale::getStatus, 0) .eq(AppletOrderAfterSale::getOrderId, order.getId()) .one()); + if (order.getAfterSales() != null){ + order.setProcess(appletOrderAfterSaleProcessService + .lambdaQuery() + .eq(AppletOrderAfterSaleProcess::getSaleId, order.getId()) + .eq(AppletOrderAfterSaleProcess::getOrderId, id) + .orderByDesc(AppletOrderAfterSaleProcess::getCreateTime) + .list()); + } + log.info("订单详情查询完成,订单号: {}", order.getOrderNo()); return order; } @@ -223,6 +234,7 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService { orderProduct.setUserId(userId); orderProduct.setProductId(product.getId()); orderProduct.setProductName(product.getName()); + orderProduct.setContent(product.getContent()); orderProduct.setImage(product.getImage()); orderProduct.setPrice(spec.getPrice() == null ? product.getCurrentPrice() : spec.getPrice()); orderProduct.setQuantity(item.getNum()); @@ -391,6 +403,7 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService { AppletSubscribeDetection detection = new AppletSubscribeDetection(); + detection.setStatus("0"); detection.setTitle(orderProduct.getProductName()); detection.setOrderId(id); detection.setProductId(orderProduct.getProductId()); @@ -557,22 +570,35 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService { } @Override - public List productEvaluate(String productId) { - return appletOrderEvaluateService.lambdaQuery() + public IPage productEvaluate(String productId, Page page) { + + Page list = appletOrderEvaluateService.lambdaQuery() .like(AppletOrderEvaluate::getProductId, productId) .orderByDesc(AppletOrderEvaluate::getCreateTime) - .list(); + .page(page); + + + for (AppletOrderEvaluate evaluate : list.getRecords()) { + evaluate.setUser(appletUserService.getById(evaluate.getUserId())); + } + + return list; } @Override - public List myEvaluate(String type) { + public IPage myEvaluate(String type, Page page) { String userId = AppletUserUtil.getCurrentAppletUserId(); - - return appletOrderEvaluateService.lambdaQuery() + Page list = appletOrderEvaluateService.lambdaQuery() .eq(AppletOrderEvaluate::getUserId, userId) .isNotNull("0".equals(type), AppletOrderEvaluate::getImage) - .orderByDesc(AppletOrderEvaluate::getCreateTime) - .list(); + .orderByDesc("1".equals(type), AppletOrderEvaluate::getCreateTime) + .page(page); + + for (AppletOrderEvaluate evaluate : list.getRecords()) { + evaluate.setUser(appletUserService.getById(evaluate.getUserId())); + } + + return list; } } \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiPaperServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiPaperServiceImpl.java index 0cc13f0..22029b7 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiPaperServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiPaperServiceImpl.java @@ -1,13 +1,43 @@ package org.jeecg.modules.applet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.common.system.util.AppletUserUtil; import org.jeecg.modules.applet.service.AppletApiPaperService; import org.jeecg.modules.demo.appletPaper.entity.AppletPaper; +import org.jeecg.modules.demo.appletPaper.entity.AppletQuestions; +import org.jeecg.modules.demo.appletPaper.entity.AppletQuestionsCategory; +import org.jeecg.modules.demo.appletPaper.entity.AppletQuestionsOptions; import org.jeecg.modules.demo.appletPaper.service.IAppletPaperService; +import org.jeecg.modules.demo.appletPaper.service.IAppletQuestionsCategoryService; +import org.jeecg.modules.demo.appletPaper.service.IAppletQuestionsOptionsService; +import org.jeecg.modules.demo.appletPaper.service.IAppletQuestionsService; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import org.jeecg.modules.demo.appletPaperReport.service.IAppletPaperReportItemService; +import org.jeecg.modules.demo.appletPaperReport.service.IAppletPaperReportService; +import org.jeecg.modules.demo.appletScheme.service.IAppletSchemeService; +import org.jeecg.modules.demo.appletSchemeCategory.service.IAppletSchemeCategoryService; +import org.jeecg.modules.demo.appletProduct.entity.AppletProduct; +import org.jeecg.modules.demo.appletProduct.service.IAppletProductService; +import org.jeecg.modules.demo.appletScheme.entity.AppletScheme; +import org.jeecg.modules.demo.appletSchemeCategory.entity.AppletSchemeCategory; import org.springframework.beans.factory.annotation.Autowired; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.core.JsonProcessingException; import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import java.awt.print.Paper; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.stream.Collectors; @Service @@ -15,26 +45,400 @@ public class AppletApiPaperServiceImpl implements AppletApiPaperService { @Autowired private IAppletPaperService appletPaperService; + @Autowired + private IAppletQuestionsCategoryService appletQuestionsCategoryService; + @Autowired + private IAppletQuestionsService appletQuestionsService; + @Autowired + private IAppletQuestionsOptionsService appletQuestionsOptionsService; + @Autowired + private IAppletSchemeCategoryService appletSchemeCategoryService; + @Autowired + private IAppletSchemeService appletSchemeService; + @Autowired + private IAppletPaperReportService appletPaperReportService; + @Autowired + private IAppletPaperReportItemService appletPaperReportItemService; + @Autowired + private IAppletProductService appletProductService; + @Autowired + private ObjectMapper objectMapper; @Override - public List list(String type) { - return appletPaperService.list(); + public IPage list(Page page, String type) { + String userId = AppletUserUtil.getCurrentAppletUserId(); + + // 查询当前用户已答题过的试卷ID列表 + List answeredPaperIds = appletPaperReportService.lambdaQuery() + .eq(AppletPaperReport::getUserId, userId) + .list() + .stream() + .map(AppletPaperReport::getPaperId) + .collect(Collectors.toList()); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + if ("0".equals(type)) { + // type=0 表示已完成的试卷,只查询已答题的试卷 + if (answeredPaperIds.isEmpty()) { + // 如果没有答题记录,返回空分页结果 + return new Page<>(page.getCurrent(), page.getSize()); + } + queryWrapper.in(AppletPaper::getId, answeredPaperIds); + } else if ("1".equals(type)) { + // type=1 表示未完成的试卷,排除已答题的试卷 + if (!answeredPaperIds.isEmpty()) { + queryWrapper.notIn(AppletPaper::getId, answeredPaperIds); + } + } + // 如果type为空或其他值,查询所有试卷(不过滤) + + return appletPaperService.page(page, queryWrapper); } @Override - public Object report(String id) { - return null; + public List report(String id) { + String userId = AppletUserUtil.getCurrentAppletUserId(); + + List list = appletPaperReportService.lambdaQuery() + .eq(AppletPaperReport::getPaperId, id) + .eq(AppletPaperReport::getUserId, userId) + .eq(AppletPaperReport::getStatus, "1") + .list(); + return list; } @Override - public void reportDetail(String id) { - + public AppletPaperReport reportDetail(String id) { + AppletPaperReport report = appletPaperReportService.getById(id); + if (report == null) { + return null; + } + + // 加载答题记录 + List reportItems = appletPaperReportItemService.lambdaQuery() + .eq(AppletPaperReportItem::getReportId, id) + .list(); + + report.setReportItems(reportItems); + + // 加载商品列表 + if (report.getProductIds() != null && !report.getProductIds().trim().isEmpty()) { + String[] productIds = report.getProductIds().split(","); + List productList = new ArrayList<>(); + + for (String productId : productIds) { + productId = productId.trim(); + if (!productId.isEmpty()) { + AppletProduct product = appletProductService.getById(productId); + if (product != null) { + productList.add(product); + } + } + } + + report.setProductList(productList); + } + + return report; } @Override public AppletPaper paperDetail(String id) { - return null; + AppletPaper paper = appletPaperService.getById(id); + if (paper == null) { + return null; + } + + // 获取试卷分类 + List categories = appletQuestionsCategoryService.lambdaQuery() + .eq(AppletQuestionsCategory::getPaperId, paper.getId()) + .orderByAsc(AppletQuestionsCategory::getSort) + .list(); + + // 为每个分类加载题目和选项 + for (AppletQuestionsCategory category : categories) { + if (category.getQuestionsId() != null && !category.getQuestionsId().trim().isEmpty()) { + // 解析题目ID(可能是逗号分隔的多个ID) + String[] questionIds = category.getQuestionsId().split(","); + List questionsList = new ArrayList<>(); + + for (String questionId : questionIds) { + questionId = questionId.trim(); + if (!questionId.isEmpty()) { + AppletQuestions question = appletQuestionsService.getById(questionId); + if (question != null) { + // 加载题目选项 + List options = appletQuestionsOptionsService.selectByMainId(questionId); + question.setOptions(options); + questionsList.add(question); + } + } + } + category.setQuestionsList(questionsList); + } + } + + paper.setCategory(categories); + return paper; + } + + @Override + public String start(String id) { + String userId = AppletUserUtil.getCurrentAppletUserId(); + + // 获取试卷信息 + AppletPaper paper = appletPaperService.getById(id); + if (paper == null) { + throw new RuntimeException("试卷不存在"); + } + + // 创建新的试卷报告 + AppletPaperReport report = new AppletPaperReport(); + report.setPaperId(id); + report.setUserId(userId); + report.setTitle(paper.getTitle()); + report.setEnTitle(paper.getEnTitle()); + report.setTips(paper.getTips()); + report.setStatus("0"); + report.setScore(0.0); // 初始分数为0 + + // 保存报告 + appletPaperReportService.save(report); + + return report.getId(); + } + + @Override + public void answer(String id, String questionsId, String answer) { + String userId = AppletUserUtil.getCurrentAppletUserId(); + + // 验证报告是否存在且属于当前用户 + AppletPaperReport report = appletPaperReportService.getById(id); + if (report == null || !userId.equals(report.getUserId())) { + throw new RuntimeException("报告不存在或无权限"); + } + + // 获取题目信息 + AppletQuestions questions = appletQuestionsService.getById(questionsId); + if (questions == null) { + throw new RuntimeException("题目不存在"); + } + + // 检查是否已存在该题目的答题记录 + AppletPaperReportItem existingItem = appletPaperReportItemService.lambdaQuery() + .eq(AppletPaperReportItem::getReportId, id) + .eq(AppletPaperReportItem::getQuestionsId, questionsId) + .one(); + + // 如果是选择题,需要获取选项的商品和方案信息 + String productId = null; + String schemeId = null; + + if (answer != null && !answer.trim().isEmpty()) { + // 解析答案(可能是多个选项ID,用逗号分隔) + String[] optionIds = answer.split(","); + List productIds = new ArrayList<>(); + List schemeIds = new ArrayList<>(); + + for (String optionId : optionIds) { + optionId = optionId.trim(); + if (!optionId.isEmpty()) { + AppletQuestionsOptions option = appletQuestionsOptionsService.getById(optionId); + if (option != null) { + if (option.getProductId() != null && !option.getProductId().trim().isEmpty()) { + productIds.add(option.getProductId()); + } + if (option.getSchemeId() != null && !option.getSchemeId().trim().isEmpty()) { + schemeIds.add(option.getSchemeId()); + } + } + } + } + + // 合并商品ID和方案ID + productId = productIds.isEmpty() ? null : String.join(",", productIds); + schemeId = schemeIds.isEmpty() ? null : String.join(",", schemeIds); + } + + if (existingItem != null) { + // 更新现有记录 + existingItem.setAnswer(answer); + existingItem.setProductId(productId); + existingItem.setSchemeId(schemeId); + appletPaperReportItemService.updateById(existingItem); + } else { + // 创建新的答题记录 + AppletPaperReportItem reportItem = new AppletPaperReportItem(); + reportItem.setReportId(id); + reportItem.setQuestionsId(questionsId); + reportItem.setQuestionsName(questions.getText()); + reportItem.setAnswer(answer); + reportItem.setType(questions.getType()); + reportItem.setProductId(productId); + reportItem.setSchemeId(schemeId); + + appletPaperReportItemService.save(reportItem); + } + } + + @Override + public void submit(String id) { + String userId = AppletUserUtil.getCurrentAppletUserId(); + + // 验证报告是否存在且属于当前用户 + AppletPaperReport report = appletPaperReportService.getById(id); + if (report == null || !userId.equals(report.getUserId())) { + throw new RuntimeException("报告不存在或无权限"); + } + + // 获取所有答题记录 + List reportItems = appletPaperReportItemService.lambdaQuery() + .eq(AppletPaperReportItem::getReportId, id) + .list(); + + // 随机生成总分和健康评分详情 + Random random = new Random(); + double totalScore = 60 + random.nextDouble() * 40; // 生成60-100之间的随机分数 + int answeredCount = 0; + Set productIdSet = new HashSet<>(); + Set schemeIdSet = new HashSet<>(); + + for (AppletPaperReportItem item : reportItems) { + if (item.getAnswer() != null && !item.getAnswer().trim().isEmpty()) { + answeredCount++; + + // 收集商品ID + if (item.getProductId() != null && !item.getProductId().trim().isEmpty()) { + String[] productIds = item.getProductId().split(","); + for (String productId : productIds) { + productId = productId.trim(); + if (!productId.isEmpty()) { + productIdSet.add(productId); + } + } + } + + // 收集方案ID + if (item.getSchemeId() != null && !item.getSchemeId().trim().isEmpty()) { + String[] schemeIds = item.getSchemeId().split(","); + for (String schemeId : schemeIds) { + schemeId = schemeId.trim(); + if (!schemeId.isEmpty()) { + schemeIdSet.add(schemeId); + } + } + } + } + } + + // 生成健康评分详情JSON + String scoreDetailJson = generateScoreDetail(random); + + // 转换为List并组合方案数据 + List allProductIds = new ArrayList<>(productIdSet); + List allSchemeIds = new ArrayList<>(schemeIdSet); + String schemeDataJson = buildSchemeData(allSchemeIds); + + // 更新报告分数、商品ID列表、方案ID列表、健康评分详情和方案组合数据 + report.setScore(totalScore); + report.setStatus("1"); // 标记为已完成 + if (!allProductIds.isEmpty()) { + report.setProductIds(String.join(",", allProductIds)); + } + if (!allSchemeIds.isEmpty()) { + report.setSchemeIds(String.join(",", allSchemeIds)); + } + if (scoreDetailJson != null) { + report.setScoreDetail(scoreDetailJson); + } + if (schemeDataJson != null) { + report.setJson(schemeDataJson); + } + appletPaperReportService.updateById(report); } + /** + * 组合方案数据 + * @param schemeIds 方案ID列表,逗号分隔 + * @return 组合后的方案数据JSON字符串 + */ + private String buildSchemeData(List schemeIds) { + if (schemeIds == null || schemeIds.isEmpty()) { + return null; + } + + try { + // 查询所有方案 + List schemes = appletSchemeService.lambdaQuery() + .in(AppletScheme::getId, schemeIds) + .list(); + + if (schemes.isEmpty()) { + return null; + } + + // 获取所有分类ID + List categoryIds = schemes.stream() + .map(AppletScheme::getSchemeCategory) + .filter(categoryId -> categoryId != null && !categoryId.trim().isEmpty()) + .distinct() + .collect(Collectors.toList()); + + // 查询所有分类并按排序字段排序 + List categories = appletSchemeCategoryService.lambdaQuery() + .in(AppletSchemeCategory::getId, categoryIds) + .orderByAsc(AppletSchemeCategory::getSort) + .list(); + + // 组合数据:分类中包含方案列表 + List> result = new ArrayList<>(); + + for (AppletSchemeCategory category : categories) { + Map categoryData = new HashMap<>(); + categoryData.put("id", category.getId()); + categoryData.put("name", category.getName()); + categoryData.put("enTitle", category.getEnTitle()); + categoryData.put("type", category.getType()); + categoryData.put("icon", category.getIcon()); + categoryData.put("sort", category.getSort()); + + // 获取该分类下的方案列表 + List categorySchemes = schemes.stream() + .filter(scheme -> category.getId().equals(scheme.getSchemeCategory())) + .collect(Collectors.toList()); + + categoryData.put("schemes", categorySchemes); + result.add(categoryData); + } + + return objectMapper.writeValueAsString(result); + } catch (JsonProcessingException e) { + throw new RuntimeException("方案数据序列化失败", e); + } + } + + /** + * 生成健康评分详情JSON + * @param random 随机数生成器 + * @return 健康评分详情JSON字符串 + */ + private String generateScoreDetail(Random random) { + try { + List> scoreDetails = new ArrayList<>(); + String[] categories = {"饮食", "作息", "体质", "心理", "运动"}; + + for (String category : categories) { + Map scoreItem = new HashMap<>(); + scoreItem.put("name", category); + scoreItem.put("score", 60 + random.nextDouble() * 40); // 生成60-100之间的随机分数 + scoreDetails.add(scoreItem); + } + + return objectMapper.writeValueAsString(scoreDetails); + } catch (JsonProcessingException e) { + throw new RuntimeException("健康评分详情数据序列化失败", e); + } + } } \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiSubscribeServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiSubscribeServiceImpl.java index d08f7df..52f730f 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiSubscribeServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiSubscribeServiceImpl.java @@ -7,6 +7,7 @@ import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.applet.service.AppletApiSubscribeService; import org.jeecg.modules.demo.appletHospital.entity.AppletHospital; import org.jeecg.modules.demo.appletHospital.service.IAppletHospitalService; +import org.jeecg.modules.demo.appletOrder.service.IAppletOrderProductService; import org.jeecg.modules.demo.appletProduct.entity.AppletProduct; import org.jeecg.modules.demo.appletProduct.service.IAppletProductService; import org.jeecg.modules.demo.appletSubscribeDetection.entity.AppletSubscribeDetection; @@ -28,6 +29,9 @@ public class AppletApiSubscribeServiceImpl implements AppletApiSubscribeService @Autowired private IAppletProductService appletProductService; + @Autowired + private IAppletOrderProductService appletOrderProductService; + @Override public IPage getAppletSubscribeDetection(Integer pageNo, Integer pageSize, String type) { @@ -46,6 +50,10 @@ public class AppletApiSubscribeServiceImpl implements AppletApiSubscribeService }).page(new Page<>(pageNo, pageSize)); + for (AppletSubscribeDetection record : page.getRecords()) { + record.setOrderProduct(appletOrderProductService.getById(record.getOrderProductId())); + } + return page; } @@ -63,11 +71,11 @@ public class AppletApiSubscribeServiceImpl implements AppletApiSubscribeService String[] split = null; if (StringUtils.isNotBlank(hospitalId)){ - split = hospitalId.split(",");; + split = hospitalId.split(","); } return appletHospitalService.lambdaQuery() - .in(split.length > 0, AppletHospital::getId, split) + .in(split != null && split.length > 0, AppletHospital::getId, split) .list(); } @@ -79,7 +87,34 @@ public class AppletApiSubscribeServiceImpl implements AppletApiSubscribeService @Override public AppletSubscribeDetection detail(String id) { - return appletSubscribeDetectionService.getById(id); + AppletSubscribeDetection record = appletSubscribeDetectionService.getById(id); + record.setOrderProduct(appletOrderProductService.getById(record.getOrderProductId())); + return record; + } + + @Override + public void cancel(String id) { + AppletSubscribeDetection detection = appletSubscribeDetectionService.getById(id); + + if (detection == null){ + throw new JeecgBootException("预约检测不存在"); + } + + detection.setStatus("4"); + appletSubscribeDetectionService.updateById(detection); + } + + @Override + public void logistics(String id, String logisticsNo) { + AppletSubscribeDetection detection = appletSubscribeDetectionService.getById(id); + + if (detection == null){ + throw new JeecgBootException("预约检测不存在"); + } + + detection.setStatus("2"); + detection.setLogisticsNo(logisticsNo); + appletSubscribeDetectionService.updateById(detection); } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrder/entity/AppletOrderProduct.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrder/entity/AppletOrderProduct.java index d19b38f..58fee84 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrder/entity/AppletOrderProduct.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrder/entity/AppletOrderProduct.java @@ -49,10 +49,14 @@ public class AppletOrderProduct implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @Schema(description = "更新日期") private java.util.Date updateTime; - /**产品名称*/ - @Excel(name = "产品名称", width = 15) + /**产品名称*/ + @Excel(name = "产品名称", width = 15) @Schema(description = "产品名称") private java.lang.String productName; + /**产品内容*/ + @Excel(name = "产品内容", width = 15) + @Schema(description = "产品内容") + private java.lang.String content; /**规格名称*/ @Excel(name = "规格名称", width = 15) @Schema(description = "规格名称") diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderAfterSale.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderAfterSale.java index 1f48c15..e1a5111 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderAfterSale.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderAfterSale.java @@ -91,4 +91,7 @@ public class AppletOrderAfterSale implements Serializable { @Dict(dictTable = "applet_product", dicText = "name", dicCode = "id") @Schema(description = "产品") private java.lang.String productId; + /**状态*/ + @Schema(description = "状态 0进行中 1已完成") + private java.lang.String status; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderEvaluate.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderEvaluate.java index 8839f04..2220e3c 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderEvaluate.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletOrderEvaluate/entity/AppletOrderEvaluate.java @@ -4,11 +4,10 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.TableLogic; + +import com.baomidou.mybatisplus.annotation.*; import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.system.vo.AppletUser; import org.jeecg.common.util.SpringContextUtils; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; @@ -88,4 +87,8 @@ public class AppletOrderEvaluate implements Serializable { @Excel(name = "产品", width = 15) @Schema(description = "产品") private java.lang.String productId; + + + @TableField(exist = false) + private AppletUser user; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletPaper.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletPaper.java index d1d7f58..a24b431 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletPaper.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletPaper.java @@ -3,10 +3,9 @@ package org.jeecg.modules.demo.appletPaper.entity; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.TableLogic; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.*; import org.jeecg.common.constant.ProvinceCityArea; import org.jeecg.common.util.SpringContextUtils; import lombok.Data; @@ -67,5 +66,9 @@ public class AppletPaper implements Serializable { /**总分*/ @Excel(name = "总分", width = 15) @Schema(description = "总分") - private java.lang.String score; + private Double score; + + @TableField(exist = false) + @Schema(description = "试卷分类") + private List category; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestions.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestions.java index 1375f3d..60fa2f6 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestions.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestions.java @@ -3,9 +3,11 @@ package org.jeecg.modules.demo.appletPaper.entity; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; +import java.util.List; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableLogic; import org.jeecg.common.constant.ProvinceCityArea; import org.jeecg.common.util.SpringContextUtils; @@ -73,4 +75,9 @@ public class AppletQuestions implements Serializable { @Excel(name = "备注", width = 15) @Schema(description = "备注") private java.lang.String remark; + + + @TableField(exist = false) + @Schema(description = "题目选项") + private List options; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsCategory.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsCategory.java index a30f16d..2a7404b 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsCategory.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsCategory.java @@ -1,9 +1,11 @@ package org.jeecg.modules.demo.appletPaper.entity; import java.io.Serializable; +import java.util.List; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableLogic; import org.jeecg.common.constant.ProvinceCityArea; import org.jeecg.common.util.SpringContextUtils; @@ -70,4 +72,8 @@ public class AppletQuestionsCategory implements Serializable { @Excel(name = "题目", width = 15, dictTable = "applet_questions", dicText = "text", dicCode = "id") @Schema(description = "题目") private java.lang.String questionsId; + + @TableField(exist = false) + @Schema(description = "题目列表") + private List questionsList; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsOptions.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsOptions.java index 1ae1c5f..6bca3dc 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsOptions.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaper/entity/AppletQuestionsOptions.java @@ -63,16 +63,27 @@ public class AppletQuestionsOptions implements Serializable { @Excel(name = "前缀文字", width = 15) @Schema(description = "前缀文字") private java.lang.String prefix; + /**后缀文字*/ @Excel(name = "后缀文字", width = 15) @Schema(description = "后缀文字") private java.lang.String suffix; + /**选中前图片*/ @Excel(name = "选中前图片", width = 15) @Schema(description = "选中前图片") private java.lang.String image; + /**选中后图片*/ @Excel(name = "选中后图片", width = 15) @Schema(description = "选中后图片") private java.lang.String imageAfter; + + @Excel(name = "方案", width = 15, dictTable = "applet_scheme", dicText = "title", dicCode = "id") + @Schema(description = "方案") + private java.lang.String schemeId; + + @Excel(name = "商品", width = 15, dictTable = "applet_product", dicText = "name", dicCode = "id") + @Schema(description = "商品") + private java.lang.String productId; } diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/controller/AppletPaperReportController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/controller/AppletPaperReportController.java new file mode 100644 index 0000000..ce8bb39 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/controller/AppletPaperReportController.java @@ -0,0 +1,268 @@ +package org.jeecg.modules.demo.appletPaperReport.controller; + +import java.io.UnsupportedEncodingException; +import java.io.IOException; +import java.net.URLDecoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.HashMap; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.vo.LoginUser; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; +import org.jeecg.modules.demo.appletPaperReport.vo.AppletPaperReportPage; +import org.jeecg.modules.demo.appletPaperReport.service.IAppletPaperReportService; +import org.jeecg.modules.demo.appletPaperReport.service.IAppletPaperReportItemService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 试卷报告 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Tag(name="试卷报告") +@RestController +@RequestMapping("/appletPaperReport/appletPaperReport") +@Slf4j +public class AppletPaperReportController { + @Autowired + private IAppletPaperReportService appletPaperReportService; + @Autowired + private IAppletPaperReportItemService appletPaperReportItemService; + + /** + * 分页列表查询 + * + * @param appletPaperReport + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "试卷报告-分页列表查询") + @Operation(summary="试卷报告-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppletPaperReport appletPaperReport, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appletPaperReport, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appletPaperReportService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appletPaperReportPage + * @return + */ + @AutoLog(value = "试卷报告-添加") + @Operation(summary="试卷报告-添加") + @RequiresPermissions("appletPaperReport:applet_paper_report:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppletPaperReportPage appletPaperReportPage) { + AppletPaperReport appletPaperReport = new AppletPaperReport(); + BeanUtils.copyProperties(appletPaperReportPage, appletPaperReport); + appletPaperReportService.saveMain(appletPaperReport, appletPaperReportPage.getAppletPaperReportItemList()); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appletPaperReportPage + * @return + */ + @AutoLog(value = "试卷报告-编辑") + @Operation(summary="试卷报告-编辑") + @RequiresPermissions("appletPaperReport:applet_paper_report:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppletPaperReportPage appletPaperReportPage) { + AppletPaperReport appletPaperReport = new AppletPaperReport(); + BeanUtils.copyProperties(appletPaperReportPage, appletPaperReport); + AppletPaperReport appletPaperReportEntity = appletPaperReportService.getById(appletPaperReport.getId()); + if(appletPaperReportEntity==null) { + return Result.error("未找到对应数据"); + } + appletPaperReportService.updateMain(appletPaperReport, appletPaperReportPage.getAppletPaperReportItemList()); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "试卷报告-通过id删除") + @Operation(summary="试卷报告-通过id删除") + @RequiresPermissions("appletPaperReport:applet_paper_report:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appletPaperReportService.delMain(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "试卷报告-批量删除") + @Operation(summary="试卷报告-批量删除") + @RequiresPermissions("appletPaperReport:applet_paper_report:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appletPaperReportService.delBatchMain(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "试卷报告-通过id查询") + @Operation(summary="试卷报告-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppletPaperReport appletPaperReport = appletPaperReportService.getById(id); + if(appletPaperReport==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appletPaperReport); + + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "试卷报告子项通过主表ID查询") + @Operation(summary="试卷报告子项主表ID查询") + @GetMapping(value = "/queryAppletPaperReportItemByMainId") + public Result> queryAppletPaperReportItemListByMainId(@RequestParam(name="id",required=true) String id) { + List appletPaperReportItemList = appletPaperReportItemService.selectByMainId(id); + return Result.OK(appletPaperReportItemList); + } + + /** + * 导出excel + * + * @param request + * @param appletPaperReport + */ + @RequiresPermissions("appletPaperReport:applet_paper_report:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppletPaperReport appletPaperReport) { + + // Step.1 组装查询条件查询数据 + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appletPaperReport, request.getParameterMap()); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + //配置选中数据查询条件 + String selections = request.getParameter("selections"); + if(oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + queryWrapper.in("id",selectionList); + } + //Step.2 获取导出数据 + List appletPaperReportList = appletPaperReportService.list(queryWrapper); + + // Step.3 组装pageList + List pageList = new ArrayList(); + for (AppletPaperReport main : appletPaperReportList) { + AppletPaperReportPage vo = new AppletPaperReportPage(); + BeanUtils.copyProperties(main, vo); + List appletPaperReportItemList = appletPaperReportItemService.selectByMainId(main.getId()); + vo.setAppletPaperReportItemList(appletPaperReportItemList); + pageList.add(vo); + } + + // Step.4 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject(NormalExcelConstants.FILE_NAME, "试卷报告列表"); + mv.addObject(NormalExcelConstants.CLASS, AppletPaperReportPage.class); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("试卷报告数据", "导出人:"+sysUser.getRealname(), "试卷报告")); + mv.addObject(NormalExcelConstants.DATA_LIST, pageList); + return mv; + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("appletPaperReport:applet_paper_report:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + // 获取上传文件对象 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(2); + params.setHeadRows(1); + params.setNeedSave(true); + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), AppletPaperReportPage.class, params); + for (AppletPaperReportPage page : list) { + AppletPaperReport po = new AppletPaperReport(); + BeanUtils.copyProperties(page, po); + appletPaperReportService.saveMain(po, page.getAppletPaperReportItemList()); + } + return Result.OK("文件导入成功!数据行数:" + list.size()); + } catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败:"+e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.OK("文件导入失败!"); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReport.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReport.java new file mode 100644 index 0000000..9e93980 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReport.java @@ -0,0 +1,117 @@ +package org.jeecg.modules.demo.appletPaperReport.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.util.List; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.modules.demo.appletProduct.entity.AppletProduct; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * @Description: 试卷报告 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Schema(description="试卷报告") +@Data +@TableName("applet_paper_report") +public class AppletPaperReport implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Schema(description = "所属部门") + private java.lang.String sysOrgCode; + /**试卷名称*/ + @Excel(name = "试卷名称", width = 15) + @Schema(description = "试卷名称") + private java.lang.String title; + /**英文名称*/ + @Excel(name = "英文名称", width = 15) + @Schema(description = "英文名称") + private java.lang.String enTitle; + /**小提示*/ + @Excel(name = "小提示", width = 15) + @Schema(description = "小提示") + private java.lang.String tips; + + /**小提示*/ + @Excel(name = "状态 0未完成 1已完成", width = 15) + @Schema(description = "状态 0未完成 1已完成") + private java.lang.String status; + + /**试卷*/ + @Excel(name = "试卷", width = 15, dictTable = "applet_paper", dicText = "title", dicCode = "id") + @Dict(dictTable = "applet_paper", dicText = "title", dicCode = "id") + @Schema(description = "试卷") + private java.lang.String paperId; + /**用户*/ + @Excel(name = "用户", width = 15, dictTable = "applet_user", dicText = "name", dicCode = "id") + @Dict(dictTable = "applet_user", dicText = "name", dicCode = "id") + @Schema(description = "用户") + private java.lang.String userId; + /**得分*/ + @Excel(name = "得分", width = 15) + @Schema(description = "得分") + private java.lang.Double score; + /**方案json*/ + @Excel(name = "方案json", width = 15) + @Schema(description = "方案json") + private java.lang.String json; + + /**商品ID列表*/ + @Excel(name = "商品ID列表", width = 15) + @Schema(description = "商品ID列表,多个用逗号分隔") + private java.lang.String productIds; + + /**方案ID列表*/ + @Excel(name = "方案ID列表", width = 15) + @Schema(description = "方案ID列表,多个用逗号分隔") + private java.lang.String schemeIds; + + /**健康评分详情*/ + @Excel(name = "健康评分详情", width = 15) + @Schema(description = "健康评分详情JSON,包含饮食、作息、体质、心理、运动五个维度的分数") + private java.lang.String scoreDetail; + + @TableField(exist = false) + @Schema(description = "答题记录列表") + private List reportItems; + + @TableField(exist = false) + @Schema(description = "商品列表") + private List productList; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReportItem.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReportItem.java new file mode 100644 index 0000000..f867831 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/entity/AppletPaperReportItem.java @@ -0,0 +1,81 @@ +package org.jeecg.modules.demo.appletPaperReport.entity; + +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import java.util.Date; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.io.UnsupportedEncodingException; + +/** + * @Description: 试卷报告子项 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Schema(description="试卷报告子项") +@Data +@TableName("applet_paper_report_item") +public class AppletPaperReportItem implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Schema(description = "所属部门") + private java.lang.String sysOrgCode; + /**报告*/ + @Schema(description = "报告") + private java.lang.String reportId; + /**题目*/ + @Excel(name = "题目", width = 15) + @Schema(description = "题目") + private java.lang.String questionsId; + /**题目内容*/ + @Excel(name = "题目内容", width = 15) + @Schema(description = "题目内容") + private java.lang.String questionsName; + /**商品*/ + @Excel(name = "商品", width = 15, dictTable = "applet_product", dicText = "name", dicCode = "id") + @Schema(description = "商品") + private java.lang.String productId; + /**答案*/ + @Excel(name = "答案", width = 15) + @Schema(description = "答案") + private java.lang.String answer; + /**题目类型*/ + @Excel(name = "题目类型", width = 15) + @Schema(description = "题目类型") + private java.lang.String type; + /**方案*/ + @Excel(name = "方案", width = 15, dictTable = "applet_scheme", dicText = "title", dicCode = "id") + @Schema(description = "方案") + private java.lang.String schemeId; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportItemMapper.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportItemMapper.java new file mode 100644 index 0000000..0b9e4c2 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportItemMapper.java @@ -0,0 +1,31 @@ +package org.jeecg.modules.demo.appletPaperReport.mapper; + +import java.util.List; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: 试卷报告子项 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface AppletPaperReportItemMapper extends BaseMapper { + + /** + * 通过主表id删除子表数据 + * + * @param mainId 主表id + * @return boolean + */ + public boolean deleteByMainId(@Param("mainId") String mainId); + + /** + * 通过主表id查询子表数据 + * + * @param mainId 主表id + * @return List + */ + public List selectByMainId(@Param("mainId") String mainId); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportMapper.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportMapper.java new file mode 100644 index 0000000..f04a790 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/AppletPaperReportMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.appletPaperReport.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 试卷报告 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface AppletPaperReportMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportItemMapper.xml b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportItemMapper.xml new file mode 100644 index 0000000..fe07ff8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportItemMapper.xml @@ -0,0 +1,16 @@ + + + + + + DELETE + FROM applet_paper_report_item + WHERE + report_id = #{mainId} + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportMapper.xml b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportMapper.xml new file mode 100644 index 0000000..ec25a0c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/mapper/xml/AppletPaperReportMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportItemService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportItemService.java new file mode 100644 index 0000000..fcd2f7b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportItemService.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.demo.appletPaperReport.service; + +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 试卷报告子项 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface IAppletPaperReportItemService extends IService { + + /** + * 通过主表id查询子表数据 + * + * @param mainId 主表id + * @return List + */ + public List selectByMainId(String mainId); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportService.java new file mode 100644 index 0000000..5516f93 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/IAppletPaperReportService.java @@ -0,0 +1,48 @@ +package org.jeecg.modules.demo.appletPaperReport.service; + +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; +import com.baomidou.mybatisplus.extension.service.IService; +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * @Description: 试卷报告 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface IAppletPaperReportService extends IService { + + /** + * 添加一对多 + * + * @param appletPaperReport + * @param appletPaperReportItemList + */ + public void saveMain(AppletPaperReport appletPaperReport,List appletPaperReportItemList) ; + + /** + * 修改一对多 + * + * @param appletPaperReport + * @param appletPaperReportItemList + */ + public void updateMain(AppletPaperReport appletPaperReport,List appletPaperReportItemList); + + /** + * 删除一对多 + * + * @param id + */ + public void delMain (String id); + + /** + * 批量删除一对多 + * + * @param idList + */ + public void delBatchMain (Collection idList); + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportItemServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportItemServiceImpl.java new file mode 100644 index 0000000..af3b69a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportItemServiceImpl.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.demo.appletPaperReport.service.impl; + +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import org.jeecg.modules.demo.appletPaperReport.mapper.AppletPaperReportItemMapper; +import org.jeecg.modules.demo.appletPaperReport.service.IAppletPaperReportItemService; +import org.springframework.stereotype.Service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 试卷报告子项 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Service +public class AppletPaperReportItemServiceImpl extends ServiceImpl implements IAppletPaperReportItemService { + + @Autowired + private AppletPaperReportItemMapper appletPaperReportItemMapper; + + @Override + public List selectByMainId(String mainId) { + return appletPaperReportItemMapper.selectByMainId(mainId); + } +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportServiceImpl.java new file mode 100644 index 0000000..3b23eaf --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/service/impl/AppletPaperReportServiceImpl.java @@ -0,0 +1,77 @@ +package org.jeecg.modules.demo.appletPaperReport.service.impl; + +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import org.jeecg.modules.demo.appletPaperReport.mapper.AppletPaperReportItemMapper; +import org.jeecg.modules.demo.appletPaperReport.mapper.AppletPaperReportMapper; +import org.jeecg.modules.demo.appletPaperReport.service.IAppletPaperReportService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import java.io.Serializable; +import java.util.List; +import java.util.Collection; + +/** + * @Description: 试卷报告 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Service +public class AppletPaperReportServiceImpl extends ServiceImpl implements IAppletPaperReportService { + + @Autowired + private AppletPaperReportMapper appletPaperReportMapper; + @Autowired + private AppletPaperReportItemMapper appletPaperReportItemMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveMain(AppletPaperReport appletPaperReport, List appletPaperReportItemList) { + appletPaperReportMapper.insert(appletPaperReport); + if(appletPaperReportItemList!=null && appletPaperReportItemList.size()>0) { + for(AppletPaperReportItem entity:appletPaperReportItemList) { + //外键设置 + entity.setReportId(appletPaperReport.getId()); + appletPaperReportItemMapper.insert(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMain(AppletPaperReport appletPaperReport,List appletPaperReportItemList) { + appletPaperReportMapper.updateById(appletPaperReport); + + //1.先删除子表数据 + appletPaperReportItemMapper.deleteByMainId(appletPaperReport.getId()); + + //2.子表数据重新插入 + if(appletPaperReportItemList!=null && appletPaperReportItemList.size()>0) { + for(AppletPaperReportItem entity:appletPaperReportItemList) { + //外键设置 + entity.setReportId(appletPaperReport.getId()); + appletPaperReportItemMapper.insert(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delMain(String id) { + appletPaperReportItemMapper.deleteByMainId(id); + appletPaperReportMapper.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delBatchMain(Collection idList) { + for(Serializable id:idList) { + appletPaperReportItemMapper.deleteByMainId(id.toString()); + appletPaperReportMapper.deleteById(id); + } + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vo/AppletPaperReportPage.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vo/AppletPaperReportPage.java new file mode 100644 index 0000000..d1469cf --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vo/AppletPaperReportPage.java @@ -0,0 +1,86 @@ +package org.jeecg.modules.demo.appletPaperReport.vo; + +import java.util.List; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReport; +import org.jeecg.modules.demo.appletPaperReport.entity.AppletPaperReportItem; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelEntity; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import java.util.Date; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * @Description: 试卷报告 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Data +@Schema(description="试卷报告") +public class AppletPaperReportPage { + + /**主键*/ + @Schema(description = "主键") + private java.lang.String id; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Schema(description = "所属部门") + private java.lang.String sysOrgCode; + /**试卷名称*/ + @Excel(name = "试卷名称", width = 15) + @Schema(description = "试卷名称") + private java.lang.String title; + /**英文名称*/ + @Excel(name = "英文名称", width = 15) + @Schema(description = "英文名称") + private java.lang.String enTitle; + /**小提示*/ + @Excel(name = "小提示", width = 15) + @Schema(description = "小提示") + private java.lang.String tips; + /**试卷*/ + @Excel(name = "试卷", width = 15, dictTable = "applet_paper", dicText = "title", dicCode = "id") + @Dict(dictTable = "applet_paper", dicText = "title", dicCode = "id") + @Schema(description = "试卷") + private java.lang.String paperId; + /**用户*/ + @Excel(name = "用户", width = 15, dictTable = "applet_user", dicText = "name", dicCode = "id") + @Dict(dictTable = "applet_user", dicText = "name", dicCode = "id") + @Schema(description = "用户") + private java.lang.String userId; + /**得分*/ + @Excel(name = "得分", width = 15) + @Schema(description = "得分") + private java.lang.Double score; + /**方案json*/ + @Excel(name = "方案json", width = 15) + @Schema(description = "方案json") + private java.lang.String json; + + @ExcelCollection(name="试卷报告子项") + @Schema(description = "试卷报告子项") + private List appletPaperReportItemList; + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.api.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.api.ts new file mode 100644 index 0000000..51a2f1a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.api.ts @@ -0,0 +1,71 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/appletPaperReport/appletPaperReport/list', + save='/appletPaperReport/appletPaperReport/add', + edit='/appletPaperReport/appletPaperReport/edit', + deleteOne = '/appletPaperReport/appletPaperReport/delete', + deleteBatch = '/appletPaperReport/appletPaperReport/deleteBatch', + importExcel = '/appletPaperReport/appletPaperReport/importExcel', + exportXls = '/appletPaperReport/appletPaperReport/exportXls', + appletPaperReportItemList = '/appletPaperReport/appletPaperReport/queryAppletPaperReportItemByMainId', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 查询子表数据 + * @param params + */ +export const appletPaperReportItemList = Api.appletPaperReportItemList; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.data.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.data.ts new file mode 100644 index 0000000..edb31d4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReport.data.ts @@ -0,0 +1,185 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import {JVxeTypes,JVxeColumn} from '/@/components/jeecg/JVxeTable/types' +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '试卷名称', + align:"center", + dataIndex: 'title' + }, + { + title: '英文名称', + align:"center", + dataIndex: 'enTitle' + }, + { + title: '小提示', + align:"center", + dataIndex: 'tips' + }, + { + title: '试卷', + align:"center", + dataIndex: 'paperId_dictText' + }, + { + title: '用户', + align:"center", + dataIndex: 'userId_dictText' + }, + { + title: '得分', + align:"center", + dataIndex: 'score' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "试卷", + field: "paperId", + component: 'JSearchSelect', + componentProps:{ + dict:"applet_paper,title,id" + }, + //colProps: {span: 6}, + }, + { + label: "用户", + field: "userId", + component: 'JSearchSelect', + componentProps:{ + dict:"applet_user,name,id" + }, + //colProps: {span: 6}, + }, +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '试卷名称', + field: 'title', + component: 'Input', + }, + { + label: '英文名称', + field: 'enTitle', + component: 'Input', + }, + { + label: '小提示', + field: 'tips', + component: 'Input', + }, + { + label: '试卷', + field: 'paperId', + component: 'JSearchSelect', + componentProps:{ + dict:"applet_paper,title,id" + }, + }, + { + label: '用户', + field: 'userId', + component: 'JSearchSelect', + componentProps:{ + dict:"applet_user,name,id" + }, + }, + { + label: '得分', + field: 'score', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; +//子表单数据 +//子表表格配置 +export const appletPaperReportItemColumns: JVxeColumn[] = [ + { + title: '题目', + key: 'questionsId', + type: JVxeTypes.input, + width:"200px", + placeholder: '请输入${title}', + defaultValue:'', + }, + { + title: '题目内容', + key: 'questionsName', + type: JVxeTypes.input, + width:"200px", + placeholder: '请输入${title}', + defaultValue:'', + }, + { + title: '商品', + key: 'productId', + type: JVxeTypes.selectMultiple, + options:[], + dictCode:"applet_product,name,id", + width:"250px", + placeholder: '请输入${title}', + defaultValue:'', + }, + { + title: '答案', + key: 'answer', + type: JVxeTypes.input, + width:"200px", + placeholder: '请输入${title}', + defaultValue:'', + }, + { + title: '题目类型', + key: 'type', + type: JVxeTypes.input, + width:"200px", + placeholder: '请输入${title}', + defaultValue:'', + }, + { + title: '方案', + key: 'schemeId', + type: JVxeTypes.selectMultiple, + options:[], + dictCode:"applet_scheme,title,id", + width:"250px", + placeholder: '请输入${title}', + defaultValue:'', + }, + ] + +// 高级查询数据 +export const superQuerySchema = { + title: {title: '试卷名称',order: 0,view: 'text', type: 'string',}, + enTitle: {title: '英文名称',order: 1,view: 'text', type: 'string',}, + tips: {title: '小提示',order: 2,view: 'text', type: 'string',}, + paperId: {title: '试卷',order: 3,view: 'sel_search', type: 'string',dictTable: "applet_paper", dictCode: 'id', dictText: 'title',}, + userId: {title: '用户',order: 4,view: 'sel_search', type: 'string',dictTable: "applet_user", dictCode: 'id', dictText: 'name',}, + score: {title: '得分',order: 5,view: 'number', type: 'number',}, + //子表高级查询 + appletPaperReportItem: { + title: '试卷报告子项', + view: 'table', + fields: { + questionsId: {title: '题目',order: 0,view: 'text', type: 'string',}, + questionsName: {title: '题目内容',order: 1,view: 'text', type: 'string',}, + productId: {title: '商品',order: 2,view: 'list_multi', type: 'string',dictTable: "applet_product", dictCode: 'id', dictText: 'name',}, + answer: {title: '答案',order: 3,view: 'text', type: 'string',}, + type: {title: '题目类型',order: 4,view: 'text', type: 'string',}, + schemeId: {title: '方案',order: 5,view: 'list_multi', type: 'string',dictTable: "applet_scheme", dictCode: 'id', dictText: 'title',}, + } + }, +}; diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReportList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReportList.vue new file mode 100644 index 0000000..deca8c0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/AppletPaperReportList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/V20250828_1__menu_insert_AppletPaperReport.sql b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/V20250828_1__menu_insert_AppletPaperReport.sql new file mode 100644 index 0000000..44a4092 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/V20250828_1__menu_insert_AppletPaperReport.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/appletPaperReport文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('202508280435930390', NULL, '试卷报告', '/appletPaperReport/appletPaperReportList', 'appletPaperReport/AppletPaperReportList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508280435930391', '202508280435930390', '添加试卷报告', NULL, NULL, 0, NULL, NULL, 2, 'appletPaperReport:applet_paper_report:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508280435930392', '202508280435930390', '编辑试卷报告', NULL, NULL, 0, NULL, NULL, 2, 'appletPaperReport:applet_paper_report:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508280435930393', '202508280435930390', '删除试卷报告', NULL, NULL, 0, NULL, NULL, 2, 'appletPaperReport:applet_paper_report:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508280435930394', '202508280435930390', '批量删除试卷报告', NULL, NULL, 0, NULL, NULL, 2, 'appletPaperReport:applet_paper_report:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508280435930395', '202508280435930390', '导出excel_试卷报告', NULL, NULL, 0, NULL, NULL, 2, 'appletPaperReport:applet_paper_report:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508280435930396', '202508280435930390', '导入excel_试卷报告', NULL, NULL, 0, NULL, NULL, 2, 'appletPaperReport:applet_paper_report:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:39', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportForm.vue new file mode 100644 index 0000000..c8bf196 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportForm.vue @@ -0,0 +1,171 @@ + + + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportModal.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportModal.vue new file mode 100644 index 0000000..a694750 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletPaperReport/vue3/components/AppletPaperReportModal.vue @@ -0,0 +1,240 @@ + + + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/controller/AppletSchemeController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/controller/AppletSchemeController.java new file mode 100644 index 0000000..7177464 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/controller/AppletSchemeController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.demo.appletScheme.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.demo.appletScheme.entity.AppletScheme; +import org.jeecg.modules.demo.appletScheme.service.IAppletSchemeService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 方案 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Tag(name="方案") +@RestController +@RequestMapping("/appletScheme/appletScheme") +@Slf4j +public class AppletSchemeController extends JeecgController { + @Autowired + private IAppletSchemeService appletSchemeService; + + /** + * 分页列表查询 + * + * @param appletScheme + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "方案-分页列表查询") + @Operation(summary="方案-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppletScheme appletScheme, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appletScheme, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appletSchemeService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appletScheme + * @return + */ + @AutoLog(value = "方案-添加") + @Operation(summary="方案-添加") + @RequiresPermissions("appletScheme:applet_scheme:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppletScheme appletScheme) { + appletSchemeService.save(appletScheme); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appletScheme + * @return + */ + @AutoLog(value = "方案-编辑") + @Operation(summary="方案-编辑") + @RequiresPermissions("appletScheme:applet_scheme:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppletScheme appletScheme) { + appletSchemeService.updateById(appletScheme); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "方案-通过id删除") + @Operation(summary="方案-通过id删除") + @RequiresPermissions("appletScheme:applet_scheme:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appletSchemeService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "方案-批量删除") + @Operation(summary="方案-批量删除") + @RequiresPermissions("appletScheme:applet_scheme:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appletSchemeService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "方案-通过id查询") + @Operation(summary="方案-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppletScheme appletScheme = appletSchemeService.getById(id); + if(appletScheme==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appletScheme); + } + + /** + * 导出excel + * + * @param request + * @param appletScheme + */ + @RequiresPermissions("appletScheme:applet_scheme:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppletScheme appletScheme) { + return super.exportXls(request, appletScheme, AppletScheme.class, "方案"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("appletScheme:applet_scheme:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppletScheme.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/entity/AppletScheme.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/entity/AppletScheme.java new file mode 100644 index 0000000..b2c3971 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/entity/AppletScheme.java @@ -0,0 +1,72 @@ +package org.jeecg.modules.demo.appletScheme.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 方案 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Data +@TableName("applet_scheme") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="方案") +public class AppletScheme implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Schema(description = "所属部门") + private java.lang.String sysOrgCode; + /**标题*/ + @Excel(name = "标题", width = 15) + @Schema(description = "标题") + private java.lang.String title; + /**描述*/ + @Excel(name = "描述", width = 15) + @Schema(description = "描述") + private java.lang.String info; + /**分类*/ + @Excel(name = "分类", width = 15, dictTable = "applet_scheme_category", dicText = "name", dicCode = "id") + @Dict(dictTable = "applet_scheme_category", dicText = "name", dicCode = "id") + @Schema(description = "分类") + private java.lang.String schemeCategory; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/AppletSchemeMapper.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/AppletSchemeMapper.java new file mode 100644 index 0000000..5d39aef --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/AppletSchemeMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.appletScheme.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.appletScheme.entity.AppletScheme; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 方案 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface AppletSchemeMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/xml/AppletSchemeMapper.xml b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/xml/AppletSchemeMapper.xml new file mode 100644 index 0000000..514c5f7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/mapper/xml/AppletSchemeMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/IAppletSchemeService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/IAppletSchemeService.java new file mode 100644 index 0000000..34307e5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/IAppletSchemeService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.appletScheme.service; + +import org.jeecg.modules.demo.appletScheme.entity.AppletScheme; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 方案 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface IAppletSchemeService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/impl/AppletSchemeServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/impl/AppletSchemeServiceImpl.java new file mode 100644 index 0000000..8b737d7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/service/impl/AppletSchemeServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.demo.appletScheme.service.impl; + +import org.jeecg.modules.demo.appletScheme.entity.AppletScheme; +import org.jeecg.modules.demo.appletScheme.mapper.AppletSchemeMapper; +import org.jeecg.modules.demo.appletScheme.service.IAppletSchemeService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 方案 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Service +public class AppletSchemeServiceImpl extends ServiceImpl implements IAppletSchemeService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeForm.vue new file mode 100644 index 0000000..0b3da5b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeForm.vue @@ -0,0 +1,95 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeList.vue new file mode 100644 index 0000000..03f1a8d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp/AppletSchemeList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeData.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeData.ts new file mode 100644 index 0000000..2d53d18 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeData.ts @@ -0,0 +1,19 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '标题', + align:"center", + dataIndex: 'title' + }, + { + title: '描述', + align:"center", + dataIndex: 'info' + }, + { + title: '分类', + align:"center", + dataIndex: 'schemeCategory_dictText' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeForm.vue new file mode 100644 index 0000000..c34bd81 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeForm.vue @@ -0,0 +1,232 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '方案', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeList.vue new file mode 100644 index 0000000..49777a6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/uniapp3/AppletSchemeList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '方案', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.api.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.api.ts new file mode 100644 index 0000000..f835573 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/appletScheme/appletScheme/list', + save='/appletScheme/appletScheme/add', + edit='/appletScheme/appletScheme/edit', + deleteOne = '/appletScheme/appletScheme/delete', + deleteBatch = '/appletScheme/appletScheme/deleteBatch', + importExcel = '/appletScheme/appletScheme/importExcel', + exportXls = '/appletScheme/appletScheme/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.data.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.data.ts new file mode 100644 index 0000000..755a932 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletScheme.data.ts @@ -0,0 +1,79 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '标题', + align:"center", + dataIndex: 'title' + }, + { + title: '描述', + align:"center", + dataIndex: 'info' + }, + { + title: '分类', + align:"center", + dataIndex: 'schemeCategory_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "分类", + field: 'schemeCategory', + component: 'JSearchSelect', + componentProps:{ + dict:"applet_scheme_category,name,id" + }, + //colProps: {span: 6}, + }, +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '标题', + field: 'title', + component: 'Input', + }, + { + label: '描述', + field: 'info', + component: 'Input', + }, + { + label: '分类', + field: 'schemeCategory', + component: 'JSearchSelect', + componentProps:{ + dict:"applet_scheme_category,name,id" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + title: {title: '标题',order: 0,view: 'text', type: 'string',}, + info: {title: '描述',order: 1,view: 'text', type: 'string',}, + schemeCategory: {title: '分类',order: 2,view: 'sel_search', type: 'string',dictTable: "applet_scheme_category", dictCode: 'id', dictText: 'name',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletSchemeList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletSchemeList.vue new file mode 100644 index 0000000..cdd0a71 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/AppletSchemeList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/V20250828_1__menu_insert_AppletScheme.sql b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/V20250828_1__menu_insert_AppletScheme.sql new file mode 100644 index 0000000..c4a0bca --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/V20250828_1__menu_insert_AppletScheme.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/appletScheme文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025082804362650160', NULL, '方案', '/appletScheme/appletSchemeList', 'appletScheme/AppletSchemeList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804362650161', '2025082804362650160', '添加方案', NULL, NULL, 0, NULL, NULL, 2, 'appletScheme:applet_scheme:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804362650162', '2025082804362650160', '编辑方案', NULL, NULL, 0, NULL, NULL, 2, 'appletScheme:applet_scheme:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804362650163', '2025082804362650160', '删除方案', NULL, NULL, 0, NULL, NULL, 2, 'appletScheme:applet_scheme:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804362650164', '2025082804362650160', '批量删除方案', NULL, NULL, 0, NULL, NULL, 2, 'appletScheme:applet_scheme:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804362650165', '2025082804362650160', '导出excel_方案', NULL, NULL, 0, NULL, NULL, 2, 'appletScheme:applet_scheme:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804362650166', '2025082804362650160', '导入excel_方案', NULL, NULL, 0, NULL, NULL, 2, 'appletScheme:applet_scheme:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:36:16', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeForm.vue new file mode 100644 index 0000000..a1157b6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeModal.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeModal.vue new file mode 100644 index 0000000..a111dfa --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletScheme/vue3/components/AppletSchemeModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/controller/AppletSchemeCategoryController.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/controller/AppletSchemeCategoryController.java new file mode 100644 index 0000000..8b8ecc8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/controller/AppletSchemeCategoryController.java @@ -0,0 +1,186 @@ +package org.jeecg.modules.demo.appletSchemeCategory.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.demo.appletSchemeCategory.entity.AppletSchemeCategory; +import org.jeecg.modules.demo.appletSchemeCategory.service.IAppletSchemeCategoryService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 方案分类 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Tag(name="方案分类") +@RestController +@RequestMapping("/appletSchemeCategory/appletSchemeCategory") +@Slf4j +public class AppletSchemeCategoryController extends JeecgController { + @Autowired + private IAppletSchemeCategoryService appletSchemeCategoryService; + + /** + * 分页列表查询 + * + * @param appletSchemeCategory + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "方案分类-分页列表查询") + @Operation(summary="方案分类-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppletSchemeCategory appletSchemeCategory, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("type", QueryRuleEnum.LIKE_WITH_OR); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appletSchemeCategory, req.getParameterMap(),customeRuleMap); + Page page = new Page(pageNo, pageSize); + IPage pageList = appletSchemeCategoryService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appletSchemeCategory + * @return + */ + @AutoLog(value = "方案分类-添加") + @Operation(summary="方案分类-添加") + @RequiresPermissions("appletSchemeCategory:applet_scheme_category:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppletSchemeCategory appletSchemeCategory) { + appletSchemeCategoryService.save(appletSchemeCategory); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appletSchemeCategory + * @return + */ + @AutoLog(value = "方案分类-编辑") + @Operation(summary="方案分类-编辑") + @RequiresPermissions("appletSchemeCategory:applet_scheme_category:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppletSchemeCategory appletSchemeCategory) { + appletSchemeCategoryService.updateById(appletSchemeCategory); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "方案分类-通过id删除") + @Operation(summary="方案分类-通过id删除") + @RequiresPermissions("appletSchemeCategory:applet_scheme_category:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appletSchemeCategoryService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "方案分类-批量删除") + @Operation(summary="方案分类-批量删除") + @RequiresPermissions("appletSchemeCategory:applet_scheme_category:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appletSchemeCategoryService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "方案分类-通过id查询") + @Operation(summary="方案分类-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppletSchemeCategory appletSchemeCategory = appletSchemeCategoryService.getById(id); + if(appletSchemeCategory==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appletSchemeCategory); + } + + /** + * 导出excel + * + * @param request + * @param appletSchemeCategory + */ + @RequiresPermissions("appletSchemeCategory:applet_scheme_category:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppletSchemeCategory appletSchemeCategory) { + return super.exportXls(request, appletSchemeCategory, AppletSchemeCategory.class, "方案分类"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("appletSchemeCategory:applet_scheme_category:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppletSchemeCategory.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/entity/AppletSchemeCategory.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/entity/AppletSchemeCategory.java new file mode 100644 index 0000000..073ae7b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/entity/AppletSchemeCategory.java @@ -0,0 +1,80 @@ +package org.jeecg.modules.demo.appletSchemeCategory.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 方案分类 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Data +@TableName("applet_scheme_category") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="方案分类") +public class AppletSchemeCategory implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Schema(description = "所属部门") + private java.lang.String sysOrgCode; + /**分类名称*/ + @Excel(name = "分类名称", width = 15) + @Schema(description = "分类名称") + private java.lang.String name; + /**类型*/ + @Excel(name = "类型", width = 15, dicCode = "applet_scheme_type") + @Dict(dicCode = "applet_scheme_type") + @Schema(description = "类型") + private java.lang.String type; + /**英文名称*/ + @Excel(name = "英文名称", width = 15) + @Schema(description = "英文名称") + private java.lang.String enTitle; + /**图标*/ + @Excel(name = "图标", width = 15) + @Schema(description = "图标") + private java.lang.String icon; + /**排序*/ + @Excel(name = "排序", width = 15) + @Schema(description = "排序") + private java.lang.Integer sort; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/AppletSchemeCategoryMapper.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/AppletSchemeCategoryMapper.java new file mode 100644 index 0000000..d716f4d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/AppletSchemeCategoryMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.appletSchemeCategory.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.appletSchemeCategory.entity.AppletSchemeCategory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 方案分类 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface AppletSchemeCategoryMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/xml/AppletSchemeCategoryMapper.xml b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/xml/AppletSchemeCategoryMapper.xml new file mode 100644 index 0000000..01d03c5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/mapper/xml/AppletSchemeCategoryMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/IAppletSchemeCategoryService.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/IAppletSchemeCategoryService.java new file mode 100644 index 0000000..d1653b1 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/IAppletSchemeCategoryService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.appletSchemeCategory.service; + +import org.jeecg.modules.demo.appletSchemeCategory.entity.AppletSchemeCategory; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 方案分类 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +public interface IAppletSchemeCategoryService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/impl/AppletSchemeCategoryServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/impl/AppletSchemeCategoryServiceImpl.java new file mode 100644 index 0000000..6f8c414 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/service/impl/AppletSchemeCategoryServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.demo.appletSchemeCategory.service.impl; + +import org.jeecg.modules.demo.appletSchemeCategory.entity.AppletSchemeCategory; +import org.jeecg.modules.demo.appletSchemeCategory.mapper.AppletSchemeCategoryMapper; +import org.jeecg.modules.demo.appletSchemeCategory.service.IAppletSchemeCategoryService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 方案分类 + * @Author: jeecg-boot + * @Date: 2025-08-28 + * @Version: V1.0 + */ +@Service +public class AppletSchemeCategoryServiceImpl extends ServiceImpl implements IAppletSchemeCategoryService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryForm.vue new file mode 100644 index 0000000..4be30e6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryForm.vue @@ -0,0 +1,101 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryList.vue new file mode 100644 index 0000000..62fb930 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp/AppletSchemeCategoryList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryData.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryData.ts new file mode 100644 index 0000000..385adbd --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryData.ts @@ -0,0 +1,25 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '分类名称', + align:"center", + dataIndex: 'name' + }, + { + title: '类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '英文名称', + align:"center", + dataIndex: 'enTitle' + }, + { + title: '排序', + align:"center", + sorter: true, + dataIndex: 'sort' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryForm.vue new file mode 100644 index 0000000..256db85 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryForm.vue @@ -0,0 +1,246 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '方案分类', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryList.vue new file mode 100644 index 0000000..d633286 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/uniapp3/AppletSchemeCategoryList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '方案分类', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.api.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.api.ts new file mode 100644 index 0000000..a18caa3 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/appletSchemeCategory/appletSchemeCategory/list', + save='/appletSchemeCategory/appletSchemeCategory/add', + edit='/appletSchemeCategory/appletSchemeCategory/edit', + deleteOne = '/appletSchemeCategory/appletSchemeCategory/delete', + deleteBatch = '/appletSchemeCategory/appletSchemeCategory/deleteBatch', + importExcel = '/appletSchemeCategory/appletSchemeCategory/importExcel', + exportXls = '/appletSchemeCategory/appletSchemeCategory/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.data.ts b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.data.ts new file mode 100644 index 0000000..3d52de0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategory.data.ts @@ -0,0 +1,92 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '分类名称', + align:"center", + dataIndex: 'name' + }, + { + title: '类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '英文名称', + align:"center", + dataIndex: 'enTitle' + }, + { + title: '排序', + align:"center", + sorter: true, + dataIndex: 'sort' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "类型", + field: 'type', + component: 'JSelectMultiple', + componentProps:{ + dictCode:"applet_scheme_type" + }, + //colProps: {span: 6}, + }, +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '分类名称', + field: 'name', + component: 'Input', + }, + { + label: '类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"applet_scheme_type", + type: "radio" + }, + }, + { + label: '英文名称', + field: 'enTitle', + component: 'Input', + }, + { + label: '排序', + field: 'sort', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '分类名称',order: 0,view: 'text', type: 'string',}, + type: {title: '类型',order: 1,view: 'radio', type: 'string',dictCode: 'applet_scheme_type',}, + enTitle: {title: '英文名称',order: 2,view: 'text', type: 'string',}, + sort: {title: '排序',order: 3,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategoryList.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategoryList.vue new file mode 100644 index 0000000..ee5b50a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/AppletSchemeCategoryList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/V20250828_1__menu_insert_AppletSchemeCategory.sql b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/V20250828_1__menu_insert_AppletSchemeCategory.sql new file mode 100644 index 0000000..24dac67 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/V20250828_1__menu_insert_AppletSchemeCategory.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/appletSchemeCategory文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025082804359300550', NULL, '方案分类', '/appletSchemeCategory/appletSchemeCategoryList', 'appletSchemeCategory/AppletSchemeCategoryList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804359300551', '2025082804359300550', '添加方案分类', NULL, NULL, 0, NULL, NULL, 2, 'appletSchemeCategory:applet_scheme_category:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804359300552', '2025082804359300550', '编辑方案分类', NULL, NULL, 0, NULL, NULL, 2, 'appletSchemeCategory:applet_scheme_category:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804359300553', '2025082804359300550', '删除方案分类', NULL, NULL, 0, NULL, NULL, 2, 'appletSchemeCategory:applet_scheme_category:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804359300554', '2025082804359300550', '批量删除方案分类', NULL, NULL, 0, NULL, NULL, 2, 'appletSchemeCategory:applet_scheme_category:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804359300555', '2025082804359300550', '导出excel_方案分类', NULL, NULL, 0, NULL, NULL, 2, 'appletSchemeCategory:applet_scheme_category:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025082804359300556', '2025082804359300550', '导入excel_方案分类', NULL, NULL, 0, NULL, NULL, 2, 'appletSchemeCategory:applet_scheme_category:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-28 16:35:55', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryForm.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryForm.vue new file mode 100644 index 0000000..6cbbea7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryModal.vue b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryModal.vue new file mode 100644 index 0000000..7c97213 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSchemeCategory/vue3/components/AppletSchemeCategoryModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSubscribeDetection/entity/AppletSubscribeDetection.java b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSubscribeDetection/entity/AppletSubscribeDetection.java index f07f087..669337f 100644 --- a/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSubscribeDetection/entity/AppletSubscribeDetection.java +++ b/jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSubscribeDetection/entity/AppletSubscribeDetection.java @@ -4,14 +4,13 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.TableLogic; + +import com.baomidou.mybatisplus.annotation.*; import lombok.*; import org.jeecg.common.constant.ProvinceCityArea; import org.jeecg.common.util.SpringContextUtils; import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecg.modules.demo.appletOrder.entity.AppletOrderProduct; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecg.common.aspect.annotation.Dict; @@ -113,7 +112,7 @@ public class AppletSubscribeDetection implements Serializable { /**状态*/ @Excel(name = "状态", width = 15, dicCode = "applet_subscribe_status") @Dict(dicCode = "applet_subscribe_status") - @Schema(description = "状态 0待预约 1待检测 2已完成 3已取消") + @Schema(description = "状态 0待预约 1待检测 2待检测 3已完成 4已取消") private java.lang.String status; /**产品*/ @Excel(name = "产品", width = 15) @@ -128,6 +127,7 @@ public class AppletSubscribeDetection implements Serializable { @Dict(dictTable = "applet_product_spec", dicText = "spec_name", dicCode = "id") @Schema(description = "规格") private java.lang.String skuId; + /**订单*/ @Excel(name = "订单", width = 15, dictTable = "applet_order", dicText = "order_no", dicCode = "id") @Dict(dictTable = "applet_order", dicText = "order_no", dicCode = "id") @@ -139,4 +139,12 @@ public class AppletSubscribeDetection implements Serializable { @Dict(dictTable = "applet_order_product", dicText = "product_name", dicCode = "id") @Schema(description = "订单明细") private java.lang.String orderProductId; + + /**订单*/ + @Excel(name = "回寄物流单号", width = 15) + @Schema(description = "回寄物流单号") + private java.lang.String logisticsNo; + + @TableField(exist = false) + private AppletOrderProduct orderProduct; } diff --git a/jeecg-boot/jeecg-boot-module/module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java b/jeecg-boot/jeecg-boot-module/module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java index 3b4dce9..5f52bfc 100644 --- a/jeecg-boot/jeecg-boot-module/module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java +++ b/jeecg-boot/jeecg-boot-module/module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java @@ -1,8 +1,6 @@ package org.jeecg.modules.pay; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; -import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; -import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.constant.WxPayConstants; import com.github.binarywang.wxpay.exception.WxPayException; diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index c2ae2af..98372d3 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -31,8 +31,8 @@ spring: clean-disabled: true servlet: multipart: - max-file-size: 10MB - max-request-size: 10MB + max-file-size: 1024MB + max-request-size: 1024MB mail: # 定时任务发送邮件 timeJobSend: false diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/pay_weixin.properties b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/pay_weixin.properties index a3777c0..bdf87a8 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/pay_weixin.properties +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/pay_weixin.properties @@ -3,6 +3,6 @@ pay.appId=wx8ff2ab9559aa6387 pay.mchKey=0fdb77429ffdf206c151af76a663041c pay.keyPath=classpath:apiclient_cert.pem pay.notifyUrl=https://www.petualmedical.com/health-admin/appletApi/order/payNotify -pay.notifyUrlDev=http://h5.xzaiyp.top/health-admin/appletApi/order/payNotify +pay.notifyUrlDev=https://www.petualmedical.com/health-admin/appletApi/order/payNotify pay.notifyOneUrl=https://www.petualmedical.com/health-admin/appletApi/order/payNotify -pay.notifyUrlOneDev=http://h5.xzaiyp.top/health-admin/appletApi/order/payNotify +pay.notifyUrlOneDev=https://www.petualmedical.com/health-admin/appletApi/order/payNotify