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 lombok.RequiredArgsConstructor;
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.WorkOrderInfoBo;
import org.dromara.platform.domain.vo.PerformanceManagementVo;
import org.dromara.platform.domain.vo.PointInfoVo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.platform.listener.PerformanceManagementListener;
import org.dromara.platform.listener.PointInfoListener;
import org.dromara.platform.listener.WorkOrderInfoListener;
import org.dromara.platform.service.IPointInfoService;
import org.dromara.platform.service.IProjectInfoService;
import org.dromara.platform.service.IWorkOrderInfoService;
import org.dromara.platform.service.ProjectManagerService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -51,7 +43,7 @@ public class ExcelController {
response.setContentType("text/html;charset=utf8");
long t2 = System.currentTimeMillis();
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)
.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;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.common.translation.annotation.Translation;
import java.util.Date;
@ -50,7 +51,7 @@ public class WorkOrderInfoVo implements Serializable {
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
@ExcelProperty(value = "所属合同")
private String contractName;
/**
@ -68,25 +69,26 @@ public class WorkOrderInfoVo implements Serializable {
/**
* 保修人员ID
*/
@ExcelProperty(value = "保修人员ID")
//@ExcelProperty(value = "保修人员ID")
@ExcelIgnore
private String repairerId;
/**
*
*/
@ExcelProperty(value = "")
@ExcelProperty(value = "维修时间")
private Date repairTime;
/**
* 是否事故 (0: , 1: )
* 是否事故
*/
@ExcelProperty(value = "是否事故 (0: 否, 1: 是)")
@ExcelProperty("是否事故")
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*
*/
@ExcelProperty(value = "响应级别 (0: 常规, 1: 紧急, 2: 特急)")
@ExcelProperty(value = "响应级别")
private String responseLevel;
/**
@ -104,7 +106,7 @@ public class WorkOrderInfoVo implements Serializable {
/**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
@ExcelProperty(value = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)")
@ExcelProperty("故障小类")
private String faultSubcategory;
/**
@ -139,7 +141,7 @@ public class WorkOrderInfoVo implements Serializable {
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
@ExcelProperty(value = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)")
@ExcelProperty(value = "维护要求")
private String maintenanceRequirement;
/**
@ -157,13 +159,15 @@ public class WorkOrderInfoVo implements Serializable {
/**
* 纬度
*/
@ExcelProperty(value = "纬度")
//@ExcelProperty(value = "纬度")
@ExcelIgnore
private String latitude;
/**
* 经度
*/
@ExcelProperty(value = "经度")
//@ExcelProperty(value = "经度")
@ExcelIgnore
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 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.StringUtils;
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.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.platform.domain.Attachment;
import org.dromara.platform.domain.AttachmentSerializer;
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.service.IContractInfoService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
* 合同信息Service业务层处理
@ -71,8 +72,23 @@ public class ContractInfoServiceImpl implements IContractInfoService {
*/
@Override
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);
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);
}

Loading…
Cancel
Save