日志记录开发(未完成)

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;
import lombok.AllArgsConstructor;
@ -17,7 +15,6 @@ import org.springframework.scheduling.annotation.Async;
import java.util.Map;
/**
* 异步监听日志事件
*

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

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

@ -1,22 +1,29 @@
package org.springblade.modules.system.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.common.cache.UserCache;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.model.LogApi;
import org.springblade.core.mp.support.Condition;
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.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.vo.LogVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import java.awt.*;
import java.util.List;
import java.util.Map;
/**
@ -50,4 +57,15 @@ public class LogApiController {
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")
public R<List<User>> repairPersons(boolean isRepair) {
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()));
// 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::getRoleId, "1839552581620793346"));
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
*/
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 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 接口
@ -11,4 +15,5 @@ import org.springblade.core.log.model.LogApi;
*/
public interface LogApiMapper extends BaseMapper<LogApi> {
List<LogVO> logOnList(LogDTO log);
}

@ -22,5 +22,19 @@
<result column="time" property="time"/>
<result column="create_by" property="createBy"/>
</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>

@ -3,6 +3,11 @@ package org.springblade.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
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> {
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 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.service.ILogApiService;
import org.springblade.modules.system.vo.LogVO;
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 {
@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.eq(StringUtils.isNotBlank(sanitizeInput(device.getPosition())), Device::getPosition, device.getPosition());
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);
try {
IPage<Device> pages = deviceService.page(Condition.getPage(query), wrapper);

@ -12,7 +12,9 @@ import lombok.AllArgsConstructor;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.log.logger.BladeLogger;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
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.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import org.springframework.web.client.RestTemplate;
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.LinkedHashMap;
import java.util.Map;
import java.util.List;
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(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.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);
// 执行分页查询
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());
Map<Long, String> deviceNameMap = getDeviceNameMap(deviceIds);
// List<Long> deviceIds = records.stream().map(WorkOrder::getDeviceId).collect(Collectors.toList());
// Map<Long, String> deviceNameMap = getDeviceNameMap(deviceIds);
for (WorkOrder record : records) {
record.setDeviceName(deviceNameMap.getOrDefault(record.getDeviceId(), ""));
}
// for (WorkOrder record : records) {
// record.setDeviceName(deviceNameMap.getOrDefault(record.getDeviceId(), ""));
// }
// 更新查询结果列表
pages.setRecords(records);
// pages.setRecords(records);
// 返回查询结果
return R.data(pages);
@ -127,6 +134,7 @@ public class WorkOrderController extends BladeController {
break;
case "2":
eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId())); // 客服
eq.ne(WorkOrder::getStatus, -1);
break;
case "3":
eq.eq(WorkOrder::getMaintenanceTeam, AuthUtil.getDeptId()); // 维修负责人
@ -272,4 +280,61 @@ public class WorkOrderController extends BladeController {
public R clone(@Valid @RequestBody WorkOrder 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 customerOpinion;
/**
* 设备id
*/
@ -36,7 +41,6 @@ public class WorkOrder extends BaseEntity {
/**
* 设备名称
*/
@TableField(exist = false)
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.vo.PostVO;
import org.springblade.modules.workOrder.dto.WorkOrderDTO;
import org.springblade.modules.workOrder.entity.KnowledgeBaseAttach;
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.entity.*;
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.IWorkOrderRepairMaterialService;
import org.springblade.modules.workOrder.vo.WorkOrderVO;
@ -57,6 +55,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IUserService userService;
private final IDeviceService deviceService;
@Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderVO 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());
workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : "");
// Device device = deviceService.getById(workOrderVO.getDeviceId());
// workOrderVO.setDeviceName(device != null ? device.getName() : "");
return workOrderVO;
}
@ -157,6 +159,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 保存附件
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
List<WorkOrderRepairMaterial> materials = workOrder.getMaterials();
workOrderRepairMaterialService.remove(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId()));
// 维修材料
if (CollectionUtil.isNotEmpty(materials)) {
materials.forEach(material -> material.setOrderId(workOrder.getId()));

Loading…
Cancel
Save