diff --git a/adc-da-activiti/src/main/java/com/adc/da/FeignClient/FeignConfig.java b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/FeignConfig.java new file mode 100644 index 00000000..2d309a31 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/FeignConfig.java @@ -0,0 +1,32 @@ +package com.adc.da.FeignClient; + +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年10月11日 13:33 + */ + +/** + * Feign配置 + * 使用FeignClient进行服务间调用,传递headers信息 + */ +@Configuration +public class FeignConfig implements RequestInterceptor { + @Override + public void apply(RequestTemplate requestTemplate) { + ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + //添加token + requestTemplate.header("token", request.getHeader("token")); + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java index 343b921d..70d5403e 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java +++ b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java @@ -17,6 +17,12 @@ import java.util.Set; //@FeignClient(value = "shan6") public interface workFlowFeignClient { + @RequestMapping(value = "/bat-wkflow/oaTaskExec/execTask",method = RequestMethod.GET) + Map execTask(@RequestParam("todoId") String todoId); + + @RequestMapping(value = "/bat-wkflow/task/get_verify_by_instance",method = RequestMethod.GET) + Map get_verify_by_instance(@RequestParam("taskId") String taskId, @RequestParam("pId") String pId); + @RequestMapping(value = "/bat-wkflow/activiti_define_start_user",method = RequestMethod.GET) Wrapper activiti_define_start(@RequestParam("id") String id, @RequestParam("userId") String userId, @RequestParam("bpnId") String bpnId); diff --git a/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java b/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java index 2b40fb5e..6942a7c7 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java +++ b/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java @@ -25,6 +25,16 @@ public class workFlowFeignClientImpl { @Autowired private IUserEOService userEOService; + public Map execTask(@RequestParam("todoId") String todoId){ + Map stringWrapper = workFlowFeignClient.execTask(todoId); + return stringWrapper; + } + + public Map get_verify_by_instance(@RequestParam("taskId") String taskId, @RequestParam("pId") String pId){ + Map stringWrapper = workFlowFeignClient.get_verify_by_instance(taskId,pId); + return stringWrapper; + } + public ResponseMessage activiti_define_start(@RequestParam("Id") String Id, @RequestParam("userId") String userId, @RequestParam("bpnId") String bpnId){ Wrapper stringWrapper = workFlowFeignClient.activiti_define_start(Id,userId,bpnId); return Result.success(stringWrapper.getResult()); diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java b/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java index b0a3a035..03303efc 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java +++ b/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java @@ -44,5 +44,7 @@ public class BusProcessNew { private String finishFlag; + private long commitStatus; + } diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java index 34216ab8..d0efa9b9 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java @@ -35,10 +35,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; @RestController @RequestMapping("/${restPath}/lawss/activiti") @@ -51,6 +49,18 @@ public class WorkFlowController { // @Autowired // private ExportExcelMapper exportExcelMapper; + @ApiOperation(value = "干活流程接收待办") + @GetMapping("/execTask") + public Map execTask(@RequestParam("todoId") String todoId){ + return workFlowFeignClient.execTask(todoId); + } + + @ApiOperation(value = "流程实例明细验证是否完成") + @GetMapping("/get_verify_by_instance") + public Map activiti_define_start1(@RequestParam("taskId") String taskId, @RequestParam("pId") String pId){ + return workFlowFeignClient.get_verify_by_instance(taskId,pId); + } + @ApiOperation(value = "导出excel") @PostMapping("/export_excel") public void exportExcel(@RequestBody ExportExcelEO exportExcelEO, HttpServletResponse response, HttpServletRequest request) throws IOException { @@ -62,8 +72,11 @@ public class WorkFlowController { if(exportExcelEO.getFileName()==null||exportExcelEO.getFileName().trim().length()==0){ exportExcelEO.setFileName(UUID.fastUUID().toString(true)); } + List> dataList = exportExcelEO.getDataList().stream() + .sorted(Comparator.comparing(a -> String.valueOf(a.get("chapterNumber").toString()))) + .collect(Collectors.toList()); - Workbook excel = TableToExcel.createExcel(exportExcelEO.getColumnName(), exportExcelEO.getDataList(), null, exportExcelEO.getFileName()); + Workbook excel = TableToExcel.createExcel(exportExcelEO.getColumnName(), dataList, null, exportExcelEO.getFileName()); response.reset(); diff --git a/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java b/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java index e4a0eff3..d913fab8 100644 --- a/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java +++ b/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java @@ -3,6 +3,7 @@ package com.adc.da.http; public enum ResponseMessageCodeEnum { SUCCESS("0"), ERROR("-1"), + ERROR_TOKEN("LE505"), VALID_ERROR("1000"), SAVE_SUCCESS("r0001"), UPDATE_SUCCESS("r0002"), diff --git a/adc-da-convert/pom.xml b/adc-da-convert/pom.xml index f2b4d1ef..3394f4a2 100644 --- a/adc-da-convert/pom.xml +++ b/adc-da-convert/pom.xml @@ -27,7 +27,9 @@ com.artofsolving jodconverter - 2.2.1 + system + 2.2.2 + ${basedir}/src/main/lib/jodconverter-2.2.2.jar org.jodconverter diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java new file mode 100644 index 00000000..93006848 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java @@ -0,0 +1,31 @@ +package com.adc.da.login.exception; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * 全局异常处理 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

+ * Created at 2020/8/6 5:03 下午 + */ +@RestControllerAdvice +public class SysRuntimeExceptionHandler { + + @ExceptionHandler(TokenRuntimeException.class) + public ResponseMessage tokenRuntimeException(TokenRuntimeException e) { + e.printStackTrace(); + return Result.error(e.getCode(), e.getMsg()); + } + + @ExceptionHandler(Exception.class) + public ResponseMessage handlerException(Exception e){ + e.printStackTrace(); + return Result.error(); + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java new file mode 100644 index 00000000..71be3519 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java @@ -0,0 +1,24 @@ +package com.adc.da.login.exception; + +import lombok.Data; + +/** + * 自定义 token 异常 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

+ * Created at 2020/8/6 4:58 下午 + */ +@Data +public class TokenRuntimeException extends RuntimeException{ + + private String code = "401"; + private String msg; + + public TokenRuntimeException(String msg) { + super(msg); + } + +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java index 589c05a9..965a977c 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java @@ -3,14 +3,11 @@ package com.adc.da.login.rest; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; -import com.adc.da.login.util.JWTUtil; -import com.adc.da.login.util.UserUtils; -import com.adc.da.login.vo.LoginVO; -import com.adc.da.sys.entity.MenuEO; +import com.adc.da.login.exception.TokenRuntimeException; +import com.adc.da.login.util.IDMUtil; +import com.adc.da.login.util.JwtUtils; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.IUserEOService; -import com.adc.da.sys.vo.UserVO; -import com.adc.da.util.Encodes; import com.adc.da.util.PasswordUtils; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; @@ -18,20 +15,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; import sun.misc.BASE64Encoder; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.Map; @Validated @@ -43,84 +40,10 @@ public class LoginRestController { @Autowired private IUserEOService userService; - - - /** - * 读取配置文件判断是否需要开启Base64加密,默认值为false - */ - @Value("${isPassEncrypted:false}") - private boolean isPassEncrypted; - - /** - * 无缓存,用于校验 - */ - private static final String NO_CACHE = "no-cache"; - - /** - * 登录失败Map字段 - */ - private static final String LOGIN_FAIL_MAP = "loginFailMap"; - - /** - * 验证码 - */ - private static final Object VERIFY_CODE = "VerifyCode"; - - /** - * 10分钟内最大错误次数 - */ - @Value("${maxLoginErrorCount:3}") - private int maxLoginErrorCount; - - - /** - * 读取验证码模式配置, - * 1为不开启,2为开启,3为三次输错用户名或密码才开启, - * 默认为1 - *

- * 若配置文件缺少该参数,将设置为1 - */ - @Value("${verifyCodeMode:1}") - private int verifyCodeMode; - - -// @ApiOperation(value = "登录") -// @PostMapping(value = "/login") -// @ResponseBody -// public ResponseMessage loginWithVerifyCode(HttpServletResponse response, @RequestBody LoginVO loginVO) { -// String username = loginVO.getUsername(); -// String password = loginVO.getPassword(); -// String key = loginVO.getKey(); -// -// if (StringUtils.isBlank(username)) { -// return Result.error("r0014", "登录名不能为空"); -// } -// if (StringUtils.isBlank(password)) { -// return Result.error("r0016", "密码不能为空"); -// } -// if (StringUtils.isBlank(key)) { -// return Result.error("key不能为空"); -// } -// -// -// -// UserEO userEO = userService.getUserByLoginNameNotDeleted(username); -// if (null == userEO) { -// log.info("用户[{}]身份验证失败", username); -// return Result.error("r0011", "您输入的帐号或密码有误"); -// } -// if (PasswordUtils.validatePassword(password, userEO.getPassword())) { -// String token = JWTUtil.sign(username, userEO.getPassword(), userEO.getUsid()); -// response.setHeader("Authorization", token); -// response.addHeader("Access-Control-Allow-Headers", "Authorization"); -// return Result.success(token); -// } else { -// log.info("用户[{}]密码验证失败", username); -// return Result.error("r0011", "您输入的帐号或密码有误"); -// } -// } - - + @Autowired + private IDMUtil idmUtil; + @Autowired + private JwtUtils jwtUtils; @ApiOperation(value = "登录") // @GetMapping(value = "/login") @@ -140,11 +63,10 @@ public class LoginRestController { return Result.error("r0011", "您输入的帐号已禁用"); } if (PasswordUtils.validatePassword(password, userEO.getPassword())) { - String token = JWTUtil.sign(username, userEO.getUsid(),userEO.getPassword()); - response.setHeader("Authorization", token); - response.addHeader("Access-Control-Allow-Headers", "Authorization"); + String token = jwtUtils.generateToken(userEO.getUsid()); // 加密重要信息 BASE64Encoder encoder = new BASE64Encoder(); + userEO.setToken(token); String userStr = JSON.toJSONString(userEO); String userStr2 = URLEncoder.encode(userStr,"UTF-8"); userStr = encoder.encode(userStr2.getBytes()); @@ -156,69 +78,50 @@ public class LoginRestController { } - - - /** - * 退出登录,客户端把Token丢弃就可以 - */ - @ApiOperation(value = "退出登录") - @GetMapping("/logout") + @ApiOperation(value = "登录") + @PostMapping(value = "/loginIdm") @ResponseBody - public ResponseMessage logout(HttpServletResponse response,String ticket) { - UserUtils.logout(); - return Result.success(); - } - - @ApiOperation(value = "未授权访问") - @RequestMapping(path = "/401") - @ResponseBody - public ResponseMessage unauthorized() { - return Result.error("401", "Unauthorized"); - } - - /** - * 登录成功之后获取当前登录用户信息的接口 - */ - @ApiOperation(value = "获取登录用户信息") - @GetMapping("/userInfo") - @ResponseBody - public ResponseMessage userInfo(HttpServletResponse response) throws NumberFormatException { - UserEO user = UserUtils.getUser(); - if (user != null) { - return Result.success(user); + public ResponseMessage loginRest(String code) throws UnsupportedEncodingException { + String account = idmUtil.idmLogin(code); + if(StringUtils.isBlank(account)){ + return Result.error("r0011", "用户不存在"); } - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return Result.error(); + /** + * TODO OA 用户不全 待同步 + */ + UserEO userEO = userService.getUserByLoginNameNotDeleted(account); + if (null == userEO) { + return Result.error("r0011", "用户不存在"); + } + if(userEO.getDisableFlag()==1){ + return Result.error("r0011", "帐号已禁用"); + } + String token = jwtUtils.generateToken(account); + userEO.setToken(token); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + return Result.success(userStr); } - /** - * 获取用户菜单,已用菜单管理实现 - */ - @ApiOperation(value = "获取登录用户菜单权限") - @GetMapping("/userMenu") - @ResponseBody - public ResponseMessage> userMenu(){ - return Result.success(UserUtils.getMenuList()); + @ApiOperation(value = "登出") + @PostMapping(value = "/logout") + public void logout(HttpServletRequest request, HttpServletResponse response){ + Cookie[] cookies = request.getCookies(); + try { + for(int i=0;i < cookies.length;i++) { + Cookie cookie = new Cookie(cookies[i].getName(), null); + cookie.setMaxAge(0); + cookie.setPath("testsso1.foton.com.cn");//根据你创建cookie的路径进行填写 + response.addCookie(cookie); + } + }catch(Exception ex) { + System.out.println("清空Cookies发生异常!"); + + } } - /** - * 修改当前登录用户密码 - */ - @ApiOperation(value = "修改密码") - @PutMapping("/updatePassword") - @ResponseBody - public ResponseMessage updatePassword(@NotNull(message = "请输入旧密码") @RequestParam String oldPassword, - @NotNull(message = "请输入新密码") @RequestParam String newPassword) { - // 前台如果base64传输密文,则需要解码 - if (isPassEncrypted) { - oldPassword = new String(Encodes.decodeBase64(oldPassword), StandardCharsets.UTF_8); - newPassword = new String(Encodes.decodeBase64(newPassword), StandardCharsets.UTF_8); - } - if (!newPassword.matches("^(?![0-9]*$)[a-zA-Z0-9]{6,10}$")) { - return Result.error("r0018", "新密码必须6-10位且不能纯数字"); - } - userService.updatePassword(UserUtils.getUserId(), oldPassword, newPassword); - return Result.success(); - } } diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTFilter.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTFilter.java deleted file mode 100644 index 03366e66..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTFilter.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.adc.da.login.security; - -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.subject.Subject; -import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * JWT过滤器,针对请求进行拦截过滤 - */ -@Slf4j -public class JWTFilter extends BasicHttpAuthenticationFilter { - //10分钟后刷新token - private static final int tokenRefreshInterval = 60 * 10; - - /** - * 这里我们详细说明下为什么最终返回的都是true,即允许访问 - *例如我们提供一个地址 GET /article - *登入用户和游客看到的内容是不同的 - *如果在这里返回了false,请求会被直接拦截,用户看不到任何东西 - *所以我们在这里返回true,Controller中可以通过 subject.isAuthenticated() 来判断用户是否登入 - *如果有些资源只有登入用户才能访问,我们只需要在方法上面加上 @RequiresAuthentication 注解即可 - *但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们重写了官方的方法),但实际上对应用影响不大 - */ - @Override - protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { - if (isLoginAttempt(request, response)) { - try { - return executeLogin(request, response); - } catch (Exception e) { - responseError(request, response); - return false; - } - }else{ - return false; - } - - } - - - /** - * 检测header里面是否包含Authorization字段 - * @param request - * @param response - * @return - */ - @Override - protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) { - HttpServletRequest req = (HttpServletRequest) request; - String authorization = req.getHeader("Authorization"); - log.debug("判断用户是否想要登录:{}",authorization); - return authorization != null; - } - - - /** - * 认证失败后调用的方法 - * @param request - * @param response - * @return - * @throws Exception - */ - @Override - protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { - this.responseError(request,response); - return false; - } - - @Override - protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception{ - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String authorization = httpServletRequest.getHeader("Authorization"); - log.debug("用户开始认证x:{}",authorization); - JWTToken token = new JWTToken(authorization); - // 提交给realm进行登入,如果错误他会抛出异常并被捕获 - getSubject(request, response).login(token); - // 如果没有抛出异常则代表登入成功,返回true - return true; - } - - @Override - protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, ServletResponse response) throws Exception { - if(token instanceof JWTToken){ - JWTToken jwtToken= (JWTToken) token; - //TODO 此处需要设置token自动续期功能 - } - - return true; - } - - @Override - protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin")); - httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE"); - httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers")); - httpServletResponse.addHeader("Access-Control-Allow-Headers", "Authorization"); - // 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态 - if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) { - httpServletResponse.setStatus(HttpStatus.OK.value()); - return false; - } - return super.preHandle(request, response); - } - - /** - * 将非法请求跳转到 /401 - */ - private void responseError(ServletRequest req, ServletResponse resp) { - try { - HttpServletResponse httpServletResponse = (HttpServletResponse) resp; - if(httpServletResponse.isCommitted()){ - return; - } - //此处需要返回统一的错误对象 以便应对统一的异常处理 - JSONObject result=new JSONObject(); - result.put("respCode","A404"); - result.put("ok",false); - result.put("message","认证失败"); - result.put("data",null); - httpServletResponse.setHeader("Content-Type", "application/json"); - httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true"); - httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET, POST"); - httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); - httpServletResponse.setHeader("Access-Control-Max-Age", "3600"); - // response.setHeader("Content-type", "application/json;charset=UTF-8"); - httpServletResponse.setStatus(HttpServletResponse.SC_OK); - httpServletResponse.setContentType("application/json;charset=UTF-8"); - httpServletResponse.setCharacterEncoding("UTF-8"); - PrintWriter printWriter = httpServletResponse.getWriter(); - printWriter.append(result.toString(SerializerFeature.WriteMapNullValue)); - printWriter.flush(); -// httpServletResponse.sendRedirect("/401"); - } catch (IOException e) { - log.error(e.getMessage()); - } - } - - - private boolean shouldTokenRefresh(JWTToken jwtToken) { -// LocalDateTime issueTime = LocalDateTime.ofInstant(issueAt.toInstant(), ZoneId.systemDefault()); -// return LocalDateTime.now().minusSeconds(tokenRefreshInterval).isAfter(issueTime); - return true; - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTRealm.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTRealm.java deleted file mode 100644 index 529af2b5..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTRealm.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.adc.da.login.security; - -import com.adc.da.login.util.JWTUtil; -import com.adc.da.login.util.UserUtils; -import com.adc.da.sys.entity.UserEO; -import com.adc.da.sys.service.IUserEOService; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.authc.AuthenticationInfo; -import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.authc.SimpleAuthenticationInfo; -import org.apache.shiro.authz.AuthorizationInfo; -import org.apache.shiro.authz.SimpleAuthorizationInfo; -import org.apache.shiro.realm.AuthorizingRealm; -import org.apache.shiro.subject.PrincipalCollection; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.Serializable; -import java.util.*; - -@Service -public class JWTRealm extends AuthorizingRealm { - - private static final Logger logger = LoggerFactory.getLogger(JWTRealm.class); - - private IUserEOService userEOService; - - /** - * JWT签名密钥 - */ - public static final String SECRET = "AyX3TWpHIkPfE9rqaDiYV416d0nguURLQ8vhNzBlK7MGcOJjmoZ2w5stSeCFxb16"; - - @Autowired - public void setUserEOService(IUserEOService userEOService) { - this.userEOService = userEOService; - } - - /** - * 必须重写此方法,不然Shiro会报错 - */ - @Override - public boolean supports(AuthenticationToken token) { - return token instanceof JWTToken; - } - - - - /** - * 此方法调用hasRole,hasPermission的时候才会进行回调. - *

- * 权限信息.(授权): - * 1、如果用户正常退出,缓存自动清空; - * 2、如果用户非正常退出,缓存自动清空; - * 3、如果我们修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。 - * (需要手动编程进行实现;放在service进行调用) - * 在权限修改后调用realm中的方法,realm已经由spring管理,所以从spring中获取realm实例,调用clearCached方法; - * :Authorization 是授权访问控制,用于对用户进行的操作授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。 - * - * @param principalCollection - * @return - */ - @Override - protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { - String username = JWTUtil.getUsername(principalCollection.toString()); - if (username == null) { - return null; - } - UserEO user = userEOService.getUserByLoginNameNotDeleted(username); - if (user != null) { - try { - return UserUtils.getAuthInfo(); - } catch (NumberFormatException e) { - logger.error("AuthorizationInfo NumberFormatException", e); - } catch (Exception e) { - logger.error("AuthorizationInfo Exception", e); - } - } - return null; - } - - /** - * 认证信息(身份验证) - * Authentication 是用来验证用户身份 - * - * @param authenticationToken - * @return - * @throws AuthenticationException - */ - @Override - protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { - String token = (String) authenticationToken.getCredentials(); - // 解密获得username,用于和数据库进行对比 - String username = JWTUtil.getUsername(token); - if (username == null) { - throw new AuthenticationException("token 无效!"); - } - - UserEO user = userEOService.getUserByLoginNameNotDeleted(username); - if (user == null) { - throw new AuthenticationException("用户"+username+"不存在") ; - } - - if (!JWTUtil.verify(token, username,user.getUsid(),user.getPassword())) { - throw new AuthenticationException("账户密码错误!"); - } - return new SimpleAuthenticationInfo(token, token, "jwtRealm"); - } - - /** - * 授权用户信息 - */ - public static class Principal implements Serializable { - - private static final long serialVersionUID = 1L; - - private String id; - - private String loginName; - - private transient Map cacheMap; - - public Principal(UserEO user) { - this.id = user.getUsid() == null ? "" : String.valueOf(user.getUsid()); - this.loginName = user.getAccount(); - } - - public String getId() { - return id; - } - - public String getLoginName() { - return loginName; - } - - public Map getCacheMap() { - if (cacheMap == null) { - cacheMap = new HashMap<>(); - } - return cacheMap; - } - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTToken.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTToken.java deleted file mode 100644 index 6d857613..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTToken.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.adc.da.login.security; - -import org.apache.shiro.authc.AuthenticationToken; - -/** - * JWT认证token实体对象 - */ -public class JWTToken implements AuthenticationToken { - - - private static final long serialVersionUID = 613047528940906064L; - // 秘钥 - private String token; - - public JWTToken(String token) { - this.token = token; - } - - @Override - public Object getPrincipal() { - return getToken(); - } - - @Override - public Object getCredentials() { - return getToken(); - } - - public String getToken() { - return token; - } -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/TokenInterceptor.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/TokenInterceptor.java new file mode 100644 index 00000000..35f48538 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/TokenInterceptor.java @@ -0,0 +1,80 @@ +package com.adc.da.login.security; + +import com.adc.da.login.exception.TokenRuntimeException; +import com.adc.da.login.util.JwtUtils; +import io.jsonwebtoken.Claims; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Date; + +/** + * 创建一个 token 拦截器. + * 需要继承 HandlerInterceptorAdapter,并且声明为spring的组件 + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

+ * Created at 2020/7/30 2:19 下午 + */ +@Component +@Slf4j +public class TokenInterceptor extends HandlerInterceptorAdapter { + + // 注入jwt工具类 + @Autowired + private JwtUtils jwtUtils; + + // 重写 前置拦截方法 + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + // 1、从请求头中获取token + String token = request.getHeader("token"); + + // 2、判断 token 是否存在 + if (token == null ||"".equals(token)) { + log.error("未登录"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("未登录"); + } + + // 3、解析token + Claims claim = jwtUtils.getClaimsByToken(token); + + if (null == claim) { + System.out.println("token 解析错误"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("token解析错误"); + } + + // 4、判断 token 是否过期 + Date expiration = claim.getExpiration(); + boolean tokenExpired = jwtUtils.isTokenExpired(expiration); + if (tokenExpired) { + System.out.println("token已过期,请重新登录"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("token已过期"); + } + + // 5、 从 token 中获取员工信息 + String subject = claim.getSubject(); + + // 6、去数据库中匹配 id 是否存在 (这里直接写死了) + if (null == subject ) { + System.out.println("员工不存在"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("员工不存在"); + } + + // 7、成功后 设置想设置的属性,比如员工姓名 + request.setAttribute("userId", subject); + request.setAttribute("userName", "张三"); + + return true; + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java new file mode 100644 index 00000000..9e64bac4 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java @@ -0,0 +1,79 @@ +package com.adc.da.login.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + @Autowired + private TokenInterceptor interceptor; + + @Bean + public TokenInterceptor getSecurityInterceptor() { + return new TokenInterceptor(); + } + + /** + * 重写添加拦截器 + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor()); + + addInterceptor.excludePathPatterns("/api/loginIdm"); + /** + * TODO 测试流程 开放 login 接口 正式环境 关闭 + */ + addInterceptor.excludePathPatterns("/api/login"); + addInterceptor.excludePathPatterns("/v2/api-docs"); + addInterceptor.excludePathPatterns("/webjars/**"); + addInterceptor.excludePathPatterns("/swagger-resources/**"); + addInterceptor.excludePathPatterns("/swagger-ui.html"); + addInterceptor.excludePathPatterns("/doc.html"); + addInterceptor.excludePathPatterns("/api/lawss/activiti/get_verify_by_instance"); + addInterceptor.excludePathPatterns("/api/sys/user/getById"); + addInterceptor.excludePathPatterns("/api/person/userInfo/getByUserInfoCode"); + addInterceptor.excludePathPatterns("/api/att/attFile/upload"); + addInterceptor.excludePathPatterns("/api/sarStandardsInfo/sar-standards-info/exportStandardsInfoExcel"); + //pcms项目数据下发开放接口 + addInterceptor.excludePathPatterns("/api/sarStandProjectLibrary/save"); + addInterceptor.excludePathPatterns("/api/sar-stand-project-team/save"); + //tc模块结构单元数据 + addInterceptor.excludePathPatterns("/api/sarModelTree/save"); + //同步用户数据 + addInterceptor.excludePathPatterns("/api/DataSync/importUserData"); + //同步组织机构数据 + addInterceptor.excludePathPatterns("/api/DataSync/importOrgData"); + //从excl中导入标准 + addInterceptor.excludePathPatterns("/api/ImportExcel/import"); + + //标准征求意见导出 + addInterceptor.excludePathPatterns("/api/slrs/sar-public-idea-all/tuallStand"); + //标准法规清单导出 + addInterceptor.excludePathPatterns("/api/sarLawsAttrDetailedList/sar-laws-attr-detailed-list/ExportLawsById"); + //标准法规清单车型导出 + addInterceptor.excludePathPatterns("/api/sarStandProjectLibrary/exportStandAttrInfoExcel"); + //为符合项整改导出 + addInterceptor.excludePathPatterns("/api/sarStandUnqualified/sar-stand-unqualified/exportStandUnqulifiedExcel"); + //文件预览 + addInterceptor.excludePathPatterns("/api/att/attFile/getFileInfo"); + //附件下载 + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFileForSar"); + //水印下载 + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFileForSarWaterMark"); + +// //测试接口使用 +// addInterceptor.excludePathPatterns("/api/**"); + + + + + // 添加自定义拦截器,并拦截对应 url + addInterceptor.addPathPatterns("/**"); + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/CacheUtils.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/CacheUtils.java deleted file mode 100644 index a855ef5b..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/CacheUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.adc.da.login.util; - -import com.adc.da.util.SpringContextHolder1; -import net.sf.ehcache.Cache; -import net.sf.ehcache.CacheManager; -import net.sf.ehcache.Element; - -/** - * Cache工具类 - */ -public class CacheUtils { - - private CacheUtils() { - super(); - } - - private static CacheManager cacheManager = (CacheManager) SpringContextHolder1.getBean("ehCacheManagerFactoryBean"); - - private static final String SYS_CACHE = "sysCache"; - - private static final String ERROR_CACHE = "errorCache"; - - public static Object get(String key) { - return get(SYS_CACHE, key); - } - - public static void put(String key, Object value) { - put(SYS_CACHE, key, value); - } - - public static void remove(String key) { - remove(SYS_CACHE, key); - } - - //配合main模块下resource/cache/ehcache-local.xml - // - public static Object getErrorCache(String key) { - return get(ERROR_CACHE, key); - } - - public static void putErrorCache(String key, Object value) { - put(ERROR_CACHE, key, value); - } - - public static void removeErrorCache(String key) { - remove(ERROR_CACHE, key); - } - - - - public static Object get(String cacheName, String key) { - Element element = getCache(cacheName).get(key); - return element == null ? null : element.getObjectValue(); - } - - public static void put(String cacheName, String key, Object value) { - Element element = new Element(key, value); - getCache(cacheName).put(element); - } - - public static void remove(String cacheName, String key) { - getCache(cacheName).remove(key); - } - - /** - * 获得一个Cache,没有则创建一个。 - * @param cacheName - * @return - */ - private static Cache getCache(String cacheName) { - Cache cache = cacheManager.getCache(cacheName); - if (cache == null) { - cacheManager.addCache(cacheName); - cache = cacheManager.getCache(cacheName); - cache.getCacheConfiguration().setEternal(true); - } - return cache; - } - - public static CacheManager getCacheManager() { - return cacheManager; - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IDMUtil.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IDMUtil.java new file mode 100644 index 00000000..735c958b --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IDMUtil.java @@ -0,0 +1,73 @@ +package com.adc.da.login.util; + +import com.adc.da.ocr.util.OkHttpUtil; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +@Slf4j +public class IDMUtil { + + @Autowired + private OkHttpUtil okHttpUtil; + + private final String app_key = "app_slrs"; + private final String app_secret = "Fxi5LHbI5yGbQQDpVp86GcCdXeC5Bjfe"; + private final String access_url = "http://sso.foton.com.cn/oauth2.0/accessTokenByJson"; + private final String profile_ur = "http://sso.foton.com.cn/oauth2.0/profileByJson"; + private final String redirect_url = "https://slrs.foton.com.cn"; + + public String idmLogin(String code){ + try{ + String access_token = ""; + Map param = new HashMap<>(); + param.put("client_id",app_key); + param.put("client_secret",app_secret); + param.put("grant_type","authorization_code"); + param.put("redirect_uri",redirect_url); + param.put("code",code); + String access_token_str = okHttpUtil.post(access_url,param,new HashMap<>()); + JSONObject atJsonObj = JSONObject.fromObject(access_token_str); + System.out.println("AccessTokenJSON:" + atJsonObj); + if (atJsonObj.has("status")) { + System.out.println("AccessTokenStatus:" + atJsonObj.get("status")); + if ("true".equals(atJsonObj.get("status").toString())) { + if (atJsonObj.has("access_token")) { + access_token = atJsonObj.get("access_token").toString(); + } + } + } + if(StringUtils.isBlank(access_token)){ + return ""; + } + Map param_p = new HashMap<>(); + param_p.put("access_token",access_token.substring(13)); + String principal_json = okHttpUtil.post(profile_ur,param_p,new HashMap<>()); + JSONObject pfjsonObj = JSONObject.fromObject(principal_json); + if (pfjsonObj.has("status")) { + System.out.println("ProfileStatus:" + pfjsonObj.get("status")); + if ("true".equals(pfjsonObj.get("status").toString())) { + if (pfjsonObj.has("id")) { + System.out.println("ID:" + pfjsonObj.get("id")); + } + if (pfjsonObj.has("attributes")) { + JSONObject attrObj = JSONObject.fromObject(pfjsonObj.get("attributes")); + if (attrObj.has("userid")) { + return attrObj.get("userid").toString(); + } + } + } + } + }catch(Exception e){ + log.error("单点登录获取用户信息失败"); + e.printStackTrace(); + } + return ""; + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JWTUtil.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JWTUtil.java deleted file mode 100644 index 1cd681d0..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JWTUtil.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.adc.da.login.util; - -import com.auth0.jwt.JWT; -import com.auth0.jwt.JWTVerifier; -import com.auth0.jwt.algorithms.Algorithm; -import com.auth0.jwt.exceptions.JWTDecodeException; -import com.auth0.jwt.interfaces.DecodedJWT; -import org.springframework.beans.factory.annotation.Value; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.Date; - -public class JWTUtil { - - // 设置过期时间,默认为2小时 - private static long EXPIRE_TIME = 120; - - @Value("${EXPIRE_TIME}") - public void setEnv(long expireTime) { - setExpireTime(expireTime); - } - - public static synchronized void setExpireTime(long expireTime) { - EXPIRE_TIME = expireTime; - } - - public static boolean verify(String token, String username,String userId, String secret) { - try { - Algorithm algorithm = Algorithm.HMAC512(secret); - JWTVerifier verifier = JWT.require(algorithm) - .withClaim("username", username).withClaim("userid", userId) - .build(); - verifier.verify(token); - return true; - } catch (Exception e) { - return false; - } - } - /** - * @Title: getUsername - * @Description: 获取token中的信息无需secret解密也能获得 - * @Author 刘仁 - * @DateTime 2019年4月1日 下午4:42:39 - * @param token - * @return - */ - public static String getUsername(String token) { - try { - DecodedJWT jwt = JWT.decode(token); - return jwt.getClaim("username").asString(); - } catch (JWTDecodeException e) { - return null; - } - } - - public static String getUserId(String token){ - try { - DecodedJWT jwt = JWT.decode(token); - return jwt.getClaim("userid").asString(); - } catch (JWTDecodeException e) { - return null; - } - } - - public static String sign(String username,String userId, String secret) { - Date date = Date - .from(LocalDateTime.now().plusMinutes(EXPIRE_TIME).atZone(ZoneId.systemDefault()).toInstant()); - Algorithm algorithm = Algorithm.HMAC512(secret); - String sign = JWT.create() - .withClaim("username", username).withClaim("userid", userId) - .withExpiresAt(date) - .sign(algorithm); - - // 附带username信息 - return sign; - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JwtUtils.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JwtUtils.java new file mode 100644 index 00000000..0296dd12 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JwtUtils.java @@ -0,0 +1,102 @@ +package com.adc.da.login.util; + +import com.adc.da.att.entity.TsUser; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.IUserEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * token 工具类 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

+ * Created at 2020/7/30 2:23 下午 + */ +@Component +public class JwtUtils { + + // 过期时间 + private static long expire = 6048000; + // 秘钥 + private static String secret = "HSyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"; + + @Autowired + private IUserEOService userService; + + /** + * 创建一个token + * + * @param userId + * @return + */ + public String generateToken(String userId) { + Date now = new Date(); + Date expireDate = new Date(now.getTime() + expire); + return Jwts.builder().setHeaderParam("type", "JWT").setSubject(userId).setIssuedAt(now) + .setExpiration(expireDate).signWith( + SignatureAlgorithm.HS512, secret).compact(); + } + + /** + * 解析token + */ + public Claims getClaimsByToken(String token) { + Claims claims; + try { + claims = Jwts.parser() + .setSigningKey(secret) // 设置标识名 + .parseClaimsJws(token) //解析token + .getBody(); + } catch (ExpiredJwtException e) { + claims = e.getClaims(); + } + return claims; + } + + public String getUserIdByToken(){ + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + String user = ""; + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + Claims claim = getClaimsByToken(request.getHeader("token")); + user = claim.getSubject(); + } + return user; + } + + public UserEO getUserByToken(){ + UserEO userEO = new UserEO(); + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + //添加token + Claims claim = getClaimsByToken(request.getHeader("token")); + String subject = claim.getSubject(); + List userEOS = userService.getUser(subject); + userEO = userEOS.get(0); + } + return userEO; + } + + /** + * 判断 token 是否过期 + */ + public boolean isTokenExpired(Date expiration){ + return expiration.before(new Date()); + } + +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java index 0a8b15db..dec6b6fb 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java @@ -1,8 +1,6 @@ package com.adc.da.login.util; import cn.hutool.core.util.ObjectUtil; -import com.adc.da.login.security.JWTRealm; -import com.adc.da.login.security.JWTRealm.Principal; import com.adc.da.sys.entity.MenuEO; import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; @@ -12,15 +10,14 @@ import com.adc.da.sys.service.IUserEOService; import com.adc.da.util.SpringContextHolder1; import com.google.common.collect.Maps; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.UnavailableSecurityManagerException; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.session.InvalidSessionException; -import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import java.util.List; import java.util.Map; @@ -50,6 +47,11 @@ public class UserUtils { public static final String CACHE_AREA_LIST = "areaList"; public static final String CACHE_OFFICE_LIST = "officeList"; + /** + * @see JwtUtils + */ + private static JwtUtils jwtUtils = SpringContextHolder1.getBean(JwtUtils.class); + /** * @see IUserEOService */ @@ -82,11 +84,11 @@ public class UserUtils { * 获取当前登录用户名 */ public static String getUserName() { -// JWTRealm.Principal principal = (Principal) SecurityUtils.getSubject().getPrincipal(); -// if (principal != null) { -// return principal.getLoginName(); -// } - return "admin"; + UserEO userEO = getUser(); + if (userEO != null) { + return userEO.getAccount(); + } + return null; } /** @@ -94,27 +96,25 @@ public class UserUtils { * @throws Exception */ public static String getUserId() { - UserEO userEO = getUser(); - if (userEO != null) { - return userEO.getUsid(); - } - return null; + return jwtUtils.getUserIdByToken(); } /** * 获取当前登录用户信息 */ public static UserEO getUser() { - UserEO user = (UserEO) CacheUtils.getCache(CURRENT_USER); + UserEO user = jwtUtils.getUserByToken(); if (user == null) { user = new UserEO(); - String userName = getUserName(); + String userId = getUserId(); - if (StringUtils.isNotEmpty(userName)) { - UserEO userInDb = userService.getUserByLoginNameNotDeleted(userName); - user = ObjectUtil.clone(userInDb); - user.setPassword(""); - CacheUtils.putCache(CURRENT_USER, user); + if (StringUtils.isNotEmpty(userId)) { + List userEOS = userService.getUser(userId); + if(!userEOS.isEmpty()){ + user = ObjectUtil.clone(userEOS.get(0)); + user.setPassword(""); + CacheUtils.putCache(CURRENT_USER, user); + } } } return user; @@ -218,15 +218,6 @@ public class UserUtils { public static Map getCacheMap() { Map map = Maps.newHashMap(); - try { - Subject subject = SecurityUtils.getSubject(); - JWTRealm.Principal principal = (JWTRealm.Principal) subject.getPrincipal(); - return principal != null ? principal.getCacheMap() : map; - } catch (UnavailableSecurityManagerException e) { - logger.error(e.getMessage(),e); - } catch (InvalidSessionException e) { - logger.error(e.getMessage(),e); - } return map; } } diff --git a/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java b/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java index 59b6ce91..d67d92c7 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java +++ b/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java @@ -4,6 +4,7 @@ import com.adc.da.exception.AdcDaBaseException; import com.adc.da.http.ResponseMessage; import com.adc.da.http.ResponseMessageCodeEnum; import com.adc.da.http.Result; +import com.adc.da.login.exception.TokenRuntimeException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; @@ -32,6 +33,11 @@ public class AdcDaBaseExceptionAdvice { public ResponseMessage handlerAdcDaBaseException(Exception exception) { log.error(exception.getMessage(), exception); // TODO 在数据库中记录程序异常,这个地方的异常是未处理的异常,需要管理员查看并进行处理以防重复出现 + if(exception.getStackTrace() != null){ + if(exception.getMessage().equals("token已过期")){ + return Result.error(ResponseMessageCodeEnum.ERROR_TOKEN.getCode(), "token已过期,请重新登录"); + } + } return Result.error(ResponseMessageCodeEnum.ERROR.getCode(), "程序异常,请重试。如果重复出现请联系管理员处理!"); } diff --git a/adc-da-main/src/main/java/com/adc/da/main/advice/ShiroExceptionAdvice.java b/adc-da-main/src/main/java/com/adc/da/main/advice/ShiroExceptionAdvice.java deleted file mode 100644 index 65bed1de..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/advice/ShiroExceptionAdvice.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.adc.da.main.advice; - -import com.adc.da.http.ResponseMessage; -import com.adc.da.http.Result; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.authc.IncorrectCredentialsException; -import org.apache.shiro.authc.UnknownAccountException; -import org.apache.shiro.authz.UnauthenticatedException; -import org.apache.shiro.authz.UnauthorizedException; -import org.springframework.core.annotation.Order; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; - -@Slf4j -@ControllerAdvice -@Order(value=2) -public class ShiroExceptionAdvice { - - - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler({AuthenticationException.class, UnknownAccountException.class, - UnauthenticatedException.class, IncorrectCredentialsException.class}) - @ResponseBody - public ResponseMessage unauthorized(Exception exception) { - log.warn(exception.getMessage(), exception); - log.info("catch UnknownAccountException"); - return Result.error("A404", "无权访问"); - } - - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler(UnauthorizedException.class) - @ResponseBody - public ResponseMessage unauthorized1(UnauthorizedException exception) { - log.warn(exception.getMessage(), exception); - return Result.error("A404","无权访问"); - } -} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/DefinitionUrlConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/DefinitionUrlConfig.java deleted file mode 100644 index 2f338bb1..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/config/DefinitionUrlConfig.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.adc.da.main.config; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * shiro 自定义URL规则设置 - */ -public class DefinitionUrlConfig { - - - - /** - * 匿名用户,无需登录 - */ - private static final String ANON = "anon"; - - - - // 拦截器 - //rest:比如/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。 - //port:比如/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。 - //perms:比如/admins/user/**=perms[user:add:*],perms参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,比如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。 - //roles:比如/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,比如/admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。//要实现or的效果看http://zgzty.blog.163.com/blog/static/83831226201302983358670/ - //anon:比如/admins/**=anon 没有参数,表示可以匿名使用。 - //authc:比如/admins/user/**=authc表示需要认证才能使用,没有参数 - //authcBasic:比如/admins/user/**=authcBasic没有参数表示httpBasic认证 - //ssl:比如/admins/user/**=ssl没有参数,表示安全的url请求,协议为https - //user:比如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查 - public static Map definitionUrlOptions(){ - Map filterRuleMap = new LinkedHashMap<>(); - //TODO 此处设置URL过滤规则 默认是全部请求进行拦截,此处设置为不拦截的URL地址 - filterRuleMap.put("/api/login",ANON);//登录接口 - // swagger接口文档 - filterRuleMap.put("/v2/api-docs", "anon"); - filterRuleMap.put("/webjars/**", "anon"); - filterRuleMap.put("/swagger-resources/**", "anon"); - filterRuleMap.put("/swagger-ui.html", "anon"); - filterRuleMap.put("/doc.html", "anon"); - return filterRuleMap; - } - - -} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfig.java deleted file mode 100644 index 4bfc489b..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfig.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.adc.da.main.config; - -import com.adc.da.login.security.JWTFilter; -import com.adc.da.login.security.JWTRealm; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.mgt.DefaultSecurityManager; -import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; -import org.apache.shiro.mgt.DefaultSubjectDAO; -import org.apache.shiro.spring.LifecycleBeanPostProcessor; -import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; -import org.apache.shiro.spring.web.ShiroFilterFactoryBean; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; -import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.annotation.Order; -import org.springframework.core.io.ClassPathResource; - -import javax.servlet.Filter; -import java.util.HashMap; -import java.util.Map; - -@Configuration -@Order(value=1) -public class ShiroConfig { - - private static final String JWT_FILTER_NAME = "jwt"; - - private static final String URL_SUFFIX="/api"; - - /** - * 自定义realm,实现登录授权流程 - * @return - */ - @Bean(name="jwtRealm") - public JWTRealm jwtRealm() { - return new JWTRealm(); - } - - /** - * 配置securityManager 管理subject(默认),并把自定义realm交由manager - */ - @Bean - public DefaultSecurityManager securityManager() { - DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); - // 设置realm. - securityManager.setRealm(jwtRealm()); - //注入缓存管理器 - securityManager.setCacheManager(ehCacheManager()); - /* - * 关闭shiro自带的session,详情见文档 - * http://shiro.apache.org/session-management.html#SessionManagement-StatelessApplications%28Sessionless%29 - */ - DefaultSubjectDAO defaultSubjectDAO = new DefaultSubjectDAO(); - DefaultSessionStorageEvaluator storageEvaluator = new DefaultSessionStorageEvaluator(); - storageEvaluator.setSessionStorageEnabled(false); - defaultSubjectDAO.setSessionStorageEvaluator(storageEvaluator); - securityManager.setSubjectDAO(defaultSubjectDAO); - - return securityManager; - } - - /** - * 拦截链 - */ - @Bean - public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultSecurityManager securityManager) { - ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); - shiroFilterFactoryBean.setSecurityManager(securityManager); - shiroFilterFactoryBean.setFilters(filterMap()); - shiroFilterFactoryBean.setFilterChainDefinitionMap(definitionMap()); - - return shiroFilterFactoryBean; - } - - /** - * 自定义拦截器,处理所有请求 - */ - private Map filterMap() { - Map filterMap = new HashMap<>(); - filterMap.put(JWT_FILTER_NAME, new JWTFilter()); - return filterMap; - } - - /** - * url拦截规则 - */ - private Map definitionMap() { - // 拦截器 - //rest:比如/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。 - //port:比如/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。 - //perms:比如/admins/user/**=perms[user:add:*],perms参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,比如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。 - //roles:比如/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,比如/admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。//要实现or的效果看http://zgzty.blog.163.com/blog/static/83831226201302983358670/ - //anon:比如/admins/**=anon 没有参数,表示可以匿名使用。 - //authc:比如/admins/user/**=authc表示需要认证才能使用,没有参数 - //authcBasic:比如/admins/user/**=authcBasic没有参数表示httpBasic认证 - //ssl:比如/admins/user/**=ssl没有参数,表示安全的url请求,协议为https - //user:比如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查 - Map definitionMap = DefinitionUrlConfig.definitionUrlOptions(); -// definitionMap.put(URL_SUFFIX+"/**", JWT_FILTER_NAME); - return definitionMap; - } - -/* *//** - * 开启注解 - *//* - @Bean - @DependsOn("lifecycleBeanPostProcessor") - public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { - DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); - // 强制使用cglib代理,防止和aop冲突 - defaultAdvisorAutoProxyCreator.setProxyTargetClass(true); - return defaultAdvisorAutoProxyCreator; - } - - @Bean - public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { - return new LifecycleBeanPostProcessor(); - }*/ - - /** - * 开启shiro aop注解支持. 使用代理方式; 所以需要开启代码支持; - * - * @param securityManager 安全管理器 - * @return 授权Advisor - */ - @Bean("authorizationAttributeSourceAdvisor") - public AuthorizationAttributeSourceAdvisor advisor(DefaultSecurityManager securityManager) { - AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); - advisor.setSecurityManager(securityManager); - return advisor; - } - - /** - * shiro缓存管理器; - * 需要注入对应的其它的实体类中: - * 1、安全管理器:securityManager - * 可见securityManager是整个shiro的核心; - * - * @return - */ - @Bean - public EhCacheManager ehCacheManager() { - EhCacheManager cacheManager = new EhCacheManager(); - cacheManager.setCacheManagerConfigFile("classpath:cache/ehcache.xml"); - return cacheManager; - } - -} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfiguration.java b/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfiguration.java deleted file mode 100644 index f40d34ce..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfiguration.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.adc.da.main.config; - -import com.adc.da.login.security.JWTRealm; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.credential.HashedCredentialsMatcher; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; -import org.apache.shiro.mgt.DefaultSubjectDAO; -import org.apache.shiro.mgt.SecurityManager; -import org.apache.shiro.spring.LifecycleBeanPostProcessor; -import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; -import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.io.ClassPathResource; - - -//@Configuration -public class ShiroConfiguration { - - @Bean(name = "ehCacheManagerFactoryBean") - public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() { - EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean(); - ClassPathResource classPathResource = new ClassPathResource("cache/ehcache-local.xml"); - ehCacheManagerFactoryBean.setConfigLocation(classPathResource); - return ehCacheManagerFactoryBean; - } - - @Bean(name = "shiroCacheManager") - @DependsOn({ "ehCacheManagerFactoryBean" }) - public EhCacheManager shiroCacheManager() { - EhCacheManager ehCacheManager = new EhCacheManager(); - ehCacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject()); - return ehCacheManager; - } - - @Bean - @DependsOn({ "lifecycleBeanPostProcessor" }) - public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { - DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator(); - proxyCreator.setProxyTargetClass(true); - return proxyCreator; - } - - @Bean(name = "lifecycleBeanPostProcessor") - public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { - return new LifecycleBeanPostProcessor(); - } - - @Bean(name = "securityManager") - public SecurityManager securityManager() { - DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); - defaultWebSecurityManager.setRealm(jwtRealm()); - - // 关闭shiro自带的session - DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO(); - DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator(); - defaultSessionStorageEvaluator.setSessionStorageEnabled(false); - subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator); - defaultWebSecurityManager.setSubjectDAO(subjectDAO); - - // 自定义缓存管理器 - defaultWebSecurityManager.setCacheManager(shiroCacheManager()); - SecurityUtils.setSecurityManager(defaultWebSecurityManager); - return defaultWebSecurityManager; - } - - @Bean - public HashedCredentialsMatcher hashedCredentialsMatcher() { - HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); - hashedCredentialsMatcher.setHashAlgorithmName("md5");// 散列算法:这里使用MD5算法; - hashedCredentialsMatcher.setHashIterations(2);// 散列的次数,比如散列两次,相当于 - // md5(md5("")); - return hashedCredentialsMatcher; - } - - @Bean - public JWTRealm jwtRealm() { - JWTRealm jwtRealm = new JWTRealm(); - return jwtRealm; - } - - @Bean - public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() { - AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); - advisor.setSecurityManager(securityManager()); - return advisor; - } -} \ No newline at end of file diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index 4afc5acb..72319dce 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -4,7 +4,7 @@ #============================================= spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver spring.datasource.url = jdbc:mysql://39.100.23.127:3306/foton_slrs_test2?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false -#spring.datasource.url = jdbc:mysql://10.96.10.171/foton_slrs_test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false +#spring.datasource.url = jdbc:mysql://10.96.10.54/foton_slrs_test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false spring.datasource.username = root spring.datasource.password = root @@ -49,6 +49,10 @@ spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.listener.simple.acknowledge-mode= manual +# 生产者 默认关闭 发版 需改为 true +spring.rabbitmq.listener.direct.auto-startup=false +# 消费者 默认关闭 发版 需改为 true +spring.rabbitmq.listener.simple.auto-startup=false #消费失败消息干掉 spring.rabbitmq.listener.simple.default-requeue-rejected= true #5秒 diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java index fb4b5ca4..6fa51b04 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java @@ -84,13 +84,9 @@ public class SearchCenterController extends BaseController> if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){ if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){ - Pattern pattern = Pattern.compile("^[a-zA-Z]+\\s[0-9a-zA-Z\\.\\(\\(\\)\\)\\-\\s]+$"); + Pattern pattern = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-]+$"); if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { - if (pattern.matcher(searchInfoEO.getSelectValue()).matches()) { - result = searchCenterService.searchSarBykeyAndHighLightNumber(searchInfoEO); - }else { - result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); - } + result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); } else { result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); } diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java index 66c976c8..fc907922 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -156,7 +156,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*")) .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*"+searchInfoEO.getSelectValue()+"*")) .should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*")) - .should(QueryBuilders.wildcardQuery("standName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) .should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getSelectValue()+"*")); if (isRqFormat(searchInfoEO.getSelectValue())) { @@ -178,6 +178,12 @@ public class SearchCenterServiceImpl implements SearchCenterService { if (StringUtils.isNotBlank(searchInfoEO.getStandType())) { boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); } + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*")); + } boolQueryBuilder.must(boolQueryShould); }else { boolQueryBuilder.must(boolQueryShould); @@ -245,7 +251,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { } if(searchInfoEO.getCYSD() != null && StringUtils.isNotBlank(searchInfoEO.getCYSD())){ - List fieldList = Arrays.asList(searchInfoEO.getCYSD() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + List fieldList = Arrays.asList(searchInfoEO.getCYSD().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList)); collectAttrMap.put("CYSD",array); } @@ -287,15 +293,60 @@ public class SearchCenterServiceImpl implements SearchCenterService { } } if(!fields.isEmpty()){ - for (String str : fields) { - boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(keyWordField, "*"+str+"*")); + if(fields.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + fields.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery(keyWordField, "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(keyWordField, "*"+fields.get(0)+"*")); } + } } } } if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())) { boolQueryBuilder.should(boolQueryBuilderMust); + if(searchInfoEO.getQCDW() != null && StringUtils.isNotBlank(searchInfoEO.getQCDW())){ + List list = Arrays.asList(searchInfoEO.getQCDW().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("QCDW.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("QCDW.keyword", "*"+searchInfoEO.getQCDW()+"*")); + } + } + + if(searchInfoEO.getCYSD() != null && StringUtils.isNotBlank(searchInfoEO.getCYSD())){ + List list = Arrays.asList(searchInfoEO.getCYSD().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("CYSD.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("CYSD.keyword", "*"+searchInfoEO.getCYSD()+"*")); + } + } + + if(searchInfoEO.getCLLX() != null && StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + List list = Arrays.asList(searchInfoEO.getCLLX().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("CLLX.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("CLLX.keyword", "*"+searchInfoEO.getCLLX()+"*")); + } + } }else { boolQueryBuilder.must(boolQueryBuilderMust); } @@ -312,7 +363,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); } if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { - boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getStandSort()+"*")); + List list = Arrays.asList(searchInfoEO.getStandSort().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+s+" "+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*")); + } } if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) { boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandNumber()+"*")); @@ -584,7 +644,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { } if (StringUtils.isNotBlank(searchInfoEO.getTextStatusBuss())) { - boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getTextStatusBuss()+"*")); + List list = Arrays.asList(searchInfoEO.getTextStatusBuss().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getTextStatusBuss()+"*")); + } } if (searchInfoEO.getIssueTime() != null) { @@ -644,7 +713,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { // 循环统计各种类型数据 String[] seniortype; if("stand".equals(searchInfoEO.getSelectIndex())) { - String[] seniortypeStand = {"standSort", "statecode","CYSD","ZRLX","CLLX","CBCD"}; + String[] seniortypeStand = {"standSort", "statecode","CYSD","ZRLX","CLLX","CBCD","textStatus","textStatusName"}; seniortype = seniortypeStand.clone(); } else if("laws".equals(searchInfoEO.getSelectIndex())){ String[] seniortypeLaws = {"country","statecode","SYCLLX","ZRLX","WSSFCY"}; @@ -943,12 +1012,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); // 记录搜索记录到数据库中 if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ - QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); - multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), - "title","textContent","textItems" - ).minimumShouldMatch("100%").field("title",10f); - boolQueryBuilder.must(multiQueryBuilder); -// boolQueryBuilder.should() + boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "title" + ).minimumShouldMatch("100%").field("title",10f)); + boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "textItems" + ).minimumShouldMatch("100%").field("title",10f)); + boolQueryBuilder.should(QueryBuilders.wildcardQuery("title.keyword","*"+searchInfoEO.getSelectValue()+"*")); } //在结果中检索 if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) { @@ -1060,16 +1133,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); QueryBuilder multiQueryBuilder; multiQueryBuilder = QueryBuilders.multiMatchQuery(value, - "title","textContent").minimumShouldMatch("100%").field("title",1f); + "title.keyword","textContent.keyword").minimumShouldMatch("100%").field("title.keyword",1f); boolQueryMust.must(multiQueryBuilder); - boolQueryShould.should(QueryBuilders.wildcardQuery("title", "*"+searchInfoEO.getSelectValue()+"*").boost(10f)) - .should(QueryBuilders.wildcardQuery("textContent", "*"+searchInfoEO.getSelectValue()+"*")) + boolQueryShould.should(QueryBuilders.wildcardQuery("title.keyword", "*"+searchInfoEO.getSelectValue()+"*").boost(10f)) + .should(QueryBuilders.wildcardQuery("textContent.keyword", "*"+searchInfoEO.getSelectValue()+"*")) .should(multiQueryBuilder); boolQueryBuilder.should(boolQueryShould); //在结果中检索 // boolQueryBuilder.must(multiQueryBuilder); HighlightBuilder hiBuilder=new HighlightBuilder(); - HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title.keyword"); hiBuilder.field(highlightTitle); HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); hiBuilder.field(highlightUser); @@ -1091,7 +1164,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { Map sourceAsMap = searchHit.getSourceAsMap(); //解析高亮字段 Map highlightFields = searchHit.getHighlightFields(); - HighlightField field= highlightFields.get("title"); + HighlightField field= highlightFields.get("title.keyword"); if(field!= null){ Text[] fragments = field.fragments(); String n_field = ""; @@ -1099,11 +1172,11 @@ public class SearchCenterServiceImpl implements SearchCenterService { n_field += fragment; } //高亮标题覆盖原标题 - sourceAsMap.put("title",n_field); + sourceAsMap.put("title.keyword",n_field); } Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); - HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent.keyword"); if(fieldnameshowStr!= null){ Text[] fragments = fieldnameshowStr.fragments(); String n_field = ""; @@ -1111,7 +1184,7 @@ public class SearchCenterServiceImpl implements SearchCenterService { n_field += fragment; } //高亮标题覆盖原标题 - sourceAsMap.put("textContent",n_field); + sourceAsMap.put("textContent.keyword",n_field); } result.add(sourceAsMap); } diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java index b45fe99e..21240490 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java @@ -302,9 +302,10 @@ public class StandLawsSearchServiceImpl implements StandLawsSearchService { contentBuilder.append("企标类别:").append(attrInfoMap.get("standSort")).append(" "); contentBuilder.append("标准年份:").append(attrInfoMap.get("standYear")).append(" "); contentBuilder.append("企标名称:").append(attrInfoMap.get("standName")).append(" "); - contentBuilder.append("企标英文名称:").append(attrInfoMap.get("standName")).append(" "); + contentBuilder.append("企标英文名称:").append(attrInfoMap.get("stand_en_name")).append(" "); contentBuilder.append("文本状态:").append(attrInfoMap.get("textStatusBussName")).append(" "); contentBuilder.append("企标实施日期:").append(attrInfoMap.get("putTime")).append(" "); + contentBuilder.append("企标发布日期:").append(attrInfoMap.get("issueTime")).append(" "); contentBuilder.append("废止日期:").append(attrInfoMap.get("FZRQBUSSName")).append(" "); contentBuilder.append("复审日期:").append(attrInfoMap.get("FSRQBUSSName")).append(" "); contentBuilder.append("起草部门:").append(attrInfoMap.get("QCDWName")).append(" "); diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java index 0c0cf95d..f8b1108c 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java @@ -171,17 +171,18 @@ public class SendBussMQService { saveMap.put("validFlag","0"); saveMap.put("content",infoEO.getFileIds()); - String fieldInfo = InitStandAttrUtil.queryField; + String fieldInfo = InitStandAttrUtil.queryFieldBuss; List fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); // 动态存储属性字段 for (String field : fieldInfoList) { saveMap.put(field,attrInfoMap.getOrDefault(field,"")); String fieldValue = ""; - if(infoMap.get(field) != null && StringUtils.isNotBlank(infoMap.get(field).toString())){ - Object json= new JSONTokener(infoMap.get(field).toString()).nextValue(); + String fieldFilter = field.toLowerCase(); + if(infoMap.get(fieldFilter) != null && StringUtils.isNotBlank(infoMap.get(fieldFilter).toString())){ + Object json= new JSONTokener(infoMap.get(fieldFilter).toString()).nextValue(); if(!json.toString().equals("null")){ - fieldValue = infoMap.get(field).toString(); + fieldValue = infoMap.get(fieldFilter).toString(); } } saveMap.put(field+"Name",fieldValue); diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java index 73534336..beb4b269 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java @@ -24,8 +24,8 @@ import org.springframework.stereotype.Component; import java.time.LocalDate; import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import java.util.regex.Pattern; + @EnableScheduling @Component @@ -129,10 +129,15 @@ public class ScheduledJob { .setMark("3") .setStandCode(warningEO.getStandSort()+" "+ warningEO.getStandNum()+"-"+ warningEO.getStandYear()); - //实施日期达到预警时间,但新车型实施日期不在时间内 - if (term.isTerm(warningEO.getXCXSSRQ())){ - warningEO.setPutTime(warningEO.getXCXSSRQ()); - } + + //实施日期达到预警时间,但在产车实施日期不在时间内 + /** + * 2021/9/9取消限制 + */ +// if (term.isTerm(warningEO.getXCXSSRQ())){ +// warningEO.setPutTime(warningEO.getXCXSSRQ()); +// } + warningEO.setPutTime(warningEO.getXCXSSRQ()); } warningList.addAll(standInfoXCXSSRQ); @@ -150,9 +155,13 @@ public class ScheduledJob { .setMark("4") .setStandCode(warningEO.getStandSort()+" "+ warningEO.getStandNum()+"-"+ warningEO.getStandYear()); //实施日期达到预警时间,但在产车实施日期不在时间内 - if (term.isTerm(warningEO.getZCCSSRQ())){ - warningEO.setPutTime(warningEO.getZCCSSRQ()); - } + /** + * 2021/9/9取消限制 + */ +// if (term.isTerm(warningEO.getZCCSSRQ())){ +// warningEO.setPutTime(warningEO.getZCCSSRQ()); +// } + warningEO.setPutTime(warningEO.getZCCSSRQ()); } warningList.addAll(standInfoZCCSSRQ); @@ -215,47 +224,50 @@ public class ScheduledJob { //查询代替标准字段得到一个 被代替了的标准的id的键值对列表 List> replaceStandIdMaps = sarStandAttrInfoDao.selectMaps(columnForDTBJH); HashMap replaceIdCountMap = new HashMap<>(); - - +// 格式为 T/CSAE 175-2021 + Pattern pattern = Pattern.compile("^\\S*\\s\\S*[\\u2014\\u002d\\s]\\d{4}$"); replaceStandIdMaps.forEach(item->{ if (item!=null){ //此标准代替的标准的标准号的数组 String DTBJHStr = item.get("DTBJH").toString(); //数据格式: (GB 123-2000,GB 4233434-2021,GB 423423423-2021) - if (!DTBJHStr.equals("")){ + if (!DTBJHStr.equals("")) { String[] DTBJHArray = DTBJHStr.split(","); for (String DTBJH : DTBJHArray) { - String[] sortAndNumberAndYear = DTBJH.split("\\s+"); - String sort = sortAndNumberAndYear[0]; - String[] numberAndYear = sortAndNumberAndYear[1].split("\\-"); - String number=numberAndYear[0]; - String year=numberAndYear[1]; + if (!pattern.matcher(DTBJH).matches()){ + continue; + } + + String[] split = DTBJH.split("[\\u2014\\u002d\\s]");//以空格或'-'或'—'分割 + String sort = split[0]; + String number = split[1]; + String year = split[2]; QueryWrapper infoWrapper = new QueryWrapper<>(); infoWrapper.select("ID") - .eq("STAND_SORT",sort) - .eq("STAND_NUMBER",number) - .eq("STAND_YEAR",year); + .eq("STAND_SORT", sort) + .eq("STAND_NUMBER", number) + .eq("STAND_YEAR", year); List> idMaps = sarStandardsInfoDao.selectMaps(infoWrapper); - String standId = idMaps.get(0).get("ID").toString(); - - //如果代替标准id已存在则映射为2不存在则添加并映射为1 - if (replaceIdCountMap.containsKey(standId)) { - replaceIdCountMap.replace(standId,2); - }else { - replaceIdCountMap.put(standId, 1); + if (idMaps.size() > 0) { + String standId = idMaps.get(0).get("ID").toString(); + //如果代替标准id已存在则映射为2不存在则添加并映射为1 + if (replaceIdCountMap.containsKey(standId)) { + replaceIdCountMap.replace(standId, 2); + } else { + replaceIdCountMap.put(standId, 1); + } } + + } + } - - - - } }); diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java new file mode 100644 index 00000000..fa2fed00 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java @@ -0,0 +1,34 @@ +package com.adc.da.scheduled; + +import com.adc.da.slrs.DataSync.DataSyncController; +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.sun.org.apache.bcel.internal.generic.NEW; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + + +/** + * 定时同步用户和组织机构信息 + */ +@EnableScheduling +@Component +@Slf4j +public class ScheduledSync { + + @Autowired + private IDataSyncService iDataSyncService; + + +// @Scheduled(cron = "0 */40 * * * ?") //40分钟执行同步一次 +// @Scheduled(cron="*/5 * * * * ?") + + @Async + public void syncSchedulingTasks() throws Exception { + iDataSyncService.orgDataSync(); //时间短 + iDataSyncService.dataSync(); //时间长 + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java new file mode 100644 index 00000000..a1cb94ee --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java @@ -0,0 +1,58 @@ +package com.adc.da.slrs.DataSync; + +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarInstitution.service.impl.TsInstitutionServiceImpl; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarPosition.service.impl.TsPositionServiceImpl; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.sarUser.service.impl.TsUserServiceImpl; +import com.adc.da.sync.service.SyncUserService; +import com.adc.da.sys.dao.OrgEODao; +import com.adc.da.sys.entity.OrgEO; +import com.adc.da.sys.entity.UserOrgEO; +import com.adc.da.sys.service.IOrgEOService; +import com.adc.da.sys.service.impl.OrgEOServiceImpl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.sql.Timestamp; +import java.util.*; + +@RestController +@Api(description = "|SarStandPutTime|") +@RequestMapping("/${restPath}/DataSync") +public class DataSyncController { + + + + @Autowired + private IDataSyncService iDataSyncService; + + + @ApiOperation("同步用户数据") + @PostMapping("/importUserData") + public String importUserData() throws Exception { + return iDataSyncService.dataSync(); + } + + @ApiOperation("同步组织机构") + @PostMapping("/importOrgData") + public String importOrgData() throws Exception { + return iDataSyncService.orgDataSync(); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java new file mode 100644 index 00000000..555eb715 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java @@ -0,0 +1,8 @@ +package com.adc.da.slrs.DataSync.service; + +public interface IDataSyncService { + + public String dataSync() throws Exception; + + public String orgDataSync() throws Exception; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java new file mode 100644 index 00000000..501ddc10 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java @@ -0,0 +1,173 @@ +package com.adc.da.slrs.DataSync.service.impl; + +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sync.service.SyncUserService; +import com.adc.da.sys.entity.UserOrgEO; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.*; + +@Service +public class DataSyncServiceImpl implements IDataSyncService { + + + @Autowired + ITsPositionService tsPositionService; + @Autowired + ITsUserService tsUserService; + @Autowired + ITsInstitutionService tsInstitutionService; + + + + + @Override + public String dataSync() throws Exception { + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonUser(); + //存放岗位信息 + Map positionMap = new HashMap<>(); + Map useDistinct = new HashMap<>(); + TsPosition position = new TsPosition(); + position.setCurrent(1); + position.setPageSize(100000); + IPage iPage = tsPositionService.getPosition(position); + List positions=iPage.getRecords(); + if (!positions.isEmpty()) { + positions.forEach(tsPosition -> { + positionMap.put(tsPosition.getName(), tsPosition.getId()); + }); + } + + /** + * 得到数据时,删除系统表中所有用户信息 + */ + if (res.size()>0){ + tsUserService.deleteUser(); + } + for (String s : res) { + //获取到所有用户数据 + List tsUsers = new ArrayList<>(); + + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + //先获取岗位以及岗位id + TsUser tsUser = new TsUser(); + UserOrgEO userOrgEO = new UserOrgEO(); + //设置岗位 + if (null != jsonObject.getString("title")) { + //通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增 + if (null == positionMap.get(jsonObject.getString("title"))) { + TsPosition tsPosition = new TsPosition(); + tsPosition.setId(String.valueOf(UUID.randomUUID())); + tsPosition.setName(jsonObject.getString("title")); + tsPositionService.addPosition(tsPosition); + //放入岗位的map集合中 + positionMap.put(tsPosition.getName(), tsPosition.getId()); + //放入类中 + tsUser.setPositionName(tsPosition.getName()); + tsUser.setPositionId(tsPosition.getId()); + } else { + tsUser.setPositionName(jsonObject.getString("title").trim()); + tsUser.setPositionId(positionMap.get(jsonObject.getString("title").trim())); + } + } + //设置其他数据 + Timestamp createTime = new Timestamp(new Date().getTime()); + tsUser.setState(jsonObject.getString("userStatus")); + tsUser.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):""); + tsUser.setValidFlag("0"); + tsUser.setDisableFlag("0"); + tsUser.setCreationTime(createTime); + tsUser.setUserId(jsonObject.getString("userid")); + tsUser.setAccount(jsonObject.getString("userid")); + tsUser.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" ); + tsUser.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" ); + if (null == useDistinct.get(jsonObject.getString("userid"))) { + tsUsers.add(tsUser); + + } + +// //测试数据删除 +// if (! "anbin".equals(jsonObject.getString("userid"))){ +// +// //测试数据修改 +// if ("anbing".equals(jsonObject.getString("userid"))){ +// tsUser.setUname("DDDDDD"); +// tsUsers.add(tsUser); +// } else if (null == useDistinct.get(jsonObject.getString("userid"))) { +// tsUsers.add(tsUser); +// +// } +// } + useDistinct.put(tsUser.getUserId(),tsUser.getUserId()); + }); + tsUserService.saveBatch(tsUsers); + } + + //测试数据添加 +// TsUser addUser = new TsUser(); +// addUser.setState("FFFFFFF"); +// addUser.setUname("zhaokaiyao"); +// addUser.setValidFlag("0"); +// addUser.setDisableFlag("0"); +// addUser.setCreationTime(new Timestamp(new Date().getTime())); +// addUser.setUserId("FFFFFFF"); +// addUser.setAccount("zhaokaiyao"); +// addUser.setInstitutionId("10022745"); +// addUser.setInstitutionName("福田营销其他"); +// +// List addUserList = Arrays.asList(addUser); +// tsUserService.saveBatch(addUserList); + return "1"; + } + + + + public String orgDataSync() throws Exception { + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonOrg(); + + //获取到所有用户数据 + List strings=new ArrayList<>(); + + tsInstitutionService.clearData(); + for (String s : res) { + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + strings.add(jsonObject.getString("parentOrgNumber")); + }); + } + for (String s : res) { + List tsInstitutions = new ArrayList<>(); + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + TsInstitution tsInstitution=new TsInstitution(); + tsInstitution.setId(jsonObject.getString("orgNumber")); + tsInstitution.setName(jsonObject.getString("orgName")); + tsInstitution.setHasChild(strings.contains(jsonObject.getString("orgNumber"))?"1":"0"); + tsInstitution.setParentId(jsonObject.getString("parentOrgNumber")); + //部门为"null"的数据不保存 + if (!"null".equals(jsonObject.getString("orgName"))){ + tsInstitutions.add(tsInstitution); + } + }); + tsInstitutionService.saveBatch(tsInstitutions); + } + return "1"; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclErrorOut.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclErrorOut.java new file mode 100644 index 00000000..1efb078a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclErrorOut.java @@ -0,0 +1,80 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.adc.da.utils.util.BussStandExportUtil; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.util.List; + + +@Component +public class ExclErrorOut { + private static final Logger logger = LoggerFactory.getLogger(BussStandExportUtil.class); + + public static Workbook exportDatas (List datas,String header) { + Workbook workbook = new XSSFWorkbook(); + try { + + + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + // 创建头部 + createHeader(workbook,sheet,header); + // 创建数据 + createDatas(workbook,sheet,datas); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return workbook; + } + + + public static void createHeader(Workbook workbook, Sheet sheet, String header){ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); +// rowHeader.createCell(i).setCellStyle(cellStyle); + } + } + } + + + + public static void createDatas(Workbook workbook,Sheet sheet,List datas) throws Exception{ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + if (datas != null && !datas.isEmpty()) { + for (int i=0;i < datas.size(); i++) { + ImportDto importDto = datas.get(i); + Row row = sheet.createRow(i+1); + + int sheetNum = 0; + + Class cls = importDto.getClass(); + Field[] fields = cls.getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); + if (field.get(importDto)!=null){ + String value = field.get(importDto).toString(); + row.createCell(sheetNum).setCellValue(value); + }else { + row.createCell(sheetNum).setCellValue(""); + } + sheetNum++; + } + } + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclExport.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclExport.java new file mode 100644 index 00000000..7fac0233 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclExport.java @@ -0,0 +1,36 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +@Component +public class ExclExport extends ExclErrorOut { + + + /** + * 导出多个sheet页的excl + */ + public Workbook exportData(Map> dataMap, String header) { + Workbook workbook=new XSSFWorkbook(); + + try { + for (Map.Entry> entry : dataMap.entrySet()) { + List datas = entry.getValue(); + Sheet sheet = workbook.createSheet(entry.getKey()); + super.createHeader(workbook,sheet,header); + super.createDatas(workbook,sheet,datas); + + } + } catch (Exception e) { + e.printStackTrace(); + } + + return workbook; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java index 84f3bdf3..1a36d323 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java @@ -1,15 +1,23 @@ package com.adc.da.slrs.ImportExcelDatas.controller; import com.adc.da.base.web.BaseController; +import com.adc.da.common.ReadExcel; import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.ImportExcelDatas.comment.ExclErrorOut; import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; import com.adc.da.slrs.ImportExcelDatas.service.ImportExcelService; import com.adc.da.slrs.ImportExcelDatas.service.impl.ImportExcelServiceImpl; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStar; import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStarEO; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.IOUtils; +import com.adc.da.util.utils.StringUtils; +import com.adc.da.utils.util.BussStandExportUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -17,6 +25,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; import java.util.List; import java.util.Map; @@ -28,14 +40,43 @@ public class ImportExcelController extends BaseController { @Autowired private ImportExcelService importExcelService; + @Autowired + private ExclErrorOut exclErrorOut; + @ApiOperation("批量删除用户收藏") @PostMapping("/import") - public ResponseMessage deleteList(MultipartFile file,MultipartFile file2) { + public void deleteList(MultipartFile file, MultipartFile file2, HttpServletResponse response, HttpServletRequest request) throws IOException { Map> mapMap=importExcelService.getExcelData(file,file2); - ResponseMessage responseMessage=new ResponseMessage(); - responseMessage.setMessage(mapMap.toString()); - responseMessage.isOk(); - return responseMessage; + List errorList = importExcelService.storageExclData(mapMap); +// List guonei= mapMap.get("GNBZ"); +// List haiwai = mapMap.get("HWBZ"); +// List qibiao = mapMap.get("QYBZ"); + OutputStream os = null; + Workbook workbook = null; + try { + + String exportName="错误表格"; + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx",request)); + response.setContentType("application/force-download"); + //导出数据 + String headStr="标准号,标准名称,英文名称,发布时间,实施时间,标准状态,代替标准号,附件路径,错误原因"; + workbook = exclErrorOut.exportDatas(errorList,headStr); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + if (workbook != null) { + workbook.close(); + } + } + + + +// return responseMessage; } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java index ebf4f268..849680e3 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java @@ -22,4 +22,7 @@ public class ImportDto extends BaseEntity { private String replaceId; // 附件路径 private String path; + +// 错误原因 + private String errorStr; } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java index 008be67f..61851025 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java @@ -11,4 +11,7 @@ public interface ImportExcelService extends IService { Map> getExcelData(MultipartFile file,MultipartFile file2); + + public List storageExclData(Map> importListMap); + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java index 449298f9..5175ea6c 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java @@ -1,39 +1,77 @@ package com.adc.da.slrs.ImportExcelDatas.service.impl; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.http.Result; import com.adc.da.slrs.ImportExcelDatas.dao.ImportExcelDao; import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; import com.adc.da.slrs.ImportExcelDatas.service.ImportExcelService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.entity.DictionaryEO; +import com.adc.da.sys.service.impl.DicTypeEOServiceImpl; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.io.InputStream; import java.util.*; +import java.util.regex.Pattern; @Service public class ImportExcelServiceImpl extends ServiceImpl implements ImportExcelService { + @Autowired + private IAttFileEOService attFileEOService; + +// @Autowired +// private CreateStandMQService createStandMQService; +// +// @Autowired +// private SarStandardsInfoServiceImpl sarStandardsInfoService; +// +// +// +// @Autowired +// private SarBussionessStandServiceImpl sarBussionessStandService; + + + private final static String GN = "GB,GB/T,QC/T,GJB,JB,JT,HG,YV,SY,SH,GA,HJ,QB,JG,NB,JC,YS/T,FZ/T,TB/T,JJG,SJ/T,T/TBPS" + ",NB/T,CJ/T,YS/T,SJ/T,BB/T,SN/T,SB/T,MH/T,DB11,SZDB/Z,HKG,T/ZSA,CSAE,T/CAS,T/CADA,T/CHTS,T/ITS,T/BJQC"; private final static String QB = "Q/QCBFC,Q/FT,Q/FL,Q/QCFLC,Q/BQB,Q/SGT," + "Q-AMSN,QB-NE,Q-IOUM,Q房/AYJ,KNT"; - private final static String DATE = "-2008,—2008,-2009,—2009,-2010,—2010,-2011,—2011,-2012,—2012,-2013,—2013," + - "- 2008,— 2008,- 2009,— 2009,- 2010,— 2010,- 2011,— 2011,- 2012,— 2012,- 2013,— 2013" + - ",-2014,—2014,-2015,—2015,-2016,—2016,-2017,—2017,-2018,—2018,-2019,—2019,-2020,—2020,-2021,—2021" + - ",- 2014,— 2014,- 2015,— 2015,- 2016,— 2016,- 2017,— 2017,- 2018,— 2018,- 2019,— 2019,- 2020,— 2020,- 2021,— 2021"; - // file 为主 file2 为附件 @Override public Map> getExcelData(MultipartFile file, MultipartFile file2) { + List dates = new ArrayList<>(); + for (int i = 1669; i < 2023; i++) { + dates.add("-" + i); + dates.add("—" + i); + dates.add("- " + i); + dates.add("— " + i); + } + if (file == null || file.getSize() == 0) { log.error("文件上传错误,重新上传"); } @@ -82,10 +120,10 @@ public class ImportExcelServiceImpl extends ServiceImpl { //判断是否是正确的数据 String[] as = items.split(","); - if (!inDate(as[0])) { + if (!inDate(as[0], dates)) { ImportDto importDto = getImportDto(as); error.add(importDto); - middle.put(as[0].trim(), "error-"+error.size()); + middle.put(as[0].trim(), "error-" + error.size()); } else { //数据二次拆解 针对标准进行拆解 String[] step2 = as[0].trim().split(" "); @@ -93,15 +131,15 @@ public class ImportExcelServiceImpl extends ServiceImpl{ - String[] fj=items2.split(","); - if (fj.length>2) { + fujian.forEach(items2 -> { + String[] fj = items2.split(","); + if (fj.length > 2) { if (null != middle.get(null != fj[2] ? fj[2].trim() : "")) { //对应数据位置 String[] location = middle.get(fj[2].trim()).split("-"); - res.get(location[0]).get(Integer.parseInt(location[1])-1).setPath(fj[3]); + res.get(location[0]).get(Integer.parseInt(location[1]) - 1).setPath(fj[3]); } } - } ); + }); return res; } - private boolean inDate(String as) { - List dates = new ArrayList<>(Arrays.asList(DATE.split(","))); + private boolean inDate(String as, List dates) { if (null != as && !"".equals(as)) { for (String s : dates) { if (s.equals(as.trim())) { @@ -227,4 +264,442 @@ public class ImportExcelServiceImpl extends ServiceImpl error = new ArrayList<>(); + + private List fileError = new ArrayList<>(); + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private DicTypeEOServiceImpl dicTypeEOService; + + @Autowired + private ISarBussionessStandService sarBussionessStandService; + @Override + public List storageExclData(Map> importListMap) { + + + + error = importListMap.get("error"); + /** + * 初始化国内外标准属性字段 + */ + List listStandField = InitStandAttrUtil.queryFieldList; + Map standAttrMap = new TreeMap<>(); + listStandField.forEach(item ->{ + standAttrMap.put(item,""); + }); + + /** + * 海外标准 + */ + importListMap.get("HWBZ").forEach(item -> { + + String standID = UUIDUtils.randomUUID20(); + + //使用初始化的属性字段映射 获得key值,value为"" + Map mapField = standAttrMap; + SarStandardsInfo ForeignEO = parseImportDtoToStandardsInfo(item,mapField, standID); + + if (ForeignEO != null) { + ForeignEO.setValidFlag("0"); + ForeignEO.setStandType("FOREIGN"); + QueryWrapper standSaveWrapper = new QueryWrapper<>(); + standSaveWrapper + .eq("STAND_SORT", ForeignEO.getStandSort()) + .eq("STAND_NUMBER", ForeignEO.getStandNumber()) + .eq("STAND_YEAR", ForeignEO.getStandYear()); + + SarStandardsInfo one = sarStandardsInfoService.getOne(standSaveWrapper); + + + + if (one != null) { + ForeignEO.setId(one.getId()); + + try { + sarStandardsInfoService.updateSarStandardsInfo(ForeignEO); + } catch (Exception e) { + item.setErrorStr("标准更新失败"); + error.add(item); + e.printStackTrace(); + } + + } else { + try { + sarStandardsInfoService.createSarStandardsInfo(ForeignEO); + } catch (Exception e) { + item.setErrorStr("标准新增失败"); + error.add(item); + e.printStackTrace(); + } + + } + + + } else { + item.setErrorStr("标准号无法解析"); + error.add(item); + } + + + }); + + + /** + * 国内标准 + */ + + importListMap.get("GNBZ").forEach(item -> { + String standID = UUIDUtils.randomUUID20(); + //使用初始化的属性字段映射 获得key值,value为"" + Map mapStandField = standAttrMap; + SarStandardsInfo InlandEO = parseImportDtoToStandardsInfo(item, mapStandField,standID); + + if (InlandEO != null) { + + + InlandEO.setValidFlag("0"); + InlandEO.setStandType("INLAND"); + + + QueryWrapper standSaveWrapper = new QueryWrapper<>(); + standSaveWrapper + .eq("STAND_SORT", InlandEO.getStandSort()) + .eq("STAND_NUMBER", InlandEO.getStandNumber()) + .eq("STAND_YEAR", InlandEO.getStandYear()); + + + SarStandardsInfo one = sarStandardsInfoService.getOne(standSaveWrapper); + if (one != null) { + + + InlandEO.setId(one.getId()); + try { + sarStandardsInfoService.updateSarStandardsInfo(InlandEO); + } catch (Exception e) { + item.setErrorStr("国内标准更新失败"); + error.add(item); + e.printStackTrace(); + } + + + } else { + + + try { + sarStandardsInfoService.createSarStandardsInfo(InlandEO); + } catch (Exception e) { + item.setErrorStr("国内标准新增失败"); + error.add(item); + e.printStackTrace(); + } + } + } else { + item.setErrorStr("标准号无法解析"); + error.add(item); + importListMap.replace("error", error); + } + + + }); + + + /** + * 企业标准 + */ + + /** + * 初始化企业标准属性字段 + */ + List listStandBussField = InitStandAttrUtil.queryFieldListBuss; + Map bussAttrMap = new TreeMap<>(); + listStandBussField.forEach(item->{ + bussAttrMap.put(item,""); + }); + importListMap.get("QYBZ").forEach(item -> { + String standId = UUIDUtils.randomUUID20(); + SarBussionessStand BussEO = parseImportDtoToSarBussionessStand(item, bussAttrMap,standId); + + if (BussEO != null) { + + try { + QueryWrapper saveWrapper = new QueryWrapper<>(); + saveWrapper.eq("STAND_CODE", item.getStandId()); + SarBussionessStand one = sarBussionessStandService.getOne(saveWrapper); + if (one != null) { + BussEO.setId(one.getId()); + sarBussionessStandService.updateSarBussionessStand(BussEO); + } else { + sarBussionessStandService.createSarBussionessStand(BussEO); + } + + + } catch (Exception e) { + item.setErrorStr("数据格式错误"); + error.add(item); + + e.printStackTrace(); + + } + + } + + }); + + + error.addAll(fileError); + return error; + } + + + /** + * 整理为标准信息实体 + * @param importDto + * @param fieldMap 属性字段 + * @param standId + * @return + */ + public SarStandardsInfo parseImportDtoToStandardsInfo(ImportDto importDto,Map fieldMap, String standId) { + + + HashMap analysis = analysisStandId(importDto); + if (analysis == null) { + return null; + } + + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + sarStandardsInfoEO.setId(standId); + + + sarStandardsInfoEO.setStandSort(analysis.get("sort")); + sarStandardsInfoEO.setStandNumber(analysis.get("number")); + sarStandardsInfoEO.setStandYear(analysis.get("year")); + + sarStandardsInfoEO.setStandName(importDto.getStandName()); + sarStandardsInfoEO.setStandEnName(importDto.getStandNameEN()); + + /** + * 截取发布日期 年月日 + */ + String issueDate = importDto.getPublishTime().substring(0, 19); + sarStandardsInfoEO.setIssueTime(issueDate);//标准发布日期 + + String standStatus = importDto.getStandStatus(); + if ("有效".equals(standStatus)) { + sarStandardsInfoEO.setTextStatus("vsaga7nwub");//现行有效 + } + + /** + * 标准属性字段 + */ + + fieldMap.put("DTBJH", importDto.getReplaceId()); + fieldMap.put("SSRQ", importDto.getImplementedTime().substring(0, 19)); + + + /** + * 文件 + */ + if (importDto.getPath() != null) { + String path[] = importDto.getPath().split("/"); + String realPath = ""; + for (int i = 4; i < path.length; i++) { + realPath = realPath + "/" + path[i]; + + } + + + try { +// File file = new File("C:\\Users\\22501\\Desktop\\foton\\2021\\" + realPath); +// File file = new File(importPath + realPath); + File file = new File("/home/file/2021/" + realPath); + if (file.exists()) { + AttFileVo fileInfo = attFileEOService.saveFileInfo(file); + + if (importDto.getImplementedTime() != null) { + fieldMap.put("FBGJBD", fileInfo.getAttId()); + } else { + fieldMap.put("GLWJ", fileInfo.getAttId()); + } + + } else { + importDto.setErrorStr("文件不存在"); + fileError.add(importDto); + } + + } catch (Exception e) { + importDto.setErrorStr("文件打开失败"); + fileError.add(importDto); + e.printStackTrace(); + } + + } +// attrInfoMap.put("") + Gson gson = new Gson(); + String attrInfoJson = gson.toJson(fieldMap); + sarStandardsInfoEO.setSarStandAttrEOStr(attrInfoJson);//新增修改时属性表信息 + + + return sarStandardsInfoEO; + + } + + + /** + * 整理为企业标准实体 + * @param importDto + * @param standId + * @return + */ + public SarBussionessStand parseImportDtoToSarBussionessStand(ImportDto importDto,Map fieldMap, String standId) { + + + HashMap analysis = analysisStandId(importDto); + if (analysis == null) { + return null; + } else { + SarBussionessStand sarBussionessStand = new SarBussionessStand(); + sarBussionessStand.setId(standId); + sarBussionessStand.setStandSort(analysis.get("sort")); + sarBussionessStand.setStandYear(analysis.get("year")); + sarBussionessStand.setStandCode(importDto.getStandId()); + sarBussionessStand.setStandName(importDto.getStandName()); + sarBussionessStand.setStandEnName(importDto.getStandNameEN()); + sarBussionessStand.setIssueTime(importDto.getPublishTime()); + sarBussionessStand.setPutTime(importDto.getImplementedTime()); + sarBussionessStand.setReplacedStandNum(importDto.getReplaceId()); + sarBussionessStand.setValidFlag(0); + if ("有效".equals(importDto.getStandStatus())) { + sarBussionessStand.setTextStatusBuss("vsaga7nwub"); + } + + /** + * 企业标准属性字段 + */ + + + if (importDto.getPath() != null) { + String path[] = importDto.getPath().split("/"); + String realPath = ""; + for (int i = 4; i < path.length; i++) { + realPath = realPath + "/" + path[i]; + + } + + + try { +// File file = new File("C:\\Users\\22501\\Desktop\\foton\\2021\\" + realPath); +// File file = new File(importPath + realPath); + File file = new File("/home/file/2021/" + realPath); + + if (file.exists()) { + AttFileVo fileInfo = attFileEOService.saveFileInfo(file); + + + if (importDto.getImplementedTime()!=null && importDto.getImplementedTime()!=""){ + fieldMap.put("FBGBUSS",fileInfo.getAttId()); + + }else { + fieldMap.put("GLWJBUSS",fileInfo.getAttId()); + } + + + + } else { + importDto.setErrorStr("文件不存在"); + fileError.add(importDto); + } + + } catch (Exception e) { + importDto.setErrorStr("路径错误!"); + fileError.add(importDto); + e.printStackTrace(); + } + + + } + + String attrInfoJson = new Gson().toJson(fieldMap); + sarBussionessStand.setSarStandAttrEOStr(attrInfoJson);//新增修改时属性表信息 + return sarBussionessStand; + } + + + } + + + /** + * 解析标准号,标准类别不存在则新增 + * @param importDto + * @return + */ + public HashMap analysisStandId(ImportDto importDto) { + HashMap result = new HashMap<>(); + if (importDto.getStandId() == null) { + importDto.setErrorStr("标准号为空"); + error.add(importDto); + return null; + } else { + String standId = importDto.getStandId(); + //格式 非空格字符+空格+非空格字符+‘-’或‘—’或空格+年份 如Q/FT F003—2001 + Pattern pattern = Pattern.compile("^\\S*\\s\\S*[\\u2014\\u002d\\s]\\d{4}$"); + if (!pattern.matcher(standId).matches()) { + importDto.setErrorStr("标准号无法解析"); + error.add(importDto); + return null; + } + + String sort = ""; + String number = ""; + String year = ""; + String[] split = importDto.getStandId().split("[\\u2014\\u002d\\s]");//以空格或'-'或'—'分割 + + +// 多种格式(╯‵□′)╯︵┻━┻ Q-FL T015-2021 Q/ FL T015-2021 Q/FL T015-2021 + int length = split.length; + number = split[length - 2]; + year = split[length - 1]; + for (int i = 0; i < length - 2; i++) { + sort += split[i]; + } + + result.put("sort", sort); + result.put("number", number); + result.put("year", year); + //标准类别不存在,新增标准类别 + List isExist = dicTypeEOService.getTypeIdByDicIdAndTypeName("JKSADFH564S", null, sort, null); + if (isExist == null || isExist.isEmpty() || isExist.size()==0){ + + DicTypeEO dicTypeVO = new DicTypeEO(); + dicTypeVO.setId(null); + dicTypeVO.setDicId("JKSADFH564S"); + dicTypeVO.setDicTypeCode(sort); + dicTypeVO.setDicTypeName(sort); + dicTypeVO.setShowIndex(1); + Integer dicTypeEO = dicTypeEOService.saveDictype(dicTypeVO); + if (dicTypeEO>0){ + importDto.setErrorStr("标准类别不存在,已新增"); + }else { + importDto.setErrorStr("标准类别不存在,新增失败"); + } + error.add(importDto); + } + + + + + + return result; + } + + + } + + + + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java index b0019e1d..8e18f63a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java @@ -14,7 +14,7 @@ import org.springframework.format.annotation.DateTimeFormat; /** *

- * + * *

* * @author super_liu @@ -52,6 +52,9 @@ public class SarBussStandAttrInfo extends BaseEntity { @TableField("MODIFY_TIME") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date modifyTime; + + @TableField(exist = false) + private String glwj; // // @TableField("SVPPS") // private String svpps; diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java index 3455a955..349a675c 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java @@ -24,6 +24,8 @@ public interface ISarBussionessStandService extends IService SarBussionessStand updateSarBussionessStand(SarBussionessStand sarBussionessStandEO) throws Exception; + ResponseMessage createSarBussionessStand(SarBussionessStand sarBussionessStandEO) throws Exception; + List selectStandardsByStandNumber(String replaceStandNum); SarBussionessStand selectStandardsInfoByKey(String id) throws Exception; diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java index 8b8d2ee3..0ea1a63b 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java @@ -54,9 +54,12 @@ public interface TsInstitutionDao extends BaseMapper { * 查询根机构 * @return List */ - @Select("select * from ts_institution where parent_id not in (select id from ts_institution)") + @Select("select * from ts_institution where parent_id not in (select id from ts_institution) order by name") List selectRoot(); @Select("select * from ts_institution order by rand() limit 1") TsInstitution selectRand(); + + int clearData(); + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java index 688cc318..8350d452 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java @@ -42,4 +42,6 @@ public interface ITsInstitutionService extends IService { * @return */ public List getFirst(); + + int clearData(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java index 2e3c47cd..57e64d77 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java @@ -213,4 +213,9 @@ public class TsInstitutionServiceImpl extends ServiceImpl map1 : zrbn) { if (map1.get("value").equals(list1.getZRBM())) { diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java index 120a444d..743e5356 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java @@ -48,66 +48,66 @@ public class LawsDto { private String NYLX; @ApiModelProperty(value = "标准年份") - @ExcelProperty(value = "标准年份", index = 5) +// @ExcelProperty(value = "标准年份", index = 5) private String standYear; @ApiModelProperty(value = "标准类别") - @ExcelProperty(value = "标准类别", index = 6) +// @ExcelProperty(value = "标准类别", index = 6) private String standSortShow; @ApiModelProperty(value = "标准发表日期") - @ExcelProperty(value = "标准发表日期", index = 7) +// @ExcelProperty(value = "标准发表日期", index = 7) private String issueTime; @ColumnWidth(16) - @ExcelProperty(value = "标准实施日期", index = 8) + @ExcelProperty(value = "标准实施日期", index = 5) @ApiModelProperty(value = "标准实施日期") @DateTimeFormat("yyyy年MM月dd日") private String SSRQ; @ColumnWidth(16) - @ExcelProperty(value = "新车型实施日期", index = 9) + @ExcelProperty(value = "新车型实施日期", index = 6) @ApiModelProperty(value = "新车型实施日期") @DateTimeFormat("yyyy年MM月dd日") private String XCXSSRQGJ; @ColumnWidth(16) - @ExcelProperty(value = "在产车实施日期", index = 10) + @ExcelProperty(value = "在产车实施日期", index = 7) @ApiModelProperty(value = "在产车实施日期") @DateTimeFormat("yyyy年MM月dd日") private String ZCCSSRQGJ; - @ExcelProperty(value = "责任部门", index = 11) + @ExcelProperty(value = "责任部门", index = 8) @ApiModelProperty(value = "责任部门") private String ZRBM; @ColumnWidth(14) - @ExcelProperty(value = "适用产品线", index = 12) + @ExcelProperty(value = "适用产品线", index = 9) @ApiModelProperty(value = "适用产品线") private String SYCPX; @ColumnWidth(20) - @ExcelProperty(value = "乘用车VPPS编码", index = 13) + @ExcelProperty(value = "乘用车VPPS编码", index = 10) @ApiModelProperty(value = "乘用车VPPS编码") private String CYCVPPSBM; @ColumnWidth(20) - @ExcelProperty(value = "乘用车vpps中文名称", index = 14) + @ExcelProperty(value = "乘用车vpps中文名称", index = 11) @ApiModelProperty(value = "乘用车vpps中文名称") private String CYCVPPSCN; @ColumnWidth(20) - @ExcelProperty(value = "卡车VPPS编码", index = 15) + @ExcelProperty(value = "卡车VPPS编码", index = 12) @ApiModelProperty(value = "卡车VPPS编码") private String KCCVPPSBM; @ColumnWidth(20) - @ExcelProperty(value = "卡车vpps中文名称", index = 16) + @ExcelProperty(value = "卡车vpps中文名称", index = 13) @ApiModelProperty(value = "卡车vpps中文名称") private String KCCVPPSCN; @ApiModelProperty(value = "责任工程师") - @ExcelProperty(value = "责任工程师", index = 17) +// @ExcelProperty(value = "责任工程师", index = 17) private String responsibleEngineer; @ApiModelProperty(value = "1") diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java index 9028d493..dad90b45 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java @@ -57,16 +57,19 @@ public class SarLawsAttrDetailedListServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("stand_id",lawsDto.getId()) .eq("detailed_list_id",sarFindDto.getId()); - List sarLawsAttrDetailedLists = sarLawsAttrDetailedListDao.selectList(queryWrapper); - if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getSsrq())){ - lawsDto.setSSRQ(sarLawsAttrDetailedLists.get(0).getSsrq()); - } - if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getXcxssrq())){ - lawsDto.setXCXSSRQGJ(sarLawsAttrDetailedLists.get(0).getXcxssrq()); - } - if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getZccssrq())){ - lawsDto.setZCCSSRQGJ(sarLawsAttrDetailedLists.get(0).getZccssrq()); - } + /** + *2021/9/13 摒弃使用清单实施日期,改用标准实施日期 + */ +// List sarLawsAttrDetailedLists = sarLawsAttrDetailedListDao.selectList(queryWrapper);/ +// if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getSsrq())){ +// lawsDto.setSSRQ(sarLawsAttrDetailedLists.get(0).getSsrq()); +// } +// if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getXcxssrq())){ +// lawsDto.setXCXSSRQGJ(sarLawsAttrDetailedLists.get(0).getXcxssrq()); +// } +// if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getZccssrq())){ +// lawsDto.setZCCSSRQGJ(sarLawsAttrDetailedLists.get(0).getZccssrq()); +// } if ("INLAND".equals(lawsDto.getStandType()))lawsDto.setStandType("INLAND_STAND"); if ("FOREIGN".equals(lawsDto.getStandType()))lawsDto.setStandType("FOREIGN_STAND"); } @@ -281,18 +284,25 @@ public class SarLawsAttrDetailedListServiceImpl extends ServiceImpl> mapList, List putTime, List xcx, List zcc, StandRegionalTimeDto s) { - putTime.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getPutTime())); - xcx.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getXcxssrq())); - zcc.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getZccssrq())); - mapList.put("实施日期("+s.getCountry()+")",putTime); - mapList.put("新车型实施日期("+s.getCountry()+")",xcx); - mapList.put("在产车实施日期("+s.getCountry()+")",zcc); + private void dateTime(LinkedHashMap> mapList, StandRegionalTimeDto s) { + String putTime = new SimpleDateFormat("yyyy-MM-dd").format(s.getPutTime()); + String xcx = new SimpleDateFormat("yyyy-MM-dd").format(s.getXcxssrq()); + String zcc = new SimpleDateFormat("yyyy-MM-dd").format(s.getZccssrq()); +// putTime.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getPutTime()); +// xcx.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getXcxssrq())); +// zcc.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getZccssrq())); + mapList.put("实施日期("+s.getCountry()+")", Collections.singletonList(putTime)); + mapList.put("新车型实施日期("+s.getCountry()+")", Collections.singletonList(xcx)); + mapList.put("在产车实施日期("+s.getCountry()+")", Collections.singletonList(zcc)); } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java index c5939bdb..15092f35 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java @@ -599,6 +599,11 @@ public class SarLawsDetailedListServiceImpl extends ServiceImpl { @Autowired private ISarModelTreeService iSarModelTreeService; + @Autowired + private ISarModuleTreeService iSarModuleTreeService; + @ApiOperation("查询父所有资源") @GetMapping("/list") - public ResponseMessage> getAll(SarModelTree sarVppsTree){ - List tsResources = iSarModelTreeService.getAll(sarVppsTree); + public ResponseMessage> getAll(){ + List tsResources = iSarModelTreeService.getAll(null); +// List tsResources = iSarModuleTreeService.getAll(null); return Result.success(tsResources); } @@ -46,4 +54,16 @@ public class SarModelTreeController extends BaseController { List tsResources = iSarModelTreeService.recursionGetChildren(tree); return Result.success(tsResources); } + + @ApiOperation("同步模块单元信息") + @PostMapping("/save") + public ResponseDto save(@RequestBody String json){ + //todo 实现解析并存储的到数据库 + Head head = iSarModuleTreeService.analysisJsonAndStorage(json); + ResponseDto responseDto = new ResponseDto(head); + return responseDto; + } + + + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModuleTreeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModuleTreeDao.java new file mode 100644 index 00000000..01687cc2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModuleTreeDao.java @@ -0,0 +1,8 @@ +package com.adc.da.slrs.sarModelTree.dao; + +import com.adc.da.slrs.sarModelTree.entity.SarModuleTree; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface SarModuleTreeDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/ResponseResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/ResponseResult.java new file mode 100644 index 00000000..4140a8fc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/ResponseResult.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.sarModelTree.entity; + +/** + * 同步数据时使用的返回给其他系统的结果 + */ +public class ResponseResult { + private String GUID; //序列号 业务主键 + + private String MESSAGE; //接口信息 失败时,详细的失败原因 + + private String STATUS; //接口状态 B(失败),S(成功) +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModuleTree.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModuleTree.java new file mode 100644 index 00000000..95dcdca1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModuleTree.java @@ -0,0 +1,76 @@ +package com.adc.da.slrs.sarModelTree.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +@Data +@TableName("sar_module_tree") +public class SarModuleTree { + + @SerializedName("GUID") + @TableId + private String guid; + @SerializedName("FTVSTYPE1") + @TableField("FTVSTYPE1") + private String ftvstype1; + + + @SerializedName("FTVSTYPE2") + @TableField("FTVSTYPE2") + private String ftvstype2; + + @SerializedName("FTVSTYPE3") + @TableField("FTVSTYPE3") + private String ftvstype3; + + @SerializedName("FTVSTYPE4") + @TableField("FTVSTYPE4") + private String ftvstype4; + + @SerializedName("FTVSTYPE5") + @TableField("FTVSTYPE5") + private String ftvstype5; + + @SerializedName("FTVSTYPE6") + @TableField("FTVSTYPE6") + private String ftvstype6; + + @SerializedName("FTVSTYPE7") + @TableField("FTVSTYPE7") + private String ftvstype7; + + @SerializedName("FTVSTYPE9") + @TableField("FTVSTYPE9") + private String ftvstype9; + + @SerializedName("ACLUSERNAMES") + @TableField("ACLUSERNAMES") + private String aclusernames; + + @SerializedName("CREATOR") + @TableField("CREATOR") + private String creator; + + @SerializedName("SERIESID") + @TableField("SERIESID") + private String seriesid; //SF_ID + + @SerializedName("RESERVED") + @TableField("RESERVED") + private String reserved; //SE_ID + + @SerializedName("STARTED") + @TableField("STARTED") + private String started; //SU_ID + + @SerializedName("CREATIONDATE") + @TableField("CREATIONDATE") + private String creationdate; + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModuleTreeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModuleTreeService.java new file mode 100644 index 00000000..a02b6e39 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModuleTreeService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarModelTree.service; + +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import com.adc.da.slrs.sarStandProjectLibrary.entity.Head; + +import java.util.List; + +public interface ISarModuleTreeService { + + List getAll(SarModelTree sarModelTree); + + List recursionGetChildren(SarModelTree parent); + + public Head analysisJsonAndStorage(String json); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModuleTreeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModuleTreeServiceImpl.java new file mode 100644 index 00000000..7a44d284 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModuleTreeServiceImpl.java @@ -0,0 +1,97 @@ +package com.adc.da.slrs.sarModelTree.service.impl; + +import com.adc.da.slrs.sarModelTree.dao.SarModuleTreeDao; +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import com.adc.da.slrs.sarModelTree.entity.SarModuleTree; +import com.adc.da.slrs.sarModelTree.service.ISarModuleTreeService; +import com.adc.da.slrs.sarStandProjectLibrary.entity.Head; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class SarModuleTreeServiceImpl extends ServiceImpl implements ISarModuleTreeService { + + @Autowired() + private SarModuleTreeServiceImpl sarModuleTreeService; + + + @Override + public List getAll(SarModelTree sarModelTree) { + QueryWrapper treeQueryWrapper = new QueryWrapper<>(); + treeQueryWrapper.groupBy("FTVSTYPE1"); + List moduleTreeList = this.baseMapper.selectList(treeQueryWrapper); + + //把SarModuleTree类型的list集合转换为SarModelTree类型的list集合 + List sarModelTreeList = moduleTreeList.stream().map(SarModuleTree -> { + SarModelTree modelTree = new SarModelTree(); + modelTree.setId(SarModuleTree.getGuid()); + modelTree.setName(SarModuleTree.getFtvstype1()); +// modelTree.setModel("TS"+SarModuleTree.get); + return modelTree; + }).collect(Collectors.toList()); + + return sarModelTreeList; + } + + @Override + public List recursionGetChildren(SarModelTree parent) { + return null; + } + + @Override + public Head analysisJsonAndStorage(String json) { + //获取头部 返回结果需要 + Head head = new Head(); + try{ + + //把字符串转换成对象 + JsonObject parse = JsonParser.parseString(json).getAsJsonObject(); + + + //要把jsonObject里的HEAD强转成JsonObject类型 + JsonObject HEAD = (JsonObject) parse.get("HEAD"); + //因为是最后要取的值了,所以就拿到之后把它转换成String类型 + HEAD.get("CONSUMER").getAsString(); + + head.setBIZTRANSACTIONID(HEAD.get("BIZTRANSACTIONID").getAsString()); + + //获取json中的list + JsonArray list = (JsonArray)parse.get("LIST"); + Gson gson = new Gson(); + List moduleTreeList = new LinkedList<>(); + list.forEach(item->{ + JsonObject objectJson=(JsonObject) item; + SarModuleTree sarModuleTree = gson.fromJson(objectJson, SarModuleTree.class); + sarModuleTree.setGuid(UUIDUtils.randomUUID20()); + moduleTreeList.add(sarModuleTree); + }); + + + //进行全量覆盖即删除表中所有数据,之后插入新的数据 + sarModuleTreeService.remove(null); + sarModuleTreeService.saveBatch(moduleTreeList); + head.setSUCCESSCOUNT(String.valueOf(moduleTreeList.size())); + }catch (Exception e){ + head.setERRORCODE("2"); + head.setRESULT("业务失败需要重做,失败原因: "+e.getMessage()); + return head; + } + + head.setERRORCODE("0"); + head.setRESULT("成功"); + return head; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java index 45327104..d1e8776f 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java @@ -291,6 +291,7 @@ public class TsResourceServiceImpl extends ServiceImpl TsResourceQueryWrapper=new QueryWrapper<>(); TsResourceQueryWrapper.eq("PARENT_ID",parent.getId()); TsResourceQueryWrapper.in("ID",getMenuIdList); + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); List children=dao.selectList(TsResourceQueryWrapper); for(TsResource TsResource:children){ TsResource.setChildren(recursionGetListChildren((TsResource),(getMenuIdList))); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java index e5fd8b62..7077606a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java @@ -104,6 +104,7 @@ public class SarPublicIdeaAllController extends BaseController if (!StringUtils.isEmpty(cid)){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(SarPublicIdeaAll.CID,cid); + wrapper.orderByAsc("part_code"); data=sarPublicIdeaAllDao.selectList(wrapper); } List standExcel=new ArrayList<>(); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java index 35f62d53..a56520f0 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java @@ -39,7 +39,7 @@ public class SarPublicIdeaController extends BaseController { @ApiOperation(value = "分页查询") @GetMapping("/SelectAllPage") public ResponseMessage selectAllPage(@RequestParam(defaultValue="1")Integer page,@RequestParam(defaultValue="10")Integer size,String categorg, String cname, - String start, String end){ + String start, String end,String type){ Date startdate = null; Date enddate = null; SimpleDateFormat formater = new SimpleDateFormat(); @@ -54,7 +54,7 @@ public class SarPublicIdeaController extends BaseController { } catch (ParseException e) { e.printStackTrace(); } - IPage Publiclist =sarPublicIdeaService.selectAllP(page,size,categorg,cname,startdate,enddate); + IPage Publiclist =sarPublicIdeaService.selectAllP(page,size,categorg,cname,startdate,enddate,type); return Result.success(Publiclist); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java index 470fb13a..6c21bd31 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java @@ -66,5 +66,11 @@ public class SarPublicIdea extends BaseEntity { @TableField("uniques") private String uniques; + @TableField("files") + private String files; + + @TableField("files_name") + private String filesName; + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java index 10e58c4a..886d4dc4 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java @@ -20,6 +20,6 @@ import java.util.Date; public interface ISarPublicIdeaService extends IService { String add(SarPublicIdea sarPublicIdea); - IPage selectAllP(Integer page, Integer size, String categorg, String cname, Date startdate, Date enddate); + IPage selectAllP(Integer page, Integer size, String categorg, String cname, Date startdate, Date enddate, String type); IPage selectAllDynamic(SeByoDto seByoDto); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java index 9d5b3771..f5c6e163 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java @@ -1,7 +1,6 @@ package com.adc.da.slrs.sarStandIdea.service.Impl; - import com.adc.da.slrs.sarStandIdea.dao.SarPublicIdeaDao; import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdea; @@ -22,7 +21,7 @@ import java.util.Date; /** *

- * 服务实现类 + * 服务实现类 *

* * @author super_liu @@ -36,7 +35,7 @@ public class SarPublicIdeaServiceImpl extends ServiceImpl selectAllP(Integer p, Integer size, String category, String cname, Date start, Date end) { + public IPage selectAllP(Integer p, Integer size, String category, String cname, Date start, Date end, String type) { QueryWrapper list = new QueryWrapper<>(); - list.like(StringUtils.isNotEmpty(category),"category",category) - .like(StringUtils.isNotEmpty(cname),"cname",cname) - .ge(start!=null,"start_time",start) - .le(end!=null,"end_time",end) - .orderByAsc("end_time"); - Page page = new Page<>(p,size); + if ("1".equals(type)) { + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cname", cname) + .ge(start != null, "start_time", start) + .le(end != null, "end_time", end) + .orderByDesc("start_time"); + } else { + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cname", cname) + .ge("end_time", new Date()) + .orderByAsc("end_time"); + } + Page page = new Page<>(p, size); IPage userIPage = sarPublicIdeaDao.selectPage(page, list); - System.out.println("总条数"+userIPage.getTotal()); - System.out.println("总页数"+userIPage.getPages()); + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); return userIPage; } /** - * * @param seByoDto * @return */ @@ -72,33 +77,33 @@ public class SarPublicIdeaServiceImpl extends ServiceImpl wrapper = new QueryWrapper<>(); - if (sar.getCategory()!=null&&sar.getCategory().length()!=0){ - wrapper.like("category",sar.getCategory()); + if (sar.getCategory() != null && sar.getCategory().length() != 0) { + wrapper.like("category", sar.getCategory()); } - if (sar.getCname()!=null&&sar.getCname().length()!=0){ - wrapper.like("cname",sar.getCname()); + if (sar.getCname() != null && sar.getCname().length() != 0) { + wrapper.like("cname", sar.getCname()); } - if (sar.getStartTime()!=null){ - wrapper.le("start_time",sar.getStartTime()); + if (sar.getStartTime() != null) { + wrapper.le("start_time", sar.getStartTime()); } - if (sar.getEndTime()!=null){ - wrapper.gt("end_time",sar.getEndTime()); + if (sar.getEndTime() != null) { + wrapper.gt("end_time", sar.getEndTime()); } Page page = new Page<>(seByoDto.getPage(), seByoDto.getSize()); IPage userIPage = sarPublicIdeaDao.selectPage(page, wrapper); - System.out.println("总条数"+userIPage.getTotal()); - System.out.println("总页数"+userIPage.getPages()); + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); return userIPage; diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java index c1268581..44b98724 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java @@ -1,5 +1,6 @@ package com.adc.da.slrs.sarStandItems.entity; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -22,9 +23,13 @@ public class SarStandItemsDto { @ApiModelProperty(value = "条目编号") private String itemsNum; - @ApiModelProperty(value = "内容") + @ApiModelProperty(value = "名称") private String itemsName; + @ApiModelProperty(value = "内容") + @TableField("TERMS_CONDITIONS") + private String termsConditions; + @ApiModelProperty(value = "责任部门") private String responsibleUnit; @@ -48,4 +53,8 @@ public class SarStandItemsDto { private String zccssrq; + private String technicalRequir; + + private String changePoint; + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java index 056c111f..4cc9288f 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java @@ -19,8 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** *

@@ -193,11 +192,56 @@ public class SarStandItemsServiceImpl extends ServiceImpl findAllItems(String type,String[] ids){ - return dao.selectAllItemsByIds(type,ids); + List list=dao.selectAllItemsByIds(type,ids); + List res=new ArrayList<>(); + if (null == list || list.isEmpty()){ + return list; + }else { + List integerList=new ArrayList<>(); + Map> map=new HashMap<>(); + list.forEach(sarStandItemsDto -> { + int a= sarStandItemsDto.getItemsNum().indexOf("."); + String mark=sarStandItemsDto.getItemsNum(); + if (a>0){ + mark=mark.substring(0,a); + } + if (null != map.get(Integer.valueOf(mark))){ + map.get(Integer.valueOf(mark)).add(sarStandItemsDto); + }else { + integerList.add(Integer.valueOf(mark)); + List middle=new ArrayList<>(); + middle.add(sarStandItemsDto); + map.put(Integer.valueOf(mark),middle); + } + }); + Collections.sort(integerList); + integerList.forEach(integer -> { + res.addAll(map.get(integer)); + }); + + return res; + } } public List querySarItemAndInterpretation(FindSarItemsPageReqDTO page){ + //排序 + if (page.getOrderBy()!=null && page.getOrder()!=null){ + + switch (page.getOrderBy()){ + case "itemsNum" : page.setOrderBy("ITEMS_NUM"); break; + default:page.setOrderBy("ITEMS_NUM"); page.setOrder("DESC"); + } + + switch (page.getOrder()){ + case "descending":page.setOrder("DESC");break; + default:page.setOrder("ASC"); + } + }else { + page.setOrderBy("ITEMS_NUM"); + page.setOrder("DESC"); + } + //分页查询的总数 Integer count=dao.sarItemCount(page); page.getPager().setRowCount(count); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java index 26d1d7d5..b82fafa3 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java @@ -14,6 +14,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; import com.adc.da.base.web.BaseController; @@ -33,7 +34,8 @@ import java.util.*; */ @RestController @Api(description = "|SarStandProjectLibrary|") -@RequestMapping("/api/sarStandProjectLibrary") +@RequestMapping("/${restPath}/sarStandProjectLibrary") +@Slf4j public class SarStandProjectLibraryController extends BaseController { @Resource private SarStandProjectLibraryServiceImpl sarStandProjectLibraryService; @@ -227,9 +229,11 @@ public class SarStandProjectLibraryController extends BaseController companies = new ArrayList<>(); ResponseDto responseDto = new ResponseDto(head,companies); + //todo 未确定返回内容 Company company = new Company(); company.setCOMPANY_CODE(""); company.setFISCAL_YEAR(""); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/ResponseDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/ResponseDto.java index 074c12db..277525d9 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/ResponseDto.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/ResponseDto.java @@ -3,6 +3,7 @@ package com.adc.da.slrs.sarStandProjectLibrary.entity; import lombok.Data; +import java.util.ArrayList; import java.util.List; @Data public class ResponseDto { @@ -17,14 +18,20 @@ public class ResponseDto { // } - List LIST; + List LIST; - public ResponseDto(Head HEAD, List LIST) { + public ResponseDto(Head HEAD, List LIST) { this.HEAD = HEAD; this.LIST = LIST; } - public ResponseDto() { - + public ResponseDto(Head HEAD) { + ArrayList companies = new ArrayList<>(); + Company company = new Company(); + company.setCOMPANY_CODE(""); + company.setFISCAL_YEAR(""); + companies.add(company); + this.LIST=companies; + this.HEAD=HEAD; } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java index 001a2d7f..2632a25e 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java @@ -75,25 +75,25 @@ public class SarStandProjectLibraryServiceImpl extends ServiceImpl { @Autowired @@ -39,8 +39,10 @@ public class SarStandProjectTeamController extends BaseController companies = new ArrayList<>(); + //todo 未确定返回内容 Company company = new Company(); company.setCOMPANY_CODE(""); company.setFISCAL_YEAR(""); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java index 92232593..2b56d7a3 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java @@ -75,6 +75,7 @@ public class SarStandProjectTeamServiceImpl extends ServiceImpl page = iSarStandardComplianceProductAssessService.page(iPage, queryWrapper); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java index 06bf3717..18fc22cd 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java @@ -218,7 +218,10 @@ public class SarStandardsInfoController extends BaseController int result = sarStandardsInfoEOService.deleteSarStandards(ids); if (result > 0) { return Result.success("0", "删除成功", result); - } else { + }else if(result == -1) { + return Result.success("-1","所选的标准下挂有标准,无法删除"); + } + else { return Result.error("删除失败"); } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java index 59218feb..9e07c26a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java @@ -31,7 +31,7 @@ public interface SarStandardsInfoDao extends BaseMapper { List selectStandardsByStandnumber(SarStandardsInfo sarStandardsInfoEO); - List queryStandInfoByList(@Param("limit") Integer limit); + List queryStandInfoByList(@Param("limit") Integer limit,@Param("typeCode") String typeCode); Integer selectStandColumn(@Param("columnName") String columnName); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java index 291327f1..ec5291e7 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java @@ -155,6 +155,8 @@ public class SarStandardsInfo extends BaseEntity { @TableField(exist = false) private String standNatureShow; // 标准性质显示名称 @TableField(exist = false) + private String standTextStatusShow; // 标准文本状态显示名称 + @TableField(exist = false) private String sychronId; // 同步数据ID @TableField(exist = false) private List dicTypeList = new ArrayList(); // 记录标准涉及到的所有数据字典数据 @@ -607,5 +609,13 @@ public class SarStandardsInfo extends BaseEntity { public void setStandSystemName(String standSystemName) { this.standSystemName = standSystemName; } + + public String getStandTextStatusShow() { + return standTextStatusShow; + } + + public void setStandTextStatusShow(String standTextStatusShow) { + this.standTextStatusShow = standTextStatusShow; + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java index 3528e41d..341c2033 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java @@ -15,6 +15,8 @@ import com.adc.da.search.entity.StandLawsEO; import com.adc.da.search.service.StandLawsSearchService; import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarLawsAttrDetailedList; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.impl.SarLawsAttrDetailedListServiceImpl; import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; import com.adc.da.slrs.sarLawsInfo.page.SarLawsItemsEOPage; @@ -49,6 +51,10 @@ import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; import com.adc.da.slrs.sarUser.service.ITsUserService; import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.slrs.tsDictionaryType.dao.TsDicTypeDao; +import com.adc.da.slrs.tsDictionaryType.dao.TsDictionaryDao; +import com.adc.da.slrs.tsDictionaryType.entity.TsDicType; +import com.adc.da.slrs.tsDictionaryType.entity.TsDictionary; import com.adc.da.sys.common.SelectionResult; import com.adc.da.sys.constant.ValueStateEnum; import com.adc.da.sys.dao.DicTypeEODao; @@ -203,6 +209,12 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl sarlist) throws Exception { for (SarStandardsInfo row : sarlist) { attrInfoDetails(row); Map getAttrMap = row.getAttrInfoMap(); if (getAttrMap != null && getAttrMap.size() > 0) { + //存在的分解单文本名称列表 + LinkedList itemExistList = new LinkedList<>(); + getAttrMap.put("itemExistList",itemExistList); for (Map.Entry entry : getAttrMap.entrySet()) { String name = entry.getKey(); String value = ""; @@ -452,6 +469,15 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl fileObj = attFileEOService.getMultiFileInfos(value); entry.setValue(fileObj); + //以标准id和文本类型查询分解单表 有数据设标记为为 1 + FindSarItemsPageReqDTO sarItemCount = new FindSarItemsPageReqDTO(); + sarItemCount.setStandId(row.getId()); + sarItemCount.setFileType(name); + Integer sarItemsCount = standItemsDao.sarItemCount(sarItemCount); + if (sarItemsCount>0){ + //存在分解单的文本名称存入列表 + itemExistList.add(name); + } } }else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { value = entry.getValue().toString(); @@ -1261,13 +1287,32 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl detailedListQueryWrapper = new QueryWrapper<>(); + + String[] idArr = ids.split(","); SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); sarStandardsInfoEO.setValidFlag("1"); sarStandardsInfoEO.setModifyTime(new Date()); int countResult = 0; + //如果清单下挂着标准A,在标准库里删除标准A的话,加个验证 不让删这个标准 + for (String id : idArr){ + detailedListQueryWrapper.eq("stand_id",id); + + int count = detailedListService.count(detailedListQueryWrapper); + if (count>0){ + countResult = -1; + return countResult; + } + + } + for (String id : idArr) { + countResult++; //查询删除的标准信息(为删除代替关系) SarStandardsInfo getDelStandInfoList = dao.selectById(id); @@ -2018,9 +2063,28 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl getStandInfoByList(String limit){ - return dao.queryStandInfoByList(Integer.valueOf(limit)); + + //查询文本状态为即将实施的 + QueryWrapper dictionaryWrapper = new QueryWrapper<>(); + dictionaryWrapper.select("ID") + .eq("DICTIONARY_NAME","文本状态"); + List> dicMaps = tsDictionaryDao.selectMaps(dictionaryWrapper); + + + QueryWrapper dicTypeWrapper = new QueryWrapper<>(); + dicTypeWrapper.select("DIC_TYPE_CODE") + .eq("DIC_ID",dicMaps.get(0).get("ID").toString()) + .eq("DIC_TYPE_NAME","即将实施"); + + List> typeMaps = tsDicTypeDao.selectMaps(dicTypeWrapper); + + + List standInfoList = dao.queryStandInfoByList(Integer.valueOf(limit), typeMaps.get(0).get("DIC_TYPE_CODE").toString()); + return standInfoList; } /** @@ -2162,8 +2226,8 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl { } + @ApiOperation("查询人接口悬浮窗") + @GetMapping("/selectUp") + public ResponseMessage> selectUp(@Param("uname") String uname) throws Exception { + return Result.success(tsUserService.selectByName(uname)); + } + + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java index d53fd821..012cc4e8 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java @@ -3,10 +3,7 @@ package com.adc.da.slrs.sarUser.dao; import com.adc.da.http.ResponseMessage; import com.adc.da.slrs.sarUser.entity.TsUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; import java.util.List; @@ -20,6 +17,9 @@ import java.util.List; */ public interface TsUserDao extends BaseMapper { + @Update("truncate table ts_user") + void deleteUser(); + /** * 查询用户已经绑定的岗位ID */ diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java index d3da5143..40166850 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java @@ -143,9 +143,11 @@ public class TsUser extends BaseEntity { private List positions; @ApiModelProperty("当前页") + @TableField(exist = false) private Integer current; @ApiModelProperty("每页条数") + @TableField(exist = false) private Integer size; public TsUser() { diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UpDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UpDTO.java new file mode 100644 index 00000000..730b9910 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UpDTO.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.sarUser.entity; + +import lombok.Data; + +@Data +public class UpDTO { + + + + private String value; + + private String id; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java index 7501950f..3703d472 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java @@ -4,6 +4,7 @@ import com.adc.da.http.ResponseMessage; import com.adc.da.slrs.sarMenu.entity.SarMenu; import com.adc.da.slrs.sarResource.entity.TsResource; import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.entity.UpDTO; import com.adc.da.slrs.sarUser.entity.UserPositionVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -20,6 +21,7 @@ import java.util.List; */ public interface ITsUserService extends IService { + void deleteUser(); /** * 通过机构ID查询人员 @@ -74,4 +76,6 @@ public interface ITsUserService extends IService { void parseUser() throws Exception; List getSecondMenusByUserId(String userId); + + List selectByName(String name); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java index 900ec013..5f361bea 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java @@ -14,6 +14,7 @@ import com.adc.da.slrs.sarRole.service.ITsRoleService; import com.adc.da.slrs.sarUser.entity.SyncUser; import com.adc.da.slrs.sarUser.entity.TsUser; import com.adc.da.slrs.sarUser.dao.TsUserDao; +import com.adc.da.slrs.sarUser.entity.UpDTO; import com.adc.da.slrs.sarUser.entity.UserPositionVO; import com.adc.da.slrs.sarUser.service.ITsUserService; import com.adc.da.sync.service.SyncUserService; @@ -31,6 +32,8 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -60,6 +63,11 @@ public class TsUserServiceImpl extends ServiceImpl implements @Autowired private TsPositionDao tsPositionDao; + + public void deleteUser(){ + tsUserDao.deleteUser(); + }; + /** * 通过机构ID查询人员 * @return List @@ -70,7 +78,7 @@ public class TsUserServiceImpl extends ServiceImpl implements Page tsUserPage = new Page<>(); System.out.println(tsUser.getCurrent()); System.out.println(tsUser.getSize()); - List tsUserList = tsUserDao.getUserAndPositionPage((tsUser.getCurrent()-1)*tsUser.getSize(),1*tsUser.getSize(),tsUser); + List tsUserList = tsUserDao.getUserAndPositionPage((tsUser.getCurrent()-1)*tsUser.getSize(),tsUser.getSize(),tsUser); Integer total = tsUserDao.getUserAndPositionCount(tsUser); tsUserPage.setRecords(tsUserList); tsUserPage.setCurrent(tsUser.getCurrent()); @@ -145,6 +153,14 @@ public class TsUserServiceImpl extends ServiceImpl implements UserEO userEO=UserUtils.getUser(); String userId= userEO.getUsid(); List positionIds=tsUserDao.selectPositionIds(userId); + /** + * 当用户没有所属岗位,默认给一个other岗位,适用于特定权限外的其他用户 + * 用户同步时需要将用户配置的系统内的岗位保留 + */ + + if(positionIds == null || positionIds.isEmpty()){ + positionIds = Arrays.asList(new String[]{"other"}); + } List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); List menuIds=tsRoleService.getMenuIdsByRoleIds(roleIds); return sarMenuService.getMenuByIds(menuIds); @@ -273,4 +289,20 @@ public class TsUserServiceImpl extends ServiceImpl implements List menuIds=tsRoleService.getMenuIdsByRoleIds(roleIds); return sarMenuService.getSecondMenuByIds(menuIds); } + + @Override + public List selectByName(String name) { + QueryWrapper tsUserQueryWrapper=new QueryWrapper<>(); + tsUserQueryWrapper.like("ACCOUNT",name); + tsUserQueryWrapper.or().like("UNAME",name); + List res= tsUserDao.selectList(tsUserQueryWrapper); + List result=new ArrayList<>(); + res.forEach(tsUser -> { + UpDTO upDTO=new UpDTO(); + upDTO.setValue(tsUser.getUname()+"("+tsUser.getAccount()+")"); + upDTO.setId(tsUser.getUserId()); + result.add(upDTO); + }); + return result; + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java index 329e1fe9..20161d30 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java @@ -7,12 +7,18 @@ import java.util.List; import com.adc.da.base.web.BaseController; import com.adc.da.http.PageInfo; import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandItems.service.impl.SarStandItemsServiceImpl; import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEOPage; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; import com.adc.da.slrs.standardSplit.entity.SarLawsInfoEO; import com.adc.da.slrs.standardSplit.service.*; import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -162,21 +168,56 @@ public class SarFileSplitInfoEOController extends BaseController sarFileSplitInfoEOList) throws Exception { - for (SarFileSplitInfoEO sarFileSplitInfoEO:sarFileSplitInfoEOList) { - List getList = new ArrayList<>(); - List sarLawsInfoEOList = new ArrayList<>(); + List querySame = null; + + /** + * 删除原来的分解单 + */ + + QueryWrapper removeWrapper = new QueryWrapper<>(); + removeWrapper.eq("STAND_ID",sarFileSplitInfoEOList.get(0).getStandId()) + .eq("FILE_TYPE",sarFileSplitInfoEOList.get(0).getFileType()); + ServiceImpl.remove(removeWrapper); + for (SarFileSplitInfoEO sarFileSplitInfoEO : sarFileSplitInfoEOList) { +// List getList = new ArrayList<>(); +// List sarLawsInfoEOList = new ArrayList<>(); + + querySame = sarFileSplitInfoEOService.querySame(sarFileSplitInfoEO); + + /** + * 使选定的拆分条款 插入分解单 + */ + querySame.forEach(item->{ + QueryWrapper sarStandItemsQueryWrapper = new QueryWrapper<>(); + sarStandItemsQueryWrapper.eq("edit_flag",item.getEditFlag()); + SarStandItems sarStandItems = new SarStandItems(); + sarStandItems.setStandId(sarFileSplitInfoEO.getStandId()); + sarStandItems.setEditFlag(item.getEditFlag()); + sarStandItems.setItemsName(item.getItemsName()); + sarStandItems.setTermsConditions(item.getItermsConditions()); + sarStandItems.setItemsNum(item.getItemsNum()); + sarStandItems.setId(UUIDUtils.randomUUID20()); + sarStandItems.setFileType(sarFileSplitInfoEO.getFileType()); + ServiceImpl.saveOrUpdate(sarStandItems,sarStandItemsQueryWrapper); + + }); + + //根据标准号查询标准是否存在 - String standNum=""; - if (StringUtils.isNotEmpty(sarFileSplitInfoEO.getStandId())) { - standNum=sarFileSplitInfoEO.getShowNumber(); - } else if(StringUtils.isNotEmpty(sarFileSplitInfoEO.getStandNumSplit())){ - standNum=sarFileSplitInfoEO.getStandNumSplit(); - }else{ - return Result.error("标准号不能为空"); - } +// String standNum=""; +// if (StringUtils.isNotEmpty(sarFileSplitInfoEO.getStandId())) { +// standNum=sarFileSplitInfoEO.getShowNumber(); +// } else if(StringUtils.isNotEmpty(sarFileSplitInfoEO.getStandNumSplit())){ +// standNum=sarFileSplitInfoEO.getStandNumSplit(); +// }else{ +// return Result.error("标准号不能为空"); +// } // if (sarFileSplitInfoEO.getFileType().equals("ZCWB") || sarFileSplitInfoEO.getFileType().equals("GCGJ")) { // SarLawsInfoEOPage page = new SarLawsInfoEOPage(); // page.setLawsType("FOREIGN"); @@ -201,7 +242,8 @@ public class SarFileSplitInfoEOController extends BaseController { int deleteByIds(SarFileSplitInfoEO sarFileSplitInfoEO); + List querySame (SarFileSplitInfoEO sarFileSplitInfoEO); + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java index f54ed2ad..e99a16d7 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java @@ -4,6 +4,7 @@ import com.adc.da.base.page.BasePage; import com.adc.da.person.entity.PersonMsgEO; import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEOPage; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; import java.util.List; @@ -30,4 +31,6 @@ public interface SarFileSplitInfoEOService { PersonMsgEO updateNew(PersonMsgEO val) throws Exception; String getClauseBySplitId(String standNum, String fileType); + + List querySame (SarFileSplitInfoEO sarFileSplitInfoEO); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java index 91b02664..6c6bf9ca 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java @@ -2,6 +2,7 @@ package com.adc.da.slrs.standardSplit.service.impl; import com.adc.da.att.service.IAttFileEOService; import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.slrs.sarStandAttrDetails.service.ISarStandAttrDetailsService; import com.adc.da.slrs.sarStandItems.entity.SarStandItems; import com.adc.da.slrs.standardSplit.dao.*; import com.adc.da.slrs.standardSplit.service.SarLawsInfoEOService; @@ -10,8 +11,11 @@ import com.adc.da.base.page.BasePage; import com.adc.da.common.ReadWordTable; import com.adc.da.slrs.standardSplit.entity.*; import com.adc.da.slrs.standardSplit.service.SarFileSplitInfoEOService; +import com.adc.da.sys.common.SelectionResult; import com.adc.da.sys.util.LoginUserUtil; import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.poi.xwpf.usermodel.*; @@ -46,6 +50,9 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService { private static final Logger logger = LoggerFactory.getLogger(SarFileSplitInfoEOServiceImpl.class); + @Autowired + private ISarStandAttrDetailsService sarStandAttrDetailsEOService; + @Autowired private IAttFileEOService attFileEOService; @Value("${file.path}") @@ -335,7 +342,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService middle=messageList; for (SarFileSplitItemsEO mis:messageList) { mis.setWorkFlowShow("1"); - if (mis.getItemsNum().equals("1") || mis.getItemsNum().startsWith("1.") || mis.getItemsNum().equals("2") || mis.getItemsNum().startsWith("2.") || mis.getItemsNum().equals("3") || mis.getItemsNum().startsWith("3.")){ + if (mis.getItemsNum().equals("2") || mis.getItemsNum().startsWith("2.") || mis.getItemsNum().equals("3") || mis.getItemsNum().startsWith("3.")){ mis.setWorkFlowShow("0"); } else { @@ -349,6 +356,11 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService } } } + messageList.forEach(sarFileSplitItemsEO -> { + if (sarFileSplitItemsEO.getItemsNum().equals("1")){ + sarFileSplitItemsEO.setWorkFlowShow("1"); + } + }); sarFileSplitMenuEODao.insertForeach(treeList); sarFileSplitItemsEODao.insertForeach(messageList); sarFileSplitItemsValEODao.insertForeach(itemValList); @@ -583,11 +595,11 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService page.getPager().setRowCount(rowCount); List rows = sarFileSplitInfoEODao.queryByPageOwn(page); Map map = new HashMap<>(); - map.put("CA", "草稿"); - map.put("ZQYJG", "征求意见稿"); - map.put("BPG", "报批稿"); - map.put("SSG", "送审稿"); - map.put("FBGBJBD", "发布稿(必读)"); + + List selectionResults = sarStandAttrDetailsEOService.selectFileFieldForSel(null); + selectionResults.forEach(detailsEO->{ + map.put(detailsEO.getValue(),detailsEO.getLabel()); + }); if (rows != null && !rows.isEmpty()) { for (SarFileSplitInfoEO infoEO : rows) { @@ -730,4 +742,9 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService return rows.get(0).getId(); } + @Override + public List querySame (SarFileSplitInfoEO sarFileSplitInfoEO){ + return dao.querySame(sarFileSplitInfoEO); + }; + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java index 4895a277..a49fc58c 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java @@ -31,7 +31,7 @@ public class FieldConvertUtil { "文本状态,发布日期"; // 导出基础表字段 //删除 实施日期 2021-05-28 public static String exportBaseFieldNamesForeign = "标准类别,标准编号,标准年份,中文名称,英文名称," + - "文本状态,发布日期,文本说明,是否纳入认证清单,体系类别,标签,适用产品线,适用认证,能源类型,责任工程师," + + "文本状态,发布日期,是否纳入认证清单,体系类别,标签,适用认证,能源类型," + "关联文件,发布稿,增补件,勘误件,草案"; // 导出基础表字段 public static String exportAttrFieldNamesInland = "归口管理部门,发布机构,工作组信息,我司参与深度,适用车辆类型,要求类型," + diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java index 7cd978cf..47f597c1 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java @@ -101,10 +101,14 @@ public class StandExportUtil { Map attrValueMap = sarStandardsInfoEO.getAttrInfoMap(); switch (name) { case "标准性质": - value = sarStandardsInfoEO.getStandNature(); + value = sarStandardsInfoEO.getStandNatureShow(); break; case "是否纳入认证清单": - value = sarStandardsInfoEO.getIsRelateAccess(); + switch (sarStandardsInfoEO.getIsRelateAccess()){ + case "0": value="否"; break; + case "1": value="是"; break; + default:value=""; + } break; case "标准体系": value = sarStandardsInfoEO.getStandSystem(); @@ -137,8 +141,8 @@ public class StandExportUtil { case "英文名称": value = sarStandardsInfoEO.getStandEnName(); break; - case "标准状态": - value = sarStandardsInfoEO.getStandStateShow(); + case "文本状态": + value = sarStandardsInfoEO.getStandTextStatusShow(); break; case "发布日期": if (sarStandardsInfoEO.getIssueTime() != null) { diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml index 748bf902..4ed21b75 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml @@ -408,12 +408,14 @@ @@ -729,7 +731,8 @@ - SELECT ${fieldInfo} + SELECT STAND_ID,${fieldInfo} FROM SAR_BUSS_STAND_ATTR_INFO WHERE valid_flag=0 and stand_id = #{standId} @@ -161,4 +161,4 @@ FROM SAR_BUSS_STAND_ATTR_INFO WHERE stand_id = #{standId} and valid_flag=0 - \ No newline at end of file + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml index 93d64a17..2cee4165 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml @@ -45,22 +45,17 @@ put_time, issue_time,stand_en_name,stand_name, stand_code, id,apply_country, stand_nature, stand_sort,text_status_buss - stand_year,dicapplyCountry.DIC_TYPE_NAME as applyCountryShow,dicstandSort.DIC_TYPE_NAME as standSortShow, - dicstandNature.DIC_TYPE_NAME as standNatrueShow,SAR_BUSSIONESS_STAND.modify_time, + SAR_BUSSIONESS_STAND.modify_time, SAR_BUSSIONESS_STAND.creation_time, SAR_BUSSIONESS_STAND.valid_flag, SAR_BUSSIONESS_STAND.apply_country, SAR_BUSSIONESS_STAND.stand_nature,SAR_BUSSIONESS_STAND.stand_sort, stand_status, replaced_stand_num,replace_stand_num,put_time,issue_time,stand_en_name, - stand_name, stand_code,SAR_BUSSIONESS_STAND.id,dicstandStatus.DIC_TYPE_NAME as standStatusShow,SAR_BUSSIONESS_STAND.text_status_buss + stand_name, stand_code,SAR_BUSSIONESS_STAND.id,SAR_BUSSIONESS_STAND.text_status_buss - stand_year,dicapplyCountry.DIC_TYPE_NAME,dicstandSort.DIC_TYPE_NAME,dicstandNature.DIC_TYPE_NAME,SAR_BUSSIONESS_STAND.modify_time, - SAR_BUSSIONESS_STAND.creation_time, SAR_BUSSIONESS_STAND.valid_flag, - SAR_BUSSIONESS_STAND.apply_country, SAR_BUSSIONESS_STAND.stand_nature, - SAR_BUSSIONESS_STAND.stand_sort, stand_status, replaced_stand_num, replace_stand_num,put_time, issue_time, stand_en_name, stand_name, stand_code, - SAR_BUSSIONESS_STAND.id,dicstandStatus.DIC_TYPE_NAME + SAR_BUSSIONESS_STAND.id @@ -354,10 +349,6 @@ - left join TS_DICTYPE dicstandStatus ON ( dicstandStatus.dic_type_code = SAR_BUSSIONESS_STAND.TEXT_STATUS_BUSS AND dicstandStatus.dic_id IS NOT NULL and dicstandStatus.valid_flag = 0) - left join TS_DICTYPE dicstandNature ON ( dicstandNature.dic_type_code = SAR_BUSSIONESS_STAND.STAND_NATURE AND dicstandNature.dic_id IS NOT NULL and dicstandNature.valid_flag = 0) - left join TS_DICTYPE dicstandSort ON ( dicstandSort.dic_type_code = SAR_BUSSIONESS_STAND.STAND_SORT AND dicstandSort.dic_id IS NOT NULL and dicstandSort.valid_flag = 0) - left join TS_DICTYPE dicapplyCountry ON ( dicapplyCountry.dic_type_code = SAR_BUSSIONESS_STAND.APPLY_COUNTRY AND dicapplyCountry.dic_id IS NOT NULL and dicapplyCountry.valid_flag = 0) left join SAR_BUSS_STAND_MENU ON SAR_BUSSIONESS_STAND.id = SAR_BUSS_STAND_MENU.buss_stand_id left join TS_RESOURCE on SAR_BUSS_STAND_MENU.menu_id = TS_RESOURCE.id left join SAR_BUSS_STAND_ATTR_INFO on (SAR_BUSS_STAND_ATTR_INFO.STAND_ID = SAR_BUSSIONESS_STAND.id and SAR_BUSS_STAND_ATTR_INFO.valid_flag=0) @@ -460,6 +451,9 @@ and SAR_BUSSIONESS_STAND.STAND_STATUS = #{standStatus} + + and SAR_BUSSIONESS_STAND.STAND_EN_NAME like concat('%', #{standEnName},'%') + and (${advanceSearchStr}) @@ -581,14 +575,7 @@ @@ -68,4 +68,8 @@ + + + delete from ts_institution + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml index 48a89181..007ef002 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml @@ -122,7 +122,31 @@ #{item} - group by a.ID + + UNION + SELECT a.ID,a.STAND_NUMBER as standNumber,a.STAND_NAME as standName,a.STAND_EN_NAME,b.NYLX,b.SSRQ as SSRQ,b.XCXSSRQ as XCXSSRQGJ,b.ZCCSSRQ as ZCCSSRQGJ, + b.ZRBM,b.SYCPX,b.CYCVPPSBM,b.CYCVPPSCN,b.KCCVPPSBM,b.KCCVPPSCN,b.CLLX as typeApplicable,a.STAND_SORT as standSortShow, + a.STAND_YEAR as standYear,ISSUE_TIME as issueTime,a.STAND_TYPE as standType,a.TEXT_STATUS as textStatus + FROM sar_standards_info a LEFT JOIN sar_stand_attr_info b on + a.ID = b.STAND_ID + left join sar_stand_items ssi on ssi.stand_id = a.id + + + (a.STAND_NUMBER LIKE concat ('%',#{standName,jdbcType=VARCHAR},'%') + or a.STAND_NAME LIKE concat ('%',#{standName,jdbcType=VARCHAR},'%')) + and + + + ssi.FILE_TYPE = #{fileType} and + + + a.STAND_TYPE = #{standType} and + + a.ID IN + + #{item} + + limit #{start},#{end} @@ -150,13 +174,36 @@ #{item} - group by a.ID + UNION + SELECT a.ID,a.STAND_NUMBER as standNumber,a.STAND_NAME as standName,a.STAND_EN_NAME,b.NYLX,b.SSRQ as SSRQ,b.XCXSSRQ as XCXSSRQGJ,b.ZCCSSRQ as ZCCSSRQGJ, + b.ZRBM,b.SYCPX,b.CYCVPPSBM,b.CYCVPPSCN,b.KCCVPPSBM,b.KCCVPPSCN,b.CLLX as typeApplicable,a.STAND_SORT as standSortShow, + a.STAND_YEAR as standYear,ISSUE_TIME as issueTime,a.STAND_TYPE as standType,a.TEXT_STATUS as textStatus + FROM sar_standards_info a LEFT JOIN sar_stand_attr_info b on + a.ID = b.STAND_ID + left join sar_stand_items ssi on ssi.stand_id = a.id + + + (a.STAND_NUMBER LIKE concat ('%',#{standName,jdbcType=VARCHAR},'%') + or a.STAND_NAME LIKE concat ('%',#{standName,jdbcType=VARCHAR},'%')) + and + + + ssi.FILE_TYPE = #{fileType} and + + + a.STAND_TYPE = #{standType} and + + a.ID IN + + #{item} + + @@ -73,6 +74,7 @@ and STAND_SERIAL_NUMBER like concat(concat('%',#{sar.standSerialNumber}),'%') + or sar_stand_unqualified.STAND_NAME like concat(concat('%',#{sar.standSerialNumber}),'%') diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml index a6a1d552..18a45507 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml @@ -8,13 +8,15 @@ - + + + - left join TS_DICTYPE dicountry on (dicountry.dic_type_code = SAR_STANDARDS_INFO.country and dicountry.dic_id is - not null and dicountry.valid_flag = 0) + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null) - left join TS_DICTYPE dicstandState on (dicstandState.dic_type_code = SAR_STANDARDS_INFO.stand_state and - dicstandState.dic_id is not null and dicstandState.valid_flag = 0 ) - left join TS_DICTYPE dicstandNature on (dicstandNature.dic_type_code = SAR_STANDARDS_INFO.stand_nature and - dicstandNature.dic_id is not null and dicstandNature.valid_flag = 0 ) + + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id left join TS_RESOURCE on SAR_STAND_MENU.menu_id = TS_RESOURCE.id left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) @@ -408,6 +409,9 @@ and stand_name like concat(concat('%',#{standName}),'%') + or STAND_NUMBER like concat(concat('%',#{standName}),'%') + or STAND_YEAR like concat(concat('%',#{standName}),'%') + or STAND_SORT like concat(concat('%',#{standName}),'%') and stand_en_name like concat(concat('%',#{standEnName}),'%') @@ -494,7 +498,7 @@ and SAR_STANDARDS_INFO.stand_sort = #{standSort} - + and SAR_STANDARDS_INFO.STAND_YEAR = #{standYear} @@ -547,19 +551,7 @@ (select tmp_tb.* from (select ,SAR_STAND_ATTR_INFO.CHJL AS CHJL, - (case WHEN dicstandState.DIC_TYPE_NAME = '草稿' THEN 1 - WHEN dicstandState.DIC_TYPE_NAME = '征求意见稿' THEN 2 - WHEN dicstandState.DIC_TYPE_NAME = '送审稿' THEN 3 - WHEN dicstandState.DIC_TYPE_NAME = '报批稿' THEN 4 - WHEN dicstandState.DIC_TYPE_NAME = '发布稿' THEN 5 - WHEN dicstandState.DIC_TYPE_NAME = '已实施' THEN 6 - WHEN dicstandState.DIC_TYPE_NAME = '计划修订' THEN 7 - WHEN dicstandState.DIC_TYPE_NAME = '修订中' THEN 8 - WHEN dicstandState.DIC_TYPE_NAME = '已修订' THEN 9 - WHEN dicstandState.DIC_TYPE_NAME = '已作废' THEN 10 - WHEN dicstandState.DIC_TYPE_NAME IS NULL THEN 11 - WHEN dicstandState.DIC_TYPE_NAME ='' THEN 11 - END) AS paixu, + ( CASE WHEN ZCCSSRQ = 'TBD' THEN '6999-01-01' @@ -595,7 +587,7 @@ ) AS issueTime from SAR_STANDARDS_INFO - GROUP BY ,CHJL,SAR_STAND_ATTR_INFO.XCXSSRQ,SAR_STAND_ATTR_INFO.ZCCSSRQ + GROUP BY ,CHJL,SAR_STAND_ATTR_INFO.XCXSSRQ,SAR_STAND_ATTR_INFO.ZCCSSRQ,SAR_STAND_ATTR_INFO.SSRQ order by ${orderBy1} ${order1},SAR_STANDARDS_INFO.id ) tmp_tb limit ${pager.startIndex-1},${pageSize}) a @@ -646,12 +638,19 @@ - select FROM sar_standards_info LEFT JOIN sar_stand_attr_info ssai ON ssai.STAND_ID = SAR_STANDARDS_INFO.ID - WHERE DATE_FORMAT(ssai.SSRQ,'%Y-%m-%D') >= DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME,'%Y-%m-%D') + WHERE + DATE_FORMAT(ssai.SSRQ, '%Y-%m-%d') >= DATE_FORMAT( + SAR_STANDARDS_INFO.ISSUE_TIME, + '%Y-%m-%d' + ) + AND + sar_standards_info.VALID_FLAG='0' + AND TEXT_STATUS=#{typeCode} ORDER BY SAR_STANDARDS_INFO.ISSUE_TIME DESC LIMIT #{limit} @@ -731,14 +730,15 @@ select from SAR_STANDARDS_INFO - left join TS_DICTYPE dicountry on (dicountry.dic_type_code = SAR_STANDARDS_INFO.country and dicountry.dic_id is - not null and dicountry.valid_flag = 0) + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null) - left join TS_DICTYPE dicstandState on (dicstandState.dic_type_code = SAR_STANDARDS_INFO.stand_state and - dicstandState.dic_id is not null and dicstandState.valid_flag = 0 ) - left join TS_DICTYPE dicstandNature on (dicstandNature.dic_type_code = SAR_STANDARDS_INFO.stand_nature and - dicstandNature.dic_id is not null and dicstandNature.valid_flag = 0 ) + + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id left join TS_RESOURCE on SAR_STAND_MENU.menu_id = TS_RESOURCE.id where SAR_STANDARDS_INFO.id = #{id} @@ -849,14 +849,11 @@ (select ,SAR_STAND_ATTR_INFO.CHJL AS CHJL from SAR_STANDARDS_INFO - left join TS_DICTYPE dicountry on (dicountry.dic_type_code = SAR_STANDARDS_INFO.country and dicountry.dic_id is - not null and dicountry.valid_flag = 0) + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null) - left join TS_DICTYPE dicstandState on (dicstandState.dic_type_code = SAR_STANDARDS_INFO.stand_state and - dicstandState.dic_id is not null and dicstandState.valid_flag = 0 ) - left join TS_DICTYPE dicstandNature on (dicstandNature.dic_type_code = SAR_STANDARDS_INFO.stand_nature and - dicstandNature.dic_id is not null and dicstandNature.valid_flag = 0 ) + + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id left join TS_RESOURCE on SAR_STAND_MENU.menu_id = TS_RESOURCE.id left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml index 6c5a5869..2249eb2e 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml @@ -50,7 +50,16 @@ on u.usid=up.user_id left join ts_position p on up.position_id=p.id - where u.institution_id=#{TsUser.institutionId} + where 1=1 + + and u.institution_id=#{TsUser.institutionId} + + + and u.uname like concat('%',#{TsUser.uname},'%') + + + and u.email like concat('%',#{TsUser.email},'%') + - select + select from SAR_FILE_SPLIT_INFO where id = #{value} @@ -290,7 +290,7 @@ + select * from SAR_FILE_SPLIT_ITEMS + LEFT JOIN SAR_FILE_SPLIT_INFO ON SAR_FILE_SPLIT_ITEMS.INFO_ID = SAR_FILE_SPLIT_INFO.ID + where SAR_FILE_SPLIT_INFO.ID = #{id} + + diff --git a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java index cc34cb29..6ac813bc 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java @@ -294,7 +294,7 @@ public class AttFileEOController { String suffix=fileName.substring(fileName.lastIndexOf(".")+1); //只能在pdf中添加水印, //非pdf文件直接下载原文件 - if (suffix.equals("pdf")){ + if (suffix.equals("pdf")||suffix.equals("PDF")){ downloadFilePath=waterFilePath; }else { downloadFilePath=oldFilePath; diff --git a/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java b/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java index 6c8336df..760f65cd 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java @@ -21,7 +21,7 @@ public class SyncUserService { public static void main(String[] args) throws Exception { SyncUserService syncUserService=new SyncUserService(); - syncUserService.syncFotonOrg(); + syncUserService.syncFotonUser(); } /** @@ -50,7 +50,7 @@ public class SyncUserService { json.add(rs); JSONObject responseStr = JSON.parseObject(rs); - + System.out.println(rs); if (responseStr.containsKey("cookie")) { try { JSONArray entries = responseStr.getJSONArray("cookie"); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java index 2cec8f1a..8057fe85 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java @@ -162,4 +162,6 @@ public interface OrgEODao extends BaseMapper { public OrgEO getOrgParentInfoOrgId(OrgEO orgEO); public List getOrgRootTree(); + + int clearData(); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java index c3388fa1..7350abc3 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java @@ -106,6 +106,8 @@ public interface UserEODao extends BaseMapper { */ UserEO selectOrgByPrimaryKey(String usid); + List getUser(String usid); + Integer selectOrgCountByPrimaryKey(String usid); UserEO selectRoleMessageByPrimaryKey(String usid); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java index 2d961ec6..cf336364 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java @@ -1,6 +1,7 @@ package com.adc.da.sys.entity; import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -13,6 +14,7 @@ import java.util.List; * 日期: 2018-09-03
* 版权所有:版权归北京卡达克数据技术中心所有。
*/ +@TableName(value = "ts_org") public class OrgEO extends BaseEntity implements Serializable { @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java index 1337593e..4923f79b 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java @@ -53,6 +53,7 @@ public class UserEO extends BaseEntity implements Serializable { private String orgType; private String ssoId; + private String token; /** * java字段名转换为原始数据库列名。如果不存在则返回null
*

字段列表:

@@ -382,4 +383,12 @@ public class UserEO extends BaseEntity implements Serializable { public void setOrgType(String orgType) { this.orgType = orgType; } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java index 3aa8e180..3e3e70ec 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java @@ -71,6 +71,8 @@ public interface IUserEOService extends IService { public UserEO getOrgIdByUserId(String userId); + public List getUser(String userId); + public UserEO getUserByLoginNameNotDeleted(String userName); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java index e95c0432..b98902f4 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java @@ -428,6 +428,11 @@ public class UserEOServiceImpl extends ServiceImpl implements return this.baseMapper.get(userId); } + @Transactional(readOnly = true, rollbackFor = Exception.class) + public List getUser(String usid){ + return this.baseMapper.getUser(usid); + } + /** * @Author liwenxuan diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml index 062104ed..2d64c352 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml @@ -762,6 +762,9 @@ AND parent_idS IS NOT NULL + + delete from TS_ORG + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/UserEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/UserEOMapper.xml index 45a34226..2ffc9c1b 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/UserEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/UserEOMapper.xml @@ -397,6 +397,13 @@ AND usid !=#{usid} + +