From dbc2515bf048ab2926fd33376fb655a53f77e928 Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Sun, 30 Mar 2025 19:43:55 +0800 Subject: [PATCH] =?UTF-8?q?330=E4=BB=BB=E5=8A=A1=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 2 +- .../com/ruoyi/common/config/RuoYiConfig.java | 2 +- .../oa/controller/OaFeedbackController.java | 118 ++++++ .../oa/controller/SysOaRemindController.java | 12 +- .../oa/controller/SysOaTaskController.java | 37 +- .../controller/SysOaTaskItemController.java | 117 ++++++ .../controller/SysOaTaskUserController.java | 104 ++++++ .../controller/SysOaWarehouseController.java | 38 +- .../SysOaWarehouseDetailController.java | 8 - .../SysOaWarehouseMasterController.java | 14 + .../SysOaWarehouseTaskController.java | 124 ++++++ .../java/com/ruoyi/oa/domain/OaFeedback.java | 50 +++ .../java/com/ruoyi/oa/domain/SysOaTask.java | 6 + .../com/ruoyi/oa/domain/SysOaTaskItem.java | 83 +++++ .../com/ruoyi/oa/domain/SysOaTaskUser.java | 30 +- .../com/ruoyi/oa/domain/SysOaWarehouse.java | 2 + .../ruoyi/oa/domain/SysOaWarehouseMaster.java | 3 + .../ruoyi/oa/domain/SysOaWarehouseTask.java | 69 ++++ .../com/ruoyi/oa/domain/UserMonthlyData.java | 36 ++ .../com/ruoyi/oa/domain/bo/OaFeedbackBo.java | 47 +++ .../com/ruoyi/oa/domain/bo/SysOaRemindBo.java | 2 - .../com/ruoyi/oa/domain/bo/SysOaTaskBo.java | 4 + .../ruoyi/oa/domain/bo/SysOaTaskItemBo.java | 101 +++++ .../ruoyi/oa/domain/bo/SysOaTaskUserBo.java | 51 +++ .../ruoyi/oa/domain/bo/SysOaWarehouseBo.java | 9 + .../oa/domain/bo/SysOaWarehouseMasterBo.java | 3 +- .../oa/domain/bo/SysOaWarehouseTaskBo.java | 75 ++++ .../com/ruoyi/oa/domain/vo/OaFeedbackVo.java | 56 +++ .../ruoyi/oa/domain/vo/SysOaProjectVo.java | 6 + .../com/ruoyi/oa/domain/vo/SysOaRemindVo.java | 4 + .../ruoyi/oa/domain/vo/SysOaTaskItemVo.java | 110 ++++++ .../ruoyi/oa/domain/vo/SysOaTaskUserVo.java | 26 +- .../com/ruoyi/oa/domain/vo/SysOaTaskVo.java | 10 + .../oa/domain/vo/SysOaWarehouseMasterVo.java | 7 + .../oa/domain/vo/SysOaWarehouseTaskVo.java | 77 ++++ .../ruoyi/oa/domain/vo/SysOaWarehouseVo.java | 2 + .../com/ruoyi/oa/mapper/OaFeedbackMapper.java | 27 ++ .../ruoyi/oa/mapper/SysOaProjectMapper.java | 2 + .../ruoyi/oa/mapper/SysOaTaskItemMapper.java | 15 + .../com/ruoyi/oa/mapper/SysOaTaskMapper.java | 19 +- .../ruoyi/oa/mapper/SysOaTaskUserMapper.java | 15 + .../ruoyi/oa/mapper/SysOaWarehouseMapper.java | 9 + .../oa/mapper/SysOaWarehouseTaskMapper.java | 15 + .../ruoyi/oa/service/IOaFeedbackService.java | 54 +++ .../ruoyi/oa/service/ISysOaFileService.java | 8 + .../ruoyi/oa/service/ISysOaRemindService.java | 5 +- .../oa/service/ISysOaTaskItemService.java | 63 ++++ .../ruoyi/oa/service/ISysOaTaskService.java | 42 ++- .../oa/service/ISysOaTaskUserService.java | 49 +++ .../oa/service/ISysOaWarehouseService.java | 11 +- .../service/ISysOaWarehouseTaskService.java | 60 +++ .../service/impl/OaFeedbackServiceImpl.java | 126 +++++++ .../oa/service/impl/SysOaFileServiceImpl.java | 23 ++ .../service/impl/SysOaProjectServiceImpl.java | 3 +- .../service/impl/SysOaRemindServiceImpl.java | 68 +++- .../impl/SysOaTaskItemServiceImpl.java | 190 ++++++++++ .../oa/service/impl/SysOaTaskServiceImpl.java | 157 ++++++-- .../impl/SysOaTaskUserServiceImpl.java | 128 +++++++ .../impl/SysOaWarehouseDetailServiceImpl.java | 11 +- .../impl/SysOaWarehouseMasterServiceImpl.java | 44 ++- .../impl/SysOaWarehouseServiceImpl.java | 91 ++++- .../impl/SysOaWarehouseTaskServiceImpl.java | 145 ++++++++ .../resources/mapper/oa/OaFeedbackMapper.xml | 54 +++ .../mapper/oa/SysOaProjectMapper.xml | 36 ++ .../mapper/oa/SysOaTaskItemMapper.xml | 28 ++ .../resources/mapper/oa/SysOaTaskMapper.xml | 352 +++++++++++++++++- .../mapper/oa/SysOaTaskUserMapper.xml | 15 + .../mapper/oa/SysOaWarehouseMapper.xml | 49 +++ .../mapper/oa/SysOaWarehouseMasterMapper.xml | 27 +- .../mapper/oa/SysOaWarehouseTaskMapper.xml | 25 ++ 70 files changed, 3272 insertions(+), 139 deletions(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFeedbackController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskItemController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseTaskController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaFeedback.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskItem.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseTask.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/UserMonthlyData.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFeedbackBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskItemBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseTaskBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFeedbackVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskItemVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseTaskVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaFeedbackMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskItemMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseTaskMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFeedbackService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskItemService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseTaskService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFeedbackServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskItemServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseTaskServiceImpl.java create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaFeedbackMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskItemMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseTaskMapper.xml diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 8a619c5..d839269 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -13,7 +13,7 @@ ruoyi: # 缓存懒加载 cacheLazy: false # 文件路径 - profile: /home/wangyu/oa/uploadPath + profile: /home/wy/oa/uploadPath # profile: F:\work\fad_oa系统\fad_oa\temp captcha: diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java index 26a9577..4f2f679 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java @@ -43,7 +43,7 @@ public class RuoYiConfig { /** 上传路径 */ @Getter - private static String profile = "/home/wangyu/oa/uploadPath"; + private static String profile = "/home/wy/oa/uploadPath"; // // /** 上传路径 */ // @Getter diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFeedbackController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFeedbackController.java new file mode 100644 index 0000000..ab1a398 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaFeedbackController.java @@ -0,0 +1,118 @@ +package com.ruoyi.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.vo.OaFeedbackVo; +import com.ruoyi.oa.domain.bo.OaFeedbackBo; +import com.ruoyi.oa.service.IOaFeedbackService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 问题反馈 + * + * @author ruoyi + * @date 2025-03-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/feedback") +public class OaFeedbackController extends BaseController { + + private final IOaFeedbackService iOaFeedbackService; + + /** + * 查询问题反馈列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaFeedbackBo bo, PageQuery pageQuery) { + return iOaFeedbackService.queryPageList(bo, pageQuery); + } + + /** + * 导出问题反馈列表 + */ + @PostMapping("/export") + public void export(OaFeedbackBo bo, HttpServletResponse response) { + List list = iOaFeedbackService.queryList(bo); + ExcelUtil.exportExcel(list, "问题反馈", OaFeedbackVo.class, response); + } + + /** + * 获取问题反馈详细信息 + * + * @param feedbackId 主键 + */ + @GetMapping("/{feedbackId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long feedbackId) { + return R.ok(iOaFeedbackService.queryById(feedbackId)); + } + + /** + * 新增问题反馈 + */ + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaFeedbackBo bo) { + return toAjax(iOaFeedbackService.insertByBo(bo)); + } + + /** + * 修改问题反馈 + */ + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaFeedbackBo bo) { + return toAjax(iOaFeedbackService.updateByBo(bo)); + } + + /** + * 删除问题反馈 + * + * @param feedbackIds 主键串 + */ + @DeleteMapping("/{feedbackIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] feedbackIds) { + return toAjax(iOaFeedbackService.deleteWithValidByIds(Arrays.asList(feedbackIds), true)); + } + /** + * 删除问题反馈 + * + * @param feedbackId 主键 + */ + @DeleteMapping("/remove/{feedbackId}") + public R removeItem(@PathVariable("feedbackId") Long feedbackId) { + return toAjax(iOaFeedbackService.delItem(feedbackId)); + } + + + /** + * 修改问题反馈 + */ + @RepeatSubmit() + @PutMapping("/toRead") + public R toRead(@Validated(EditGroup.class) @RequestBody OaFeedbackBo bo) { + return toAjax(iOaFeedbackService.updateToRead(bo)); + } + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java index db87971..9043b4c 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaRemindController.java @@ -45,10 +45,9 @@ public class SysOaRemindController extends BaseController { * @param bo * @return */ - @SaCheckPermission("oa:remind:list") @GetMapping("/getRemindList") - public R> getRemindList(SysOaRemindBo bo){ - R> remindList = iSysOaRemindService.queryRemindList(bo); + public R> getRemindList(SysOaRemindBo bo, PageQuery pageQuery){ + R> remindList = iSysOaRemindService.queryRemindList(bo,pageQuery); return remindList; } @@ -57,7 +56,6 @@ public class SysOaRemindController extends BaseController { * @param bo * @return */ - @SaCheckPermission("oa:remind:list") @GetMapping("/getRemindCount") public R getRemindCount(SysOaRemindBo bo){ Long aLong = iSysOaRemindService.queryRemindCount(bo); @@ -67,7 +65,6 @@ public class SysOaRemindController extends BaseController { /** * 查询事件提醒列表 */ - @SaCheckPermission("oa:remind:list") @GetMapping("/list") public TableDataInfo list(SysOaRemindBo bo, PageQuery pageQuery) { return iSysOaRemindService.queryPageList(bo, pageQuery); @@ -76,7 +73,6 @@ public class SysOaRemindController extends BaseController { /** * 导出事件提醒列表 */ - @SaCheckPermission("oa:remind:export") @Log(title = "事件提醒", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(SysOaRemindBo bo, HttpServletResponse response) { @@ -89,7 +85,6 @@ public class SysOaRemindController extends BaseController { * * @param remindId 主键 */ - @SaCheckPermission("oa:remind:query") @GetMapping("/{remindId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long remindId) { @@ -99,7 +94,6 @@ public class SysOaRemindController extends BaseController { /** * 新增事件提醒 */ - @SaCheckPermission("oa:remind:add") @Log(title = "事件提醒", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -110,7 +104,6 @@ public class SysOaRemindController extends BaseController { /** * 修改事件提醒 */ - @SaCheckPermission("oa:remind:edit") @Log(title = "事件提醒", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -123,7 +116,6 @@ public class SysOaRemindController extends BaseController { * * @param remindIds 主键串 */ - @SaCheckPermission("oa:remind:remove") @Log(title = "事件提醒", businessType = BusinessType.DELETE) @DeleteMapping("/{remindIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskController.java index 9cf8a0f..abc80b8 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskController.java @@ -1,14 +1,13 @@ package com.ruoyi.oa.controller; import java.util.*; -import java.util.concurrent.TimeUnit; import com.ruoyi.common.helper.LoginHelper; -import com.ruoyi.oa.domain.SysOaTask; +import com.ruoyi.oa.domain.UserMonthlyData; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; -import cn.dev33.satoken.annotation.SaCheckPermission; + import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.ruoyi.common.annotation.RepeatSubmit; @@ -18,7 +17,6 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; -import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.oa.domain.vo.SysOaTaskVo; @@ -65,6 +63,24 @@ public class SysOaTaskController extends BaseController { return iSysOaTaskService.queryPageListOwn(bo, pageQuery); } + /** + * 查询任务管理列表 + */ + @GetMapping("/list-own-document") + public TableDataInfo listOwnDocument(SysOaTaskBo bo, PageQuery pageQuery) { + + return iSysOaTaskService.queryPageListDocument(bo, pageQuery); + } + + /** + * 查询此项目挂接的所有文件 + */ + @GetMapping("/list-document-project/{projectId}") + public R> listDocumentProject(@PathVariable Long projectId) { + + return R.ok(iSysOaTaskService.listDocumentProject(projectId)); + } + /** * 根据工作类型字典查询任务列表 * @param pid @@ -159,4 +175,17 @@ public class SysOaTaskController extends BaseController { @PathVariable Long[] taskIds) { return toAjax(iSysOaTaskService.deleteWithValidByIds(Arrays.asList(taskIds), true)); } + + + /** + * 示例:获取指定月份的员工任务统计 + * + * @return 符合条件的List + */ + @GetMapping("/monthData/list/{date}") + public TableDataInfo getMonthlyData(@PathVariable("date") String month) { + + // 假设这是一份模拟数据,你可以从数据库/服务中获取 + return iSysOaTaskService.getMonthlyData(month); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskItemController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskItemController.java new file mode 100644 index 0000000..a7cf7bc --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskItemController.java @@ -0,0 +1,117 @@ +package com.ruoyi.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import com.ruoyi.oa.service.ISysOaTaskService; +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.vo.SysOaTaskItemVo; +import com.ruoyi.oa.domain.bo.SysOaTaskItemBo; +import com.ruoyi.oa.service.ISysOaTaskItemService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 报工任务单元 + * + * @author hdka + * @date 2025-03-27 + */ +@Slf4j +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/oaTaskItem") +public class SysOaTaskItemController extends BaseController { + + private final ISysOaTaskItemService iSysOaTaskItemService; + + private final ISysOaTaskService iSysOaTaskService; + + /** + * 查询报工任务单元列表 + */ + @GetMapping("/list") + public TableDataInfo list(SysOaTaskItemBo bo, PageQuery pageQuery) { + return iSysOaTaskItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出报工任务单元列表 + */ + @Log(title = "报工任务单元", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysOaTaskItemBo bo, HttpServletResponse response) { + List list = iSysOaTaskItemService.queryList(bo); + ExcelUtil.exportExcel(list, "报工任务单元", SysOaTaskItemVo.class, response); + } + + /** + * 获取报工任务单元详细信息 + * + * @param itemId 主键 + */ + @GetMapping("/{itemId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long itemId) { + System.out.println(itemId); + return R.ok(iSysOaTaskItemService.queryById(itemId)); + } + + /** + * 新增报工任务单元 + */ + @Log(title = "报工任务单元", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysOaTaskItemBo bo) { + return toAjax(iSysOaTaskItemService.insertByBo(bo)); + } + + /** + * 修改报工任务单元 + */ + @Log(title = "报工任务单元", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysOaTaskItemBo bo) { + return toAjax(iSysOaTaskItemService.updateByBo(bo)); + } + + /** + * 修改报工任务单元 + */ + @Log(title = "报工任务单元", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/reportSubmit") + public R reportSubmit(@Validated(EditGroup.class) @RequestBody SysOaTaskItemBo bo) { + return toAjax(iSysOaTaskItemService.reportSubmit(bo)); + } + + /** + * 删除报工任务单元 + * + * @param itemIds 主键串 + */ + @DeleteMapping("/{itemIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] itemIds) { + return toAjax(iSysOaTaskItemService.deleteWithValidByIds(Arrays.asList(itemIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java new file mode 100644 index 0000000..3fb7e8a --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java @@ -0,0 +1,104 @@ +package com.ruoyi.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.oa.service.ISysOaTaskUserService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 文件共享表 + * + * @author hdka + * @date 2025-03-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/oaTaskUser") +public class SysOaTaskUserController extends BaseController { + + private final ISysOaTaskUserService iSysOaTaskUserService; + + /** + * 查询文件共享表列表 + */ + @SaCheckPermission("oa:oaTaskUser:list") + @GetMapping("/list") + public TableDataInfo list(SysOaTaskUserBo bo, PageQuery pageQuery) { + return iSysOaTaskUserService.queryPageList(bo, pageQuery); + } + + /** + * 导出文件共享表列表 + */ + @SaCheckPermission("oa:oaTaskUser:export") + @Log(title = "文件共享表", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysOaTaskUserBo bo, HttpServletResponse response) { + List list = iSysOaTaskUserService.queryList(bo); + ExcelUtil.exportExcel(list, "文件共享表", SysOaTaskUserVo.class, response); + } + + /** + * 获取文件共享表详细信息 + * + * @param taskUserId 主键 + */ + @GetMapping("/{taskUserId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long taskUserId) { + return R.ok(iSysOaTaskUserService.queryById(taskUserId)); + } + + /** + * 新增文件共享表 + */ + @Log(title = "文件共享表", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysOaTaskUserBo bo) { + return toAjax(iSysOaTaskUserService.insertByBo(bo)); + } + + /** + * 修改文件共享表 + */ + @Log(title = "文件共享表", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysOaTaskUserBo bo) { + return toAjax(iSysOaTaskUserService.updateByBo(bo)); + } + + /** + * 删除文件共享表 + * + * @param taskUserIds 主键串 + */ + @Log(title = "文件共享表", businessType = BusinessType.DELETE) + @DeleteMapping("/{taskUserIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] taskUserIds) { + return toAjax(iSysOaTaskUserService.deleteWithValidByIds(Arrays.asList(taskUserIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseController.java index 00e80e5..c5a49de 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseController.java @@ -3,6 +3,7 @@ package com.ruoyi.oa.controller; import java.util.ArrayList; import java.util.List; import java.util.Arrays; +import java.util.UUID; import java.util.concurrent.TimeUnit; import com.ruoyi.common.excel.ExcelResult; @@ -53,17 +54,32 @@ public class SysOaWarehouseController extends BaseController { /** * 查询仓库管理列表 */ - @SaCheckPermission("oa:oaWarehouse:list") @GetMapping("/list") public TableDataInfo list(SysOaWarehouseBo bo, PageQuery pageQuery) { return iSysOaWarehouseService.queryPageList(bo, pageQuery); } + /** + * 查询仓库管理列表 + */ + @GetMapping("/listThreshold") + public TableDataInfo listThreshold(SysOaWarehouseBo bo, PageQuery pageQuery) { + return iSysOaWarehouseService.queryPageListThreshold(bo, pageQuery,true); + } + + + /** + * 查询仓库管理列表 + */ + @GetMapping("/listNotThreshold") + public TableDataInfo listNotThreshold(SysOaWarehouseBo bo, PageQuery pageQuery) { + return iSysOaWarehouseService.queryPageListThreshold(bo, pageQuery,false); + } + /** * 通过一个name查询多个字段 */ - @SaCheckPermission("oa:oaWarehouse:list") @GetMapping("/listByMultiQuery") public TableDataInfo listByMultiQuery(SysOaWarehouseBo bo, PageQuery pageQuery) { return iSysOaWarehouseService.listByMultiQuery(bo, pageQuery); @@ -73,7 +89,6 @@ public class SysOaWarehouseController extends BaseController { /** * 导出仓库管理列表 */ - @SaCheckPermission("oa:oaWarehouse:export") @Log(title = "仓库管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(SysOaWarehouseBo bo, HttpServletResponse response) { @@ -86,7 +101,6 @@ public class SysOaWarehouseController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("oa:oaWarehouse:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { @@ -96,7 +110,6 @@ public class SysOaWarehouseController extends BaseController { /** * 新增仓库管理 */ - @SaCheckPermission("oa:oaWarehouse:add") @Log(title = "仓库管理", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -109,7 +122,6 @@ public class SysOaWarehouseController extends BaseController { /** * 修改仓库管理 */ - @SaCheckPermission("oa:oaWarehouse:edit") @Log(title = "仓库管理", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -123,7 +135,6 @@ public class SysOaWarehouseController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("oa:oaWarehouse:remove") @Log(title = "仓库管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @@ -132,6 +143,17 @@ public class SysOaWarehouseController extends BaseController { } + /** + * 新增仓库管理 + */ + @Log(title = "仓库管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/insert") + public R add(@Validated(AddGroup.class) @RequestBody List boList) { + return toAjax(iSysOaWarehouseService.insertBatch(boList)); + } + + /** * 导入数据 * @@ -139,7 +161,6 @@ public class SysOaWarehouseController extends BaseController { * @param updateSupport 是否更新已存在数据 */ @Log(title = "入库工单导入", businessType = BusinessType.IMPORT) - @SaCheckPermission("complaint:complaint:import") @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), SysOaWarehouseVo.class, @@ -155,6 +176,7 @@ public class SysOaWarehouseController extends BaseController { list.add(bo); }); sysOaWarehouseMaster.setWarehouseList(list); + sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString()); iSysOaWarehouseMasterService.insertByBo(sysOaWarehouseMaster); return R.ok(result.getAnalysis()); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseDetailController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseDetailController.java index f7bb3b0..45376e5 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseDetailController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseDetailController.java @@ -44,7 +44,6 @@ public class SysOaWarehouseDetailController extends BaseController { /** * 查询仓库出库列表 */ - @SaCheckPermission("oa:oaOutWarehouse:list") @GetMapping("/list") public TableDataInfo list(SysOaWarehouseDetailBo bo, PageQuery pageQuery) { return iSysOaWarehouseDetailService.queryPageList(bo, pageQuery); @@ -53,7 +52,6 @@ public class SysOaWarehouseDetailController extends BaseController { /** * 导出仓库出库列表 */ - @SaCheckPermission("oa:oaOutWarehouse:export") @Log(title = "仓库出库", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(SysOaWarehouseDetailBo bo, HttpServletResponse response) { @@ -66,7 +64,6 @@ public class SysOaWarehouseDetailController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("oa:oaOutWarehouse:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { @@ -78,7 +75,6 @@ public class SysOaWarehouseDetailController extends BaseController { * * @param WarehouseId 出库产品id */ - @SaCheckPermission("oa:oaOutWarehouse:query") @GetMapping("/WarehouseIdList/{WarehouseId}") public TableDataInfo ListByWarehouseId(@NotNull(message = "出库产品ID不能为空") @PathVariable Long WarehouseId) { @@ -90,7 +86,6 @@ public class SysOaWarehouseDetailController extends BaseController { * * @param projectId 出库产品id */ - @SaCheckPermission("oa:oaOutWarehouse:query") @GetMapping("/project/{projectId}") public TableDataInfo queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空") @PathVariable Long projectId) { @@ -102,7 +97,6 @@ public class SysOaWarehouseDetailController extends BaseController { /** * 新增仓库出库 */ - @SaCheckPermission("oa:oaOutWarehouse:add") @Log(title = "仓库出库", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -113,7 +107,6 @@ public class SysOaWarehouseDetailController extends BaseController { /** * 修改仓库出库 */ - @SaCheckPermission("oa:oaOutWarehouse:edit") @Log(title = "仓库出库", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -126,7 +119,6 @@ public class SysOaWarehouseDetailController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("oa:oaOutWarehouse:remove") @Log(title = "仓库出库", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java index 8b80f4f..fb70da4 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java @@ -8,6 +8,8 @@ import java.util.concurrent.TimeUnit; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.oa.domain.vo.SysOaWarehouseVo; +import com.ruoyi.oa.service.ISysOaWarehouseDetailService; +import com.ruoyi.oa.service.ISysOaWarehouseService; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; @@ -43,6 +45,8 @@ public class SysOaWarehouseMasterController extends BaseController { private final ISysOaWarehouseMasterService iSysOaWarehouseMasterService; + private final ISysOaWarehouseService warehouseService; + /** * 查询出库单管理列表 */ @@ -51,6 +55,15 @@ public class SysOaWarehouseMasterController extends BaseController { return iSysOaWarehouseMasterService.queryPageList(bo, pageQuery); } + /** + * 查询出库单管理列表 + */ + @GetMapping("/list-task") + public TableDataInfo listTask(SysOaWarehouseMasterBo bo, PageQuery pageQuery) { + bo.setType(2L); + return iSysOaWarehouseMasterService.queryPageList(bo, pageQuery); + } + /** * 导出出库单管理列表 */ @@ -89,6 +102,7 @@ public class SysOaWarehouseMasterController extends BaseController { @RepeatSubmit() @PostMapping("/in") public R addIn(@Validated(AddGroup.class) @RequestBody SysOaWarehouseBo bo) { + warehouseService.insertByBo(bo); return toAjax(iSysOaWarehouseMasterService.insertInWarehouse(bo)); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseTaskController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseTaskController.java new file mode 100644 index 0000000..b99a31b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseTaskController.java @@ -0,0 +1,124 @@ +package com.ruoyi.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.vo.SysOaWarehouseTaskVo; +import com.ruoyi.oa.domain.bo.SysOaWarehouseTaskBo; +import com.ruoyi.oa.service.ISysOaWarehouseTaskService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 采购计划 + * + * @author hdka + * @date 2025-03-30 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/oaWarehouseTask") +public class SysOaWarehouseTaskController extends BaseController { + + private final ISysOaWarehouseTaskService iSysOaWarehouseTaskService; + + /** + * 查询采购计划列表 + */ + @GetMapping("/list") + public TableDataInfo list(SysOaWarehouseTaskBo bo, PageQuery pageQuery) { + return iSysOaWarehouseTaskService.queryPageList(bo, pageQuery); + } + + /** + * 导出采购计划列表 + */ + @PostMapping("/export") + public void export(SysOaWarehouseTaskBo bo, HttpServletResponse response) { + List list = iSysOaWarehouseTaskService.queryList(bo); + ExcelUtil.exportExcel(list, "采购计划", SysOaWarehouseTaskVo.class, response); + } + + /** + * 获取采购计划详细信息 + * + * @param taskId 主键 + */ + @GetMapping("/{taskId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long taskId) { + return R.ok(iSysOaWarehouseTaskService.queryById(taskId)); + } + + /** + * 获取采购计划详细信息 + * + * @param masterId 主键 + */ + @GetMapping("/masterId/{masterId}") + public R> getInfoByMasterId(@NotNull(message = "主键不能为空") + @PathVariable Long masterId) { + return R.ok(iSysOaWarehouseTaskService.queryByMasterId(masterId)); + } + + + /** + * 新增采购计划 + */ + @Log(title = "采购计划", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysOaWarehouseTaskBo bo) { + return toAjax(iSysOaWarehouseTaskService.insertByBo(bo)); + } + + + + /** + * 新增采购计划 + */ + @Log(title = "采购计划", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/insert") + public R addBatch(@RequestBody List boList) { + return toAjax(iSysOaWarehouseTaskService.addBatch(boList)); + } + + /** + * 修改采购计划 + */ + @Log(title = "采购计划", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysOaWarehouseTaskBo bo) { + return toAjax(iSysOaWarehouseTaskService.updateByBo(bo)); + } + + /** + * 删除采购计划 + * + * @param taskIds 主键串 + */ + @DeleteMapping("/{taskIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] taskIds) { + return toAjax(iSysOaWarehouseTaskService.deleteWithValidByIds(Arrays.asList(taskIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaFeedback.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaFeedback.java new file mode 100644 index 0000000..7df9603 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaFeedback.java @@ -0,0 +1,50 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 问题反馈对象 oa_feedback + * + * @author ruoyi + * @date 2025-03-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_feedback") +public class OaFeedback extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键id + */ + @TableId(value = "feedback_id") + private Long feedbackId; + /** + * 反馈内容 + */ + private String content; + /** + * 反馈状态 + */ + private Long status; + /** + * + */ + private String remark; + /** + * + */ + @TableLogic + private Long delFlag; + + private String title; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTask.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTask.java index 4b5ca0b..6f42330 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTask.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTask.java @@ -134,4 +134,10 @@ public class SysOaTask extends BaseEntity { * 报工间隔 */ private Long timeGap; + + /** + * 临时时间 + */ + private Date tempTime; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskItem.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskItem.java new file mode 100644 index 0000000..c90b1b4 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskItem.java @@ -0,0 +1,83 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 报工任务单元对象 sys_oa_task_item + * + * @author hdka + * @date 2025-03-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_oa_task_item") +public class SysOaTaskItem extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键id + */ + @TableId(value = "item_id") + private Long itemId; + /** + * + */ + private Long taskId; + /** + * 报工内容 + */ + private String content; + /** + * + */ + private String files; + /** + * 上传事件 + */ + private Date signTime; + /** + * 任务状态 + */ + private Long status; + /** + * 该报功开始时间 + */ + private Date beginTime; + /** + * 结束事件 + */ + private Date endTime; + /** + * 最初结束事件 + */ + private Date originEndTime; + + /** + * 完成时间 + */ + private Date completedTime; + /** + * 延期临时使用字段 + */ + private Date tempTime; + /** + * + */ + @TableLogic + private Long delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java index 04b9c70..9e40b37 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java @@ -3,29 +3,41 @@ package com.ruoyi.oa.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; import com.ruoyi.common.core.domain.BaseEntity; /** - * 任务工人对象 sys_oa_task_user + * 文件共享表对象 sys_oa_task_user * * @author hdka - * @date 2024-11-09 + * @date 2025-03-28 */ @Data +@EqualsAndHashCode(callSuper = true) @TableName("sys_oa_task_user") -public class SysOaTaskUser { +public class SysOaTaskUser extends BaseEntity { private static final long serialVersionUID=1L; /** - * 主键 + * + */ + @TableId(value = "task_user_id") + private Long taskUserId; + /** + * 任务id + */ + private Long taskId; + /** + * + */ + private Long itemId; + /** + * */ private Long userId; - /** - * 任务键 - */ - @TableId(value = "task_id") - private Long taskId; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouse.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouse.java index 31172ad..a175b9d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouse.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouse.java @@ -68,4 +68,6 @@ public class SysOaWarehouse extends BaseEntity { @TableLogic private Long delFlag; + private Long threshold; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java index abe6364..b720452 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java @@ -57,4 +57,7 @@ public class SysOaWarehouseMaster extends BaseEntity { */ private String remark; + + private Long status; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseTask.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseTask.java new file mode 100644 index 0000000..028e9e5 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseTask.java @@ -0,0 +1,69 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 采购计划对象 sys_oa_warehouse_task + * + * @author hdka + * @date 2025-03-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_oa_warehouse_task") +public class SysOaWarehouseTask extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键id + */ + @TableId(value = "task_id") + private Long taskId; + /** + * 绑定采购单 + */ + private Long masterId; + /** + * 物料名 + */ + private String name; + /** + * 型号 + */ + private String model; + /** + * 计划入库 + */ + private Long taskInventory; + + /** + * 物料id + */ + private Long warehouseId; + /** + * 品牌 + */ + private String brand; + /** + * 规格 + */ + private String specifications; + /** + * 删除标志 + */ + @TableLogic + private Long delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/UserMonthlyData.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/UserMonthlyData.java new file mode 100644 index 0000000..172d418 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/UserMonthlyData.java @@ -0,0 +1,36 @@ +package com.ruoyi.oa.domain; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 记录员工在某个月份的任务统计数据 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class UserMonthlyData { + /** 员工昵称 */ + private String nickName; + + private String projectName; + + /** 月份(yyyy-MM格式等) */ + private String month; + + /** 当月总任务量 */ + private Long totalTasks; + + /** 已完成任务量 */ + private Long completedTasks; + + /** 推迟任务量 */ + private Long delayedTasks; + + /** 推迟次数 */ + private Long delayedTimes; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFeedbackBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFeedbackBo.java new file mode 100644 index 0000000..d72534e --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaFeedbackBo.java @@ -0,0 +1,47 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 问题反馈业务对象 oa_feedback + * + * @author ruoyi + * @date 2025-03-28 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaFeedbackBo extends BaseEntity { + + /** + * 主键id + */ + private Long feedbackId; + + /** + * 反馈内容 + */ + private String content; + + /** + * 反馈状态 + */ + private Long status; + + /** + * + */ + private String remark; + + private Long state; + + private String title; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaRemindBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaRemindBo.java index ad6aace..f22678d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaRemindBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaRemindBo.java @@ -33,13 +33,11 @@ public class SysOaRemindBo extends BaseEntity { /** * 提醒名称 */ - @NotBlank(message = "提醒名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskTitle; /** * 事件内容 */ - @NotBlank(message = "事件内容不能为空", groups = { AddGroup.class, EditGroup.class }) private String content; /** diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java index b1ecb16..3ea67a4 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java @@ -178,4 +178,8 @@ public class SysOaTaskBo extends BaseEntity { */ private Long timeGap; + private Long itemId; + + + private Long itemStatus; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskItemBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskItemBo.java new file mode 100644 index 0000000..00b13ab --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskItemBo.java @@ -0,0 +1,101 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * 报工任务单元业务对象 sys_oa_task_item + * + * @author hdka + * @date 2025-03-27 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOaTaskItemBo extends BaseEntity { + + /** + * 主键id + */ + private Long itemId; + + /** + * + */ + private Long taskId; + + /** + * 报工内容 + */ + private String content; + + /** + * + */ + private String files; + + /** + * 上传事件 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date signTime; + + /** + * 任务状态 + */ + private Long status; + + /** + * 该报功开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date beginTime; + + /** + * 结束事件 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endTime; + + /** + * 最初结束事件 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date originEndTime; + + /** + * 延期临时使用字段 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date tempTime; + + /** + * 备注 + */ + private String remark; + + /** + * 完成时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date completedTime; + + private Long timeGap; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java new file mode 100644 index 0000000..28855c0 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java @@ -0,0 +1,51 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; +import java.util.List; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 文件共享表业务对象 sys_oa_task_user + * + * @author hdka + * @date 2025-03-28 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOaTaskUserBo extends BaseEntity { + + /** + * + */ + private Long taskUserId; + + /** + * 任务id + */ + private Long taskId; + + /** + * + */ + private Long itemId; + + /** + * + */ + private Long userId; + + /** + * 用户列表 + */ + private List userList; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseBo.java index 1c71f8a..ed93846 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseBo.java @@ -71,5 +71,14 @@ public class SysOaWarehouseBo extends BaseEntity { */ private String remark; + /** + * 告警阈值 + */ + private Long threshold; + + private Long taskInventory; + + private Long warehouseId; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java index 09b6bd2..ca3295c 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java @@ -33,7 +33,7 @@ public class SysOaWarehouseMasterBo extends BaseEntity { private String masterNum; /** - * 0出库单1入库单 + * 0出库单1入库单2采购单 */ private Long type; @@ -62,5 +62,6 @@ public class SysOaWarehouseMasterBo extends BaseEntity { */ private List warehouseList; + private Long status; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseTaskBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseTaskBo.java new file mode 100644 index 0000000..093e828 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseTaskBo.java @@ -0,0 +1,75 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 采购计划业务对象 sys_oa_warehouse_task + * + * @author hdka + * @date 2025-03-30 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOaWarehouseTaskBo extends BaseEntity { + + /** + * 主键id + */ + private Long taskId; + + /** + * 绑定采购单 + */ + private Long masterId; + + /** + * 物料名 + */ + private String name; + + /** + * 型号 + */ + private String model; + + /** + * 计划入库 + */ + private Long taskInventory; + + /** + * 品牌 + */ + private String brand; + + /** + * 规格 + */ + private String specifications; + + /** + * 备注 + */ + private String remark; + + /** + * 物料id + */ + private Long warehouseId; + + /** + * 前端接受一个id + */ + private Long id; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFeedbackVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFeedbackVo.java new file mode 100644 index 0000000..0fa6263 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaFeedbackVo.java @@ -0,0 +1,56 @@ +package com.ruoyi.oa.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 问题反馈视图对象 oa_feedback + * + * @author ruoyi + * @date 2025-03-28 + */ +@Data +@ExcelIgnoreUnannotated +public class OaFeedbackVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long feedbackId; + + /** + * 反馈内容 + */ + @ExcelProperty(value = "反馈内容") + private String content; + + /** + * 反馈状态 + */ + @ExcelProperty(value = "反馈状态") + private Long status; + + /** + * + */ + @ExcelProperty(value = "") + private String remark; + /** + * + */ + @ExcelProperty(value = "") + private Long state; + + private String title; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java index 689c973..e3d4133 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java @@ -206,4 +206,10 @@ public class SysOaProjectVo { * 人力资源成本 */ private Double laborCost; + + + /** + * 项目剩余时间 + */ + private Long remainTime; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaRemindVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaRemindVo.java index cdb4b60..6c54d89 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaRemindVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaRemindVo.java @@ -95,6 +95,10 @@ public class SysOaRemindVo { @ExcelProperty(value = "修改时间") private Date updateTime; + private String type; + + private Long remainTime; + diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskItemVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskItemVo.java new file mode 100644 index 0000000..10d53da --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskItemVo.java @@ -0,0 +1,110 @@ +package com.ruoyi.oa.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + + +/** + * 报工任务单元视图对象 sys_oa_task_item + * + * @author hdka + * @date 2025-03-27 + */ +@Data +@ExcelIgnoreUnannotated +public class SysOaTaskItemVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long itemId; + + /** + * + */ + @ExcelProperty(value = "") + private Long taskId; + + /** + * 报工内容 + */ + @ExcelProperty(value = "报工内容") + private String content; + + /** + * + */ + @ExcelProperty(value = "") + private String files; + + /** + * 上传事件 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ExcelProperty(value = "上传事件") + private Date signTime; + + /** + * 任务状态 + */ + @ExcelProperty(value = "任务状态") + private Long status; + + /** + * 该报功开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ExcelProperty(value = "该报功开始时间") + private Date beginTime; + + /** + * 结束事件 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ExcelProperty(value = "结束事件") + private Date endTime; + + /** + * 最初结束事件 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ExcelProperty(value = "最初结束事件") + private Date originEndTime; + + /** + * 延期临时使用字段 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ExcelProperty(value = "延期临时使用字段") + private Date tempTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 完成时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date completedTime; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java index da11284..07a37f5 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java @@ -10,10 +10,10 @@ import java.util.Date; /** - * 任务工人视图对象 sys_oa_task_user + * 文件共享表视图对象 sys_oa_task_user * * @author hdka - * @date 2024-11-09 + * @date 2025-03-28 */ @Data @ExcelIgnoreUnannotated @@ -22,16 +22,28 @@ public class SysOaTaskUserVo { private static final long serialVersionUID = 1L; /** - * 主键 + * */ - @ExcelProperty(value = "主键") - private Long userId; + @ExcelProperty(value = "") + private Long taskUserId; /** - * 任务键 + * 任务id */ - @ExcelProperty(value = "任务键") + @ExcelProperty(value = "任务id") private Long taskId; + /** + * + */ + @ExcelProperty(value = "") + private Long itemId; + + /** + * + */ + @ExcelProperty(value = "") + private Long userId; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java index 8099f43..35cb19d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java @@ -200,4 +200,14 @@ public class SysOaTaskVo { */ private Long timeGap; + /** + * 最后一个item的id + */ + private Long itemId; + + private Date tempTime; + + private List taskItemVoList; + + private String files; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java index e1a162a..de17887 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java @@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; +import com.ruoyi.oa.domain.SysOaWarehouseTask; import lombok.Data; import java.util.Date; import java.util.List; @@ -69,8 +70,14 @@ public class SysOaWarehouseMasterVo { * 出库列表 */ private List warehouseList; + /** + * 采购列表 + */ + private List warehouseTaskList; private String projectName; + private Long status; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseTaskVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseTaskVo.java new file mode 100644 index 0000000..b793246 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseTaskVo.java @@ -0,0 +1,77 @@ +package com.ruoyi.oa.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 采购计划视图对象 sys_oa_warehouse_task + * + * @author hdka + * @date 2025-03-30 + */ +@Data +@ExcelIgnoreUnannotated +public class SysOaWarehouseTaskVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Long taskId; + + /** + * 绑定采购单 + */ + @ExcelProperty(value = "绑定采购单") + private Long masterId; + + /** + * 物料名 + */ + @ExcelProperty(value = "物料名") + private String name; + + /** + * 型号 + */ + @ExcelProperty(value = "型号") + private String model; + + /** + * 计划入库 + */ + @ExcelProperty(value = "计划入库") + private Long taskInventory; + + /** + * 品牌 + */ + @ExcelProperty(value = "品牌") + private String brand; + + /** + * 规格 + */ + @ExcelProperty(value = "规格") + private String specifications; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 物料id + */ + private Long warehouseId; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java index 4f0093e..9d23b3c 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java @@ -85,5 +85,7 @@ public class SysOaWarehouseVo extends SysOaWarehouse { @ExcelProperty(value = "备注") private String remark; + private Long threshold; + private Long taskInventory; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaFeedbackMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaFeedbackMapper.java new file mode 100644 index 0000000..33af6cf --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaFeedbackMapper.java @@ -0,0 +1,27 @@ +package com.ruoyi.oa.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.oa.domain.OaFeedback; +import com.ruoyi.oa.domain.vo.OaFeedbackVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +/** + * 问题反馈Mapper接口 + * + * @author ruoyi + * @date 2025-03-28 + */ +public interface OaFeedbackMapper extends BaseMapperPlus { + + Page selectVoPageAndStatus(@Param("page") Page build, @Param(Constants.WRAPPER) QueryWrapper lqw); + + int updateToRead(@Param("feedbackId") Long feedbackId, @Param("userId") Long userId); + + void insertItem(Long feedbackId); + + int delItem(@Param("feedbackId") Long feedbackId, @Param("userId") Long userId); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java index c27fda6..c729345 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.oa.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -37,4 +38,5 @@ public interface SysOaProjectMapper extends BaseMapperPlus selectProjectDetails(@Param("projectId") Long projectId); + Page selectVoPlus(@Param("page") Page build,@Param(Constants.WRAPPER) LambdaQueryWrapper lqw); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskItemMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskItemMapper.java new file mode 100644 index 0000000..93bc685 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskItemMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.SysOaTaskItem; +import com.ruoyi.oa.domain.vo.SysOaTaskItemVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 报工任务单元Mapper接口 + * + * @author hdka + * @date 2025-03-27 + */ +public interface SysOaTaskItemMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java index 9b7f55b..3bbaf7d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskMapper.java @@ -1,14 +1,17 @@ package com.ruoyi.oa.mapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.oa.domain.SysOaTask; +import com.ruoyi.oa.domain.UserMonthlyData; import com.ruoyi.oa.domain.vo.SysOaTaskVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; +import java.util.Date; +import java.util.List; + /** * 任务管理Mapper接口 * @@ -27,4 +30,18 @@ public interface SysOaTaskMapper extends BaseMapperPlus selectListVoPage(@Param("page") Page build, @Param(Constants.WRAPPER) QueryWrapper lqw); + /** + * 查询详情 + * @param taskId + * @return + */ + SysOaTaskVo selectDetailVoById(Long taskId); + + + List getMonthlyData(String month); + + Page queryPageListDocument(@Param("page") Page build, @Param(Constants.WRAPPER) QueryWrapper lqw); + + List listDocumentProject(Long projectId); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java new file mode 100644 index 0000000..068acbe --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 文件共享表Mapper接口 + * + * @author hdka + * @date 2025-03-28 + */ +public interface SysOaTaskUserMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java index 1ce2061..13a30e6 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java @@ -1,8 +1,13 @@ package com.ruoyi.oa.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.oa.domain.SysOaWarehouse; import com.ruoyi.oa.domain.vo.SysOaWarehouseVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; /** * 仓库管理Mapper接口 @@ -19,4 +24,8 @@ public interface SysOaWarehouseMapper extends BaseMapperPlus selectVoPageThreshold(@Param("page")Page build,@Param(Constants.WRAPPER) LambdaQueryWrapper lqw); + + Page selectListVoPage(@Param("page")Page build,@Param(Constants.WRAPPER) QueryWrapper lqw); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseTaskMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseTaskMapper.java new file mode 100644 index 0000000..cea95f5 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseTaskMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.SysOaWarehouseTask; +import com.ruoyi.oa.domain.vo.SysOaWarehouseTaskVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 采购计划Mapper接口 + * + * @author hdka + * @date 2025-03-30 + */ +public interface SysOaWarehouseTaskMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFeedbackService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFeedbackService.java new file mode 100644 index 0000000..32a5625 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaFeedbackService.java @@ -0,0 +1,54 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaFeedback; +import com.ruoyi.oa.domain.vo.OaFeedbackVo; +import com.ruoyi.oa.domain.bo.OaFeedbackBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 问题反馈Service接口 + * + * @author ruoyi + * @date 2025-03-28 + */ +public interface IOaFeedbackService { + + /** + * 查询问题反馈 + */ + OaFeedbackVo queryById(Long feedbackId); + + /** + * 查询问题反馈列表 + */ + TableDataInfo queryPageList(OaFeedbackBo bo, PageQuery pageQuery); + + /** + * 查询问题反馈列表 + */ + List queryList(OaFeedbackBo bo); + + /** + * 新增问题反馈 + */ + Boolean insertByBo(OaFeedbackBo bo); + + /** + * 修改问题反馈 + */ + Boolean updateByBo(OaFeedbackBo bo); + + /** + * 校验并批量删除问题反馈信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + Boolean updateToRead(OaFeedbackBo bo); + + int delItem(Long feedbackId); + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaFileService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaFileService.java index 4c4811a..7fd856e 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaFileService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaFileService.java @@ -48,4 +48,12 @@ public interface ISysOaFileService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); Long insertByBoReturnId(SysOaFileBo bo); + + /** + * 新增文件返回他们的ID + * @param fileUrls + * @return + */ + String insertFiles(List fileUrls); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java index 55411a1..0d57bce 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaRemindService.java @@ -1,7 +1,6 @@ package com.ruoyi.oa.service; import com.ruoyi.common.core.domain.R; -import com.ruoyi.oa.domain.SysOaRemind; import com.ruoyi.oa.domain.vo.SysOaRemindVo; import com.ruoyi.oa.domain.bo.SysOaRemindBo; import com.ruoyi.common.core.page.TableDataInfo; @@ -26,10 +25,12 @@ public interface ISysOaRemindService { /** * 查询代办事件列表 + * * @param bo + * @param pageQuery * @return */ - R> queryRemindList(SysOaRemindBo bo); + R> queryRemindList(SysOaRemindBo bo, PageQuery pageQuery); Long queryRemindCount(SysOaRemindBo bo); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskItemService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskItemService.java new file mode 100644 index 0000000..099c3d0 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskItemService.java @@ -0,0 +1,63 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.SysOaTaskItem; +import com.ruoyi.oa.domain.vo.SysOaTaskItemVo; +import com.ruoyi.oa.domain.bo.SysOaTaskItemBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 报工任务单元Service接口 + * + * @author hdka + * @date 2025-03-27 + */ +public interface ISysOaTaskItemService { + + /** + * 查询报工任务单元 + */ + SysOaTaskItemVo queryById(Long itemId); + + /** + * 查询报工任务单元列表 + */ + TableDataInfo queryPageList(SysOaTaskItemBo bo, PageQuery pageQuery); + + /** + * 查询报工任务单元列表 + */ + List queryList(SysOaTaskItemBo bo); + + /** + * 新增报工任务单元 + */ + Boolean insertByBo(SysOaTaskItemBo bo); + + /** + * 修改报工任务单元 + */ + Boolean updateByBo(SysOaTaskItemBo bo); + + /** + * 校验并批量删除报工任务单元信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 提交报工表单后新建表单 + * @param bo + * @return + */ + Boolean reportSubmit(SysOaTaskItemBo bo); + + /** + * 推迟申请 + * @param bo + * @return + */ + Boolean postpone(SysOaTaskItemBo bo); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java index 5759138..deb6252 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskService.java @@ -1,7 +1,7 @@ package com.ruoyi.oa.service; import com.ruoyi.common.core.domain.R; -import com.ruoyi.oa.domain.SysOaTask; +import com.ruoyi.oa.domain.UserMonthlyData; import com.ruoyi.oa.domain.vo.SysOaTaskVo; import com.ruoyi.oa.domain.bo.SysOaTaskBo; import com.ruoyi.common.core.page.TableDataInfo; @@ -9,7 +9,6 @@ import com.ruoyi.common.core.domain.PageQuery; import java.util.Collection; import java.util.List; -import java.util.Map; /** * 任务管理Service接口 @@ -83,4 +82,43 @@ public interface ISysOaTaskService { * @return */ TableDataInfo queryPageListOwn(SysOaTaskBo bo, PageQuery pageQuery); + + /** + * 增加一个推迟数量 + * @param taskId + */ + void addPostpones(Long taskId); + + /** + * 获取数值分析数据 + * @param month + * @return + */ + TableDataInfo getMonthlyData(String month); + + /** + * 查询文件列表 + * @param bo + * @param pageQuery + * @return + */ + TableDataInfo queryPageListDocument(SysOaTaskBo bo, PageQuery pageQuery); + + /** + * 查询未办任务 + * + * @param sysOaTaskBo + * @param pageQuery + * @return + */ + List queryListByRemain(SysOaTaskBo sysOaTaskBo, PageQuery pageQuery); + + /** + * 查询此项目挂接的所有文件 + * + * @param projectId 项目id + * @return + */ + List listDocumentProject(Long projectId); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java new file mode 100644 index 0000000..64b173f --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java @@ -0,0 +1,49 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 文件共享表Service接口 + * + * @author hdka + * @date 2025-03-28 + */ +public interface ISysOaTaskUserService { + + /** + * 查询文件共享表 + */ + SysOaTaskUserVo queryById(Long taskUserId); + + /** + * 查询文件共享表列表 + */ + TableDataInfo queryPageList(SysOaTaskUserBo bo, PageQuery pageQuery); + + /** + * 查询文件共享表列表 + */ + List queryList(SysOaTaskUserBo bo); + + /** + * 新增文件共享表 + */ + Boolean insertByBo(SysOaTaskUserBo bo); + + /** + * 修改文件共享表 + */ + Boolean updateByBo(SysOaTaskUserBo bo); + + /** + * 校验并批量删除文件共享表信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseService.java index eee122b..8ccb6ac 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseService.java @@ -1,6 +1,5 @@ package com.ruoyi.oa.service; -import com.ruoyi.oa.domain.SysOaWarehouse; import com.ruoyi.oa.domain.vo.SysOaWarehouseVo; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.common.core.page.TableDataInfo; @@ -51,4 +50,14 @@ public interface ISysOaWarehouseService { * 根据一个name查询多个字段 */ TableDataInfo listByMultiQuery(SysOaWarehouseBo bo, PageQuery pageQuery); + + TableDataInfo queryPageListThreshold(SysOaWarehouseBo bo, PageQuery pageQuery, boolean b); + + + /** + * 采购 进行入库操作 + * @param boList + * @return + */ + Boolean insertBatch(List boList); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseTaskService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseTaskService.java new file mode 100644 index 0000000..3607527 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseTaskService.java @@ -0,0 +1,60 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.SysOaWarehouseTask; +import com.ruoyi.oa.domain.vo.SysOaWarehouseTaskVo; +import com.ruoyi.oa.domain.bo.SysOaWarehouseTaskBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import javax.validation.constraints.NotNull; +import java.util.Collection; +import java.util.List; + +/** + * 采购计划Service接口 + * + * @author hdka + * @date 2025-03-30 + */ +public interface ISysOaWarehouseTaskService { + + /** + * 查询采购计划 + */ + SysOaWarehouseTaskVo queryById(Long taskId); + + /** + * 查询采购计划列表 + */ + TableDataInfo queryPageList(SysOaWarehouseTaskBo bo, PageQuery pageQuery); + + /** + * 查询采购计划列表 + */ + List queryList(SysOaWarehouseTaskBo bo); + + /** + * 新增采购计划 + */ + Boolean insertByBo(SysOaWarehouseTaskBo bo); + + /** + * 修改采购计划 + */ + Boolean updateByBo(SysOaWarehouseTaskBo bo); + + /** + * 校验并批量删除采购计划信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List queryByMasterId(@NotNull(message = "主键不能为空") Long masterId); + + /** + * 新增采购计划 + * @param boList + * @return + */ + Boolean addBatch(List boList); + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFeedbackServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFeedbackServiceImpl.java new file mode 100644 index 0000000..54928b1 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaFeedbackServiceImpl.java @@ -0,0 +1,126 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.val; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaFeedbackBo; +import com.ruoyi.oa.domain.vo.OaFeedbackVo; +import com.ruoyi.oa.domain.OaFeedback; +import com.ruoyi.oa.mapper.OaFeedbackMapper; +import com.ruoyi.oa.service.IOaFeedbackService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 问题反馈Service业务层处理 + * + * @author ruoyi + * @date 2025-03-28 + */ +@RequiredArgsConstructor +@Service +public class OaFeedbackServiceImpl implements IOaFeedbackService { + + private final OaFeedbackMapper baseMapper; + + /** + * 查询问题反馈 + */ + @Override + public OaFeedbackVo queryById(Long feedbackId){ + return baseMapper.selectVoById(feedbackId); + } + + /** + * 查询问题反馈列表 + */ + @Override + public TableDataInfo queryPageList(OaFeedbackBo bo, PageQuery pageQuery) { + QueryWrapper lqw = buildQueryWrapper(bo); + val result = baseMapper.selectVoPageAndStatus(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询问题反馈列表 + */ + @Override + public List queryList(OaFeedbackBo bo) { + QueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private QueryWrapper buildQueryWrapper(OaFeedbackBo bo) { + Map params = bo.getParams(); + QueryWrapper lqw = Wrappers.query(); + lqw.eq("ofi.user_id", LoginHelper.getUserId()); + return lqw; + } + + /** + * 新增问题反馈 + */ + @Override + public Boolean insertByBo(OaFeedbackBo bo) { + + OaFeedback add = BeanUtil.toBean(bo, OaFeedback.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setFeedbackId(add.getFeedbackId()); + } + baseMapper.insertItem(add.getFeedbackId()); + return flag; + } + + /** + * 修改问题反馈 + */ + @Override + public Boolean updateByBo(OaFeedbackBo bo) { + OaFeedback update = BeanUtil.toBean(bo, OaFeedback.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaFeedback entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除问题反馈 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public Boolean updateToRead(OaFeedbackBo bo) { + + return baseMapper.updateToRead(bo.getFeedbackId(),LoginHelper.getUserId())>0; + } + + @Override + public int delItem(Long feedbackId) { + + return baseMapper.delItem(feedbackId,LoginHelper.getUserId()); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaFileServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaFileServiceImpl.java index 14202eb..9a3237d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaFileServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaFileServiceImpl.java @@ -18,6 +18,7 @@ import com.ruoyi.oa.service.ISysOaFileService; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; /** * 文件存储Service业务层处理 @@ -95,6 +96,28 @@ public class SysOaFileServiceImpl implements ISysOaFileService { return add.getFileId(); } + @Override + public String insertFiles(List fileUrls) { + // 用于存放插入后返回的 fileId + List fileIds = fileUrls.stream().map(fileUrl -> { + // 这里假设你有一个插入方法, 返回插入后的主键ID: + // Long fileId = fileDao.insertFile(fileUrl); + + // 这里只是示例,假设插入后自增ID就是某个数字: + // 为演示,这里用当前时间戳模拟 + SysOaFile sysOaFile = new SysOaFile(); + sysOaFile.setFileUrl(fileUrl); + baseMapper.insert(sysOaFile); + + // 真实代码中应该返回数据库生成的主键ID + return sysOaFile.getFileId(); + }).collect(Collectors.toList()); + // 将 fileIds 转为逗号分隔的字符串 + return fileIds.stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + } + /** * 修改文件存储 diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java index 9d60f10..f1e8ee5 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java @@ -47,7 +47,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService { @Override public TableDataInfo queryPageList(SysOaProjectBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + Page result = baseMapper.selectVoPlus(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -67,6 +67,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService { lqw.eq(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum()); lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), SysOaProject::getProjectType, bo.getProjectType()); lqw.eq(StringUtils.isNotBlank(bo.getProjectStatus()), SysOaProject::getProjectStatus, bo.getProjectStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), SysOaProject::getCreateBy, bo.getCreateBy()); lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, SysOaProject::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); lqw.orderByDesc(SysOaProject::getCreateTime); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java index 34058b7..842f5e7 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java @@ -9,8 +9,13 @@ import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.bo.SysOaProjectBo; +import com.ruoyi.oa.domain.bo.SysOaTaskBo; +import com.ruoyi.oa.domain.vo.SysOaProjectVo; +import com.ruoyi.oa.domain.vo.SysOaTaskVo; +import com.ruoyi.oa.service.ISysOaProjectService; +import com.ruoyi.oa.service.ISysOaTaskService; import lombok.RequiredArgsConstructor; -import org.apache.catalina.security.SecurityUtil; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.SysOaRemindBo; import com.ruoyi.oa.domain.vo.SysOaRemindVo; @@ -18,10 +23,7 @@ import com.ruoyi.oa.domain.SysOaRemind; import com.ruoyi.oa.mapper.SysOaRemindMapper; import com.ruoyi.oa.service.ISysOaRemindService; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; /** * 事件提醒Service业务层处理 @@ -35,6 +37,10 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { private final SysOaRemindMapper baseMapper; + private final ISysOaTaskService sysOaTaskService; + + private final ISysOaProjectService projectService; + /** * 查询事件提醒 */ @@ -45,13 +51,59 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { /** * 查询代办事件列表 + * * @param bo + * @param pageQuery * @return */ @Override - public R> queryRemindList(SysOaRemindBo bo){ - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - List sysOaRemindVos = baseMapper.selectVoList(lqw); + public R> queryRemindList(SysOaRemindBo bo, PageQuery pageQuery){ + + // 任务的逾期情况,项目的逾期情况 目前就这个两个需要提醒 + // 开始 + // 首先查询任务存在不存在逾期问题 + SysOaTaskBo sysOaTaskBo = new SysOaTaskBo(); + sysOaTaskBo.setState(0L); + sysOaTaskBo.setWorkerId(LoginHelper.getUserId()); + List tasks = sysOaTaskService.queryListByRemain(sysOaTaskBo,pageQuery); + System.out.println(tasks); + ArrayList sysOaRemindVos = new ArrayList<>(); + for (SysOaTaskVo task : tasks) { + SysOaRemindVo sysOaRemindVo = new SysOaRemindVo(); + sysOaRemindVo.setType("task"); + sysOaRemindVo.setAccessory(task.getAccessory()); + sysOaRemindVo.setContent(task.getContent()); + sysOaRemindVo.setTaskTime(task.getFinishTime()); + sysOaRemindVo.setRemainTime(task.getOverDays()); + sysOaRemindVos.add(sysOaRemindVo); + } + // 查询报工 + sysOaTaskBo.setItemStatus(0L); + tasks = sysOaTaskService.queryListByRemain(sysOaTaskBo, pageQuery); + for (SysOaTaskVo task : tasks) { + SysOaRemindVo sysOaRemindVo = new SysOaRemindVo(); + sysOaRemindVo.setType("taskItem"); + sysOaRemindVo.setAccessory(task.getFiles()); + sysOaRemindVo.setContent(task.getContent()); + sysOaRemindVo.setRemainTime(task.getOverDays()); + sysOaRemindVo.setTaskTime(task.getFinishTime()); + sysOaRemindVos.add(sysOaRemindVo); + } + + // 查询项目情况 + SysOaProjectBo sysOaProjectBo = new SysOaProjectBo(); + sysOaProjectBo.setProjectStatus("0"); + sysOaProjectBo.setCreateBy(LoginHelper.getNickName()); + List rows = projectService.queryPageList(sysOaProjectBo, pageQuery).getRows(); + for (SysOaProjectVo row : rows) { + SysOaRemindVo sysOaRemindVo = new SysOaRemindVo(); + sysOaRemindVo.setType("project"); + sysOaRemindVo.setAccessory(row.getAccessory()); + sysOaRemindVo.setContent(row.getProjectName()); + sysOaRemindVo.setRemainTime(row.getRemainTime()); + sysOaRemindVo.setTaskTime(row.getFinishTime()); + sysOaRemindVos.add(sysOaRemindVo); + } return R.ok(sysOaRemindVos); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskItemServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskItemServiceImpl.java new file mode 100644 index 0000000..2b2b071 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskItemServiceImpl.java @@ -0,0 +1,190 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.service.ISysOaFileService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.SysOaTaskItemBo; +import com.ruoyi.oa.domain.vo.SysOaTaskItemVo; +import com.ruoyi.oa.domain.SysOaTaskItem; +import com.ruoyi.oa.mapper.SysOaTaskItemMapper; +import com.ruoyi.oa.service.ISysOaTaskItemService; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 报工任务单元Service业务层处理 + * + * @author hdka + * @date 2025-03-27 + */ +@RequiredArgsConstructor +@Service +public class SysOaTaskItemServiceImpl implements ISysOaTaskItemService { + + private final SysOaTaskItemMapper baseMapper; + + private final ISysOaFileService fileService; + + /** + * 查询报工任务单元 + */ + @Override + public SysOaTaskItemVo queryById(Long itemId){ + System.out.println( baseMapper.selectVoById(itemId)); + return baseMapper.selectVoById(itemId); + } + + /** + * 查询报工任务单元列表 + */ + @Override + public TableDataInfo queryPageList(SysOaTaskItemBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询报工任务单元列表 + */ + @Override + public List queryList(SysOaTaskItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOaTaskItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getTaskId() != null, SysOaTaskItem::getTaskId, bo.getTaskId()); + lqw.eq(StringUtils.isNotBlank(bo.getContent()), SysOaTaskItem::getContent, bo.getContent()); + lqw.eq(StringUtils.isNotBlank(bo.getFiles()), SysOaTaskItem::getFiles, bo.getFiles()); + lqw.eq(bo.getSignTime() != null, SysOaTaskItem::getSignTime, bo.getSignTime()); + lqw.eq(bo.getStatus() != null, SysOaTaskItem::getStatus, bo.getStatus()); + lqw.eq(bo.getBeginTime() != null, SysOaTaskItem::getBeginTime, bo.getBeginTime()); + lqw.eq(bo.getEndTime() != null, SysOaTaskItem::getEndTime, bo.getEndTime()); + lqw.eq(bo.getOriginEndTime() != null, SysOaTaskItem::getOriginEndTime, bo.getOriginEndTime()); + lqw.eq(bo.getTempTime() != null, SysOaTaskItem::getTempTime, bo.getTempTime()); + return lqw; + } + + /** + * 新增报工任务单元 + */ + @Override + public Boolean insertByBo(SysOaTaskItemBo bo) { + SysOaTaskItem add = BeanUtil.toBean(bo, SysOaTaskItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setItemId(add.getItemId()); + } + return flag; + } + + /** + * 修改报工任务单元 + */ + @Override + public Boolean updateByBo(SysOaTaskItemBo bo) { + SysOaTaskItem update = BeanUtil.toBean(bo, SysOaTaskItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysOaTaskItem entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除报工任务单元 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 提交表单后新建新周期表单 + * @param bo + * @return + */ + @Override + public Boolean reportSubmit(SysOaTaskItemBo bo) { + bo.setSignTime(new Date()); + bo.setCompletedTime(new Date()); + if (Objects.nonNull(bo.getFiles())) { + List fileUrls = Arrays.stream(bo.getFiles().split(",")) + .map(String::valueOf) + .collect(Collectors.toList()); + String fileIds = fileService.insertFiles(fileUrls); + bo.setFiles(fileIds); + } + SysOaTaskItem update = BeanUtil.toBean(bo, SysOaTaskItem.class); + validEntityBeforeSave(update); + update.setStatus(1L); + Boolean flag = baseMapper.updateById(update) > 0; + SysOaTaskItemBo sysOaTaskItemBo = new SysOaTaskItemBo(); + sysOaTaskItemBo.setTaskId(bo.getTaskId()); + sysOaTaskItemBo.setBeginTime(bo.getEndTime()); + sysOaTaskItemBo.setEndTime(addDays(bo.getEndTime(),bo.getTimeGap())); + sysOaTaskItemBo.setOriginEndTime(addDays(bo.getEndTime(),bo.getTimeGap())); + insertByBo(sysOaTaskItemBo); + return flag; + } + + /** + * 推迟申请 + * @param bo + * @return + */ + @Override + public Boolean postpone(SysOaTaskItemBo bo) { + bo.setEndTime(bo.getTempTime()); + Boolean flag = updateByBo(bo); + return flag; + } + + + /** + * 使用 Java 8 的 LocalDateTime 在 beginTime 上加上 timeGap 天并返回新的 Date。 + * + * @param beginTime 开始时间(Date类型) + * @param timeGap 需要增加的天数(Long类型) + * @return 加上 timeGap 天后的日期(Date类型) + */ + public static Date addDays(Date beginTime, Long timeGap) { + if (beginTime == null || timeGap == null) { + return null; // 或根据业务需求进行异常处理 + } + + // 将 Date 转为 LocalDateTime + LocalDateTime localDateTime = beginTime.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + + // 加上 timeGap 天 + localDateTime = localDateTime.plusDays(timeGap); + + // 再转换回 Date + return Date.from(localDateTime + .atZone(ZoneId.systemDefault()) + .toInstant()); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java index 383059d..c7c78b9 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java @@ -1,39 +1,32 @@ package com.ruoyi.oa.service.impl; -import cn.dev33.satoken.fun.SaParamRetFunction; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.core.domain.entity.SysDictType; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ruoyi.oa.domain.SysOaAttendance; -import com.ruoyi.oa.domain.SysOaTaskUser; -import com.ruoyi.oa.domain.bo.SysOaAttendanceBo; -import com.ruoyi.oa.domain.vo.SysOaAttendanceVo; -import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; -import com.ruoyi.oa.domain.vo.SysUserVo; -import com.ruoyi.oa.service.ISysOaAttendanceService; +import com.ruoyi.oa.domain.*; +import com.ruoyi.oa.domain.bo.SysOaTaskItemBo; +import com.ruoyi.oa.mapper.SysOaTaskItemMapper; +import com.ruoyi.oa.service.ISysOaFileService; +import com.ruoyi.oa.service.ISysOaTaskItemService; import com.ruoyi.system.service.ISysDictTypeService; -import com.ruoyi.system.service.ISysUserService; -import liquibase.pro.packaged.A; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.SysOaTaskBo; import com.ruoyi.oa.domain.vo.SysOaTaskVo; -import com.ruoyi.oa.domain.SysOaTask; import com.ruoyi.oa.mapper.SysOaTaskMapper; import com.ruoyi.oa.service.ISysOaTaskService; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -43,6 +36,7 @@ import java.util.stream.Collectors; * @author huangxing * @date 2024-01-11 */ +@Slf4j @RequiredArgsConstructor @Service public class SysOaTaskServiceImpl implements ISysOaTaskService { @@ -51,19 +45,18 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { private final ISysDictTypeService dictTypeService; + private final ISysOaTaskItemService taskItemService; - @Autowired - private ISysUserService userService; + private final SysOaTaskItemMapper taskItemMapper; - @Autowired - private ISysOaAttendanceService attendanceService; + private final ISysOaFileService fileService; /** * 查询任务管理 */ @Override public SysOaTaskVo queryById(Long taskId){ - return baseMapper.selectVoById(taskId); + return baseMapper.selectDetailVoById(taskId); } /** @@ -87,6 +80,33 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { return TableDataInfo.build(result); } + @Override + public void addPostpones(Long taskId) { + + } + + @Override + public TableDataInfo getMonthlyData(String month) { + List result = baseMapper.getMonthlyData(month); + return TableDataInfo.build(result); + } + + @Override + public TableDataInfo queryPageListDocument(SysOaTaskBo bo, PageQuery pageQuery) { + QueryWrapper lqw = new QueryWrapper<>(); + lqw.eq("sotu.user_id", LoginHelper.getUserId()); + lqw.eq("sot.del_flag", 0); +// lqw.eq("sot.create_user_id", LoginHelper.getUserId()) +// .or() +// .eq("sot.worker_id", LoginHelper.getUserId()); + lqw.isNotNull("sot.accessory") + .or() + .isNotNull("soti.files"); + lqw.orderByDesc("sot.create_time"); + Page result = baseMapper.queryPageListDocument(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + /** * 据工作类型字典查询任务列表 * @param pid @@ -134,10 +154,11 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { */ @Override public List queryListByType(SysOaTaskBo bo){ - QueryWrapper lqw = buildQueryWrapper(bo); - lqw.eq(StringUtils.isNotBlank(bo.getTaskType()),"sot.task_type", bo.getTaskType()); - List sysOaTaskVos = baseMapper.selectVoList(lqw); - return sysOaTaskVos; + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(bo.getProjectId()!=null, SysOaTask::getProjectId, bo.getProjectId()); + lqw.like(bo.getTaskTitle()!=null, SysOaTask::getTaskTitle, bo.getTaskTitle()); + lqw.eq(StringUtils.isNotBlank(bo.getTaskType()),SysOaTask::getTaskType, bo.getTaskType()); + return baseMapper.selectVoList(lqw); } /** @@ -149,6 +170,21 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { return baseMapper.selectVoList(lqw); } + /** + * 查询任务管理列表 + */ + @Override + public List queryListByRemain(SysOaTaskBo bo, PageQuery pageQuery) { + QueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectListVoPage(pageQuery.build(),lqw).getRecords(); + } + + @Override + public List listDocumentProject(Long projectId) { + + return baseMapper.listDocumentProject(projectId); + } + private QueryWrapper buildQueryWrapper(SysOaTaskBo bo) { Map params = bo.getParams(); QueryWrapper lqw = Wrappers.query(); @@ -158,10 +194,13 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { lqw.eq(bo.getWorkerId()!=null, "sot.worker_id", bo.getWorkerId()); lqw.eq(bo.getProjectId()!=null, "sot.project_id", bo.getProjectId()); lqw.eq(bo.getProjectNum()!=null, "sop.project_num", bo.getProjectNum()); + lqw.eq(bo.getState()!=null, "sot.state", bo.getState()); + lqw.eq(bo.getItemStatus()!=null, "soti.status", bo.getItemStatus()); + lqw.like(bo.getTaskTitle()!=null, "sot.task_title", bo.getTaskTitle()); + lqw.like(bo.getTaskTitle()!=null, "sot.task_title", bo.getTaskTitle()); lqw.like(bo.getCreateUserNickName()!=null, "su1.nick_name", bo.getCreateUserNickName()); lqw.like(bo.getWorkerNickName()!=null, "su2.nick_name", bo.getWorkerNickName()); - return lqw; } @@ -177,6 +216,13 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { .collect(Collectors.toList()); boolean flag = false; for (Long workerId : workerIdList) { + if(Objects.nonNull(bo.getAccessory())){ + List fileUrls = Arrays.stream(bo.getAccessory().split(",")) + .map(String::valueOf) + .collect(Collectors.toList()); + String fileIds = fileService.insertFiles(fileUrls); + bo.setAccessory(fileIds); + } SysOaTask add = BeanUtil.toBean(bo, SysOaTask.class); add.setCreateUserId(LoginHelper.getUserId()); validEntityBeforeSave(add); @@ -188,7 +234,14 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { } // 判断是否为报工模式 if (bo.getStatus()==1L){ - // TODO 这里新增item数据,为单个条目 + // 这里新增item数据,为单个条目 + SysOaTaskItemBo sysOaTaskItemBo = new SysOaTaskItemBo(); + sysOaTaskItemBo.setTaskId(add.getTaskId()); + sysOaTaskItemBo.setBeginTime(add.getBeginTime()); + Date firstFinishTime = addDays(add.getBeginTime(),add.getTimeGap()); + sysOaTaskItemBo.setOriginEndTime(firstFinishTime); + sysOaTaskItemBo.setEndTime(firstFinishTime); + taskItemService.insertByBo(sysOaTaskItemBo); } } @@ -232,10 +285,18 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { */ @Override public Boolean postponeTask(SysOaTaskBo bo) { - // 将时间交换位置,减少查询数据库次数 - bo.setFinishTime(bo.getTempTime()); - bo.setState(15L); - return updateByBo(bo); + // 防止截止日期被写入 新增对象 + SysOaTaskBo sysOaTaskBo = new SysOaTaskBo(); + sysOaTaskBo.setTaskId(bo.getTaskId()); + sysOaTaskBo.setState(15L); + sysOaTaskBo.setTempTime(bo.getTempTime()); + if (bo.getStatus()==1L && bo.getItemId()!=null ){ + SysOaTaskItemBo sysOaTaskItemBo = new SysOaTaskItemBo(); + sysOaTaskItemBo.setItemId(bo.getItemId()); + sysOaTaskItemBo.setTempTime(bo.getTempTime()); + taskItemService.updateByBo(sysOaTaskItemBo); + } + return updateByBo(sysOaTaskBo); } /** @@ -248,8 +309,42 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { SysOaTask sysOaTask = baseMapper.selectById(bo.getTaskId()); sysOaTask.setState(0L); sysOaTask.setPostponements(sysOaTask.getPostponements() + 1); + if (sysOaTask.getStatus()!=1L){ + sysOaTask.setFinishTime(sysOaTask.getTempTime()); + }else{ + SysOaTaskItem sysOaTaskItem = taskItemMapper.selectById(bo.getItemId()); + sysOaTaskItem.setEndTime(sysOaTaskItem.getTempTime()); + taskItemMapper.updateById(sysOaTaskItem); + } return baseMapper.updateById(sysOaTask) > 0; } + + + /** + * 使用 Java 8 的 LocalDateTime 在 beginTime 上加上 timeGap 天并返回新的 Date。 + * + * @param beginTime 开始时间(Date类型) + * @param timeGap 需要增加的天数(Long类型) + * @return 加上 timeGap 天后的日期(Date类型) + */ + public static Date addDays(Date beginTime, Long timeGap) { + if (beginTime == null || timeGap == null) { + return null; // 或根据业务需求进行异常处理 + } + + // 将 Date 转为 LocalDateTime + LocalDateTime localDateTime = beginTime.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + + // 加上 timeGap 天 + localDateTime = localDateTime.plusDays(timeGap); + + // 再转换回 Date + return Date.from(localDateTime + .atZone(ZoneId.systemDefault()) + .toInstant()); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java new file mode 100644 index 0000000..0c44c4b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java @@ -0,0 +1,128 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.SysOaTaskItem; +import com.ruoyi.oa.domain.bo.SysOaTaskItemBo; +import com.ruoyi.oa.service.ISysOaTaskItemService; +import com.ruoyi.oa.service.ISysOaTaskService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.mapper.SysOaTaskUserMapper; +import com.ruoyi.oa.service.ISysOaTaskUserService; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Collection; +import java.util.stream.Collectors; + +/** + * 文件共享表Service业务层处理 + * + * @author hdka + * @date 2025-03-28 + */ +@RequiredArgsConstructor +@Service +public class SysOaTaskUserServiceImpl implements ISysOaTaskUserService { + + private final SysOaTaskUserMapper baseMapper; + + private final ISysOaTaskService taskService; + + private final ISysOaTaskItemService taskItemService; + + /** + * 查询文件共享表 + */ + @Override + public SysOaTaskUserVo queryById(Long taskUserId){ + return baseMapper.selectVoById(taskUserId); + } + + /** + * 查询文件共享表列表 + */ + @Override + public TableDataInfo queryPageList(SysOaTaskUserBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询文件共享表列表 + */ + @Override + public List queryList(SysOaTaskUserBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOaTaskUserBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getTaskId() != null, SysOaTaskUser::getTaskId, bo.getTaskId()); + lqw.eq(bo.getItemId() != null, SysOaTaskUser::getItemId, bo.getItemId()); + lqw.eq(bo.getUserId() != null, SysOaTaskUser::getUserId, bo.getUserId()); + return lqw; + } + + /** + * 新增文件共享表 + */ + @Override + public Boolean insertByBo(SysOaTaskUserBo bo) { + bo.getUserList().forEach(user -> { + SysOaTaskUserBo add = new SysOaTaskUserBo(); + add.setUserId(user.getUserId()); + add.setTaskId(bo.getTaskId()); + if (bo.getItemId() != null) { + add.setItemId(bo.getItemId()); + } + if (queryList(add).isEmpty()) { + SysOaTaskUser bean = BeanUtil.toBean(add, SysOaTaskUser.class); + baseMapper.insert(bean); + } + }); + + return true; + } + + /** + * 修改文件共享表 + */ + @Override + public Boolean updateByBo(SysOaTaskUserBo bo) { + SysOaTaskUser update = BeanUtil.toBean(bo, SysOaTaskUser.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysOaTaskUser entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除文件共享表 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseDetailServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseDetailServiceImpl.java index e938681..3c48a85 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseDetailServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseDetailServiceImpl.java @@ -90,12 +90,6 @@ public class SysOaWarehouseDetailServiceImpl implements ISysOaWarehouseDetailSer @Override public TableDataInfo queryPageList(SysOaWarehouseDetailBo bo, PageQuery pageQuery) { -// LambdaQueryWrapper lqw = buildQueryWrapper(bo); -// Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); -// for (SysOaOutWarehouseVo record : result.getRecords()) { -// record.setWarehouseName(warehouseMapper.selectVoById(record.getWarehouseId()).getName()); -// record.setProjectName(warehouseMapper.selectVoById(record.getProjectId()).getName()); -// } Long total = baseMapper.defineQueryTotal(bo, pageQuery); pageQuery.setPageNum(ObjectUtil.defaultIfNull(pageQuery.getPageNum(), 1)); @@ -137,14 +131,11 @@ public class SysOaWarehouseDetailServiceImpl implements ISysOaWarehouseDetailSer } /** - * 新增仓库出库 + * 新增出入库细节 */ @Override public Boolean insertByBo(SysOaWarehouseDetailBo bo) { - bo.setCreateTime(new Date()); - bo.setUpdateTime(new Date()); SysOaWarehouseDetail decrease = toBean(bo, SysOaWarehouseDetail.class); - validEntityBeforeSave(decrease); SysOaWarehouse warehouse = warehouseMapper.selectById(decrease.getWarehouseId()); // 1 如果对应仓库表项目数量-将要出库数量<0,出库失败, 繁殖 , 增加该条 diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java index 1c78d24..bc86682 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.SysOaWarehouseDetail; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo; import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper; @@ -24,6 +25,8 @@ import com.ruoyi.oa.service.ISysOaWarehouseMasterService; import java.util.*; +import static cn.hutool.core.bean.BeanUtil.toBean; + /** * 出库单管理Service业务层处理 * @@ -37,8 +40,10 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer private final SysOaWarehouseMasterMapper baseMapper; private final ISysOaWarehouseDetailService warehouseDetailService; + private final SysOaWarehouseDetailMapper warehouseDetailMapper; + + - private final ISysOaWarehouseService warehouseService; /** * 查询出库单管理 @@ -80,19 +85,21 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer } /** - * 新增出库单管理 + * 新增单管理 */ @Override public Boolean insertByBo(SysOaWarehouseMasterBo bo) { + SysOaWarehouseMaster add = BeanUtil.toBean(bo, SysOaWarehouseMaster.class); validEntityBeforeSave(add); add.setSignUser(LoginHelper.getNickName()); boolean flag = baseMapper.insert(add) > 0; if (flag) { - // 出库单新增后 新增出库元素同时减去现有的,这里要记录一个出库时单价 + // 单子新增后 新增出库元素同时减去现有的,这里要记录一个出库时单价 for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : bo.getWarehouseList()) { sysOaWarehouseDetailBo.setMasterId(add.getMasterId()); - warehouseDetailService.insertByBo(sysOaWarehouseDetailBo); + SysOaWarehouseDetail add2 = toBean(sysOaWarehouseDetailBo, SysOaWarehouseDetail.class); + warehouseDetailMapper.insert(add2); } } return flag; @@ -103,18 +110,26 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer */ @Override public Boolean updateByBo(SysOaWarehouseMasterBo bo) { - SysOaWarehouseMaster update = BeanUtil.toBean(bo, SysOaWarehouseMaster.class); - validEntityBeforeSave(update); - boolean flag = baseMapper.updateById(update) > 0; - if (flag) { - List warehouseList = bo.getWarehouseList(); - for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : warehouseList) { - sysOaWarehouseDetailBo.setMasterId(bo.getMasterId()); - warehouseDetailService.insertByBo(sysOaWarehouseDetailBo); - } + // 判断是否为采购单,采购单,用户是直接点击完成按钮,所以直接更新单子状态就可以 + if (bo.getType()!=2L){ + SysOaWarehouseMaster update = BeanUtil.toBean(bo, SysOaWarehouseMaster.class); + validEntityBeforeSave(update); + boolean flag = baseMapper.updateById(update) > 0; + if (flag) { + List warehouseList = bo.getWarehouseList(); + for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : warehouseList) { + sysOaWarehouseDetailBo.setMasterId(bo.getMasterId()); + warehouseDetailService.insertByBo(sysOaWarehouseDetailBo); + } + } + return flag; + }else{ + SysOaWarehouseMaster update = BeanUtil.toBean(bo, SysOaWarehouseMaster.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; } - return flag; + } /** @@ -138,7 +153,6 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer @Override public int insertInWarehouse(SysOaWarehouseBo bo) { - warehouseService.insertByBo(bo); SysOaWarehouseMaster sysOaWarehouseMaster = new SysOaWarehouseMaster(); sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString()); sysOaWarehouseMaster.setRemark(bo.getRemark()); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java index c054bd6..e81d61c 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java @@ -1,13 +1,22 @@ package com.ruoyi.oa.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.excel.ExcelResult; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo; +import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo; +import com.ruoyi.oa.listener.SysOaWarehouseListener; import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper; +import com.ruoyi.oa.mapper.SysOaWarehouseMasterMapper; +import com.ruoyi.oa.service.ISysOaWarehouseMasterService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; @@ -16,9 +25,7 @@ import com.ruoyi.oa.domain.SysOaWarehouse; import com.ruoyi.oa.mapper.SysOaWarehouseMapper; import com.ruoyi.oa.service.ISysOaWarehouseService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; /** * 仓库管理Service业务层处理 @@ -34,6 +41,7 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService { private final SysOaWarehouseDetailMapper outWareMapper; + private final ISysOaWarehouseMasterService masterService; /** * 查询仓库管理 */ @@ -47,11 +55,54 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService { */ @Override public TableDataInfo queryPageList(SysOaWarehouseBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + QueryWrapper lqw = new QueryWrapper<>(); + lqw.like(StringUtils.isNotBlank(bo.getName()), "sow.name", bo.getName()).or() + .like(StringUtils.isNotBlank(bo.getName()), "sow.brand", bo.getName()).or() + .like(StringUtils.isNotBlank(bo.getName()), "sow.model", bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel()); + lqw.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand()); + lqw.eq("sow.del_flag", 0); + + Page result = baseMapper.selectListVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } + @Override + public TableDataInfo queryPageListThreshold(SysOaWarehouseBo bo, PageQuery pageQuery, boolean b) { + QueryWrapper lqw = new QueryWrapper<>(); + lqw.like(StringUtils.isNotBlank(bo.getName()), "sow.name", bo.getName()).or() + .like(StringUtils.isNotBlank(bo.getName()), "sow.brand", bo.getName()).or() + .like(StringUtils.isNotBlank(bo.getName()), "sow.model", bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel()); + lqw.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand()); + if (b){ + lqw.apply("sow.inventory < sow.threshold"); + }else{ + lqw.apply("sow.inventory >= sow.threshold"); + } + Page result = baseMapper.selectListVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public Boolean insertBatch(List boList) { + SysOaWarehouseMasterBo sysOaWarehouseMaster = new SysOaWarehouseMasterBo(); + sysOaWarehouseMaster.setType(1L); + List list = new ArrayList<>(); + boList.forEach(item -> { + item.setInventory(item.getTaskInventory()); + SysOaWarehouseDetailBo bo = new SysOaWarehouseDetailBo(); + bo.setAmount(item.getInventory()); + bo.setSignPrice(item.getPrice()); + Long warehouseId = insertByBo2(item); + bo.setWarehouseId(warehouseId); + list.add(bo); + }); + sysOaWarehouseMaster.setWarehouseList(list); + sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString()); + return masterService.insertByBo(sysOaWarehouseMaster); + } + /** * 查询仓库管理列表 */ @@ -71,12 +122,15 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService { return TableDataInfo.build(result); } + + private LambdaQueryWrapper buildQueryWrapper(SysOaWarehouseBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getInventory() != null, SysOaWarehouse::getInventory, bo.getInventory()); - lqw.eq(StringUtils.isNotBlank(bo.getModel()), SysOaWarehouse::getModel, bo.getModel()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), SysOaWarehouse::getUnit, bo.getUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getModel()), SysOaWarehouse::getModel, bo.getModel()); lqw.like(StringUtils.isNotBlank(bo.getName()), SysOaWarehouse::getName, bo.getName()); lqw.eq(StringUtils.isNotBlank(bo.getBrand()), SysOaWarehouse::getBrand, bo.getBrand()); lqw.eq(StringUtils.isNotBlank(bo.getSpecifications()), SysOaWarehouse::getSpecifications, bo.getSpecifications()); @@ -101,6 +155,7 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService { flag = baseMapper.insert(add) > 0; } else { select.setInventory(select.getInventory() + bo.getInventory()); + select.setPrice((select.getPrice()*select.getInventory() + bo.getPrice()*bo.getInventory())/(select.getInventory()+bo.getInventory())); flag = baseMapper.updateById(select) > 0; } if (flag) { @@ -109,6 +164,30 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService { return flag; } + /** + * 新增仓库管理 + */ + public Long insertByBo2(SysOaWarehouseBo bo) { + SysOaWarehouse add = BeanUtil.toBean(bo, SysOaWarehouse.class); + validEntityBeforeSave(add); + // 1、查询仓库中是否有已存在项目 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SysOaWarehouse::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getModel()), SysOaWarehouse::getModel, bo.getModel()); + SysOaWarehouse select = baseMapper.selectOne(lqw); + // 2、 无则直接新增项目 有则直接增加库存数量 + if (select == null) { + baseMapper.insert(add); + return add.getId(); + } else { + select.setInventory(select.getInventory() + bo.getInventory()); + select.setPrice((select.getPrice()*select.getInventory() + bo.getPrice()*bo.getInventory())/(select.getInventory()+bo.getInventory())); + baseMapper.updateById(select); + return select.getId(); + } + + } + /** * 修改仓库管理 */ diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseTaskServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseTaskServiceImpl.java new file mode 100644 index 0000000..e65c877 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseTaskServiceImpl.java @@ -0,0 +1,145 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.SysOaWarehouseMaster; +import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo; +import com.ruoyi.oa.mapper.SysOaWarehouseMasterMapper; +import com.ruoyi.oa.service.ISysOaWarehouseMasterService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.SysOaWarehouseTaskBo; +import com.ruoyi.oa.domain.vo.SysOaWarehouseTaskVo; +import com.ruoyi.oa.domain.SysOaWarehouseTask; +import com.ruoyi.oa.mapper.SysOaWarehouseTaskMapper; +import com.ruoyi.oa.service.ISysOaWarehouseTaskService; + +import java.util.*; + +/** + * 采购计划Service业务层处理 + * + * @author hdka + * @date 2025-03-30 + */ +@RequiredArgsConstructor +@Service +public class SysOaWarehouseTaskServiceImpl implements ISysOaWarehouseTaskService { + + private final SysOaWarehouseTaskMapper baseMapper; + + private final SysOaWarehouseMasterMapper masterMapper; + + /** + * 查询采购计划 + */ + @Override + public SysOaWarehouseTaskVo queryById(Long taskId){ + return baseMapper.selectVoById(taskId); + } + + /** + * 查询采购计划列表 + */ + @Override + public TableDataInfo queryPageList(SysOaWarehouseTaskBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询采购计划列表 + */ + @Override + public List queryList(SysOaWarehouseTaskBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOaWarehouseTaskBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getMasterId() != null, SysOaWarehouseTask::getMasterId, bo.getMasterId()); + lqw.like(StringUtils.isNotBlank(bo.getName()), SysOaWarehouseTask::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getModel()), SysOaWarehouseTask::getModel, bo.getModel()); + lqw.eq(bo.getTaskInventory() != null, SysOaWarehouseTask::getTaskInventory, bo.getTaskInventory()); + lqw.eq(StringUtils.isNotBlank(bo.getBrand()), SysOaWarehouseTask::getBrand, bo.getBrand()); + lqw.eq(StringUtils.isNotBlank(bo.getSpecifications()), SysOaWarehouseTask::getSpecifications, bo.getSpecifications()); + return lqw; + } + + /** + * 新增采购计划 + */ + @Override + public Boolean insertByBo(SysOaWarehouseTaskBo bo) { + SysOaWarehouseTask add = BeanUtil.toBean(bo, SysOaWarehouseTask.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTaskId(add.getTaskId()); + } + return flag; + } + + /** + * 修改采购计划 + */ + @Override + public Boolean updateByBo(SysOaWarehouseTaskBo bo) { + SysOaWarehouseTask update = BeanUtil.toBean(bo, SysOaWarehouseTask.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysOaWarehouseTask entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除采购计划 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public List queryByMasterId(Long masterId) { + SysOaWarehouseTaskBo sysOaWarehouseTaskBo = new SysOaWarehouseTaskBo(); + sysOaWarehouseTaskBo.setMasterId(masterId); + return this.queryList(sysOaWarehouseTaskBo); + } + + @Override + public Boolean addBatch(List boList) { + // 首先新增一条采购单 + SysOaWarehouseMaster sysOaWarehouseMaster = new SysOaWarehouseMaster(); + sysOaWarehouseMaster.setType(2L); + sysOaWarehouseMaster.setStatus(0L); + sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString()); + sysOaWarehouseMaster.setSignUser(LoginHelper.getNickName()); + Boolean flag = masterMapper.insert(sysOaWarehouseMaster)>0; + Long masterId = sysOaWarehouseMaster.getMasterId(); + for (SysOaWarehouseTaskBo sysOaWarehouseTaskBo : boList) { + sysOaWarehouseTaskBo.setMasterId(masterId); + sysOaWarehouseTaskBo.setWarehouseId(sysOaWarehouseTaskBo.getId()); + this.insertByBo(sysOaWarehouseTaskBo); + } + + return flag; + } +} diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaFeedbackMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaFeedbackMapper.xml new file mode 100644 index 0000000..500053a --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaFeedbackMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + INSERT INTO oa_feedback_item ( + feedback_id, + user_id + ) + SELECT + #{feedbackId}, + su.user_id + FROM sys_user su + WHERE su.del_flag = 0 + + + + + update oa_feedback_item set status = 1 where feedback_id =#{feedbackId} and user_id = #{userId} + + + delete from oa_feedback_item where feedback_id =#{feedbackId} and user_id = #{userId} + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml index 0197cd6..59d8e2a 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml @@ -261,6 +261,42 @@ WHERE p.project_id = #{projectId} + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskItemMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskItemMapper.xml new file mode 100644 index 0000000..492b6d3 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskItemMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml index 28a2c4b..3c83b75 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -16,10 +16,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - - + + + + + + + + + + + + + + + @@ -40,13 +54,105 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sot.task_type, sot.task_grade, sot.collaborator, + COALESCE(sot.finish_time, soti.end_time) AS finish_time, + COALESCE(sot.temp_time, soti.temp_time) AS temp_time, sot.begin_time, - sot.finish_time, sot.origin_finish_time, sot.postponements, sot.completed_time, sot.content, - sot.accessory, + ( + SELECT GROUP_CONCAT(sof.file_url SEPARATOR ',') + FROM sys_oa_file sof + WHERE FIND_IN_SET(sof.file_id, sot.accessory) > 0 + ) AS accessory, + + sot.rank_number, + sot.remark, + sot.task_rank, + sot.state, + sot.time_gap, + sot.status, + sot.create_by, + sot.create_time, + sot.update_by, + sot.update_time, + sot.del_flag, + sot.own_rank, + sop.project_name, + soti.item_id, + sop.project_num, + su1.nick_name AS createUserNickName, + su2.nick_name AS workerNickName, + CASE + WHEN sot.completed_time IS NULL + THEN DATEDIFF(NOW(), COALESCE(sot.finish_time, soti.end_time)) + ELSE 0 + END AS overDays, + ( + SELECT GROUP_CONCAT(sof.file_url SEPARATOR ',') + FROM sys_oa_file sof + WHERE FIND_IN_SET(sof.file_id, soti.files) > 0 + ) AS files + + FROM sys_oa_task sot + LEFT JOIN sys_user su1 ON su1.user_id = sot.create_user_id + LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id + LEFT JOIN sys_oa_project sop ON sop.project_id = sot.project_id + LEFT JOIN sys_oa_task_item soti + ON soti.task_id = sot.task_id + AND soti.completed_time IS NULL + + ${ew.getCustomSqlSegment} + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml new file mode 100644 index 0000000..13112cb --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml index ae51a58..5f7dc9d 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml @@ -28,4 +28,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml index ac0538f..adca90a 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml @@ -13,6 +13,7 @@ + @@ -23,26 +24,46 @@ + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseTaskMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseTaskMapper.xml new file mode 100644 index 0000000..65e0a1c --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseTaskMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + +