diff --git a/get_picture/.gitignore b/get_picture/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/get_picture/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/get_picture/.mvn/wrapper/maven-wrapper.properties b/get_picture/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..d58dfb7 --- /dev/null +++ b/get_picture/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/get_picture/pom.xml b/get_picture/pom.xml new file mode 100644 index 0000000..4b160ae --- /dev/null +++ b/get_picture/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.2.10.RELEASE + + com.nuoli + PDF + 1.0-SNAPSHOT + PDF + + + + 1.8 + 5.7.14 + 1.8 + 1.8 + + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + + + + cn.hutool + hutool-all + ${hutool.version} + + + org.apache.pdfbox + fontbox + 2.0.9 + + + + org.apache.pdfbox + pdfbox + 2.0.9 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/get_picture/src/main/java/com/nuoli/PDF/GetPictureApplication.java b/get_picture/src/main/java/com/nuoli/PDF/GetPictureApplication.java new file mode 100644 index 0000000..2b5dc89 --- /dev/null +++ b/get_picture/src/main/java/com/nuoli/PDF/GetPictureApplication.java @@ -0,0 +1,16 @@ +package com.nuoli.PDF; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author admin + */ +@SpringBootApplication +public class GetPictureApplication { + + public static void main(String[] args) { + SpringApplication.run(GetPictureApplication.class, args); + } + +} diff --git a/get_picture/src/main/java/com/nuoli/PDF/config/handler/HandlerException.java b/get_picture/src/main/java/com/nuoli/PDF/config/handler/HandlerException.java new file mode 100644 index 0000000..2265dbc --- /dev/null +++ b/get_picture/src/main/java/com/nuoli/PDF/config/handler/HandlerException.java @@ -0,0 +1,23 @@ +/* +package com.yan.yan_first.config.handler; + + + + +*/ +/** + * 全局异常类 + * + * @author LENOVO + *//* + +@RestControllerAdvice +public class HandlerException { + + @ExceptionHandler(Exception.class) + public void handleException(Exception e) { + e.printStackTrace(); + } + +} +*/ diff --git a/get_picture/src/main/java/com/nuoli/PDF/system/controller/secutiry/AuthorizationController.java b/get_picture/src/main/java/com/nuoli/PDF/system/controller/secutiry/AuthorizationController.java new file mode 100644 index 0000000..2717e63 --- /dev/null +++ b/get_picture/src/main/java/com/nuoli/PDF/system/controller/secutiry/AuthorizationController.java @@ -0,0 +1,173 @@ +package com.nuoli.PDF.system.controller.secutiry; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import sun.misc.BASE64Encoder; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.InetAddress; +import java.net.URL; +import java.net.UnknownHostException; +import java.util.*; + +/** + * 用户登录 + * + * @author LENOVO + */ +@RestController +@RequestMapping("api/file") +public class AuthorizationController { + + @Value("${material.path}") + public String materialPath; + + @Value("${vehicle.path}") + public String vehiclePath; + + @Value("${vehicle.post}") + public String vehicleFilePost; + + + @PostMapping("selectPath") + public List> selectPath(@RequestBody JSONArray json) throws IOException { + File file = new File(materialPath); + if (file.exists()) { + return selectMaterialPath(file, json); + } else { + System.out.println("文件不存在"); + } + return null; + } + + @PostMapping("selectFile") + public String selectFile(@RequestBody JSONObject json) { + byte[] bytes = pdf2png(json.getStr("path"), "png"); + if (ObjectUtil.isNotEmpty(bytes)) { + BASE64Encoder encoder = new BASE64Encoder(); + return "data:image/png;base64," + encoder.encode(bytes).replace("\r\n", ""); + } + return null; + } + + public List> selectMaterialPath(File directory, JSONArray materials) throws UnknownHostException { + if (directory == null || !directory.exists() || !directory.isDirectory()) { + return new ArrayList<>(); + } + + Queue queue = new LinkedList<>(); + queue.add(directory); + + List> maps = new ArrayList<>(); + Set materialSet = new HashSet<>(materials.toList(String.class)); + + // 如果 materialSet 为空,直接返回空的 maps 列表 + if (materialSet.isEmpty()) { + return maps; + } + while (!queue.isEmpty()) { + File currentDir = queue.poll(); + File[] files = currentDir.listFiles(); + if (files == null) { + continue; + } + for (File file : files) { + if (file.isDirectory()) { + queue.add(file); + } else if (file.isFile() && file.getName().endsWith(".pdf")) { + String material = file.getName().substring(0, file.getName().lastIndexOf('.')); + if (materialSet.contains(material)) { + pdf2png(file.getPath(), vehiclePath, material); + InetAddress localhost = InetAddress.getLocalHost(); + String url = "http://" + localhost.getHostAddress() + ":" + vehicleFilePost + "/" + material + ".jpg"; + HashMap map = new HashMap<>(); + map.put("name", material); + map.put("value", url); + maps.add(map); + materialSet.remove(material); + if (materialSet.isEmpty()) { + return maps; + } + } + } + } + } + return maps; + } + + + /** + * 使用pdfbox将整个pdf转换成图片 + * + * @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test + * @param type 图片类型 png 和jpg + */ + public byte[] pdf2png(String fileAddress, String type) { + File file = new File(fileAddress); + try (PDDocument doc = PDDocument.load(file)) { + PDFRenderer renderer = new PDFRenderer(doc); + int pageCount = doc.getNumberOfPages(); + for (int i = 0; i < pageCount; i++) { + // dpi为144,越高越清晰,转换越慢 + BufferedImage image = renderer.renderImageWithDPI(i, 144); + try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) { + ImageIO.write(image, type, bos); + return bos.toByteArray(); + } + } + } catch (IOException e) { + return null; + } + return null; + } + + public void pdf2png(String fileAddress, String lastAddress, String materialName) { + File file = new File(fileAddress); + try (PDDocument doc = PDDocument.load(file)) { + PDFRenderer renderer = new PDFRenderer(doc); + int pageCount = doc.getNumberOfPages(); + for (int i = 0; i < pageCount; i++) { + BufferedImage image = renderer.renderImageWithDPI(i, 144); + String lastPath = lastAddress + "\\" + materialName + ".jpg"; + File lastFile = new File(lastPath); + if(!lastFile.exists()){ + lastFile.createNewFile(); + } + ImageIO.write(image, "jpg", lastFile); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void imageToByteAndWriteToFile() throws IOException { + String imageUrl = "http://10.192.37.10:3000/uploads/sortedpallets/N329650_P26.png"; + String outputFilePath = "D:\\software\\nginx-1.24.0\\N329650_P26.png"; + + URL url = new URL(imageUrl); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setRequestMethod("GET"); + + try (InputStream inputStream = httpURLConnection.getInputStream(); + FileOutputStream fileOutputStream = new FileOutputStream(outputFilePath)) { + + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + fileOutputStream.write(buffer, 0, bytesRead); + } + } finally { + httpURLConnection.disconnect(); + } + } + + +} diff --git a/get_picture/src/main/java/com/nuoli/PDF/system/service/secutiry/AuthorizationService.java b/get_picture/src/main/java/com/nuoli/PDF/system/service/secutiry/AuthorizationService.java new file mode 100644 index 0000000..aae8a4e --- /dev/null +++ b/get_picture/src/main/java/com/nuoli/PDF/system/service/secutiry/AuthorizationService.java @@ -0,0 +1,17 @@ +package com.nuoli.PDF.system.service.secutiry; + +import cn.hutool.json.JSONObject; + +/** + * 登录实现类 + * @author LENOVO + */ +public interface AuthorizationService { + + /** + * 用户登录 + * @param json + * @return + */ + JSONObject login(JSONObject json); +} diff --git a/get_picture/src/main/java/com/nuoli/PDF/system/service/secutiry/impl/AuthorizationServiceImpl.java b/get_picture/src/main/java/com/nuoli/PDF/system/service/secutiry/impl/AuthorizationServiceImpl.java new file mode 100644 index 0000000..9068f17 --- /dev/null +++ b/get_picture/src/main/java/com/nuoli/PDF/system/service/secutiry/impl/AuthorizationServiceImpl.java @@ -0,0 +1,26 @@ +package com.nuoli.PDF.system.service.secutiry.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONObject; +import com.nuoli.PDF.system.service.secutiry.AuthorizationService; +import org.springframework.stereotype.Service; + +/** + * 登录实现类 + * + * @author LENOVO + */ +@Service +public class AuthorizationServiceImpl implements AuthorizationService { + + private static final String errString = "登录失败"; + + @Override + public JSONObject login(JSONObject json) { + boolean allNotEmpty = ObjectUtil.isAllNotEmpty(json.getStr("username"), json.getStr("password")); + if (allNotEmpty) throw new RuntimeException(errString); + return null; + } + + +} diff --git a/get_picture/src/main/resources/application.yml b/get_picture/src/main/resources/application.yml new file mode 100644 index 0000000..2de4bd5 --- /dev/null +++ b/get_picture/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 8083 + +material: + path: \\cnsha08447\SSLSDATA\07_Technology\Formal_Drawing\PDF + +vehicle: + path: D:\software\images + post: 8088 diff --git a/get_picture/src/test/java/com/nuoli/PDF/YanFirstApplicationTests.java b/get_picture/src/test/java/com/nuoli/PDF/YanFirstApplicationTests.java new file mode 100644 index 0000000..5636cf0 --- /dev/null +++ b/get_picture/src/test/java/com/nuoli/PDF/YanFirstApplicationTests.java @@ -0,0 +1,13 @@ +package com.nuoli.PDF; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class YanFirstApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java index 4d8105b..a8a7f98 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java @@ -28,4 +28,28 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) public @interface Log { String value() default ""; + + + /** + * 是否打印到日志文件 + * + * @return + */ + boolean isPrintToLogFile() default false; + + + /** + * 是否插入操作日志表 + * + * @return + */ + boolean isAddLogTable() default true; + + /** + * 是否接口日志 + * + * @return + */ + boolean isInterfaceLog() default false; + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogOperate.java similarity index 65% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogOperate.java index 297b3dd..e8d6388 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogOperate.java @@ -12,12 +12,14 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - *//* + */ package org.nl.common.logging.aspect; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; @@ -31,6 +33,10 @@ import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.StringUtils; import org.nl.common.utils.ThrowableUtil; import org.nl.common.logging.domain.Log; +import org.nl.config.IdUtil; +import org.nl.system.service.logging.ISysLogService; +import org.nl.system.service.logging.dao.SysLog; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -41,79 +47,67 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; import java.lang.reflect.Parameter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; -*/ -/** - * @author Zheng Jie - * @date 2018-11-24 - *//* @Component @Aspect @Slf4j -public class LogAspect { +public class LogOperate { - private final LogService logService; + @Autowired + private ISysLogService logService; ThreadLocal currentTime = new ThreadLocal<>(); - public LogAspect(LogService logService) { + public LogOperate(ISysLogService logService) { this.logService = logService; } - */ -/** - * 配置切入点 - *//* + @Pointcut("@annotation(org.nl.common.logging.annotation.Log)") public void logPointcut() { // 该方法无方法体,主要为了让同类中其他方法使用此切入点 } - */ -/** - * 配置环绕通知,使用在方法logPointcut()上注册的切入点 - * - * @param joinPoint join point for advice - *//* - @Around("logPointcut()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - HttpServletRequest request = attributes.getRequest(); - HttpServletResponse response = attributes.getResponse(); -// HttpServletRequest request = RequestHolder.getHttpServletRequest(); - - + String trackId = UUID.randomUUID().toString(); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); // 方法路径 String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()"; - String params=getParameter(method, joinPoint.getArgs()); + String params = getParameter(method, joinPoint.getArgs()); - log.info("请求uri:{}", request.getRequestURI()); - log.info("请求方法:{}",methodName); - log.info("请求方法参数:{}",params); + org.nl.common.logging.annotation.Log logInfo = method.getAnnotation(org.nl.common.logging.annotation.Log.class); + //是否输出到日志文件 + if (logInfo.isPrintToLogFile()) { + log.info("track_id:{},请求方法:{},请求方法参数:{}", trackId, methodName, params); + } + HttpServletRequest request = RequestHolder.getHttpServletRequest(); + String requestIp = StringUtils.getIp(request); Object result; - currentTime.set(System.currentTimeMillis()); - result = joinPoint.proceed(); - Log log = new Log("INFO",System.currentTimeMillis() - currentTime.get()); - currentTime.remove(); - - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log); + long startTime = System.currentTimeMillis(); + try { + result = joinPoint.proceed(); + //是否把日志存到日志表 + if (logInfo.isAddLogTable()) { + SysLog log = new SysLog("INFO", System.currentTimeMillis() - startTime); + logService.save(getUsername(), StringUtils.getBrowser(request), requestIp, joinPoint, log); + } + } catch (Exception ex) { + log.error("track_id:{},error:{}", trackId, ex.getMessage()); + SysLog log = new SysLog("ERROR", System.currentTimeMillis() - startTime); + log.setException_detail(ThrowableUtil.getStackTrace(ex).getBytes()); + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint) joinPoint, log); + throw ex; + } return result; } - */ -/** - * 根据方法和传入的参数获取请求参数 - *//* + private String getParameter(Method method, Object[] args) { List argList = new ArrayList<>(); @@ -142,29 +136,13 @@ public class LogAspect { return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList); } - */ -/** - * 配置异常通知 - * - * @param joinPoint join point for advice - * @param e exception - *//* - - @AfterThrowing(pointcut = "logPointcut()", throwing = "e") - public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { - Log log = new Log("ERROR",System.currentTimeMillis() - currentTime.get()); - currentTime.remove(); - log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes()); - HttpServletRequest request = RequestHolder.getHttpServletRequest(); - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log); - } + public String getUsername() { try { - return SecurityUtils.getCurrentUsername(); + return SecurityUtils.getCurrentNickName(); }catch (Exception e){ return ""; } } } -*/ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java index 5ae003c..719b313 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java @@ -2,8 +2,10 @@ package org.nl.system.service.logging; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import org.aspectj.lang.ProceedingJoinPoint; import org.nl.common.domain.query.PageQuery; import org.nl.system.service.logging.dao.SysLog; +import org.springframework.scheduling.annotation.Async; import java.util.Map; @@ -25,6 +27,9 @@ public interface ISysLogService extends IService { */ IPage queryAll(Map criteria, PageQuery pageable); + @Async + void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog log); + /** * 查询异常详情 * @param id 日志ID diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java index 6067341..b176bec 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; import java.io.Serializable; + +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; /** *

@@ -18,6 +21,8 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) @TableName("sys_log") +@AllArgsConstructor +@NoArgsConstructor public class SysLog implements Serializable { private static final long serialVersionUID = 1L; @@ -52,4 +57,8 @@ public class SysLog implements Serializable { private String create_time; + public SysLog(String logType, Long time) { + this.log_type = logType; + this.time = time; + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java index 9042e2f..1038760 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java @@ -1,20 +1,35 @@ package org.nl.system.service.logging.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.reflect.MethodSignature; import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.common.utils.StringUtils; import org.nl.common.utils.ValidationUtil; import org.nl.system.service.logging.ISysLogService; import org.nl.system.service.logging.dao.SysLog; import org.nl.system.service.logging.dao.mapper.SysLogMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -36,12 +51,10 @@ public class SysLogServiceImpl extends ServiceImpl impleme public IPage queryAll(Map whereJson, PageQuery pageable) { String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry"))?whereJson.get("blurry").toString():null; String log_type = ObjectUtil.isNotEmpty(whereJson.get("log_type"))?whereJson.get("log_type").toString():null; - String username = ObjectUtil.isNotEmpty(whereJson.get("username"))?whereJson.get("username").toString():null; String begin_time = ObjectUtil.isNotEmpty(whereJson.get("begin_time"))?whereJson.get("begin_time").toString():null; String end_time = ObjectUtil.isNotEmpty(whereJson.get("end_time"))?whereJson.get("end_time").toString():null; LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.eq(ObjectUtil.isNotEmpty(log_type), SysLog::getLog_type, log_type) - .eq(ObjectUtil.isNotEmpty(username), SysLog::getUsername, username) .like(ObjectUtil.isNotEmpty(blurry), SysLog::getDescription, blurry) .le(ObjectUtil.isNotEmpty(end_time), SysLog::getCreate_time, end_time) .ge(ObjectUtil.isNotEmpty(begin_time), SysLog::getCreate_time, begin_time) @@ -51,6 +64,60 @@ public class SysLogServiceImpl extends ServiceImpl impleme return page; } + @Override + public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog logDto) { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + Log aopLog = method.getAnnotation(Log.class); + + // 方法路径 + String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()"; + + // 描述 + if (logDto != null) { + logDto.setDescription(aopLog.value()); + } + assert logDto != null; + logDto.setRequest_ip(ip); + logDto.setLog_id(RandomUtil.randomString(5)); + logDto.setAddress(StringUtils.getCityInfo(logDto.getRequest_ip())); + logDto.setMethod(methodName); + logDto.setUsername(username); + logDto.setParams(getParameter(method, joinPoint.getArgs())); + logDto.setBrowser(browser); + long currentTimeMillis = System.currentTimeMillis(); + String dateString = DateUtil.date(currentTimeMillis).toString(); + logDto.setCreate_time(dateString); + logMapper.insert(logDto); + } + + private String getParameter(Method method, Object[] args) { + List argList = new ArrayList<>(); + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < parameters.length; i++) { + //将RequestBody注解修饰的参数作为请求参数 + RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class); + if (requestBody != null) { + argList.add(args[i]); + } + //将RequestParam注解修饰的参数作为请求参数 + RequestParam requestParam = parameters[i].getAnnotation(RequestParam.class); + if (requestParam != null) { + Map map = new HashMap<>(); + String key = parameters[i].getName(); + if (!StrUtil.isEmpty(requestParam.value())) { + key = requestParam.value(); + } + map.put(key, args[i]); + argList.add(map); + } + } + if (argList.size() == 0) { + return ""; + } + return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList); + } + @Override public Object findByErrDetail(String id) { SysLog sysLog = logMapper.selectById(id); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/service/impl/FabServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/service/impl/FabServiceImpl.java index c025773..372ba25 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/service/impl/FabServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/service/impl/FabServiceImpl.java @@ -84,9 +84,9 @@ public class FabServiceImpl { Assert.noNullElements(new Object[]{form.getString("device_code"), form.getString("vehicle_code")}, "参数不能为空!"); CallMaterVo callMaterVo = form.toJavaObject(CallMaterVo.class); SchBasePoint schBasePoint2 = iSchBasePointService.selectByPointCode(callMaterVo.getDevice_code()); - if (schBasePoint2.getPoint_status().equals(GoodsEnum.IN_STOCK.getValue())) { + /*if (schBasePoint2.getPoint_status().equals(GoodsEnum.IN_STOCK.getValue()) || StrUtil.isNotEmpty(schBasePoint2.getVehicle_code())) { throw new BadRequestException("该点位已存在物料!"); - } + }*/ param.put("device_code", callMaterVo.getDevice_code()); param.put("config_code", "PcOperationCMTask"); param.put("region_code", callMaterVo.getRegion_code()); @@ -155,7 +155,6 @@ public class FabServiceImpl { pcOperationSNTTask.apply(param); iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) .eq(SchBasePoint::getPoint_code, sendVehicleVo.getDevice_code()) - .set(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue()) .set(SchBasePoint::getIs_lock, true)); break; default: diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java index d61730c..f766836 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java @@ -172,7 +172,7 @@ public class HandheldServiceImpl implements HandheldService { vehicle_list = new String[]{vehicle}; } MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle_list[0]); - if(ObjectUtil.isEmpty(mdBaseVehicle)) throw new BadRequestException("托盘不存在!"); + if (ObjectUtil.isEmpty(mdBaseVehicle)) throw new BadRequestException("托盘不存在!"); verifyNumber(vehicle_list, mdBaseVehicle.getVehicle_type()); SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code); if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!"); @@ -191,12 +191,12 @@ public class HandheldServiceImpl implements HandheldService { /** * 验证托盘数量和类型 * - * @param vehicles 回库托盘号 - * @param number 托盘数 + * @param vehicles 回库托盘号 + * @param number 托盘数 * @param vehicleType 托盘类型 */ private void verifyNumber(String[] vehicles, String vehicleType) { - switch(vehicleType){ + switch (vehicleType) { case "R01": if (vehicles.length != 2) { throw new BadRequestException("托盘数量不匹配"); @@ -221,8 +221,8 @@ public class HandheldServiceImpl implements HandheldService { } verifyVehicleType(vehicles, "S06"); break; - default: - break; + default: + break; } } @@ -253,7 +253,7 @@ public class HandheldServiceImpl implements HandheldService { .eq(SchBasePoint::getVehicle_code, param.getString("vehicle_code")) .ne(SchBasePoint::getPoint_code, param.getString("device_code"))); Assert.isNull(one, "载具号已存在别的点位,请确认再下发"); - String region_code = param.getString("region_code"); + String region_code = param.getString("regionCode"); String device_code = param.getString("device_code"); String vehicle_code = param.getString("vehicle_code"); String type = param.getString("type"); @@ -303,6 +303,7 @@ public class HandheldServiceImpl implements HandheldService { */ private void goShelves(SchBasePoint schBasePoint, JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) { Assert.noNullElements(param.getJSONArray("material"), "参数不能为空!"); + Assert.notNull(region_code,"下道区域不能为空!"); JSONArray materials = param.getJSONArray("material"); JSONObject jo = new JSONObject(); //冲床人工入库使用 @@ -315,7 +316,7 @@ public class HandheldServiceImpl implements HandheldService { connectorTask.apply(jo); } else { if (StrUtil.isBlank(region_code)) { - JSONObject json = new JSONObject(); + /*JSONObject json = new JSONObject(); JSONArray jsonArray = new JSONArray(); materials.forEach(material2 -> { boolean material_code = ObjectUtil.isEmpty(((LinkedHashMap) material2).get("material_code")); @@ -329,7 +330,7 @@ public class HandheldServiceImpl implements HandheldService { jsonArray.add(map); }); json.put("vehicle_code", vehicle_code); - json.put("region_code", schBasePoint.getRegion_code()); + json.put("region_code", StrUtil.isNotEmpty(param.getString("regionCode")) ? param.getString("regionCode") : schBasePoint.getRegion_code()); json.put("materials", jsonArray); JSONObject json1 = wmsToConnectorService.applyRegionAndDueDate(json); if (ObjectUtil.isNotEmpty(json1) && json1.getInteger("status") == HttpStatus.OK.value()) { @@ -353,7 +354,7 @@ public class HandheldServiceImpl implements HandheldService { jo.put("region_code", region_code); } else if (ObjectUtil.isNotEmpty(json1)) { throw new BadRequestException(json1.getString("msg")); - } + }*/ } else { jo.put("region_code", region_code); } @@ -388,9 +389,9 @@ public class HandheldServiceImpl implements HandheldService { jo.put("create_mode", GeneralDefinition.AUTO_CREATION); jo.put("vehicle_code", vehicle_code); jo.put("region_code", region_code); - jo.put("ext_data", param); param.put("region_code", region_code); param.put("target_region_code", region_code); + jo.put("ext_data", param); connectorTask.apply(jo); iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) .eq(SchBasePoint::getPoint_code, device_code) @@ -413,8 +414,9 @@ public class HandheldServiceImpl implements HandheldService { if (param.getJSONArray("pointCodes").size() > 0) { param.getJSONArray("pointCodes").forEach(pointCode -> { cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(pointCode); + SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(jsonObject.getStr("point_code")); iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class) - .eq(SchBaseVehiclematerialgroup::getVehicle_code, jsonObject.get("vehicle_code"))); + .eq(SchBaseVehiclematerialgroup::getVehicle_code, schBasePoint.getVehicle_code())); iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) .eq(SchBasePoint::getPoint_code, jsonObject.get("point_code")) .set(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue()) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml index c030572..5fe649b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml @@ -71,7 +71,7 @@ ROW_NUMBER() OVER (PARTITION BY vg.vehicle_code ORDER BY vg.due_date) AS rn FROM sch_base_vehiclematerialgroup vg - where vg.is_delete = 0 + where 0 = 0 AND vg.vehicle_code like CONCAT('%', #{query.vehicle_code}, '%') @@ -97,7 +97,7 @@ AND vg.material_id like CONCAT('%', #{query.material_id}, '%') - order by vg.region_code desc + order by vg.create_time desc ) SELECT * FROM RankedVehicles diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java index 468d492..9610f9e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java @@ -117,7 +117,6 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl Long.parseLong(group.getBetween()))); return schBaseVehiclematerialgroupIPage; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java index 5c3c0a5..537402b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/controller/SchBaseTaskController.java @@ -1,8 +1,6 @@ package org.nl.wms.sch.task.controller; import cn.dev33.satoken.annotation.SaIgnore; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -18,10 +16,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import sun.security.krb5.internal.PAData; import javax.servlet.http.HttpServletResponse; -import java.util.List; import java.util.Map; import java.util.Set; /** @@ -99,4 +95,11 @@ public class SchBaseTaskController { schBaseTaskService.downTask(schBaseTaskService.queryAll(whereJson),response); } + @PostMapping("/selectCacheTask") + @Log("查询缓存任务") + @ApiOperation("查询缓存任务") + @SaIgnore + public ResponseEntity selectCacheTask(@RequestBody JSONObject jsonObject) { + return new ResponseEntity<>(schBaseTaskService.selectCacheTask(jsonObject),HttpStatus.OK); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java index 24cedd7..8948bba 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java @@ -141,4 +141,11 @@ public interface ISchBaseTaskService extends IService { * @return */ List selectNoFinishTaskByPointCode(String taskCode,String pointCode); + + /** + * 根据点位查询缓存的任务 + * @param jsonObject + * @return + */ + JSONObject selectCacheTask(JSONObject jsonObject); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 1a1be2e..c1e9a4b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -26,6 +26,8 @@ import org.apache.poi.xssf.streaming.SXSSFSheet; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper; @@ -59,6 +61,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl schBaseTasks = schBaseTaskMapper.selectList(Wrappers.lambdaQuery(SchBaseTask.class) + .eq(SchBaseTask::getPoint_code2, jsonObject.getString("deviceCode")) + .eq(SchBaseTask::getTask_status, TaskStatus.CREATED.getCode())); + if(CollUtil.isNotEmpty(schBaseTasks)){ + String vehicle_code = schBaseTasks.get(0).getVehicle_code(); + List list = schBaseVehiclematerialgroupServiceImpl.list(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class) + .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code)); + JSONObject jsonObject2 = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + for (SchBaseVehiclematerialgroup schBaseVehiclematerialgroup : list) { + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("order_code", schBaseVehiclematerialgroup.getOrder_code()); + jsonObject1.put("material_id", schBaseVehiclematerialgroup.getMaterial_id()); + jsonArray.add(jsonObject1); + } + jsonObject2.put("vehicleCode", vehicle_code); + jsonObject2.put("materialList", jsonArray); + return jsonObject2; + } + return null; + } + public static byte[] writeExcelAfterToBytes(String[] headers, ArrayList cellList) { ExcelWriter writer = null; ByteArrayOutputStream outputStream = null; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index 30fbae3..045e9b0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -24,6 +24,7 @@ import org.nl.wms.sch.task_manage.enums.TaskDirectionEnum; import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; import org.nl.wms.sch.task_manage.task.AcsUtil; import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.sch.task_manage.task.tasks.pcoperation.PcOperationCMTask; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -92,6 +93,9 @@ public abstract class AbstractTask { //2、根据任务配置补全任务 //3、下发 for (SchBaseTask task : taskList) { + if("PcOperationCMTask".equals(task.getConfig_code())){ + continue; + } List list = new ArrayList<>(); AcsTaskDto taskDto = new AcsTaskDto(); taskDto.setTask_id(task.getTask_id()); @@ -120,7 +124,7 @@ public abstract class AbstractTask { } } - private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto, SchBaseTask task) { + protected AcsTaskDto setTask(String config_code, AcsTaskDto taskDto, SchBaseTask task) { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, config_code)); taskDto.setPriority(StrUtil.isNotEmpty(task.getAcs_trace_id()) ? task.getAcs_trace_id() : taskConfig.getPriority()); @@ -233,7 +237,7 @@ public abstract class AbstractTask { // 校验同个点位,同种任务是否多次请求创建任务(固定只能1个任务) List applyPointTask = taskService.findUnFinishTasksByTaskConfig( taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction()); - if (applyPointTask.size() == 1) { + if (!"PcOperationCMTask".equals(config_code) && applyPointTask.size() == 1) { throw new BadRequestException("已创建相同点位任务,不可重复创建!"); } // 获取对接位点位对象 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/handheld/BlankingTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/handheld/BlankingTask.java index b6cfd9d..7e12e21 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/handheld/BlankingTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/handheld/BlankingTask.java @@ -169,7 +169,7 @@ public class BlankingTask extends AbstractTask { schBaseVehiclematerialgroup.setDue_date(jsonObject.getStr("due_date")); schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName()); schBaseVehiclematerialgroup.setPriority(jsonObject.getStr("priority")); - schBaseVehiclematerialgroup.setRegion_code(StrUtil.isBlank(finalRegion_code) ? jsonObject.getStr("region_code") : finalRegion_code); + schBaseVehiclematerialgroup.setRegion_code(StrUtil.isBlank(finalRegion_code) ? taskObj.getRegion_code() : finalRegion_code); schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup); }); // 任务完成 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/PcOperationCMTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/PcOperationCMTask.java index f51220b..22ed1cc 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/PcOperationCMTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/PcOperationCMTask.java @@ -1,5 +1,6 @@ package org.nl.wms.sch.task_manage.task.tasks.pcoperation; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -21,16 +22,21 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.AcsTaskDto; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; +import org.nl.wms.sch.task_manage.task.AcsUtil; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * sorting呼叫满料 @@ -86,6 +92,58 @@ public class PcOperationCMTask extends AbstractTask { } } + @Override + protected void renotifyAcs(List taskList) { + taskList = taskList.stream().filter(task -> task.getConfig_code().equals(TASK_CONFIG_CODE)).collect(Collectors.toList()); + for (SchBaseTask schBaseTask : taskList) { + List schBaseTasks = taskService.list(Wrappers.lambdaQuery(SchBaseTask.class) + .eq(SchBaseTask::getConfig_code, TASK_CONFIG_CODE) + .gt(SchBaseTask::getTask_status, TaskStatus.CREATED.getCode()) + .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) + .ne(SchBaseTask::getPoint_code1,schBaseTask.getPoint_code1()) + .eq(SchBaseTask::getPoint_code2,schBaseTask.getPoint_code2()) + ); + SchBasePoint schBasePoint = pointService.selectByPointCode(schBaseTask.getPoint_code2()); + if(ObjectUtil.isEmpty(schBasePoint)){ + log.info("{}点位不存在!!!",schBasePoint.getPoint_code()); + throw new BadRequestException("点位不存在!"); + } + if(CollUtil.isNotEmpty(schBaseTasks) || schBasePoint.getPoint_status().equals(GoodsEnum.IN_STOCK.getValue())){ + log.info("{}点位被占用!!!",schBasePoint.getPoint_code()); + continue; + } + issuedAcsTask(schBaseTask); + } + } + + private void issuedAcsTask(SchBaseTask schBaseTask) { + List list = new ArrayList<>(); + AcsTaskDto taskDto = new AcsTaskDto(); + taskDto.setTask_id(schBaseTask.getTask_id()); + taskDto.setTask_code(schBaseTask.getTask_code()); + + taskDto.setRoute_plan_code("normal"); + taskDto.setStart_device_code(schBaseTask.getPoint_code1()); + //如果存在等待点,任务下发目标点给等待点 + if (ObjectUtil.isEmpty(schBaseTask.getPoint_code2())) { + taskDto.setNext_device_code(schBaseTask.getNext_wait_point()); + } else { + taskDto.setNext_device_code(schBaseTask.getPoint_code2()); + } + taskDto.setVehicle_code(schBaseTask.getVehicle_code()); + setTask(schBaseTask.getConfig_code(), taskDto, schBaseTask); + list.add(taskDto); + JSONObject result = AcsUtil.notifyAcs("api/wms/task", list); + if (HttpStatus.OK.value() == result.getInteger("status")) { + schBaseTask.setTask_status(TaskStatus.ISSUED.getCode()); + schBaseTask.setRemark(" "); + taskService.update(schBaseTask); + } else if (HttpStatus.BAD_REQUEST.value() == result.getInteger("status")) { + schBaseTask.setRemark(result.getString("message")); + taskService.update(schBaseTask); + } + } + @Override protected void updateStatus(String task_code, TaskStatus status) { //TODO:完成任务的时候将int_task_code的清除 @@ -170,4 +228,7 @@ public class PcOperationCMTask extends AbstractTask { taskService.updateById(taskObj); } + + + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/ProcessingSMTTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/ProcessingSMTTask.java index 3f9d1d3..c605473 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/ProcessingSMTTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/pcoperation/ProcessingSMTTask.java @@ -91,8 +91,9 @@ public class ProcessingSMTTask extends AbstractTask { for (SchBaseTask task : tasks) { SendMaterVo sendMaterVo = JSONObject.parseObject(task.getRequest_param(), SendMaterVo.class); + JSONObject jsonObject = JSONObject.parseObject(task.getRequest_param()); //判断是否指定到外协区 - String targetRegionCode = sendMaterVo.getRegion_code(); + String targetRegionCode = jsonObject.getString("region_code"); if (StringUtils.isBlank(targetRegionCode)) { task.setRemark("未指定区域!"); taskService.updateById(task); @@ -253,20 +254,24 @@ public class ProcessingSMTTask extends AbstractTask { * @param sendVehicleVos */ private void interiorTemplate(SchBaseTask taskObj, List sendVehicleVos) { - JSONObject jsonObject3 = new JSONObject(); - jsonObject3.put("vehicle_code", taskObj.getVehicle_code()); - jsonObject3.put("id", taskObj.getTask_code()); - JSONArray jsonArray = new JSONArray(); - sendVehicleVos.forEach(sendVehicleVo -> { - JSONObject jsonObject4 = new JSONObject(); - jsonObject4.put("product_id", sendVehicleVo.getMaterial_code()); - jsonObject4.put("current_qty", sendVehicleVo.getMaterial_qty()); - jsonObject4.put("production_order", sendVehicleVo.getOrder_code()); - jsonObject4.put("due_date", sendVehicleVo.getDue_date()); - jsonArray.add(jsonObject4); - }); - jsonObject3.put("materials", jsonArray); - lmsToWmsService.feedbackMaterialStatus(jsonObject3); + Param isPrint = sysParamService.findByCode(GeneralDefinition.IS_PRINT); + if (ObjectUtil.isNotEmpty(isPrint) && "1".equals(isPrint.getValue())) { + } else { + JSONObject jsonObject3 = new JSONObject(); + jsonObject3.put("vehicle_code", taskObj.getVehicle_code()); + jsonObject3.put("id", taskObj.getTask_code()); + JSONArray jsonArray = new JSONArray(); + sendVehicleVos.forEach(sendVehicleVo -> { + JSONObject jsonObject4 = new JSONObject(); + jsonObject4.put("product_id", sendVehicleVo.getMaterial_code()); + jsonObject4.put("current_qty", sendVehicleVo.getMaterial_qty()); + jsonObject4.put("production_order", sendVehicleVo.getOrder_code()); + jsonObject4.put("due_date", sendVehicleVo.getDue_date()); + jsonArray.add(jsonObject4); + }); + jsonObject3.put("materials", jsonArray); + lmsToWmsService.feedbackMaterialStatus(jsonObject3); + } } /** diff --git a/lms/nladmin-ui/src/views/system/user/center.vue b/lms/nladmin-ui/src/views/system/user/center.vue index 366134e..b7a1909 100644 --- a/lms/nladmin-ui/src/views/system/user/center.vue +++ b/lms/nladmin-ui/src/views/system/user/center.vue @@ -65,6 +65,7 @@ +