ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetStatisticsController.java
New file @@ -0,0 +1,58 @@ package com.ruoyi.web.controller.api; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.dto.asset.AssetTypeDTO; import com.ruoyi.system.query.AssetStatisticsListQuery; import com.ruoyi.system.query.NotificationListQuery; import com.ruoyi.system.service.AssetTypeService; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; /** * <p> * 资产类型表 前端控制器 * </p> * * @author WuGuanFengYue * @since 2025-09-15 */ @Api(tags = {"资产-资产汇总"}) @Validated @RestController @RequestMapping("/asset-statistics") @RequiredArgsConstructor public class AssetStatisticsController { private final AssetTypeService assetTypeService; @ApiOperation("获取资产类型树形数据") @GetMapping("/tree") public R<List<AssetTypeTreeVO>> getAssetTypeTree() { List<AssetTypeTreeVO> treeData = assetTypeService.getAssetTypeTree(); return R.ok(treeData); } @ApiOperation("资产汇总分页列表") @PostMapping("/pageList") public R<PageInfo<AssetStatisticsVO>> pageList(@RequestBody AssetStatisticsListQuery query) { return R.ok(assetTypeService.pageList(query)); } @ApiOperation("资产明细") @PostMapping("/pageListDetail") public R<PageInfo<AssetStatisticsVO>> pageListDetail(@RequestBody AssetStatisticsListQuery query) { return R.ok(assetTypeService.pageList(query)); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java
@@ -48,12 +48,8 @@ import com.ruoyi.system.utils.UUIDUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; @@ -108,6 +104,7 @@ @Resource private OaApprovalTodoService oaApprovalTodoService; @Log(title = "审批-发起请假", businessType = BusinessType.INSERT) @Transactional @ApiOperation(value = "发起请假") @PostMapping(value = "/addLeave") public R addLeave(@RequestBody AddLeaveDTO dto) { @@ -176,6 +173,7 @@ @Log(title = "审批-发起外出申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起外出申请") @PostMapping(value = "/addOut") @Transactional public R addOut(@RequestBody AddOutDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String code = "Out-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); @@ -240,6 +238,7 @@ } @Log(title = "审批-发起出差申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起出差申请") @Transactional @PostMapping(value = "/addBusinessTrip") public R addBusinessTrip(@RequestBody AddBusinessTripDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -304,6 +303,7 @@ } @Log(title = "审批-发起销假申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起销假申请") @Transactional @PostMapping(value = "/addLeaveDestroy") public R addLeaveDestroy(@RequestBody AddLeaveDestroyDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -344,8 +344,8 @@ // 根据请假时间 查询请假申请记录 OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery() .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds) .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime()) .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime()) .le(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime()) .ge(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime()) .eq(OaApprovalApplicationAttendance::getIsLeave, 1) .orderByDesc(OaApprovalApplicationAttendance::getId) .last("limit 1").one(); @@ -365,9 +365,24 @@ Integer.valueOf(sysUser.getDeptId())); return R.ok(); } @ApiOperation(value = "查询当前用户审批通过且未销假的请假单") @GetMapping(value = "/listLeaveApplications") public R<List<OaApprovalApplicationAttendance>> listLeaveApplications() { List<Integer> applicationsIds = approvalApplicationsService.lambdaQuery() .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.LEAVE.getCode()) .eq(OaApprovalApplications::getApplicantUserId, tokenService.getLoginUser().getUserId()) .eq(OaApprovalApplications::getApprovalStatus, 2) .list().stream().map(OaApprovalApplications::getId).collect(Collectors.toList()); if (applicationsIds.isEmpty()){ return R.ok(new ArrayList<>()); } List<OaApprovalApplicationAttendance> list = approvalApplicationAttendanceService.lambdaQuery() .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationsIds).list(); return R.ok(list); } @Log(title = "审批-发起报销申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起报销申请") @Transactional @PostMapping(value = "/addReimbursement") public R addReimbursement(@RequestBody AddReimbursementDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -411,6 +426,7 @@ } @Log(title = "审批-发起款项申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起款项申请") @Transactional @PostMapping(value = "/addMoney") public R addMoney(@RequestBody AddMoneyDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -446,6 +462,7 @@ @Log(title = "审批-发起合同文件申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起合同文件申请") @PostMapping(value = "/addContract") @Transactional public R addContract(@RequestBody AddContractDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String code = "Contract-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); @@ -482,6 +499,7 @@ } @Log(title = "审批-发起进度款支付申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起进度款支付申请") @Transactional @PostMapping(value = "/addPayment") public R addPayment(@RequestBody AddPaymentDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -520,6 +538,7 @@ } @Log(title = "审批-发起内部联系单申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起内部联系单申请") @Transactional @PostMapping(value = "/addContact") public R addContact(@RequestBody AddContactDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -555,6 +574,7 @@ } @Log(title = "审批-发起广告制作申请", businessType = BusinessType.INSERT) @ApiOperation(value = "发起广告制作申请") @Transactional @PostMapping(value = "/addAdvertisement") public R addAdvertisement(@RequestBody AddAdvertisementDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -84,6 +84,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -108,7 +110,8 @@ */ @RestController @RequestMapping("/oa-approval-flow-audit") @Api(tags = "我审批的/我发起的/通用审批接口") @Api(tags = "我审批的-我发起的-通用审批接口") @Slf4j public class OaApprovalFlowAuditController { @Resource private OaApprovalTodoService approvalTodoService; @@ -243,7 +246,7 @@ } SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue()); if (sysUser!=null){ approvalTodoVO.setApplyUserName(sysUser.getUserName()); approvalTodoVO.setApplyUserName(sysUser.getNickName()); TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId())); if (tDept!=null){ approvalTodoVO.setApplyDeptName(tDept.getDeptName()); @@ -421,7 +424,7 @@ } SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue()); if (sysUser!=null){ approvalTodoVO.setApplyUserName(sysUser.getUserName()); approvalTodoVO.setApplyUserName(sysUser.getNickName()); TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId())); if (tDept!=null){ approvalTodoVO.setApplyDeptName(tDept.getDeptName()); @@ -532,6 +535,7 @@ @Log(title = "审批-通用审批接口", businessType = BusinessType.INSERT) @ApiOperation(value = "通用审批接口") @PostMapping(value = "/audit") @Transactional public R addLeave(@RequestBody AuditDTO dto) { OaApprovalApplications approvalApplications = approvalApplicationsService.getById(dto.getApprovalApplicationId()); @@ -570,6 +574,7 @@ approvalFlowAudit.setReason(dto.getReason()); approvalFlowAuditService.save(approvalFlowAudit); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId()) .eq(OaApprovalFlowNode::getStatus,1) .orderByAsc(OaApprovalFlowNode::getSortOrder).list(); if (dto.getApprovalStatus() == 1) { // 判断当前是否处于最后一个节点 @@ -607,14 +612,18 @@ assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId()); } } else { log.info("不为最后一个审批节点"); // 生成下一个节点的待办事项 for (int i = 0; i < approvalFlowNodes.size(); i++) { if (approvalApplications.getCurrentFlowNodeId() .equals(approvalFlowNodes.get(i).getId())) { if (approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(i).getId())) { log.info("匹配到审批流程,进入下一节点,当前节点id:{}", approvalFlowNodes.get(i)); // 申请单审批流程修改为下一节点 approvalApplications.setCurrentFlowNodeId(approvalFlowNodes.get(i + 1).getId()); OaApprovalFlowNode oaApprovalFlowNode1 = approvalFlowNodeService.getById(approvalFlowNodes.get(i + 1).getId()); approvalApplicationsService.updateById(approvalApplications); OaApprovalFlowNode oaApprovalFlowNode1 = approvalFlowNodes.get(i + 1); approvalTodoService.createApprovalTodos(approvalApplications.getId(), approvalApplications.getApplicationCode(), oaApprovalFlowNode1, approvalApplications.getDeptId()); break; } } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalTodoController.java
@@ -73,6 +73,7 @@ private OaApprovalApplicationReimbursementItemService approvalApplicationReimbursementItemService; @Resource private OaApprovalFlowNodeService approvalFlowNodeService; @Resource private OaApprovalApplicationAssetService approvalApplicationAssetService; @Resource @@ -93,7 +94,9 @@ private OaApprovalFlowService approvalFlowService; public static void main(String[] args) { } @ApiOperation("待办事项列表") @PostMapping("/pageList") public R<PageInfo<ApprovalTodoVO>> pageList(@RequestBody ApprovalTodoListQuery query) { @@ -168,7 +171,7 @@ } SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue()); if (sysUser!=null){ approvalTodoVO.setApplyUserName(sysUser.getUserName()); approvalTodoVO.setApplyUserName(sysUser.getNickName()); TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId())); if (tDept!=null){ approvalTodoVO.setApplyDeptName(tDept.getDeptName()); @@ -182,17 +185,25 @@ case 5: OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId()); if (oaApprovalApplicationPurchase!=null){ approvalTodoVO.setTitle(oaApprovalApplicationPurchase.getTitle()); approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount()); } break; case 6: OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId()); if (oaApprovalApplicationStorage!=null){ approvalTodoVO.setTitle(oaApprovalApplicationStorage.getTitle()); approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType()); } break; case 7: StringBuilder temp = new StringBuilder(); OaApprovalApplicationAsset oaApprovalApplicationAsset = approvalApplicationAssetMap.get(approvalApplication.getId()); if (oaApprovalApplicationAsset!=null){ approvalTodoVO.setTitle(oaApprovalApplicationAsset.getTitle()); } List<OaApprovalApplicationAssetItem> oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId()); if (oaApprovalApplicationAssetItems!=null){ for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) { @@ -212,24 +223,32 @@ case 8: OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId()); if (oaApprovalApplicationAssetOut!=null){ approvalTodoVO.setTitle(oaApprovalApplicationAssetOut.getTitle()); approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime()); } break; case 9: OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId()); if (oaApprovalApplicationAssetBack!=null){ approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle()); approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate()); } break; case 10: OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId()); if (oaApprovalApplicationDispose!=null){ approvalTodoVO.setTitle(oaApprovalApplicationDispose.getTitle()); approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType()); } break; case 11: OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId()); if (oaApprovalApplicationChange!=null){ approvalTodoVO.setTitle(oaApprovalApplicationChange.getTitle()); Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId(); TDept tDept = deptMap.get(ownershipDeptId); if (tDept!=null){ @@ -240,12 +259,14 @@ case 12: OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId()); if (oaApprovalApplicationReimbursement!=null){ approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount()); } break; case 13: OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId()); if (oaApprovalApplicationMoney!=null){ approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount()); approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription()); @@ -254,6 +275,7 @@ case 15: OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId()); if (oaApprovalApplicationPayment!=null){ approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount()); approvalTodoVO.setDescription(approvalApplication.getApplicationReason()); @@ -262,6 +284,7 @@ case 17: OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId()); if (oaApprovalApplicationAdvertisement!=null){ approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle()); approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent()); approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount()); } @@ -287,13 +310,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); ContractDetailVO res = new ContractDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.CONTRACT.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -319,13 +344,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); PaymentDetailVO res = new PaymentDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.PAYMENT.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -354,14 +381,15 @@ .list(); LeaveDetailVO res = new LeaveDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.LEAVE.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -385,19 +413,24 @@ OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery() .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId()) .last("limit 1").one(); OaApprovalApplicationAttendance leaveApplication = approvalApplicationAttendanceService.getById(approvalApplicationAttendance.getLeaveApprovalApplicationId()); OaApprovalApplications leaveApplication = approvalApplicationsService.getById(approvalApplicationAttendance.getLeaveApprovalApplicationId()); OaApprovalApplicationAttendance leaveApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery() .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, leaveApplication.getId()) .last("limit 1").one(); List<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId()) .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); LeaveDestroyDetailVO res = new LeaveDestroyDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.LEAVE_DESTROY.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -410,9 +443,9 @@ res.setAttachmentUrl(approvalApplications.getAttachmentUrl()); res.setStartTime(approvalApplicationAttendance.getStartTime()); res.setEndTime(approvalApplicationAttendance.getEndTime()); res.setStartTimeLeave(leaveApplication.getStartTime()); res.setEndTimeLeave(leaveApplication.getEndTime()); res.setDurationLeave(leaveApplication.getDuration()); res.setStartTimeLeave(leaveApplicationAttendance.getStartTime()); res.setEndTimeLeave(leaveApplicationAttendance.getEndTime()); res.setDurationLeave(leaveApplicationAttendance.getDuration()); res.setDuration(approvalApplicationAttendance.getDuration()); return R.ok(res); } @@ -428,13 +461,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); OutDetailVO res = new OutDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.OUT.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -448,6 +483,7 @@ res.setStartTime(approvalApplicationAttendance.getStartTime()); res.setEndTime(approvalApplicationAttendance.getEndTime()); res.setDuration(approvalApplicationAttendance.getDuration()); res.setAddress(approvalApplicationAttendance.getAddress()); return R.ok(res); } @ApiOperation(value = "出差审批详情") @@ -463,14 +499,15 @@ .list(); BusinessTripDetailVO res = new BusinessTripDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.BUSINESS_TRIP.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -508,13 +545,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); PurchaseDetailVO res = new PurchaseDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.PURCHASE.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -554,7 +593,8 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); GrabDetailVO res = new GrabDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.GRAB.getCode()) @@ -562,7 +602,7 @@ .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -601,6 +641,8 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); StorageDetailVO res = new StorageDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.IN_STOCK.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) @@ -608,6 +650,7 @@ SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); List<ApprovalFlowNodeListVO> flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes); res.setAssetTypeName(assetTypeService.getById(approvalApplicationStorage.getAssetTypeId()).getTypeName()); res.setApprovalFlowNodeListVOS(flowNodeList); res.setApprovalApplicationId(approvalApplications.getId()); res.setAttachmentUrl(approvalApplications.getAttachmentUrl()); @@ -637,14 +680,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); BorrowDetailVO res = new BorrowDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.BORROW.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -680,13 +724,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); BackDetailVO res = new BackDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.RETURN.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplicationsBack.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -724,14 +770,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); DisposeDetailVO res = new DisposeDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ASSET_DISPOSE.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -774,13 +821,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); ChangeDetailVO res = new ChangeDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ASSET_CHANGE.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -821,7 +870,8 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); ReimbursementDetailVO res = new ReimbursementDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.REIMBURSEMENT.getCode()) @@ -829,7 +879,7 @@ .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -857,13 +907,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); MoneyDetailVO res = new MoneyDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.MONEY.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -896,15 +948,15 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); ContactDetailVO res = new ContactDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.CONTACT.getCode()) .orderByAsc(OaApprovalFlowNode::getSortOrder) .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -932,7 +984,8 @@ .orderByAsc(OaApprovalFlowAudit::getSortOrder) .list(); AdvertisementDetailVO res = new AdvertisementDetailVO(); OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(approvalApplications.getCurrentFlowNodeId()); res.setSignFlag(oaApprovalFlowNode.getSignFlag()); List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ADVERTISEMENT.getCode()) @@ -940,7 +993,7 @@ .eq(OaApprovalFlowNode::getStatus, 1).list(); SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue()); if (sysUser!=null){ res.setUserName(sysUser.getUserName()); res.setUserName(sysUser.getNickName()); TDept dept = deptService.getById(sysUser.getDeptId()); if (dept!=null){ res.setDeptName(dept.getDeptName()); @@ -967,7 +1020,7 @@ ApprovalFlowNodeListVO approvalFlowNodeListVO = new ApprovalFlowNodeListVO(); approvalFlowNodeListVO.setFlowName("发起"); if (sysUser!=null){ approvalFlowNodeListVO.setUserName(sysUser.getUserName()); approvalFlowNodeListVO.setUserName(sysUser.getNickName()); } approvalFlowNodeListVOS.add(approvalFlowNodeListVO); for (OaApprovalFlowNode approvalFlowNode : approvalFlowNodes) { ruoyi-system/src/main/java/com/ruoyi/system/dto/AddBusinessTripDTO.java
@@ -1,5 +1,6 @@ package com.ruoyi.system.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,9 +13,13 @@ public class AddBusinessTripDTO implements Serializable { @ApiModelProperty(value = "开始请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "结束请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "请假/外出/出差/销假时长(天)") ruoyi-system/src/main/java/com/ruoyi/system/dto/AddLeaveDTO.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,9 +14,11 @@ public class AddLeaveDTO implements Serializable { @ApiModelProperty(value = "开始请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "结束请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "请假/外出/出差/销假时长(天)") ruoyi-system/src/main/java/com/ruoyi/system/dto/AddLeaveDestroyDTO.java
@@ -1,5 +1,6 @@ package com.ruoyi.system.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,9 +13,13 @@ public class AddLeaveDestroyDTO implements Serializable { @ApiModelProperty(value = "开始请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "结束请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "请假/外出/出差/销假时长(天)") ruoyi-system/src/main/java/com/ruoyi/system/dto/AddOutDTO.java
@@ -1,5 +1,6 @@ package com.ruoyi.system.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,9 +13,13 @@ public class AddOutDTO implements Serializable { @ApiModelProperty(value = "开始请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "结束请假/外出/出差/销假时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "请假/外出/出差/销假时长(天)") ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetTypeMapper.java
@@ -1,7 +1,13 @@ package com.ruoyi.system.mapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.AssetType; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.query.AssetStatisticsListQuery; import com.ruoyi.system.vo.AssetStatisticsVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -13,4 +19,7 @@ */ public interface AssetTypeMapper extends BaseMapper<AssetType> { List<AssetStatisticsVO> pageList(@Param("query")AssetStatisticsListQuery query, @Param("pageInfo")PageInfo<AssetStatisticsVO> pageInfo); List<AssetStatisticsVO> pageListNoLimit(@Param("query")AssetStatisticsListQuery query); } ruoyi-system/src/main/java/com/ruoyi/system/model/AssetMain.java
@@ -76,7 +76,7 @@ @ApiModelProperty(value = "数量") @TableField("quantity") private BigDecimal quantity; private Integer quantity; @ApiModelProperty(value = "单价") @TableField("unit_price") ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalApplicationPurchase.java
@@ -41,10 +41,6 @@ @TableField("title") private String title; @ApiModelProperty(value = "申请日期") @TableField("application_date") private Date applicationDate; @ApiModelProperty(value = "资产类型") @TableField("asset_type_id") private Integer assetTypeId; ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalTodoListQuery.java
@@ -7,7 +7,7 @@ import lombok.Data; @Data @ApiModel(value = "代办事项/我审批的/我发起的分页列表query") @ApiModel(value = "代办事项-我审批的-我发起的分页列表query") public class ApprovalTodoListQuery extends BasePage { @ApiModelProperty("用户id 前端忽略") ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListDetailQuery.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "资产明细分页列表query") public class AssetStatisticsListDetailQuery extends BasePage { @ApiModelProperty(value = "资产名称或编号") private String nameOrCode; @ApiModelProperty(value = "资产类别") private String category; @ApiModelProperty(value = "资产状态") private String assetStatus; @ApiModelProperty(value = "资产ids 前端忽略") private List<Integer> assetMainIds; } ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListQuery.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "资产汇总分页列表query") public class AssetStatisticsListQuery extends BasePage { @ApiModelProperty(value = "资产名称或编号") private String nameOrCode; @ApiModelProperty(value = "资产分类id") private Integer assetTypeId; @ApiModelProperty(value = "资产分类ids 前端忽略") private List<Integer> assetTypeIds; } ruoyi-system/src/main/java/com/ruoyi/system/service/AssetTypeService.java
@@ -1,8 +1,11 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.dto.asset.AssetTypeDTO; import com.ruoyi.system.model.AssetType; import com.ruoyi.system.query.AssetStatisticsListQuery; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; import java.util.List; @@ -54,4 +57,5 @@ */ String getAssetCodePrefix(Integer assetTypeId); PageInfo<AssetStatisticsVO> pageList(AssetStatisticsListQuery query); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetMainServiceImpl.java
@@ -116,7 +116,7 @@ assetMain.setAssetCode(assetCode); // 单个资产的数量设为1 assetMain.setQuantity(BigDecimal.ONE); assetMain.setQuantity(1); // 单个资产的总价值等于单价 assetMain.setTotalValue(storageAsset.getUnitPrice()); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java
@@ -5,20 +5,29 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.dto.asset.AssetTypeDTO; import com.ruoyi.system.mapper.AssetTypeMapper; import com.ruoyi.system.model.AssetMain; import com.ruoyi.system.model.AssetType; import com.ruoyi.system.query.AssetStatisticsListQuery; import com.ruoyi.system.service.AssetMainService; import com.ruoyi.system.service.AssetTypeService; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.ApiModelProperty; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -287,4 +296,65 @@ return parentTypeCode + subTypeCode; } @Override public PageInfo<AssetStatisticsVO> pageList(AssetStatisticsListQuery query) { if (StringUtils.hasLength(query.getNameOrCode())){ // 查询出资产名称或者资产编号符合条件的code List<Integer> assetTypeIds = assetMainService.lambdaQuery().like(AssetMain::getAssetName, query.getNameOrCode()) .or() .like(AssetMain::getAssetCode, query.getNameOrCode()) .list() .stream() .map(AssetMain::getAssetTypeId) .collect(Collectors.toList()); query.setAssetTypeIds(assetTypeIds); if (assetTypeIds.isEmpty()){ return new PageInfo<>(); } } PageInfo<AssetStatisticsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<AssetStatisticsVO> list = this.baseMapper.pageList(query,pageInfo); List<AssetStatisticsVO> listNoLimit = this.baseMapper.pageListNoLimit(query); List<Integer> assetTypeIds = listNoLimit.stream().map(AssetStatisticsVO::getAssetTypeIdSecond).collect(Collectors.toList()); if (assetTypeIds.isEmpty()){ return new PageInfo<>(); } Map<Integer, List<AssetMain>> assetMainMap = assetMainService.lambdaQuery().in(AssetMain::getAssetTypeId, assetTypeIds).list() .stream() .collect(Collectors.groupingBy(AssetMain::getAssetTypeId)); for (AssetStatisticsVO asset : list) { Integer totalCount= 0; Integer idleCount= 0; Integer useCount= 0; Integer disposeCount= 0; Integer otherCount= 0; BigDecimal totalValue = new BigDecimal("0"); List<AssetMain> assetMains = assetMainMap.get(asset.getAssetTypeIdSecond()); if (!assetMains.isEmpty()){ for (AssetMain assetMain : assetMains) { if (assetMain.getAssetStatus().contains("闲置")){ idleCount += assetMain.getQuantity(); }else if (assetMain.getAssetStatus().contains("使用中")){ useCount += assetMain.getQuantity(); }else if (assetMain.getAssetStatus().contains("损坏") || assetMain.getAssetStatus().contains("报废")){ disposeCount += assetMain.getQuantity(); }else{ otherCount += assetMain.getQuantity(); } totalCount+= assetMain.getQuantity(); totalValue = totalValue.add(new BigDecimal(assetMain.getQuantity()) .multiply(assetMain.getUnitPrice()).setScale(2, RoundingMode.HALF_DOWN)); } } asset.setIdleCount(idleCount); asset.setUseCount(useCount); asset.setDisposeCount(disposeCount); asset.setOtherCount(otherCount); asset.setTotalCount(totalCount); asset.setTotalValue(totalValue); } pageInfo.setRecords(list); return pageInfo; } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationStorageServiceImpl.java
@@ -42,6 +42,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -776,6 +778,10 @@ public PageInfo<StorageListVO> pageList(ApprovalDetailQuery query) { PageInfo<StorageListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<StorageListVO> list = this.baseMapper.pageList(query,pageInfo); for (StorageListVO storageListVO : list) { BigDecimal value = new BigDecimal(storageListVO.getQuantity()).multiply(storageListVO.getUnitPrice()).setScale(2, RoundingMode.HALF_UP); storageListVO.setTotalValue(value); } pageInfo.setRecords(list); return pageInfo; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalTodoServiceImpl.java
@@ -18,6 +18,7 @@ import com.ruoyi.system.vo.ApprovalTodoVO; import com.ruoyi.system.vo.system.NotificationVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.security.core.token.TokenService; import org.springframework.stereotype.Service; @@ -38,6 +39,7 @@ */ @Service @RequiredArgsConstructor @Slf4j public class OaApprovalTodoServiceImpl extends ServiceImpl<OaApprovalTodoMapper, OaApprovalTodo> implements OaApprovalTodoService { private final ISysUserService sysUserService; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaNotificationServiceImpl.java
@@ -60,6 +60,6 @@ } pageInfo.setRecords(list); return null; return pageInfo; } } ruoyi-system/src/main/java/com/ruoyi/system/vo/AdvertisementDetailVO.java
@@ -15,7 +15,8 @@ @Data @ApiModel(value = "广告制作详情返回VO") public class AdvertisementDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/ApprovalTodoVO.java
@@ -37,7 +37,8 @@ private LocalDateTime createTime; @ApiModelProperty(value = "事项标题") private String title; @ApiModelProperty(value = "审批申请ID") private Integer applicationId; @ApiModelProperty(value = "报销金额/申请金额/合计金额/总金额(报销申请/款项申请/款项支付审批/广告制作)") ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetStatisticsVO.java
New file @@ -0,0 +1,35 @@ package com.ruoyi.system.vo; import com.ruoyi.system.model.OaNotification; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; @Data @ApiModel(value = "资产汇总分页返回VO") public class AssetStatisticsVO implements Serializable { @ApiModelProperty(value = "资产大类名称") private String assetTypeNameFirst; @ApiModelProperty(value = "资产大类id") private Integer assetTypeIdFirst; @ApiModelProperty(value = "资产子类名称") private String assetTypeNameSecond; @ApiModelProperty(value = "资产子类id") private Integer assetTypeIdSecond; @ApiModelProperty(value = "合计数量") private Integer totalCount; @ApiModelProperty(value = "闲置数量") private Integer idleCount; @ApiModelProperty(value = "使用中数量") private Integer useCount; @ApiModelProperty(value = "损坏/报废数量") private Integer disposeCount; @ApiModelProperty(value = "其他数量") private Integer otherCount; @ApiModelProperty(value = "合计总价") private BigDecimal totalValue; } ruoyi-system/src/main/java/com/ruoyi/system/vo/BackDetailVO.java
@@ -14,7 +14,8 @@ @Data @ApiModel(value = "借用归还审批详情返回VO") public class BackDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "借用人") private String userName; @ApiModelProperty(value = "借用部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/BorrowDetailVO.java
@@ -14,7 +14,8 @@ @Data @ApiModel(value = "物品借用审批详情返回VO") public class BorrowDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "借用人") private String userName; @ApiModelProperty(value = "借用部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/BusinessTripDetailVO.java
@@ -12,7 +12,8 @@ @Data @ApiModel(value = "出差审批详情返回VO") public class BusinessTripDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/ChangeDetailVO.java
@@ -14,7 +14,8 @@ @Data @ApiModel(value = "资产变更审批详情返回VO") public class ChangeDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "领用人") private String userName; @ApiModelProperty(value = "领用部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/ContactDetailVO.java
@@ -12,7 +12,8 @@ @Data @ApiModel(value = "内部联系单详情返回VO") public class ContactDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/ContractDetailVO.java
@@ -29,6 +29,8 @@ private Integer approvalApplicationId; @ApiModelProperty(value = "合同文件地址") private String contractUrl; @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "审批流程") private List<ApprovalFlowNodeListVO> approvalFlowNodeListVOS; ruoyi-system/src/main/java/com/ruoyi/system/vo/DisposeDetailVO.java
@@ -16,7 +16,8 @@ @Data @ApiModel(value = "资产处置审批详情返回VO") public class DisposeDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "领用人") private String userName; @ApiModelProperty(value = "领用部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/GrabDetailVO.java
@@ -15,7 +15,8 @@ @Data @ApiModel(value = "物品领用审批详情返回VO") public class GrabDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "领用人") private String userName; @ApiModelProperty(value = "领用部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/LeaveDestroyDetailVO.java
@@ -40,6 +40,8 @@ private LocalDateTime endTimeLeave; @ApiModelProperty(value = "关联请假请假时长(天)") private Double durationLeave; @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "审批流程") private List<ApprovalFlowNodeListVO> approvalFlowNodeListVOS; ruoyi-system/src/main/java/com/ruoyi/system/vo/LeaveDetailVO.java
@@ -35,6 +35,8 @@ private LocalDateTime endTime; @ApiModelProperty(value = "请假/外出/出差/销假时长(天)") private Double duration; @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "审批流程") private List<ApprovalFlowNodeListVO> approvalFlowNodeListVOS; ruoyi-system/src/main/java/com/ruoyi/system/vo/MoneyDetailVO.java
@@ -13,7 +13,8 @@ @Data @ApiModel(value = "款项审批详情返回VO") public class MoneyDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/OutDetailVO.java
@@ -12,7 +12,8 @@ @Data @ApiModel(value = "外出审批详情返回VO") public class OutDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") @@ -33,6 +34,8 @@ private LocalDateTime endTime; @ApiModelProperty(value = "请假/外出/出差/销假时长(天)") private Double duration; @ApiModelProperty(value = "外出地点") private String address; @ApiModelProperty(value = "审批流程") private List<ApprovalFlowNodeListVO> approvalFlowNodeListVOS; ruoyi-system/src/main/java/com/ruoyi/system/vo/PaymentDetailVO.java
@@ -26,6 +26,8 @@ private String projectName; @ApiModelProperty(value = "申请金额") private BigDecimal applyAmount; @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "审批流程") private List<ApprovalFlowNodeListVO> approvalFlowNodeListVOS; ruoyi-system/src/main/java/com/ruoyi/system/vo/PurchaseDetailVO.java
@@ -14,7 +14,8 @@ @Data @ApiModel(value = "采购审批详情返回VO") public class PurchaseDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/ReimbursementDetailVO.java
@@ -14,7 +14,8 @@ @Data @ApiModel(value = "报销审批详情返回VO") public class ReimbursementDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "申请人") private String userName; @ApiModelProperty(value = "所属部门") ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageDetailVO.java
@@ -14,7 +14,8 @@ @ApiModel(value = "资产入库审批详情返回VO") public class StorageDetailVO implements Serializable { @ApiModelProperty(value = "是否需要签名 0-否,1-是") private Boolean signFlag; @ApiModelProperty(value = "附件地址,多个使用英文逗号拼接") private String attachmentUrl; @@ -22,6 +23,8 @@ private Integer approvalApplicationId; @ApiModelProperty(value = "标题") private String title; @ApiModelProperty(value = "资产类型名称") private String assetTypeName; @ApiModelProperty(value = "入库类型 0-正常入库") private Integer storageType; @ApiModelProperty(value = "入库日期") ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageListVO.java
@@ -24,7 +24,7 @@ private String measurementUnit; @ApiModelProperty(value = "数量") private BigDecimal quantity; private Integer quantity; @ApiModelProperty(value = "单价") private BigDecimal unitPrice; ruoyi-system/src/main/resources/mapper/system/AssetTypeMapper.xml
@@ -20,5 +20,40 @@ <sql id="Base_Column_List"> id, type_name, type_code, parent_id, level, create_time, create_by, update_time, update_by, disabled </sql> <select id="pageList" resultType="com.ruoyi.system.vo.AssetStatisticsVO"> select t1.id as assetTypeIdSecond,t1.type_name as assetTypeNameSecond, t2.id as assetTypeIdFirst,t2.type_name as assetTypeNameFirst FROM asset_type t1 left join asset_type t2 on t1.parent_id = t2.id where 1=1 and t1.parent_id != 0 <if test="query.assetTypeIds != null and query.assetTypeIds.size()>0"> AND t1.id IN <foreach collection="query.assetTypeIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} AND t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </select> <select id="pageListNoLimit" resultType="com.ruoyi.system.vo.AssetStatisticsVO"> select t1.id as assetTypeIdSecond,t1.type_name as assetTypeNameSecond, t2.id as assetTypeIdFirst,t2.type_name as assetTypeNameFirst FROM asset_type t1 left join asset_type t2 on t1.parent_id = t2.id where 1=1 and t1.parent_id != 0 <if test="query.assetTypeIds != null and query.assetTypeIds.size()>0"> AND t1.id IN <foreach collection="query.assetTypeIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} AND t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </select> </mapper> ruoyi-system/src/main/resources/mapper/system/OaApprovalTodoMapper.xml
@@ -22,14 +22,24 @@ id, application_id, application_code, flow_node_id, user_id, user_name, dept_id, sort_order, status, create_time, handle_time </sql> <select id="pageList" resultType="com.ruoyi.system.model.OaApprovalTodo"> select * from oa_approval_todo where 1=1 SELECT * FROM oa_approval_todo t1 WHERE t1.id = ( SELECT t2.id FROM oa_approval_todo t2 WHERE t2.application_id = t1.application_id AND t2.status = 0 <if test="query.userId != null"> and user_id = #{query.userId} AND t2.user_id = #{query.userId} </if> and status = 0 group by application_id order by create_time desc ORDER BY t2.create_time DESC LIMIT 1 ) <if test="query.userId != null"> AND t1.user_id = #{query.userId} </if> AND t1.status = 0 ORDER BY t1.create_time DESC </select> <select id="pageListAudit" resultType="com.ruoyi.system.model.OaApprovalTodo"> select * from oa_approval_todo