Browse Source

合同管理加入角色权限过滤,项目管理需要协商

ops-management-platform-backend-dev
gjh 3 weeks ago
parent
commit
2fea5db25b
  1. 25
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ExcelController.java
  2. 26
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java
  3. 67
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java
  4. 24
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java

25
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ExcelController.java

@ -5,22 +5,14 @@ import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.platform.domain.PerformanceManagement;
import org.dromara.platform.domain.PointInfo;
import org.dromara.platform.domain.bo.PerformanceManagementBo;
import org.dromara.platform.domain.bo.PointInfoBo; import org.dromara.platform.domain.bo.PointInfoBo;
import org.dromara.platform.domain.bo.WorkOrderInfoBo; import org.dromara.platform.domain.bo.WorkOrderInfoBo;
import org.dromara.platform.domain.vo.PerformanceManagementVo;
import org.dromara.platform.domain.vo.PointInfoVo; import org.dromara.platform.domain.vo.PointInfoVo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo; import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.platform.listener.PerformanceManagementListener;
import org.dromara.platform.listener.PointInfoListener; import org.dromara.platform.listener.PointInfoListener;
import org.dromara.platform.listener.WorkOrderInfoListener;
import org.dromara.platform.service.IPointInfoService; import org.dromara.platform.service.IPointInfoService;
import org.dromara.platform.service.IProjectInfoService;
import org.dromara.platform.service.IWorkOrderInfoService; import org.dromara.platform.service.IWorkOrderInfoService;
import org.dromara.platform.service.ProjectManagerService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -51,7 +43,7 @@ public class ExcelController {
response.setContentType("text/html;charset=utf8"); response.setContentType("text/html;charset=utf8");
long t2 = System.currentTimeMillis(); long t2 = System.currentTimeMillis();
response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)+"ms"); response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)+"ms");
log.info("批量导入点位信息项目成功! 共用时:{}ms",(t2-t1)); log.info("批量导入点位信息成功! 共用时:{}ms",(t2-t1));
} }
@ -97,4 +89,17 @@ public class ExcelController {
.sheet("工单信息"+currentDate) .sheet("工单信息"+currentDate)
.doWrite(list); .doWrite(list);
} }
@PostMapping("/uploadWorkOrderInfo")
public void uploadWorkOrderInfo(MultipartFile file, HttpServletResponse response) throws IOException {
long t1 = System.currentTimeMillis();
// 业务层
EasyExcel.read(file.getInputStream(), WorkOrderInfoVo.class, new WorkOrderInfoListener(workOrderInfoService)).sheet().doRead();
response.setContentType("text/html;charset=utf8");
long t2 = System.currentTimeMillis();
response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)+"ms");
log.info("批量点位上报成功! 共用时:{}ms",(t2-t1));
}
} }

26
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java

@ -1,5 +1,6 @@
package org.dromara.platform.domain.vo; package org.dromara.platform.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.annotation.Translation;
import java.util.Date; import java.util.Date;
@ -50,7 +51,7 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 合同名称 * 合同名称
*/ */
@ExcelProperty(value = "合同名称") @ExcelProperty(value = "所属合同")
private String contractName; private String contractName;
/** /**
@ -68,25 +69,26 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 保修人员ID * 保修人员ID
*/ */
@ExcelProperty(value = "保修人员ID") //@ExcelProperty(value = "保修人员ID")
@ExcelIgnore
private String repairerId; private String repairerId;
/** /**
* *
*/ */
@ExcelProperty(value = "") @ExcelProperty(value = "维修时间")
private Date repairTime; private Date repairTime;
/** /**
* 是否事故 (0: , 1: ) * 是否事故
*/ */
@ExcelProperty(value = "是否事故 (0: 否, 1: 是)") @ExcelProperty("是否事故")
private String isAccident; private String isAccident;
/** /**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急) *
*/ */
@ExcelProperty(value = "响应级别 (0: 常规, 1: 紧急, 2: 特急)") @ExcelProperty(value = "响应级别")
private String responseLevel; private String responseLevel;
/** /**
@ -104,7 +106,7 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊) * 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/ */
@ExcelProperty(value = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)") @ExcelProperty("故障小类")
private String faultSubcategory; private String faultSubcategory;
/** /**
@ -139,7 +141,7 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他) * 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/ */
@ExcelProperty(value = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)") @ExcelProperty(value = "维护要求")
private String maintenanceRequirement; private String maintenanceRequirement;
/** /**
@ -157,13 +159,15 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 纬度 * 纬度
*/ */
@ExcelProperty(value = "纬度") //@ExcelProperty(value = "纬度")
@ExcelIgnore
private String latitude; private String latitude;
/** /**
* 经度 * 经度
*/ */
@ExcelProperty(value = "经度") //@ExcelProperty(value = "经度")
@ExcelIgnore
private String longitude; private String longitude;
/** /**

67
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java

@ -0,0 +1,67 @@
package org.dromara.platform.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.dromara.platform.domain.bo.WorkOrderInfoBo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.platform.service.IWorkOrderInfoService;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义监听器读数据
*
* @author gjh
*/
@Slf4j
public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> {
@Resource
private IWorkOrderInfoService workOrderInfoService;
private List<WorkOrderInfoBo> list = new ArrayList<>();
/**
* 自己定义一个缓冲量
*/
private static final int BATCH_COUNT = 10;
public WorkOrderInfoListener(IWorkOrderInfoService workOrderInfoService) {
this.workOrderInfoService = workOrderInfoService;
}
/**
* 每读一行数据都会调用这个方法
*
* @param workOrderInfoVo
* @param analysisContext
*/
@Override
public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) {
WorkOrderInfoBo bo = new WorkOrderInfoBo();
BeanUtils.copyProperties(workOrderInfoVo, bo);
// 读取一行数据就添加到集合
list.add(bo);
// 判断是否到达缓存量了
if (list.size() >= BATCH_COUNT) {
list = new ArrayList<>(BATCH_COUNT);
list.forEach(workOrderInfoService::insertByBo);
}
}
/**
* 读完整个excel之后再调用这个方法
*
* @param analysisContext
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
if (list.size() > 0) {
list.forEach(workOrderInfoService::insertByBo);
}
}
}

24
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java

@ -2,6 +2,8 @@ package org.dromara.platform.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.dromara.common.core.domain.dto.RoleDTO;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -10,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.platform.domain.Attachment; import org.dromara.platform.domain.Attachment;
import org.dromara.platform.domain.AttachmentSerializer; import org.dromara.platform.domain.AttachmentSerializer;
import org.dromara.platform.domain.ProjectInfo; import org.dromara.platform.domain.ProjectInfo;
@ -24,10 +27,8 @@ import org.dromara.platform.domain.ContractInfo;
import org.dromara.platform.mapper.ContractInfoMapper; import org.dromara.platform.mapper.ContractInfoMapper;
import org.dromara.platform.service.IContractInfoService; import org.dromara.platform.service.IContractInfoService;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
import java.util.Collection;
/** /**
* 合同信息Service业务层处理 * 合同信息Service业务层处理
@ -71,8 +72,23 @@ public class ContractInfoServiceImpl implements IContractInfoService {
*/ */
@Override @Override
public TableDataInfo<ContractInfoVo> queryPageList(ContractInfoBo bo, PageQuery pageQuery) { public TableDataInfo<ContractInfoVo> queryPageList(ContractInfoBo bo, PageQuery pageQuery) {
LoginUser loginUser = LoginHelper.getLoginUser();
String username = loginUser.getUsername();
Set<String> rolePermission = loginUser.getRolePermission();
LambdaQueryWrapper<ContractInfo> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<ContractInfo> lqw = buildQueryWrapper(bo);
Page<ContractInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<ContractInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<ContractInfoVo> records = result.getRecords();
List<ContractInfoVo> filterRecords = records.stream()
// TODO 角色过滤
.filter(item -> "admin".equals(username)
|| item.getPartyB().equals(loginUser.getDeptName())
|| item.getPartyA().equals(loginUser.getDeptName())
|| rolePermission.contains("jianli")
)
.collect(Collectors.toList());
result.setRecords(filterRecords);
result.setTotal(filterRecords.size());
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }

Loading…
Cancel
Save