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();
}