From 0b12e0b88e9f3e1de3dc469d391151ce6d9de986 Mon Sep 17 00:00:00 2001 From: chenhao Date: Wed, 12 Nov 2025 20:53:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E6=96=B0=E5=A2=9EVue=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E4=B8=8E=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3-=20=E6=B7=BB=E5=8A=A0VueProjectInfoController?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=99=A8=EF=BC=8C=E6=8F=90=E4=BE=9B=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E4=BF=A1=E6=81=AF=E7=9A=84=E5=A2=9E=E5=88=A0=E6=94=B9?= =?UTF-8?q?=E6=9F=A5=E6=8E=A5=E5=8F=A3=20-=20=E6=B7=BB=E5=8A=A0VueProjectO?= =?UTF-8?q?rderInfoController=E6=8E=A7=E5=88=B6=E5=99=A8=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E8=AE=A2=E5=8D=95=E4=BF=A1=E6=81=AF=E7=9A=84=E5=A2=9E?= =?UTF-8?q?=E5=88=A0=E6=94=B9=E6=9F=A5=E6=8E=A5=E5=8F=A3=20-=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E9=A1=B9=E7=9B=AE=E4=B8=8E=E8=AE=A2=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E3=80=81=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E3=80=81=E6=96=B0=E5=A2=9E=E3=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E3=80=81=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD=20-=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=A1=B9=E7=9B=AE=E4=B8=8E=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= =?UTF-8?q?-=20=E9=9B=86=E6=88=90=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E4=B8=8E=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=E8=AE=A2=E5=8D=95=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vue/VueProjectInfoController.java | 104 ++++++++++++++++++ .../vue/VueProjectOrderInfoController.java | 96 ++++++++++++++++ 2 files changed, 200 insertions(+) create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectInfoController.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectInfoController.java new file mode 100644 index 00000000..572e3398 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectInfoController.java @@ -0,0 +1,104 @@ +package com.ruoyi.sip.controller.vue; + +import cn.hutool.core.collection.CollUtil; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.text.Convert; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.sip.domain.ProjectInfo; +import com.ruoyi.sip.domain.ProjectOrderInfo; +import com.ruoyi.sip.service.IProjectInfoService; +import com.ruoyi.sip.service.IProjectOrderInfoService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 项目管理Controller for Vue + * + * @author ruoyi + * @date 2025-05-29 + */ +@RestController +@RequestMapping("/sip/project/vue") +public class VueProjectInfoController extends BaseController { + + @Autowired + private IProjectInfoService projectInfoService; + @Autowired + private IProjectOrderInfoService orderInfoService; + + /** + * 查询项目管理列表 + */ + @RequiresPermissions("sip:project:list") + @GetMapping("/list") + public TableDataInfo list(ProjectInfo projectInfo) { + startPage(); + List list = projectInfoService.selectProjectInfoList(projectInfo); + return getDataTable(list); + } + + /** + * 导出项目管理列表 + */ + @RequiresPermissions("sip:project:export") + @Log(title = "项目管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public AjaxResult export(ProjectInfo projectInfo) { + return AjaxResult.success(projectInfoService.exportList(projectInfo)); + } + + /** + * 获取项目管理详细信息 + */ + @RequiresPermissions("sip:project:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + Map mmap = new HashMap<>(); + List orderInfoList = orderInfoService.selectProjectOrderInfoByProjectId(Collections.singletonList(id)); + ProjectOrderInfo orderInfo = CollUtil.isNotEmpty(orderInfoList) ? orderInfoList.get(0) : null; + mmap.put("canUpdate", orderInfo == null || + orderInfo.getOrderStatus().equals(ProjectOrderInfo.OrderStatus.WAIT_COMMIT.getCode()) + || orderInfo.getOrderStatus().equals(ProjectOrderInfo.OrderStatus.APPROVE_REJECT.getCode())); + mmap.put("project",projectInfoService.selectProjectInfoById(id)); + return success(mmap); + } + + /** + * 新增项目管理 + */ + @RequiresPermissions("sip:project:add") + @Log(title = "项目管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ProjectInfo projectInfo) { + return toAjax(projectInfoService.insertProjectInfo(projectInfo)); + } + + /** + * 修改项目管理 + */ + @RequiresPermissions("sip:project:edit") + @Log(title = "项目管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ProjectInfo projectInfo) { + return toAjax(projectInfoService.updateProjectInfo(projectInfo)); + } + + /** + * 删除项目管理 + */ + @RequiresPermissions("sip:project:remove") + @Log(title = "项目管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String ids) { + return toAjax(projectInfoService.deleteProjectInfoByIds(ids)); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java new file mode 100644 index 00000000..437d4fa0 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java @@ -0,0 +1,96 @@ +package com.ruoyi.sip.controller.vue; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.sip.domain.ProjectOrderInfo; +import com.ruoyi.sip.service.IProjectOrderInfoService; +import org.apache.shiro.authz.annotation.Logical; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 订单管理 (Vue) + * + * @author ruoyi + * @date 2025-11-12 + */ +@RestController +@RequestMapping("/project/order/vue") +public class VueProjectOrderInfoController extends BaseController { + + @Autowired + private IProjectOrderInfoService projectOrderInfoService; + + /** + * 查询订单管理列表 + */ + @RequiresPermissions(value = {"project:order:list", "project:order:approve"}, logical = Logical.OR) + @GetMapping("/list") + public TableDataInfo list(ProjectOrderInfo projectOrderInfo) { + if (StringUtils.isNotEmpty(projectOrderInfo.getApprove())) { + projectOrderInfo.setApprove(ShiroUtils.getUserId().toString()); + } + startPage(); + List list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); + return getDataTable(list); + } + + /** + * 获取订单管理详细信息 + */ + @RequiresPermissions("project:order:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(projectOrderInfoService.selectProjectOrderInfoById(id)); + } + + /** + * 新增订单管理 + */ + @RequiresPermissions("project:order:add") + @Log(title = "订单管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ProjectOrderInfo projectOrderInfo) { + return toAjax(projectOrderInfoService.insertProjectOrderInfo(projectOrderInfo)); + } + + /** + * 修改订单管理 + */ + @RequiresPermissions("project:order:edit") + @Log(title = "订单管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ProjectOrderInfo projectOrderInfo) { + return toAjax(projectOrderInfoService.updateProjectOrderInfo(projectOrderInfo)); + } + + /** + * 删除订单管理 + */ + @RequiresPermissions("project:order:remove") + @Log(title = "订单管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String ids) { + return toAjax(projectOrderInfoService.deleteProjectOrderInfoByIds(ids)); + } + + /** + * 导出订单管理列表 + */ + @RequiresPermissions("project:order:export") + @Log(title = "订单管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public AjaxResult export(@RequestBody ProjectOrderInfo projectOrderInfo) { + // 在Vue前端,通常是先调用这个接口生成文件,拿到文件名,然后再通过/common/download接口下载 + String fileName = projectOrderInfoService.exportList(projectOrderInfo); + return AjaxResult.success(fileName); + } +}