提交 abc11411 authored 作者: Matrix's avatar Matrix

修改了一些编译错误以及循环查询的问题

上级 488c3b26
......@@ -27,6 +27,7 @@ import com.tykj.dev.device.user.util.AuthenticationUtils;
import com.tykj.dev.misc.base.ResultObj;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
......@@ -55,6 +56,7 @@ import static java.util.stream.Collectors.toList;
@AutoDocument
@Api(tags = "核查模块")
@Transactional
@Slf4j
public class DeviceCheckController {
@Autowired
......@@ -77,6 +79,8 @@ public class DeviceCheckController {
private TaskService taskService;
@Autowired
private TaskLogService logService;
@Autowired
private AuthenticationUtils AuthenticationUtils;
@GetMapping("/area/{fatherId}")
@ApiOperation(value = "查询指定区域下的所有区域信息")
......@@ -124,6 +128,7 @@ public class DeviceCheckController {
List<Units> checkedUnits = unitsRepo.findByAreaIdIn(billVo.getAreaRange());
List<String> checkedUnitNames = checkedUnits.stream().map(Units::getName).collect(toList());
log.info("发起手动核查,发起单位为{},被查单位为{}", startUnit.getName(), checkedUnitNames);
// 2-1 构建发起单位的 统计账单
DeviceCheckStat provinceCheckStat = initStatData(startUnit.getName(), checkedUnits);
Integer billId = statRepo.save(provinceCheckStat).getId();
......@@ -156,6 +161,7 @@ public class DeviceCheckController {
taskService.start(checkedTask);
}
log.info("{}单位成功发起对 {} 单位的核查任务分发", startUnit.getName(), checkedUnitNames);
return ResponseEntity.ok(new ResultObj(String.format("[%s]单位成功发起对 %s 单位的核查任务分发", startUnit.getName(), checkedUnitNames)));
}
......
......@@ -60,6 +60,9 @@ public class DeviceDestroyController {
private final TaskLogService taskLogService;
@Autowired
private AuthenticationUtils AuthenticationUtils;
/**
* 装备销毁对应的生命周期编号
*/
......
......@@ -62,6 +62,9 @@ public class DeviceRetiredController {
private final TaskLogService taskLogService;
@Autowired
private AuthenticationUtils AuthenticationUtils;
public DeviceRetiredController(DeviceRetiredBillService deviceRetiredBillService, TaskService taskService, PackingLibraryService packingLibraryService, DeviceLibraryService deviceLibraryService, DeviceLogService deviceLogService, TaskLogService taskLogService) {
this.deviceRetiredBillService = deviceRetiredBillService;
this.taskService = taskService;
......
......@@ -10,9 +10,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 用户实体相关工具类
......@@ -24,7 +27,13 @@ import java.util.List;
* @data 2020/5/14
**/
@Slf4j
@Component
public class AuthenticationUtils {
public static String ANONYMOUS_USER_STRING = "anonymousUser";
@Autowired
PermissionsService permissionsService;
@Autowired
UnitsService unitsService;
@Autowired
private UserService userService;
@Autowired
......@@ -33,36 +42,44 @@ public class AuthenticationUtils {
private RoleService roleService;
@Autowired
private RolePermissionsService rolePermissionsService;
@Autowired
PermissionsService permissionsService;
@Autowired
UnitsService unitsService;
public static String ANONYMOUS_USER_STRING = "anonymousUser";
/***
* 获取当前登录用户
*
* @Return : com.example.personnelmanager.entity.UserDetail
*/
public static SecurityUser getAuthentication(){
public SecurityUser getAuthentication() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication!=null){
if (ANONYMOUS_USER_STRING.equals(authentication.getPrincipal())){
if (authentication != null) {
Object userObject = authentication.getPrincipal();
if (ANONYMOUS_USER_STRING.equals(userObject)) {
log.info("当前无登录用户");
}
return (SecurityUser) authentication.getPrincipal();
}else {
if (userObject instanceof SecurityUser) {
return (SecurityUser) userObject;
} else {
return findUserNameToSecurity(((org.springframework.security.core.userdetails.User) userObject).getUsername());
}
} else {
log.info("当前无登录用户");
return null;
}
}
Map<String, SecurityUser> userMap = new HashMap<>();
/**
* 根据用户名称查询登入对象
*
* @param userName 用户名称
*/
private SecurityUser findUserNameToSecurity(String userName) {
if (userMap.get(userName) != null) {
return userMap.get(userName);
}
SecurityUser securityUser = new SecurityUser();
User user = userService.findByUserName(userName);
if (user == null) {
......@@ -80,8 +97,10 @@ public class AuthenticationUtils {
securityUser.setCurrentUserInfo(user);
securityUser.setRoleList(roles);
securityUser.setUsername(userName);
userMap.put(userName, securityUser);
return securityUser;
}
}
}
......@@ -13,13 +13,16 @@ import org.springframework.stereotype.Component;
@Component
public class UserUtils {
@Autowired
private AuthenticationUtils AuthenticationUtils;
private UnitsService unitsService = SpringUtils.getBean("unitsServiceImpl");
public Integer getCurrentUserId(){
public Integer getCurrentUserId() {
SecurityUser authentication = AuthenticationUtils.getAuthentication();
if (authentication!=null){
if (authentication != null) {
return authentication.getCurrentUserInfo().getUserId();
}else {
} else {
return null;
}
}
......
package com.tykj.dev.misc.exception;
import com.tykj.dev.misc.base.ResultObj;
import com.tykj.dev.misc.utils.ResultUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
......@@ -26,24 +27,26 @@ public class GlobalExceptionHandler {
/**
* 报错信息都会通过这个方法处理并通过统一的返回方式进行返回
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler(Exception.class)
public ResponseEntity errorMessage(Exception e){
public ResponseEntity errorMessage(Exception e) {
e.printStackTrace();
return ResultUtil.failed();
}
/**
* 业务错误
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler(ApiException.class)
public ResponseEntity errorMessage(ApiException e){
public ResponseEntity errorMessage(ApiException e) {
e.printStackTrace();
if (e.getResponseEntity()!=null){
if (e.getResponseEntity() != null) {
return e.getResponseEntity();
}
return ResultUtil.failed();
......@@ -51,18 +54,19 @@ public class GlobalExceptionHandler {
/**
* 数据合法性验证报错会通过这个方法处理并通过统一的返回方式进行返回
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler(BindException.class)
public ResponseEntity errorMessage(BindException e){
public ResponseEntity errorMessage(BindException e) {
e.printStackTrace();
BindingResult bindingResult = e.getBindingResult();
String message = null;
if (bindingResult.hasErrors()) {
FieldError fieldError = bindingResult.getFieldError();
if (fieldError != null) {
message = fieldError.getField()+fieldError.getDefaultMessage();
message = fieldError.getField() + fieldError.getDefaultMessage();
}
}
return ResultUtil.failed(message);
......@@ -70,24 +74,26 @@ public class GlobalExceptionHandler {
/**
* 用户未登录时会通过这里处理
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler(AuthenticationException.class)
public ResponseEntity errorMessage(AuthenticationException e){
public ResponseEntity errorMessage(AuthenticationException e) {
e.printStackTrace();
return ResultUtil.unauthorized();
}
/**
* 用户权限不足
*
* @param e 报错信息
*/
@ResponseBody
@ExceptionHandler(AccessDeniedException.class)
public ResponseEntity errorMessage(AccessDeniedException e){
public ResponseEntity errorMessage(AccessDeniedException e) {
e.printStackTrace();
return ResultUtil.forbidden();
return ResponseEntity.status(403).body(new ResultObj(e.getMessage()));
}
}
......
......@@ -34,6 +34,7 @@ import com.tykj.dev.socket.MyWebSocket;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
......@@ -80,6 +81,9 @@ public class RfidController {
@Resource
MyWebSocket myWebSocket;
@Autowired
private AuthenticationUtils AuthenticationUtils;
final RfidChangeLogService rfidChangeLogService;
final RfidChangeBillService rfidChangeBillService;
......
package com.tykj.dev.confirmcheck;
import com.github.wenhao.jpa.Specifications;
import com.google.common.collect.Lists;
import com.tykj.dev.device.confirmcheck.controller.DeviceCheckController;
import com.tykj.dev.device.confirmcheck.entity.vo.CheckBillVo;
import com.tykj.dev.union.MockTest;
import com.tykj.dev.device.confirmcheck.entity.vo.CheckDetailVo;
import com.tykj.dev.device.confirmcheck.entity.vo.DevLibVo;
import com.tykj.dev.device.confirmcheck.repository.DeviceCheckDetailDao;
import com.tykj.dev.device.confirmcheck.utils.ObjTransUtil;
import com.tykj.dev.device.task.repository.TaskDao;
import com.tykj.dev.device.task.subject.common.StatusEnum;
import com.tykj.dev.device.task.subject.domin.Task;
import com.tykj.dev.union.BaseTest;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;
import static com.tykj.dev.misc.utils.JacksonUtil.toJSon;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
......@@ -22,15 +35,21 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2020/9/15 at 11:17 上午
*/
@SuppressWarnings("ALL")
@WithMockUser(username = "shena", password = "qwer1234")
class DeviceCheckControllerTest extends MockTest {
@WithMockUser(username = "shena", password = "qwer1234", authorities = "省A专管员")
@AutoConfigureMockMvc
class DeviceCheckControllerTest extends BaseTest {
@Autowired
private DeviceCheckController checkController;
protected MockMvc mockMvc;
@Autowired
protected MockMvc mockMvc;
private DeviceCheckDetailDao detailRepo;
@Autowired
private TaskDao taskRepo;
@Autowired
private ObjTransUtil transUtil;
@Test
void startManualCheck() throws Exception {
......@@ -47,16 +66,78 @@ class DeviceCheckControllerTest extends MockTest {
// 测试
RequestBuilder request;
// 1、get查一下user列表,应该为空
request = get("/check/confirm/check/bill")
request = post("/check/confirm/check/bill")
.header("Origin", "*")
.contentType(MediaType.APPLICATION_JSON)
.content(toJSon(param));
mockMvc.perform(request)
.andExpect(status().isOk());
.andExpect(status().isOk())
.andDo(mvcResult1 -> System.out.println("[测试结果] 手动发起核查任务测试通过"));
// checkUserA 接口
Task initTask = taskRepo.findAll(Specifications.<Task>and()
.eq("billStatus", StatusEnum.CHECK_DETAIL_0.id)
.build())
.get(0);
Integer detailBillId = initTask.getBillId();
CheckDetailVo detailVoList = detailRepo.findById(detailBillId)
.map(transUtil::CheckDetailDo2Vo)
.orElse(null);
DevLibVo devLibVo = new DevLibVo(detailVoList.getDevInLibrary(), detailVoList.getDevNotInLibrary());
Map<String, String> paramMap = new HashMap<>();
paramMap.put("assignUserId", "2");
paramMap.put("checkResult", "\"检查结果无误\"");
String baseUrl = "/check/confirm/detail/";
String url_a = baseUrl + "A/" + detailBillId;
StringJoiner joiner = new StringJoiner("&", "?", "");
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
joiner.add(k + "=" + v);
}
url_a += joiner.toString();
System.out.println("url is " + url_a);
request = put(url_a)
.header("Origin", "*")
.contentType(MediaType.APPLICATION_JSON)
.content(toJSon(devLibVo));
mockMvc.perform(request)
.andExpect(status().isOk())
.andDo(s -> System.out.println(
String.format("[测试结果] 对任务id=%d的任务执行岗位A详情审核操作成功,审核的详情表id为%d",
initTask.getId(),
initTask.getBillId())));
// checkUserB 接口 测试审核通过
String url_b = baseUrl + "B/" + detailBillId + "?" + "checkStatus=1";
request = put(url_b)
.header("Origin", "*");
mockMvc.perform(request)
.andExpect(status().isOk())
.andDo(s -> System.out.println(
String.format("[测试结果] 对任务id=%d的任务执行岗位B详情审核操作成功,审核的详情表id为%d",
initTask.getId(),
initTask.getBillId())));
// checkUserC - C 接口 测试审核通过
String url_c = baseUrl + "C/" + detailBillId + "?" + "pass=1";
}
@Test
void checkUserA() {
//从
}
@Test
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论