From c7795eb09f3059f1a0310bc817e2fa0e9e64d29e Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期四, 26 六月 2025 21:15:01 +0800
Subject: [PATCH] Merge branch 'master' of http://118.89.139.230:10101/r/powerIntelligenceSystem

---
 src/main/java/com/whyc/pojo/web_site/WorkflowMain.java        |   10 +
 src/main/java/com/whyc/util/CommonUtil.java                   |    2 
 src/main/java/com/whyc/mapper/DeviceSpareMapper.java          |    2 
 src/main/java/com/whyc/service/DeviceSpareService.java        |  164 ++++++++++++++++++++++++++++++--
 src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java  |    2 
 src/main/resources/mapper/DeviceSpareMapper.xml               |    6 +
 src/main/java/com/whyc/pojo/web_site/DeviceSpareLog.java      |    9 +
 src/main/java/com/whyc/controller/DeviceSpareController.java  |   13 ++
 src/main/resources/excel_templates/template_device_spare.xlsx |    0 
 src/main/java/com/whyc/service/WorkflowMainService.java       |   63 ++++++++++++
 src/main/java/com/whyc/controller/WorkflowMainController.java |   12 ++
 src/main/java/com/whyc/service/DeviceSpareLogService.java     |    6 +
 12 files changed, 269 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/whyc/controller/DeviceSpareController.java b/src/main/java/com/whyc/controller/DeviceSpareController.java
index bda2800..b293fba 100644
--- a/src/main/java/com/whyc/controller/DeviceSpareController.java
+++ b/src/main/java/com/whyc/controller/DeviceSpareController.java
@@ -11,6 +11,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 
@@ -48,6 +49,12 @@
         return service.addByExcel(file);
     }
 
+    @ApiOperation("excel瀵煎嚭")
+    @GetMapping("excelExport")
+    public void excelExport(HttpServletResponse response) {
+        service.excelExport(response);
+    }
+
 
     @PostMapping("update")
     @ApiOperation("淇敼")
@@ -55,6 +62,12 @@
         return service.update(spare);
     }
 
+    @PostMapping("andOrChangePicture")
+    @ApiOperation("鏂板鎴栬�呮浛鎹㈠浘鐗�")
+    public Response andOrChangePicture(@RequestParam Integer id,@RequestParam MultipartFile file) throws IOException {
+        return service.andOrChangePicture(id,file);
+    }
+
     @PostMapping("delete")
     @ApiOperation("鍒犻櫎")
     public Response delete(@RequestParam Integer id) {
diff --git a/src/main/java/com/whyc/controller/WorkflowMainController.java b/src/main/java/com/whyc/controller/WorkflowMainController.java
index a7a1fe2..6049e98 100644
--- a/src/main/java/com/whyc/controller/WorkflowMainController.java
+++ b/src/main/java/com/whyc/controller/WorkflowMainController.java
@@ -8,11 +8,15 @@
 import com.whyc.service.WorkflowMainService;
 import com.whyc.util.ActionUtil;
 import com.whyc.util.CommonUtil;
+import com.whyc.util.JsonUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
+import java.util.List;
 import java.util.Map;
 
 @RestController
@@ -23,10 +27,16 @@
     @Autowired
     private WorkflowMainService service;
 
-    @PostMapping("submit")
+    /*@PostMapping("submit")
     @ApiOperation(value = "鎻愪氦鍗曟嵁", notes = "浼犲弬:taskDesc,mainType,mainTypeCN,mainTypeEn,dealRoleId,processLevel")
     public Response<Integer> submit(@RequestBody WorkflowMain  main){
         return service.submit(main);
+    }*/
+    @PostMapping("submit")
+    @ApiOperation(value = "鎻愪氦鍗曟嵁", notes = "")
+    public Response<Integer> submit(@RequestParam String mainJsonStr, @RequestPart(required = false) List<MultipartFile> fileList, @RequestPart(required = false) List<MultipartFile>  picList) throws IOException {
+        WorkflowMain  main = JsonUtil.getGson().fromJson(mainJsonStr, WorkflowMain.class);
+        return service.submit(main,fileList,picList);
     }
 
 
diff --git a/src/main/java/com/whyc/mapper/DeviceSpareMapper.java b/src/main/java/com/whyc/mapper/DeviceSpareMapper.java
index ddd3748..61d1c73 100644
--- a/src/main/java/com/whyc/mapper/DeviceSpareMapper.java
+++ b/src/main/java/com/whyc/mapper/DeviceSpareMapper.java
@@ -8,4 +8,6 @@
 
     void outBound(List<DeviceSpare> spareList);
 
+    void updateQuantityAndPictureBatch(List<DeviceSpare> spareListUpdate);
+
 }
diff --git a/src/main/java/com/whyc/pojo/web_site/DeviceSpareLog.java b/src/main/java/com/whyc/pojo/web_site/DeviceSpareLog.java
index 259823c..df8e216 100644
--- a/src/main/java/com/whyc/pojo/web_site/DeviceSpareLog.java
+++ b/src/main/java/com/whyc/pojo/web_site/DeviceSpareLog.java
@@ -25,4 +25,13 @@
 
     private Date createTime;
 
+    public DeviceSpareLog(Integer deviceSpareId, Integer operationType, String operationDetail, Date createTime) {
+        this.deviceSpareId = deviceSpareId;
+        this.operationType = operationType;
+        this.operationDetail = operationDetail;
+        this.createTime = createTime;
+    }
+
+    public DeviceSpareLog() {
+    }
 }
diff --git a/src/main/java/com/whyc/pojo/web_site/WorkflowMain.java b/src/main/java/com/whyc/pojo/web_site/WorkflowMain.java
index f385245..ace8692 100644
--- a/src/main/java/com/whyc/pojo/web_site/WorkflowMain.java
+++ b/src/main/java/com/whyc/pojo/web_site/WorkflowMain.java
@@ -7,6 +7,7 @@
 import lombok.Data;
 import lombok.ToString;
 import org.apache.ibatis.type.Alias;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Date;
 import java.util.List;
@@ -68,16 +69,16 @@
     @ApiModelProperty("宸ュ崟鐘舵��")
     private Integer status;
     /**闄勪欢鍚嶇О*/
-    @ApiModelProperty("闄勪欢鍚嶇О")
+    @ApiModelProperty("闄勪欢鍚嶇О,澶氫釜鐢ㄩ�楀彿闅斿紑")
     private String fileName;
     /**闄勪欢鍦板潃*/
-    @ApiModelProperty("闄勪欢鍦板潃")
+    @ApiModelProperty("闄勪欢鍦板潃,澶氫釜鐢ㄩ�楀彿闅斿紑")
     private String fileUrl;
     /**鍥剧墖鍚嶇О*/
-    @ApiModelProperty("鍥剧墖鍚嶇О")
+    @ApiModelProperty("鍥剧墖鍚嶇О,澶氫釜鐢ㄩ�楀彿闅斿紑")
     private String picName;
     /**鍥剧墖鍦板潃*/
-    @ApiModelProperty("鍥剧墖鍦板潃")
+    @ApiModelProperty("鍥剧墖鍦板潃,澶氫釜鐢ㄩ�楀彿闅斿紑")
     private String picUrl;
     /**褰掓。鎰忚*/
     @ApiModelProperty("褰掓。鎰忚")
@@ -101,4 +102,5 @@
 
     @TableField(exist = false)
     private List<WorkflowDevice> deviceList;
+
 }
diff --git a/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java b/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java
index a2e1373..4398de2 100644
--- a/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java
+++ b/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java
@@ -17,7 +17,7 @@
 /**
  * 鏈変袱涓畾鏃朵换鍔�:1.鍛婅浜х敓,鍔犲叆鍒板贰妫�瀹炴椂琛�,2.鍛婅鏄惁娑堝け,鍚屾鍒板贰妫�瀹炴椂琛�
  */
-@EnableScheduling
+//@EnableScheduling
 @Component
 public class AlarmInspectionSchedule {
 
diff --git a/src/main/java/com/whyc/service/DeviceSpareLogService.java b/src/main/java/com/whyc/service/DeviceSpareLogService.java
index 9e7ecca..a69417c 100644
--- a/src/main/java/com/whyc/service/DeviceSpareLogService.java
+++ b/src/main/java/com/whyc/service/DeviceSpareLogService.java
@@ -8,6 +8,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -21,6 +22,11 @@
         mapper.insert(deviceSpareLog);
     }
 
+    public void add(Integer deviceSpareId, Integer operationType, String operationDetail, Date createTime) {
+        DeviceSpareLog deviceSpareLog = new DeviceSpareLog(deviceSpareId, operationType, operationDetail, createTime);
+        mapper.insert(deviceSpareLog);
+    }
+
     public Response<List<DeviceSpareLog>> getList(int deviceSpareId) {
         QueryWrapper<DeviceSpareLog> query = Wrappers.query();
         query.eq("device_spare_id",deviceSpareId);
diff --git a/src/main/java/com/whyc/service/DeviceSpareService.java b/src/main/java/com/whyc/service/DeviceSpareService.java
index 72a0fea..94ada48 100644
--- a/src/main/java/com/whyc/service/DeviceSpareService.java
+++ b/src/main/java/com/whyc/service/DeviceSpareService.java
@@ -1,5 +1,8 @@
 package com.whyc.service;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,17 +16,22 @@
 import com.whyc.util.ThreadLocalUtil;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 
 @Service
 public class DeviceSpareService {
@@ -66,10 +74,10 @@
         if (file != null && file.size() > 0) {
             for (int i = 0; i < file.size(); i++) {
                 MultipartFile multipartFile = file.get(i);
-                String fileName = multipartFile.getOriginalFilename();
+                //String fileName = multipartFile.getOriginalFilename();
                 //灏唂ileName涓彲鑳藉瓨鍦ㄧ殑,鍘绘帀
-                fileName = fileName.replace(",","");
-                String filePath = fileDirPath + File.separator + timeFormat+"_"+fileName;
+                //fileName = fileName.replace(",","");
+                String filePath = fileDirPath + File.separator + spare.getName()+"_"+spare.getModel()+"_"+spare.getVersion() + "_" + (i+1) + "_"+ timeFormat+".png";
 
                 multipartFile.transferTo(new File(filePath));
                 String split = "pis_file"+File.separator+"deviceSpare";
@@ -229,13 +237,143 @@
             spare.setSupplier(supplier);
 
             spareList.add(spare);
-            //绗竷鍒椾负鍥剧墖 TODO 寰呭鐞�
-            /*Cell cell = row.getCell(7);
-            CellType cellType = cell.getCellType();
-            System.out.println("-");*/
-        }
-        addBatch(spareList);
 
-        return null;
+        }
+
+        //绗竷鍒椾负鍥剧墖-娴姩寮忓浘鐗�
+        //鑾峰彇缁樺浘瀵硅薄涓殑鎵�鏈夊浘褰�
+        XSSFDrawing drawing = (XSSFDrawing) sheet.getDrawingPatriarch();
+        if (drawing == null) {
+            drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
+        }
+        List<XSSFShape> shapes = drawing.getShapes();
+        for (XSSFShape shape : shapes) {
+            if (shape instanceof XSSFPicture) {
+                XSSFPicture pic = (XSSFPicture) shape;
+                XSSFClientAnchor anchor = pic.getClientAnchor();
+                //鑾峰彇鍥剧墖鎵�鍦ㄧ殑璧峰琛�
+                int rowIndex = anchor.getRow1();
+                byte[] data = pic.getPictureData().getData();
+
+                DeviceSpare spare = spareList.get(rowIndex - 1);
+                //瀵瑰瓨鍌ㄨ矾寰勮繘琛屽畾涔�
+                Date now = new Date();
+                String timeFormat = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM_DD_HH_MM_SS_UNION, now);
+                String dirMonth = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM, now);
+                String fileDirPath = CommonUtil.getRootFile() + "deviceSpare" + File.separator + dirMonth;
+                File fileDir = new File(fileDirPath);
+                //濡傛灉鏂囦欢澶逛笉瀛樺湪鍒欏垱寤�
+                if (!fileDir.exists()) {
+                    fileDir.mkdirs();
+                }
+                String filePath = fileDirPath + File.separator + spare.getName()+"_"+spare.getModel()+"_"+spare.getVersion() + "_"+ timeFormat+".png";
+
+                // 淇濆瓨鍥剧墖鍒版湰鍦�
+                try (FileOutputStream fos = new FileOutputStream(filePath)) {
+                    fos.write(data);
+                }
+                String split = "pis_file"+File.separator+"deviceSpare";
+                String picUrl = File.separator + filePath.substring(filePath.indexOf(split));
+                spare.setPictureUrl(picUrl);
+            }
+        }
+
+        //鏂板鍒楄〃
+        List<DeviceSpare> spareListNew = new ArrayList<>();
+        //鏇存柊鍒楄〃
+        List<DeviceSpare> spareListUpdate = new ArrayList<>();
+        //鏌ヨ搴撲腑鐨勬墍鏈夎澶囧櫒浠�
+        List<DeviceSpare> deviceSpareListInDB = mapper.selectList((Wrapper<DeviceSpare>) CommonUtil.nullObject);
+        for (DeviceSpare spare : spareList){
+            boolean isExist = false;
+            for (DeviceSpare spareInDB : deviceSpareListInDB){
+                if (spare.getName().equals(spareInDB.getName())
+                        && spare.getModel().equals(spareInDB.getModel())
+                        && spare.getVersion().equals(spareInDB.getVersion())
+                        && spare.getBrand().equals(spareInDB.getBrand())
+                        && spare.getType().equals(spareInDB.getType())
+                        && spare.getSupplier().equals(spareInDB.getSupplier())
+                ){
+                    isExist = true;
+                    spare.setId(spareInDB.getId());
+                    spare.setQuantity(spareInDB.getQuantity()+spare.getQuantity());
+                    if (spare.getPictureUrl() != null && spareInDB.getPictureUrl()!=null){
+                        spare.setPictureUrl(spareInDB.getPictureUrl()+","+spare.getPictureUrl());
+                    }
+                    spareListUpdate.add(spare);
+                }
+            }
+            if(!isExist){
+                //涓嶅瓨鍦ㄥ垯鏂板
+                spareListNew.add(spare);
+            }
+        }
+        //鏇存柊
+        if(spareListUpdate.size()>0) {
+            updateQuantityAndPictureBatch(spareListUpdate);
+        }
+        //鏂板
+        if(spareListNew.size()>0) {
+            addBatch(spareListNew);
+        }
+
+        return new Response().setII(1,"瀵煎叆瀹屾垚");
+    }
+
+    private void updateQuantityAndPictureBatch(List<DeviceSpare> spareListUpdate) {
+        mapper.updateQuantityAndPictureBatch(spareListUpdate);
+    }
+
+    public void excelExport(HttpServletResponse response) {
+        //鏌ヨ鎵�鏈夌殑璁惧鍣ㄤ欢
+        List<DeviceSpare> deviceSpareList = mapper.selectList((Wrapper<DeviceSpare>) CommonUtil.nullObject);
+        //鑾峰彇瀵煎嚭妯℃澘鍦板潃
+        ClassPathResource classPathResource = new ClassPathResource("excel_templates/template_device_spare.xlsx");
+        String path = classPathResource.getPath();
+        TemplateExportParams templateExportParams1 = new TemplateExportParams(path,true);
+        // 鏋勫缓瀵煎嚭鏁版嵁妯″瀷
+        Map<String, Object> map = new HashMap<>();
+        map.put("deviceSpareList", deviceSpareList); // 鍋囪妯℃澘涓娇鐢� ${deviceSpareList} 浣滀负鍙橀噺鍚�
+
+        Workbook wb = ExcelExportUtil.exportExcel(templateExportParams1, map);
+        try {
+            LocalDateTime now = LocalDateTime.now();
+            String fileName = "缁翠慨绠$悊鍣ㄤ欢搴撳瓨_"+now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".xlsx";
+            response.setContentType("application/vnd.ms-excel");
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
+            response.flushBuffer();
+            wb.write(response.getOutputStream());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    public Response andOrChangePicture(Integer id, MultipartFile file) throws IOException {
+        DeviceSpare spare = mapper.selectById(id);
+        //瀵瑰瓨鍌ㄨ矾寰勮繘琛屽畾涔�
+        Date now = new Date();
+        String timeFormat = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM_DD_HH_MM_SS_UNION, now);
+        String dirMonth = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM, now);
+        String fileDirPath = CommonUtil.getRootFile() + "deviceSpare" + File.separator + dirMonth;
+        File fileDir = new File(fileDirPath);
+        //濡傛灉鏂囦欢澶逛笉瀛樺湪鍒欏垱寤�
+        if (!fileDir.exists()) {
+            fileDir.mkdirs();
+        }
+        String filePath = fileDirPath + File.separator + spare.getName()+"_"+spare.getModel()+"_"+spare.getVersion() + "_"+ timeFormat+".png";
+
+        // 淇濆瓨鍥剧墖鍒版湰鍦�
+        file.transferTo(new File(filePath));
+        String split = "pis_file"+File.separator+"deviceSpare";
+        String picUrl = File.separator + filePath.substring(filePath.indexOf(split));
+        //鏇存柊鍥剧墖
+        UpdateWrapper<DeviceSpare> update = Wrappers.update();
+        update.eq("id",id);
+        update.set("picture_url",picUrl);
+        mapper.update((DeviceSpare) CommonUtil.nullObject,update);
+        //璁板綍鍙樻洿
+        deviceSpareLogService.add(id,2,"鏇存崲鍥剧墖",now);
+        return new Response().setII(1,"鏂板鎴栬�呮浛鎹㈠浘鐗囧畬鎴�");
     }
 }
diff --git a/src/main/java/com/whyc/service/WorkflowMainService.java b/src/main/java/com/whyc/service/WorkflowMainService.java
index bed00c2..8f5a728 100644
--- a/src/main/java/com/whyc/service/WorkflowMainService.java
+++ b/src/main/java/com/whyc/service/WorkflowMainService.java
@@ -20,9 +20,12 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -244,7 +247,7 @@
      */
 
     @Transactional
-    public Response submit(WorkflowMain main){
+    public Response submit(WorkflowMain main, List<MultipartFile> fileList, List<MultipartFile> picList) throws IOException {
         //1.鎻愪氦鍒板崟鎹鎵规祦绋�
         //濡傛灉瀛樺湪鍏宠仈鍗曟嵁id,棣栧厛鏍¢獙鎻愪氦鐨勬暟閲�
         Date now = new Date();
@@ -299,6 +302,64 @@
                 deviceList.get(i).setQuantityUnprocessed(deviceList.get(i).getQuantity());
             }
         }
+        //濡傛灉瀛樺湪闄勪欢鍜屽浘鐗�,鍒欏瓨鍏ュ搴斿瓧娈�
+        //瀵瑰瓨鍌ㄨ矾寰勮繘琛屽畾涔�
+        String timeFormat = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM_DD_HH_MM_SS_UNION, now);
+        String dirMonth = ThreadLocalUtil.format(ThreadLocalUtil.TIME_YYYY_MM, now);
+        String fileDirPath = CommonUtil.getRootFile() + "workflow" + File.separator + dirMonth;
+        File fileDir = new File(fileDirPath);
+        //濡傛灉鏂囦欢澶逛笉瀛樺湪鍒欏垱寤�
+        if (!fileDir.exists()) {
+            fileDir.mkdirs();
+        }
+        StringBuilder fileUrlSb = new StringBuilder();
+        StringBuilder fileNameSb = new StringBuilder();
+        if (fileList != null && fileList.size() > 0) {
+            for (int i = 0; i < fileList.size(); i++) {
+                MultipartFile multipartFile = fileList.get(i);
+                String fileName = multipartFile.getOriginalFilename();
+                //灏唂ileName涓彲鑳藉瓨鍦ㄧ殑,鍘绘帀
+                fileName = fileName.replace(",","");
+                String filePath = fileDirPath + File.separator + timeFormat+"_"+fileName;
+
+                multipartFile.transferTo(new File(filePath));
+                String split = "pis_file"+File.separator+"workflow";
+                String fileUrl = File.separator + filePath.substring(filePath.indexOf(split));
+                if(i == fileList.size()-1) {
+                    fileUrlSb.append(fileUrl);
+                    fileNameSb.append(fileName);
+                }else {
+                    fileUrlSb.append(fileUrl).append(",");
+                    fileNameSb.append(fileName).append(",");
+                }
+            }
+        }
+        main.setFileUrl(fileUrlSb.toString());
+        main.setFileName(fileNameSb.toString());
+
+        StringBuilder picUrlSb = new StringBuilder();
+        StringBuilder picNameSb = new StringBuilder();
+        if (picList != null && picList.size() > 0) {
+            for (int i = 0; i < picList.size(); i++) {
+                MultipartFile multipartFile = picList.get(i);
+                String picName = multipartFile.getOriginalFilename();
+                //灏唒icName涓彲鑳藉瓨鍦ㄧ殑,鍘绘帀
+                picName = picName.replace(",","");
+                String picPath = fileDirPath + File.separator + picName;
+                multipartFile.transferTo(new File(picPath));
+                String split = "pis_file"+File.separator+"workflow";
+                String picUrl = File.separator + picPath.substring(picPath.indexOf(split));
+                if(i == picList.size()-1) {
+                    picUrlSb.append(picUrl);
+                    picNameSb.append(picName);
+                }else {
+                    picUrlSb.append(picUrl).append(",");
+                    picNameSb.append(picName).append(",");
+                }
+            }
+        }
+        main.setPicUrl(picUrlSb.toString());
+        main.setPicName(picNameSb.toString());
         add(main);
         //涓昏〃鍏宠仈鐨勭墿鏂欐彃鍏�
         for (WorkflowDevice device : deviceList) {
diff --git a/src/main/java/com/whyc/util/CommonUtil.java b/src/main/java/com/whyc/util/CommonUtil.java
index 26725ac..346a0b5 100644
--- a/src/main/java/com/whyc/util/CommonUtil.java
+++ b/src/main/java/com/whyc/util/CommonUtil.java
@@ -3,6 +3,7 @@
 import com.whyc.constant.YamlProperties;
 import com.whyc.pojo.db_user.User;
 import com.whyc.service.UserLogService;
+import org.apache.poi.ss.formula.functions.T;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@
 @Component
 public class CommonUtil {
 
+    public static Object nullObject = null;
     private static UserLogService userLogService;
 
     @Autowired
diff --git a/src/main/resources/excel_templates/template_device_spare.xlsx b/src/main/resources/excel_templates/template_device_spare.xlsx
new file mode 100644
index 0000000..d72e489
--- /dev/null
+++ b/src/main/resources/excel_templates/template_device_spare.xlsx
Binary files differ
diff --git a/src/main/resources/mapper/DeviceSpareMapper.xml b/src/main/resources/mapper/DeviceSpareMapper.xml
index 36a7fe5..761f7ea 100644
--- a/src/main/resources/mapper/DeviceSpareMapper.xml
+++ b/src/main/resources/mapper/DeviceSpareMapper.xml
@@ -13,4 +13,10 @@
             and supplier = #{item.supplier}
         </foreach>
     </update>
+    <update id="updateQuantityAndPictureBatch">
+        <foreach collection="list" item="item" separator=";">
+            update web_site.tb_device_spare set quantity = #{item.quantity},picture_url = #{item.pictureUrl}
+            where id = #{item.id}
+        </foreach>
+    </update>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1