日志记录开发(未完成)

main
litao 1 year ago
parent dfcfbe5c4b
commit bd947bafbd
  1. 3
      src/main/java/org/springblade/common/event/ApiLogListener.java
  2. 2
      src/main/java/org/springblade/common/event/UsualLogListener.java
  3. 3
      src/main/java/org/springblade/modules/system/controller/DeptController.java
  4. 22
      src/main/java/org/springblade/modules/system/controller/LogApiController.java
  5. 5
      src/main/java/org/springblade/modules/system/controller/UserController.java
  6. 17
      src/main/java/org/springblade/modules/system/dto/LogDTO.java
  7. 10
      src/main/java/org/springblade/modules/system/entity/User.java
  8. 5
      src/main/java/org/springblade/modules/system/mapper/LogApiMapper.java
  9. 14
      src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml
  10. 6
      src/main/java/org/springblade/modules/system/service/ILogApiService.java
  11. 24
      src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java
  12. 26
      src/main/java/org/springblade/modules/system/vo/LogVO.java
  13. 2
      src/main/java/org/springblade/modules/workOrder/controller/DeviceController.java
  14. 87
      src/main/java/org/springblade/modules/workOrder/controller/WorkOrderController.java
  15. 6
      src/main/java/org/springblade/modules/workOrder/entity/WorkOrder.java
  16. 11
      src/main/java/org/springblade/modules/workOrder/service/impl/WorkOrderServiceImpl.java

@ -1,5 +1,3 @@
package org.springblade.common.event; package org.springblade.common.event;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -17,7 +15,6 @@ import org.springframework.scheduling.annotation.Async;
import java.util.Map; import java.util.Map;
/** /**
* 异步监听日志事件 * 异步监听日志事件
* *

@ -1,7 +1,5 @@
package org.springblade.common.event; package org.springblade.common.event;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.launch.props.BladeProperties; import org.springblade.core.launch.props.BladeProperties;

@ -169,8 +169,7 @@ public class DeptController extends BladeController {
@ApiOperationSupport(order = 9) @ApiOperationSupport(order = 9)
@ApiOperation(value = "获取维修班组") @ApiOperation(value = "获取维修班组")
public R<List<Dept>> repairsDept() { public R<List<Dept>> repairsDept() {
Dept dept = deptService.getById(AuthUtil.getDeptId()); List<Dept> list = deptService.list(Wrappers.<Dept>lambdaQuery().eq(Dept::getDeptCategory, 4).eq(Dept::getParentId, AuthUtil.getDeptId()));
List<Dept> list = deptService.list(Wrappers.<Dept>lambdaQuery().eq(Dept::getDeptCategory, 4).in(Dept::getParentId, dept.getParentId()));
return R.data(list); return R.data(list);
} }

@ -1,22 +1,29 @@
package org.springblade.modules.system.controller; package org.springblade.modules.system.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.common.cache.UserCache;
import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.model.LogApi; import org.springblade.core.log.model.LogApi;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.WebUtil;
import org.springblade.modules.system.dto.LogDTO;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.ILogApiService; import org.springblade.modules.system.service.ILogApiService;
import org.springblade.modules.system.vo.LogVO;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import java.awt.*;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -50,4 +57,15 @@ public class LogApiController {
return R.data(pages); return R.data(pages);
} }
/**
* 查询多条(分页)
*/
@GetMapping("/logOnList")
public R<Map<String, List<LogVO>>> logOnList(@ApiIgnore LogDTO log, Query query) {
// HttpServletRequest request = WebUtil.getRequest();
User user = UserCache.getUser("", "");
Map<String, List<LogVO>> logList = logService.logOnList(log);
return R.data(logList);
}
} }

@ -303,8 +303,9 @@ public class UserController {
*/ */
@GetMapping("/repairPersons") @GetMapping("/repairPersons")
public R<List<User>> repairPersons(boolean isRepair) { public R<List<User>> repairPersons(boolean isRepair) {
User user = UserCache.getUser(AuthUtil.getUserId()); // User user = UserCache.getUser(AuthUtil.getUserId());
List<User> users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getDeptId, user.getDeptId()).ne(isRepair, User::getRoleId, user.getRoleId())); // List<User> users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getDeptId, user.getDeptId()).ne(isRepair, User::getRoleId, user.getRoleId()));
List<User> users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, "1839552581620793346"));
return R.data(users); return R.data(users);
} }

@ -0,0 +1,17 @@
package org.springblade.modules.system.dto;
import lombok.Data;
/**
* 数据传输对象实体类
*
* @author Chill
*/
@Data
public class LogDTO {
private static final long serialVersionUID = 1L;
private String startTime;
private String endTime;
}

@ -76,6 +76,12 @@ public class User extends TenantEntity {
* 岗位id * 岗位id
*/ */
private String postId; private String postId;
/**
* 详细地址
*/
private String address;
/**
* 坐标
*/
private String coordinate;
} }

@ -3,6 +3,10 @@ package org.springblade.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.core.log.model.LogApi; import org.springblade.core.log.model.LogApi;
import org.springblade.modules.system.dto.LogDTO;
import org.springblade.modules.system.vo.LogVO;
import java.util.List;
/** /**
* Mapper 接口 * Mapper 接口
@ -11,4 +15,5 @@ import org.springblade.core.log.model.LogApi;
*/ */
public interface LogApiMapper extends BaseMapper<LogApi> { public interface LogApiMapper extends BaseMapper<LogApi> {
List<LogVO> logOnList(LogDTO log);
} }

@ -22,5 +22,19 @@
<result column="time" property="time"/> <result column="time" property="time"/>
<result column="create_by" property="createBy"/> <result column="create_by" property="createBy"/>
</resultMap> </resultMap>
<select id="logOnList" resultType="org.springblade.modules.system.vo.LogVO">
SELECT
tenant_id AS tenantId,
create_by AS createBy,
create_time AS createTime,
title AS title
FROM
`blade_log_api`
WHERE
create_by != ''
AND create_time BETWEEN #{startTime} AND #{endTime}
ORDER BY
create_time DESC
</select>
</mapper> </mapper>

@ -3,6 +3,11 @@ package org.springblade.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.log.model.LogApi; import org.springblade.core.log.model.LogApi;
import org.springblade.modules.system.dto.LogDTO;
import org.springblade.modules.system.vo.LogVO;
import java.util.List;
import java.util.Map;
/** /**
* 服务类 * 服务类
@ -11,4 +16,5 @@ import org.springblade.core.log.model.LogApi;
*/ */
public interface ILogApiService extends IService<LogApi> { public interface ILogApiService extends IService<LogApi> {
Map<String, List<LogVO>> logOnList(LogDTO log);
} }

@ -3,10 +3,20 @@ package org.springblade.modules.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.log.model.LogApi; import org.springblade.core.log.model.LogApi;
import org.springblade.modules.system.dto.LogDTO;
import org.springblade.modules.system.mapper.LogApiMapper; import org.springblade.modules.system.mapper.LogApiMapper;
import org.springblade.modules.system.service.ILogApiService; import org.springblade.modules.system.service.ILogApiService;
import org.springblade.modules.system.vo.LogVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
/** /**
* 服务实现类 * 服务实现类
* *
@ -16,4 +26,18 @@ import org.springframework.stereotype.Service;
public class LogApiServiceImpl extends ServiceImpl<LogApiMapper, LogApi> implements ILogApiService { public class LogApiServiceImpl extends ServiceImpl<LogApiMapper, LogApi> implements ILogApiService {
@Override
public Map<String, List<LogVO>> logOnList(LogDTO log) {
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<LogVO> logs = baseMapper.logOnList(log);
logs.forEach(logVO -> {
logVO.setTime(formatter2.format(logVO.getCreateTime()));
logVO.setTitle(logVO.getCreateBy() + ":" + logVO.getTitle());
});
Map<String, List<LogVO>> groupedByMonth = logs.stream().collect(Collectors.groupingBy(date -> date.getTime().substring(0, 7)));
return groupedByMonth;
}
} }

@ -0,0 +1,26 @@
package org.springblade.modules.system.vo;
import lombok.Data;
import java.util.Date;
/**
* 数据传输对象实体类
*
* @author Chill
*/
@Data
public class LogVO {
private static final long serialVersionUID = 1L;
private String tenantId;
private String createBy;
private Date createTime;
private String time;
private String title;
}

@ -92,7 +92,7 @@ public class DeviceController extends BladeController {
wrapper.like(StringUtils.isNotBlank(sanitizeInput(device.getName())), Device::getName, device.getName()); wrapper.like(StringUtils.isNotBlank(sanitizeInput(device.getName())), Device::getName, device.getName());
wrapper.eq(StringUtils.isNotBlank(sanitizeInput(device.getPosition())), Device::getPosition, device.getPosition()); wrapper.eq(StringUtils.isNotBlank(sanitizeInput(device.getPosition())), Device::getPosition, device.getPosition());
wrapper.eq(StringUtils.isNotBlank(sanitizeInput(device.getType())), Device::getType, device.getType()); wrapper.eq(StringUtils.isNotBlank(sanitizeInput(device.getType())), Device::getType, device.getType());
wrapper.eq(Device::getCreateUser, AuthUtil.getUserId()); // wrapper.eq(Device::getCreateUser, AuthUtil.getUserId());
wrapper.orderByDesc(Device::getCreateTime); wrapper.orderByDesc(Device::getCreateTime);
try { try {
IPage<Device> pages = deviceService.page(Condition.getPage(query), wrapper); IPage<Device> pages = deviceService.page(Condition.getPage(query), wrapper);

@ -12,7 +12,9 @@ import lombok.AllArgsConstructor;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.log.logger.BladeLogger;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
@ -33,9 +35,17 @@ import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.constant.BladeConstant;
import org.springframework.web.client.RestTemplate;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -94,27 +104,24 @@ public class WorkOrderController extends BladeController {
} }
// 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序 // 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序
eq.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()) eq.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()).eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()).between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()).orderByDesc(WorkOrder::getCreateTime);
.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType())
.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime())
.orderByDesc(WorkOrder::getCreateTime);
// 执行分页查询 // 执行分页查询
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), eq); IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), eq);
// 获取查询结果列表 // 获取查询结果列表
List<WorkOrder> records = pages.getRecords(); // List<WorkOrder> records = pages.getRecords();
// 批量查询设备名称 // 批量查询设备名称
List<Long> deviceIds = records.stream().map(WorkOrder::getDeviceId).collect(Collectors.toList()); // List<Long> deviceIds = records.stream().map(WorkOrder::getDeviceId).collect(Collectors.toList());
Map<Long, String> deviceNameMap = getDeviceNameMap(deviceIds); // Map<Long, String> deviceNameMap = getDeviceNameMap(deviceIds);
for (WorkOrder record : records) { // for (WorkOrder record : records) {
record.setDeviceName(deviceNameMap.getOrDefault(record.getDeviceId(), "")); // record.setDeviceName(deviceNameMap.getOrDefault(record.getDeviceId(), ""));
} // }
// 更新查询结果列表 // 更新查询结果列表
pages.setRecords(records); // pages.setRecords(records);
// 返回查询结果 // 返回查询结果
return R.data(pages); return R.data(pages);
@ -127,6 +134,7 @@ public class WorkOrderController extends BladeController {
break; break;
case "2": case "2":
eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); // 客服 eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); // 客服
eq.ne(WorkOrder::getStatus, -1);
break; break;
case "3": case "3":
eq.eq(WorkOrder::getMaintenanceTeam, AuthUtil.getDeptId()); // 维修负责人 eq.eq(WorkOrder::getMaintenanceTeam, AuthUtil.getDeptId()); // 维修负责人
@ -272,4 +280,61 @@ public class WorkOrderController extends BladeController {
public R clone(@Valid @RequestBody WorkOrder workOrder) { public R clone(@Valid @RequestBody WorkOrder workOrder) {
return R.status(workOrderService.updateById(workOrder)); return R.status(workOrderService.updateById(workOrder));
} }
/**
* 封装百度接口
*
* @param query
* @return
* @throws Exception
*/
@GetMapping("/suggestion")
public R suggestion(String query) throws Exception {
String ak = "NqGy7LGcdxNUNqR7pBwPqeOkZ11Arn5Y";
String url = "https://api.map.baidu.com/place/v2/suggestion?";
Map params = new LinkedHashMap<String, String>();
params.put("query", query);
params.put("region", "全国");
params.put("city_limit", "true");
params.put("output", "json");
params.put("ak", ak);
String resultStr = requestGetAK(url, params);
JSONObject jsonObject = new JSONObject(resultStr);
Map<String, Object> map = jsonObject.toMap();
return R.data(map);
}
private String requestGetAK(String strUrl, Map<String, String> param) throws Exception {
if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) {
return null;
}
StringBuffer queryString = new StringBuffer();
queryString.append(strUrl);
for (Map.Entry<?, ?> pair : param.entrySet()) {
queryString.append(pair.getKey() + "=");
// 第一种方式使用的 jdk 自带的转码方式 第二种方式使用的 spring 的转码方法 两种均可
queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8").replace("+", "%20") + "&");
}
if (queryString.length() > 0) {
queryString.deleteCharAt(queryString.length() - 1);
}
URL url = new URL(queryString.toString());
URLConnection httpConnection = url.openConnection();
httpConnection.connect();
InputStreamReader isr = new InputStreamReader(httpConnection.getInputStream());
BufferedReader reader = new BufferedReader(isr);
StringBuffer buffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
isr.close();
// System.out.println("AK: " + buffer.toString());
return buffer.toString();
}
} }

@ -28,6 +28,11 @@ public class WorkOrder extends BaseEntity {
*/ */
private String faultLocation; private String faultLocation;
/**
* 客服意见
*/
private String customerOpinion;
/** /**
* 设备id * 设备id
*/ */
@ -36,7 +41,6 @@ public class WorkOrder extends BaseEntity {
/** /**
* 设备名称 * 设备名称
*/ */
@TableField(exist = false)
private String deviceName; private String deviceName;
/** /**

@ -15,11 +15,9 @@ import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.vo.PostVO; import org.springblade.modules.system.vo.PostVO;
import org.springblade.modules.workOrder.dto.WorkOrderDTO; import org.springblade.modules.workOrder.dto.WorkOrderDTO;
import org.springblade.modules.workOrder.entity.KnowledgeBaseAttach; import org.springblade.modules.workOrder.entity.*;
import org.springblade.modules.workOrder.entity.WorkOrder;
import org.springblade.modules.workOrder.entity.WorkOrderAttach;
import org.springblade.modules.workOrder.entity.WorkOrderRepairMaterial;
import org.springblade.modules.workOrder.mapper.WorkOrderAttachMapper; import org.springblade.modules.workOrder.mapper.WorkOrderAttachMapper;
import org.springblade.modules.workOrder.service.IDeviceService;
import org.springblade.modules.workOrder.service.IWorkOrderAttachService; import org.springblade.modules.workOrder.service.IWorkOrderAttachService;
import org.springblade.modules.workOrder.service.IWorkOrderRepairMaterialService; import org.springblade.modules.workOrder.service.IWorkOrderRepairMaterialService;
import org.springblade.modules.workOrder.vo.WorkOrderVO; import org.springblade.modules.workOrder.vo.WorkOrderVO;
@ -57,6 +55,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IUserService userService; private final IUserService userService;
private final IDeviceService deviceService;
@Override @Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderVO workOrder) { public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderVO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -95,6 +95,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 审批人员 // 审批人员
User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson()); User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson());
workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : ""); workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : "");
// Device device = deviceService.getById(workOrderVO.getDeviceId());
// workOrderVO.setDeviceName(device != null ? device.getName() : "");
return workOrderVO; return workOrderVO;
} }
@ -157,6 +159,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 保存附件 // 保存附件
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
List<WorkOrderRepairMaterial> materials = workOrder.getMaterials(); List<WorkOrderRepairMaterial> materials = workOrder.getMaterials();
workOrderRepairMaterialService.remove(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId()));
// 维修材料 // 维修材料
if (CollectionUtil.isNotEmpty(materials)) { if (CollectionUtil.isNotEmpty(materials)) {
materials.forEach(material -> material.setOrderId(workOrder.getId())); materials.forEach(material -> material.setOrderId(workOrder.getId()));

Loading…
Cancel
Save