From 60caeef88915013d9bd9140c30d2b122e86c2a28 Mon Sep 17 00:00:00 2001 From: SjS Date: Wed, 2 Apr 2025 13:17:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=85=E9=9A=9C=E7=94=B3=E6=8A=A5=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=AE=9E=E7=8E=B0=E6=9D=83=E9=99=90=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/bst/fault/mapper/FaultMapper.xml | 23 +++++--- .../bst/fault/service/FaultConverter.java | 2 + .../ruoyi/bst/fault/service/FaultService.java | 12 ++++- .../service/impl/AbnormalConverterImpl.java | 42 +++++++++++++++ .../fault/service/impl/FaultServiceImpl.java | 52 +++++++++++++++---- .../com/ruoyi/web/app/AppFaultController.java | 3 ++ .../com/ruoyi/web/bst/FaultController.java | 18 +++---- 7 files changed, 124 insertions(+), 28 deletions(-) diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml index 1be6138..9841219 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml @@ -21,14 +21,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bf.user_id, bf.vehicle_num, bf.store_id, + su.agent_id + + + + + from bst_fault bf + left join sys_user su on bf.store_id = su.user_id + and bf.id = #{query.id} and bf.user_name like concat('%', #{query.userName}, '%') and bf.vehicle_code = #{query.vehicleCode} and bf.picture = #{query.picture} and bf.order_id = #{query.orderId} + and bf.store_id = #{query.storeId} and bf.user_id = #{query.userId} AND @@ -38,9 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bf.fault_detail = #{query.faultDetail} and bf.appeal_status = #{query.appealStatus} - ${@com.ruoyi.framework.util.datascopeutil@dataScope( + ${@com.ruoyi.framework.util.DataScopeUtil@dataScope( null, - "stroe_id", + "bf.store_id,su.agent_id", null, null, query.scope @@ -62,11 +71,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultConverter.java b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultConverter.java index b099813..950e932 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultConverter.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultConverter.java @@ -6,4 +6,6 @@ import com.ruoyi.bst.fault.domain.FaultVO; public interface FaultConverter { Fault toPo(FaultVO fault); + + boolean canEdit(Long faultId); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultService.java b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultService.java index 7cd843c..a0028c1 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/FaultService.java @@ -1,6 +1,9 @@ package com.ruoyi.bst.fault.service; import java.util.List; + +import com.ruoyi.bst.area.domain.AreaQuery; +import com.ruoyi.bst.area.domain.AreaVO; import com.ruoyi.bst.fault.domain.Fault; import com.ruoyi.bst.fault.domain.FaultVO; import com.ruoyi.bst.fault.domain.FaultQuery; @@ -19,8 +22,13 @@ public interface FaultService * @param id 故障主键 * @return 故障 */ - public FaultVO selectFaultById(Long id); + public FaultVO selectFaultById(Long id, boolean scope); + default FaultVO selectFaultById(Long id) { + return this.selectFaultById(id, false); + } + + public FaultVO selectOne(FaultQuery query); /** * 查询故障列表 * @@ -62,4 +70,6 @@ public interface FaultService public int deleteFaultById(Long id); FaultVO selectFaultByUserId(Long id); + + FaultVO handle(Fault fault); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/AbnormalConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/AbnormalConverterImpl.java index 4ded128..8fc2228 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/AbnormalConverterImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/AbnormalConverterImpl.java @@ -1,8 +1,10 @@ package com.ruoyi.bst.fault.service.impl; +import com.ruoyi.bst.area.domain.AreaVO; import com.ruoyi.bst.device.domain.DeviceVO; import com.ruoyi.bst.device.service.DeviceService; import com.ruoyi.bst.fault.domain.Fault; +import com.ruoyi.bst.fault.domain.FaultQuery; import com.ruoyi.bst.fault.domain.FaultVO; import com.ruoyi.bst.fault.domain.enums.FaultStatus; import com.ruoyi.bst.fault.service.FaultConverter; @@ -11,12 +13,16 @@ import com.ruoyi.bst.order.domain.OrderVO; import com.ruoyi.bst.order.service.OrderService; import com.ruoyi.common.core.domain.vo.UserVO; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.system.user.service.UserService; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; + @Service public class AbnormalConverterImpl implements FaultConverter { @@ -69,4 +75,40 @@ public class AbnormalConverterImpl implements FaultConverter { } return po; } + + @Override + public boolean canEdit(Long faultId) { + return canOperate(Arrays.asList(faultId)); + } + + private boolean canOperate(List faultIds) { + if (SecurityUtils.isSysAdmin()){ + return true; + } + + FaultQuery query = new FaultQuery(); + query.setId(faultIds.get(0)); + query.setScope(true); + List faultList = faultService.selectFaultList(query); + Long userId = SecurityUtils.getUserId(); + + // 判断是否可以处理故障 + for (Long faultId : faultIds) { + FaultVO fault = faultList.stream() + .filter(item -> item.getId().equals(faultId)) + .findFirst().orElse(null); + if (fault == null) { + return false; + } + boolean canOperate = isStore(fault, userId); + if (!canOperate) { + return false; + } + } + return true; + } + + private boolean isStore(FaultVO fault, Long userId) { + return fault != null && fault.getStoreId() != null && fault.getStoreId().equals(userId); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java index 7bde8ca..2dc2642 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java @@ -1,8 +1,16 @@ package com.ruoyi.bst.fault.service.impl; import java.util.List; + +import com.github.pagehelper.PageHelper; +import com.ruoyi.bst.area.domain.AreaQuery; +import com.ruoyi.bst.area.domain.AreaVO; +import com.ruoyi.bst.fault.domain.enums.FaultHandleStatus; +import com.ruoyi.bst.fault.domain.enums.FaultStatus; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.common.utils.collection.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.bst.fault.mapper.FaultMapper; @@ -23,19 +31,29 @@ public class FaultServiceImpl implements FaultService @Autowired private FaultMapper faultMapper; - /** - * 查询故障 - * - * @param id 故障主键 - * @return 故障 - */ @Override - public FaultVO selectFaultById(Long id) - { + public FaultVO selectFaultById(Long id, boolean scope) { + if (id == null) { + return null; + } + FaultQuery query = new FaultQuery(); + query.setId(id); + query.setScope(scope); - return faultMapper.selectFaultById(id); + return this.selectOne(query); } + @Override + public FaultVO selectOne(FaultQuery query) { + PageHelper.startPage(1, 1); + List list = faultMapper.selectFaultList(query); + if(list.isEmpty()) { + ServiceUtil.assertion(true,"当前故障信息不属于您"); + } + return CollectionUtils.firstElement(list); + } + + /** * 查询故障列表 * @@ -102,4 +120,20 @@ public class FaultServiceImpl implements FaultService public FaultVO selectFaultByUserId(Long id) { return faultMapper.selectFaultByUserId(id); } + + @Override + public FaultVO handle(Fault fault) { + FaultVO vo = faultMapper.selectFaultById(fault.getId()); + ServiceUtil.assertion(vo == null,"当前申报信息不存在"); + if (vo.getAppealStatus().equals(FaultStatus.PENGDING.getCode()) && fault.getHandle().equals(FaultHandleStatus.REJECTED.getCode())) { + vo.setAppealStatus(FaultStatus.REJECTED.getCode()); + }else + if (vo.getAppealStatus().equals(FaultStatus.PENGDING.getCode()) && fault.getHandle().equals(FaultHandleStatus.DO.getCode())) { + vo.setAppealStatus(FaultStatus.REPAIRING.getCode()); + }else + if (vo.getAppealStatus().equals(FaultStatus.REPAIRING.getCode()) && fault.getHandle().equals(FaultHandleStatus.DO.getCode())) { + vo.setAppealStatus(FaultStatus.COMPLETED.getCode()); + } + return vo; + } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppFaultController.java b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppFaultController.java index d78916d..c6d1945 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppFaultController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppFaultController.java @@ -14,8 +14,11 @@ import com.ruoyi.bst.order.service.OrderService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.common.utils.collection.CollectionUtils; import io.swagger.annotations.ApiOperation; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java index 1a38dd9..e8c2511 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java @@ -5,6 +5,7 @@ import com.ruoyi.bst.fault.domain.FaultQuery; import com.ruoyi.bst.fault.domain.FaultVO; import com.ruoyi.bst.fault.domain.enums.FaultHandleStatus; import com.ruoyi.bst.fault.domain.enums.FaultStatus; +import com.ruoyi.bst.fault.service.FaultConverter; import com.ruoyi.bst.fault.service.FaultService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; @@ -32,6 +33,8 @@ public class FaultController extends BaseController { @Autowired private FaultService faultService; + @Autowired + private FaultConverter faultConverter; /** * 查询故障列表 @@ -67,7 +70,7 @@ public class FaultController extends BaseController @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { - return success(faultService.selectFaultById(id)); + return success(faultService.selectFaultById(id,true)); } /** @@ -115,17 +118,10 @@ public class FaultController extends BaseController @ApiOperation("处理申报信息") @PutMapping("/handle") public AjaxResult update(@RequestBody Fault fault) { - FaultVO faultVO = faultService.selectFaultById(fault.getId()); - if (faultVO.getAppealStatus().equals(FaultStatus.PENGDING.getCode()) && fault.getHandle().equals(FaultHandleStatus.REJECTED.getCode())) { - faultVO.setAppealStatus(FaultStatus.REJECTED.getCode()); - }else - if (faultVO.getAppealStatus().equals(FaultStatus.PENGDING.getCode()) && fault.getHandle().equals(FaultHandleStatus.DO.getCode())) { - faultVO.setAppealStatus(FaultStatus.REPAIRING.getCode()); - }else - if (faultVO.getAppealStatus().equals(FaultStatus.REPAIRING.getCode()) && fault.getHandle().equals(FaultHandleStatus.DO.getCode())) { - faultVO.setAppealStatus(FaultStatus.COMPLETED.getCode()); + if (!faultConverter.canEdit(fault.getId())){ + return AjaxResult.error("您没有权限修改id为" + fault.getId() + "的故障申报"); } - faultService.updateFault(faultVO); + faultService.updateFault(faultService.handle(fault)); return success(); }