From b167a4203201dee255c57afa5c96a01842889f42 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 13 十月 2025 18:46:41 +0800
Subject: [PATCH] 资产盘点任务接口
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java | 162 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 117 insertions(+), 45 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
index d090997..192d1eb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -11,47 +11,11 @@
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.AuditDTO;
import com.ruoyi.system.emums.ApprovalTypeEnum;
-import com.ruoyi.system.model.AssetMain;
-import com.ruoyi.system.model.AssetType;
-import com.ruoyi.system.model.OaApproval;
-import com.ruoyi.system.model.OaApprovalApplicationAdvertisement;
-import com.ruoyi.system.model.OaApprovalApplicationAsset;
-import com.ruoyi.system.model.OaApprovalApplicationAssetItem;
-import com.ruoyi.system.model.OaApprovalApplicationAttendance;
-import com.ruoyi.system.model.OaApprovalApplicationChange;
-import com.ruoyi.system.model.OaApprovalApplicationContract;
-import com.ruoyi.system.model.OaApprovalApplicationDispose;
-import com.ruoyi.system.model.OaApprovalApplicationMoney;
-import com.ruoyi.system.model.OaApprovalApplicationPayment;
-import com.ruoyi.system.model.OaApprovalApplicationPurchase;
-import com.ruoyi.system.model.OaApprovalApplicationReimbursement;
-import com.ruoyi.system.model.OaApprovalApplicationReimbursementItem;
-import com.ruoyi.system.model.OaApprovalApplicationStorage;
-import com.ruoyi.system.model.OaApprovalApplications;
-import com.ruoyi.system.model.OaApprovalFlowAudit;
-import com.ruoyi.system.model.OaApprovalFlowNode;
-import com.ruoyi.system.model.OaApprovalTodo;
+import com.ruoyi.system.model.*;
import com.ruoyi.system.query.ApprovalDetailQuery;
import com.ruoyi.system.query.ApprovalTodoListQuery;
-import com.ruoyi.system.service.AssetMainService;
-import com.ruoyi.system.service.AssetTypeService;
-import com.ruoyi.system.service.ISysUserService;
-import com.ruoyi.system.service.OaApprovalApplicationAdvertisementService;
-import com.ruoyi.system.service.OaApprovalApplicationAssetItemService;
-import com.ruoyi.system.service.OaApprovalApplicationAssetService;
-import com.ruoyi.system.service.OaApprovalApplicationAttendanceService;
-import com.ruoyi.system.service.OaApprovalApplicationChangeService;
-import com.ruoyi.system.service.OaApprovalApplicationContactService;
-import com.ruoyi.system.service.OaApprovalApplicationContractService;
-import com.ruoyi.system.service.OaApprovalApplicationDisposeService;
-import com.ruoyi.system.service.OaApprovalApplicationMoneyService;
-import com.ruoyi.system.service.OaApprovalApplicationPaymentService;
-import com.ruoyi.system.service.OaApprovalApplicationPurchaseItemService;
-import com.ruoyi.system.service.OaApprovalApplicationPurchaseService;
-import com.ruoyi.system.service.OaApprovalApplicationReimbursementItemService;
-import com.ruoyi.system.service.OaApprovalApplicationReimbursementService;
-import com.ruoyi.system.service.OaApprovalApplicationStorageAssetService;
-import com.ruoyi.system.service.OaApprovalApplicationStorageService;
+import com.ruoyi.system.service.*;
+
import com.ruoyi.system.service.OaApprovalApplicationsService;
import com.ruoyi.system.service.OaApprovalFlowAuditService;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
@@ -84,6 +48,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 +74,8 @@
*/
@RestController
@RequestMapping("/oa-approval-flow-audit")
-@Api(tags = "我审批的/我发起的/通用审批接口")
+@Api(tags = "我审批的-我发起的-通用审批接口")
+@Slf4j
public class OaApprovalFlowAuditController {
@Resource
private OaApprovalTodoService approvalTodoService;
@@ -141,6 +108,9 @@
private OaApprovalApplicationMoneyService approvalApplicationMoneyService;
@Resource
private AssetMainService assetMainService;
+ @Resource
+
+ private AssetInventoryRecordService assetInventoryRecordService;
@Resource
private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
@Resource
@@ -226,6 +196,8 @@
List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
for (OaApprovalApplications approvalApplication : approvalApplications) {
ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+ approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
+ approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
switch (approvalTodoVO.getApprovalCategory()){
case 1:
@@ -243,7 +215,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());
@@ -257,17 +229,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) {
@@ -287,24 +267,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){
@@ -315,12 +303,14 @@
case 12:
OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
if (oaApprovalApplicationReimbursement!=null){
+ approvalTodoVO.setType(oaApprovalApplicationReimbursement.getType());
approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
}
break;
case 13:
OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
if (oaApprovalApplicationMoney!=null){
+ approvalTodoVO.setProjectName(oaApprovalApplicationMoney.getProjectName());
approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
@@ -329,6 +319,8 @@
case 15:
OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
if (oaApprovalApplicationPayment!=null){
+ // todo 当前阶段没有项目id 后续完善
+ approvalTodoVO.setProjectName("项目名称");
approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
@@ -337,6 +329,7 @@
case 17:
OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
if (oaApprovalApplicationAdvertisement!=null){
+ approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
}
@@ -404,6 +397,8 @@
List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
for (OaApprovalApplications approvalApplication : approvalApplications) {
ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+ approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
+ approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
switch (approvalTodoVO.getApprovalCategory()){
case 1:
@@ -421,7 +416,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());
@@ -435,17 +430,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) {
@@ -465,24 +468,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){
@@ -493,12 +504,14 @@
case 12:
OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
if (oaApprovalApplicationReimbursement!=null){
+ approvalTodoVO.setType(oaApprovalApplicationReimbursement.getType());
approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
}
break;
case 13:
OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
if (oaApprovalApplicationMoney!=null){
+ approvalTodoVO.setProjectName(oaApprovalApplicationMoney.getProjectName());
approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
@@ -507,6 +520,8 @@
case 15:
OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
if (oaApprovalApplicationPayment!=null){
+ // todo 当前阶段没有项目id 后续完善
+ approvalTodoVO.setProjectName("项目名称");
approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
@@ -515,6 +530,7 @@
case 17:
OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
if (oaApprovalApplicationAdvertisement!=null){
+ approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
}
@@ -532,6 +548,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 +587,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) {
// 判断当前是否处于最后一个节点
@@ -584,20 +602,49 @@
List<Integer> AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList());
List<AssetMain> assetMains = assetMainService.lambdaQuery().in(AssetMain::getId, AssetMainIds).list();
switch (approval.getApprovalCategory()) {
+ case 9:
+ // 借用归还资产条数
+ List<OaApprovalApplicationAssetItem> back = approvalApplicationAssetItemService.lambdaQuery()
+ .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId())
+ .list();
+ // 借用资产条数
+ OaApprovalApplicationAsset borrowApplications = approvalApplicationAssetService.lambdaQuery()
+ .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
+ .last("limit 1").one();
+ List<OaApprovalApplicationAssetItem> borrow = approvalApplicationAssetItemService.lambdaQuery()
+ .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, borrowApplications.getId())
+ .list();
+ if (back.size()==borrow.size()){
+ borrowApplications.setReturnStatus(2);
+ }else if (!back.isEmpty()){
+ borrowApplications.setReturnStatus(1);
+ }else{
+ borrowApplications.setReturnStatus(0);
+ }
+ approvalApplicationAssetService.updateById(borrowApplications);
+ saveAssetRecord(0,ApprovalTypeEnum.RETURN.getDesc(),back.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
+ .collect(Collectors.toList()));
+
case 10:
assetMains.forEach(assetMain -> {
assetMain.setDisposed(1);
});
+ saveAssetRecord(null,ApprovalTypeEnum.ASSET_DISPOSE.getDesc(),assetMains
+ .stream().map(AssetMain::getId).collect(Collectors.toList()));
break;
case 7:
assetMains.forEach(assetMain -> {
assetMain.setInUse(1);
});
+ saveAssetRecord(1,ApprovalTypeEnum.GRAB.getDesc(),assetMains
+ .stream().map(AssetMain::getId).collect(Collectors.toList()));
break;
default:
assetMains.forEach(assetMain -> {
assetMain.setBorrowed(1);
});
+ saveAssetRecord(1,ApprovalTypeEnum.BORROW.getDesc(),assetMains
+ .stream().map(AssetMain::getId).collect(Collectors.toList()));
break;
}
assetMainService.updateBatchById(assetMains);
@@ -606,20 +653,45 @@
if (approval.getApprovalCategory().equals(ApprovalTypeEnum.IN_STOCK.getCode())) {
assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId());
}
+ // 资产变更
+ if (approval.getApprovalCategory().equals(ApprovalTypeEnum.ASSET_CHANGE.getCode())) {
+ List<OaApprovalApplicationAssetItem> approvalApplicationAssetItems = approvalApplicationAssetItemService.lambdaQuery()
+ .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId()).list();
+ List<Integer> AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList());
+ saveAssetRecord(1,ApprovalTypeEnum.ASSET_CHANGE.getDesc(),AssetMainIds);
+ }
+
} 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;
}
}
}
}
return R.ok();
+ }
+ private void saveAssetRecord(Integer type, String approvalType,List<Integer> assetMainIds) {
+ List<AssetInventoryRecord> res = new ArrayList<>();
+ Map<Integer, Integer> warehouseMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, AssetMain::getWarehouseId));
+ for (Integer assetMainId : assetMainIds) {
+ AssetInventoryRecord assetInventoryRecord = new AssetInventoryRecord();
+ assetInventoryRecord.setAssetMainId(assetMainId);
+ assetInventoryRecord.setWarehouseId(warehouseMap.get(assetMainId));
+ assetInventoryRecord.setType(type);
+ assetInventoryRecord.setRemarks(approvalType);
+ res.add(assetInventoryRecord);
+ }
+ assetInventoryRecordService.saveBatch(res);
}
}
--
Gitblit v1.7.1