zouyu
2023-11-15 c9db22f6ccb6a6d66e38dec09807e88b160f29e8
销售订单-修改2
已修改5个文件
已添加2个文件
221 ■■■■■ 文件已修改
mes-plan/src/main/java/com/chinaztt/mes/plan/controller/CustomerOrderController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/OrderProcessConfigFileMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/util/CustomerOrderUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/util/FileSaveUtil.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/util/MyUtil.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/resources/mapper/OrderProcessConfigFileMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-plan/src/main/java/com/chinaztt/mes/plan/controller/CustomerOrderController.java
@@ -448,7 +448,7 @@
     * @return
     */
    @PostMapping("/upload")
    @ApiOperation(value = "上传工艺配置单", notes = "上传工艺配置单")
    @ApiOperation(value = "上传附件", notes = "上传附件")
    public R upload(@RequestParam("file") MultipartFile file,
                    @RequestParam("orderNumber") String orderNumber,
                    @RequestParam("lineNumber") String lineNumber) {
@@ -461,7 +461,7 @@
     * @return
     */
    @GetMapping("/processConfigFiles")
    @ApiOperation("获取工艺配置单上传记录")
    @ApiOperation("获取附件上传记录")
    @Inner(false)
    public R processConfigFiles(String orderNumber, String lineNumber) {
        try {
mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/OrderProcessConfigFileMapper.java
@@ -23,7 +23,7 @@
     * @param lineNumber
     * @return
     */
    List<OrderProcessConfigFileDTO> getProcessConfigFiles(@Param("ordderNumber") String orderNumber,
    List<OrderProcessConfigFileDTO> getProcessConfigFiles(@Param("orderNumber") String orderNumber,
                                                          @Param("lineNumber") String lineNumber);
    /**
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
@@ -37,6 +37,7 @@
import com.chinaztt.mes.common.oa.OAResult;
import com.chinaztt.mes.common.util.StateResult;
import com.chinaztt.mes.common.util.WechatMsgTips;
import com.chinaztt.mes.common.util.easyexcel.EasyExcelUtils;
import com.chinaztt.mes.common.wechat.WechatProperty;
import com.chinaztt.mes.plan.dto.*;
import com.chinaztt.mes.plan.entity.*;
@@ -51,6 +52,7 @@
import com.chinaztt.mes.plan.util.CustomerOrderClientConfigure;
import com.chinaztt.mes.plan.util.CustomerOrderUnitWhiteListConfig;
import com.chinaztt.mes.plan.util.CustomerOrderUtil;
import com.chinaztt.mes.plan.util.FileSaveUtil;
import com.chinaztt.mes.plan.vo.CustomerOrderVO1;
import com.chinaztt.mes.quality.dto.CustomOrderSyncDTO;
import com.chinaztt.mes.technology.entity.*;
@@ -97,6 +99,7 @@
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
@@ -1873,15 +1876,14 @@
    @Override
    public R uploadProcessConfigFile(MultipartFile file, String orderNumber, String lineNumber) {
        String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
        String fileName = FileUtil.extName(file.getOriginalFilename());
        try {
            minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
            OrderProcessConfigFile configFile = new OrderProcessConfigFile();
            configFile.setFileName(fileName);
            configFile.setOriginalFileName(file.getOriginalFilename());
            configFile.setOrderNumber(orderNumber);
            configFile.setLineNumber(lineNumber);
            configFile.setBucketName(ossProperties.getBucketName());
            configFile.setBucketName(FileSaveUtil.StoreFile(file));
            orderProcessConfigFileMapper.insert(configFile);
            ProcessConfigFileOrderMapping mapping = ProcessConfigFileOrderMapping.builder().configFileId(configFile.getId())
                    .orderNumber(orderNumber).lineNumber(lineNumber).build();
@@ -1908,7 +1910,10 @@
    @Override
    public void getFile(String bucket, String fileName, HttpServletResponse response) {
        try (InputStream inputStream = minioTemplate.getObject(bucket, fileName)) {
        try {
            String path = FileSaveUtil.FILE_PATH + bucket;
            InputStream inputStream = new FileInputStream(path);
//            EasyExcel.write(path).sheet().doWrite(null);
            response.setContentType("application/octet-stream; charset=UTF-8");
            IoUtil.copy(inputStream, response.getOutputStream());
        } catch (Exception e) {
mes-plan/src/main/java/com/chinaztt/mes/plan/util/CustomerOrderUtil.java
@@ -16,6 +16,8 @@
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -56,12 +58,14 @@
    /**
     * OTC é™„件获取
     *
     * @param contractNumber
     * @param orderNo
     */
    public R getOtcCustomerOrderFileList(String contractNumber) {
    public R getOtcCustomerOrderFileList(String orderNo) {
        try {
            String token = getToken();
            JSONObject result = JSONObject.parseObject(HttpRequest.get(customerOrderClientConfigure.getOtcHost() + customerOrderClientConfigure.getOtcFileUrl() + contractNumber)
            String encode = URLEncoder.encode(orderNo);
            System.out.println("url编码--------------------------"+encode);
            JSONObject result = JSONObject.parseObject(HttpRequest.get(customerOrderClientConfigure.getOtcHost() + customerOrderClientConfigure.getOtcFileUrl() + orderNo)
                    .header("Authorization", "Bearer " + token).execute().body());
            if (result.getInteger("code") == 0) {
                JSONArray jsonArray = result.getJSONArray("data");
@@ -73,7 +77,6 @@
            return R.failed("获取异常:"+ e.getMessage());
        }
    }
    public CustomerOrder updateCustomerOrderLine(CustomerOrder customerOrder) {
        if (StringUtils.isBlank(customerOrder.getOtcLineNo())) {
mes-plan/src/main/java/com/chinaztt/mes/plan/util/FileSaveUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
package com.chinaztt.mes.plan.util;
import com.amazonaws.util.IOUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.FileSystemUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * ä¿å­˜æ–‡ä»¶å·¥å…·
 */
@Slf4j
@Component
public class FileSaveUtil {
    // å–yml中的路径 + /
    public static String FILE_PATH;
    public static String[] ALLOWED;
    @Value("${file.path}")
    private String file;
    @Value("${file.allowed}")
    private String[] allowed;
    @PostConstruct
    public void getFile() {
        FILE_PATH = this.file;
    }
    @PostConstruct
    public void getAllowed(){
        ALLOWED = this.allowed;
    }
    /**
     * å­˜å‚¨æ–‡ä»¶ä¸»å‡½æ•°
     * @param file æ–‡ä»¶äºŒè¿›åˆ¶æµ
     * @return è¿”回文件名称用于存储数据库
     */
    public static String StoreFile(MultipartFile file) {
        String originalFilename = file.getOriginalFilename();
        // ç”Ÿæˆéšæœºåç§°ï¼šæ—¶é—´_随机6位数字
        String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6);
        String suffix = null;
        if (originalFilename != null) {
            suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            // å¦‚果后缀名不通过抛出异常
            if (!isFileAllowed(suffix)){
                throw  new RuntimeException(suffix);
            }
        }
        // åç§°æ‹¼æŽ¥
        String fileName = FileName + suffix;
        // è¿›è¡Œå­˜å‚¨
        try {
            storeFileWithFileName(file.getBytes(), fileName);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return fileName;
    }
    public static Boolean DeleteFile(String fileName) {
        return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName));
    }
    /**
     * å­˜å‚¨æ–‡ä»¶å‡½æ•°
     * @param content æ–‡ä»¶äºŒè¿›åˆ¶æµ
     * @param fileName æ–‡ä»¶åç§°
     */
    private static void storeFileWithFileName(byte[] content, String fileName) {
        // å­˜å‚¨è·¯å¾„
        String path = FILE_PATH + File.separatorChar;
        // ç›®å½•不存在则创建
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        // å¼€å§‹å­˜å‚¨
        try (FileOutputStream os = new FileOutputStream(path + fileName);
             ByteArrayInputStream is = new ByteArrayInputStream(content)) {
             IOUtils.copy(is, os);
        } catch (IOException e) {
            MyUtil.PrintLog("存储文件异常:" + e);
        }
    }
    /**
     * åˆ¤æ–­æ–‡ä»¶æ˜¯å¦è¢«å…è®¸ä¸Šä¼ 
     *
     * @param fileName æ–‡ä»¶å
     * @return å…è®¸true, å¦åˆ™false
     */
    private static boolean isFileAllowed(String fileName) {
        // èŽ·å–åŽç¼€å
        String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
        for (String allow : ALLOWED) {
            if (allow.equals(suffixName)) {
                return true;
            }
        }
        return false;
    }
}
mes-plan/src/main/java/com/chinaztt/mes/plan/util/MyUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.chinaztt.mes.plan.util;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
@Component
public class MyUtil<T> {
    /**
     * è‡ªå®šä¹‰è°ƒè¯•工具类
     * @return
     */
    public static void PrintLog(String str){
        // ç±»å
        String className = Thread.currentThread().getStackTrace()[2].getClassName();
        // å‡½æ•°å
        String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
        System.out.println("\033[1;94m" + className + "-->" + methodName + "-->"  + str + "\033[0m");
    }
    /**
     * æ—¥æœŸå·¥å…·ç±»
     * @return
     */
    public static String MyDateFormat(){
        //获取日期
        //导 import java.util.Date; ä¸‹çš„包
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return sdf.format(date);
    }
    /**
     * èŽ·å–éšæœºåŠ å¯†ç›
     * @param n ä½æ•°
     * @return è¿”回随机加密盐
     */
    public static String getSalt(int n) {
        char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@#$%^&*()+-=/[];~.".toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            char c = chars[new Random().nextInt(chars.length)];
            sb.append(c);
        }
        return sb.toString();
    }
    /**
     * èŽ·å–éšæœºæ•°å­—
     * @param n ä½æ•°
     * @return è¿”回随机值
     */
    public static String getNumber(int n) {
        char[] chars = "1234567890".toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            char c = chars[new Random().nextInt(chars.length)];
            sb.append(c);
        }
        return sb.toString();
    }
    /*public static String getTimeSixNumberCode(String prefix, String keyName){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String format = simpleDateFormat.format(new Date());
        String timeStr = format.replace("-", "");
        long incrNum = RedisUtil.incr(keyName, 1);
        if(incrNum == 1){
            RedisUtil.expire(keyName, 60 * 60 * 24);
        }
        String sixIncr = String.format("%06d", incrNum);
        return prefix + timeStr + sixIncr;
    }*/
}
mes-plan/src/main/resources/mapper/OrderProcessConfigFileMapper.xml
@@ -14,7 +14,7 @@
                 left join plan_process_config_file_order_mapping ppcfom
                           on popcf.id = ppcfom.config_file_id
        where ppcfom.line_number = #{lineNumber}
          and ppcfom.order_number = #{ordderNumber}
          and ppcfom.order_number = #{orderNumber}
    </select>