From a98c39a2df658dbd249be453b738d1821ecc7318 Mon Sep 17 00:00:00 2001 From: mashuai Date: Fri, 16 Jan 2026 16:51:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LeaseApplyInfoServiceImpl.java | 5 +-- .../RepairAuditDetailsController.java | 2 +- .../service/IRepairAuditDetailsService.java | 3 +- .../impl/RepairAuditDetailsServiceImpl.java | 35 ++++++++++++------- .../material/basic/ComplexQueryMapper.xml | 2 +- .../mapper/material/task/TmTaskMapper.xml | 1 + 6 files changed, 30 insertions(+), 18 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java index edbad879..5dad0f24 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java @@ -763,12 +763,13 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { @Override public List selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo) { try { - Set userRoles = SecurityUtils.getLoginUser().getRoles(); + /*Set userRoles = SecurityUtils.getLoginUser().getRoles(); // 检查用户是否具有特殊角色 boolean hasSpecialRole = hasSpecialRole(userRoles); if (!hasSpecialRole) { leaseApplyInfo.setUserId(SecurityUtils.getLoginUser().getUserid()); - } + }*/ + leaseApplyInfo.setUserId(SecurityUtils.getLoginUser().getUserid()); //用leaseApplyInfo.getQueryType的值来区分是否是领用出库查询,如果是,时间筛选为发布时间 List list = leaseApplyInfoMapper.selectLeaseApplyInfoList(leaseApplyInfo); // 如果statusList包含3、4、5,则为领料出库查询 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java index d85a9980..5d5d23f9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java @@ -259,7 +259,7 @@ public class RepairAuditDetailsController extends BaseController { @SysLog(title = "批量修试审核详细", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->批量修改修试审核详细") @PostMapping("/outerAudit") public AjaxResult outerAudit(@RequestBody @NotNull List repairAuditDetails) { - return toAjax(repairAuditDetailsService.outerAudit(repairAuditDetails)); + return repairAuditDetailsService.outerAudit(repairAuditDetails); } /** diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/IRepairAuditDetailsService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/IRepairAuditDetailsService.java index 9b25c1f2..b2da4647 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/IRepairAuditDetailsService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/IRepairAuditDetailsService.java @@ -3,6 +3,7 @@ package com.bonus.material.repair.service; import java.util.List; import java.util.Map; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.repair.domain.RepairAuditDetails; import com.bonus.material.repair.domain.RepairPart; import com.bonus.material.repair.domain.RepairRecord; @@ -88,7 +89,7 @@ public interface IRepairAuditDetailsService { * @param repairAuditDetails (外层)修试审核详细集合 * @return 结果 */ - int outerAudit(List repairAuditDetails); + AjaxResult outerAudit(List repairAuditDetails); /** * (内层)批量修改修试审核详细 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java index 2bab53d2..6c8fb980 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairAuditDetailsServiceImpl.java @@ -9,6 +9,7 @@ import com.bonus.common.biz.enums.*; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.back.mapper.BackApplyInfoMapper; import com.bonus.material.ma.service.ITypeService; @@ -42,6 +43,7 @@ import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; import static com.bonus.common.biz.constant.MaterialConstants.SCRAP_TASK_TYPE_LABEL; @@ -86,6 +88,8 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService @Resource private ITypeService typeService; + private final ReentrantLock lock = new ReentrantLock(true); + @Override public List getPartRecord(RepairAuditDetails repairAuditDetails) { RepairAuditDetails bean = repairAuditDetailsMapper.getRepairId(repairAuditDetails); @@ -532,7 +536,9 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService */ @Override @Transactional(rollbackFor = Exception.class) - public int outerAudit(@NotNull List repairAuditDetails) { + public AjaxResult outerAudit(@NotNull List repairAuditDetails) { + // 获取锁(公平锁会按线程等待请求顺序分配锁) + lock.lock(); final List taskIds = repairAuditDetails.stream() .filter(Objects::nonNull) .map(RepairAuditDetails::getTaskId) @@ -540,11 +546,11 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService .collect(Collectors.toList()); if (taskIds.isEmpty()) { - return 0; + return AjaxResult.error("请选择审批任务"); } final List repairAuditDetailsByQuery = repairAuditDetailsMapper.selectRepairAuditDetailsByTaskIds(taskIds); if (CollectionUtils.isEmpty(repairAuditDetailsByQuery)) { - return 0; + return AjaxResult.error("审批任务为空,请联系管理员"); } // 1:通过 2:驳回 0:未处理 @@ -610,21 +616,24 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService } } - try { - final List ids = repairAuditDetailsByQuery.stream() - .filter(Objects::nonNull) - .map(RepairAuditDetails::getId) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - Long auditBy = SecurityUtils.getLoginUser().getUserid(); - return repairAuditDetailsMapper.updateRepairAuditDetailsBatch(ids, String.valueOf(status), auditBy); - } catch (final Exception e) { - throw new ServiceException("错误信息描述"); + final List ids = repairAuditDetailsByQuery.stream() + .filter(Objects::nonNull) + .map(RepairAuditDetails::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + Long auditBy = SecurityUtils.getLoginUser().getUserid(); + int result = repairAuditDetailsMapper.updateRepairAuditDetailsBatch(ids, String.valueOf(status), auditBy); + if (result == 0) { + throw new ServiceException("修改维修审核状态失败"); } } catch (ServiceException e) { log.error("修改维修审核状态失败", e); throw new ServiceException("修饰审核失败,请联系管理员"); + } finally { + // 释放锁 + lock.unlock(); } + return AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()); } /** diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml index fedc1498..886b0d08 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml @@ -430,7 +430,7 @@ LEFT JOIN ma_type mt4 ON mt4.type_id = mt3.parent_id WHERE mm.ma_code is not null and mm.ma_status in (1) - AND mm.company_id = #{companyId} + AND mt.company_id = #{companyId} GROUP BY mt.type_id) AS subquery0 ON subquery0.type_id = mt.type_id LEFT JOIN ( diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml index 941b75f3..be5c2c02 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml @@ -265,6 +265,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tm_task WHERE code = #{code} + LIMIT 1