Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

wangweiyu 4 lat temu
rodzic
commit
a22c625718

+ 6 - 0
pom.xml

@@ -16,6 +16,12 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+
+        <dependency>
             <groupId>eu.bitwalker</groupId>
             <artifactId>UserAgentUtils</artifactId>
             <version>1.21</version>

+ 11 - 2
src/main/java/com/aoyang/tms/controller/WorkerController.java

@@ -114,11 +114,20 @@ public class WorkerController {
 
     @ApiOperation(value = "每个作业上报单独小按钮使用", notes = "")
     @PostMapping("/update_order")
-    public Result update_order(@RequestBody WorkOrder workOrder) {
+    public Result updateOrder(@RequestHeader(value = "orgId") Long orgId,
+                               @RequestHeader(value = "userId") Long userId, @RequestHeader(value = "userName") String userName, @RequestBody WorkOrder workOrder) {
         log.info("每个作业上报单独小按钮使用,/tms/worker/update_order,参数:{}", JSON.toJSONString(workOrder));
-        if (workOrder == null || workOrder.getTruckId() == null || workOrder.getType() == null) {
+        if (workOrder == null || workOrder.getId() == null) {
             return new Result(ErrCodeEnum.BAD_PARAM.getCode(), ErrCodeEnum.BAD_PARAM.getMessage());
         }
+        String utf8Name = userName;
+        try {
+            utf8Name = URLDecoder.decode(userName, "UTF-8");
+        } catch (UnsupportedEncodingException ignored) {
+        }
+        workOrder.setUpdater(userId);
+        workOrder.setUpdaterName(utf8Name);
+        workOrder.setUpdateDate(LocalDateTime.now());
         Boolean flag = workOrderService.saveOrUpdate(workOrder);
         return new Result(flag);
     }

+ 12 - 12
src/main/java/com/aoyang/tms/service/impl/WorkerServiceImpl.java

@@ -2,6 +2,7 @@ package com.aoyang.tms.service.impl;
 
 import com.aoyang.tms.common.TmsTruckStatus;
 import com.aoyang.tms.common.WorkOrderEnum;
+import com.aoyang.tms.controller.vo.WorkCycleVO;
 import com.aoyang.tms.entity.Truck;
 import com.aoyang.tms.entity.TruckCheckInfo;
 import com.aoyang.tms.entity.WorkCycle;
@@ -84,7 +85,7 @@ public class WorkerServiceImpl implements WorkerService {
                 truck.setTmsStatus(TmsTruckStatus.WORKING);
                 truckService.updateById(truck);
                 //2.插入车辆检查数据
-                BeanUtils.copyProperties(workOrder,truckCheckInfo);
+                BeanUtils.copyProperties(workOrder, truckCheckInfo);
                 truckCheckInfo.setCreater(userId);
                 truckCheckInfo.setCreaterName(userName);
                 truckCheckInfo.setCreateDate(LocalDateTime.now());
@@ -140,16 +141,15 @@ public class WorkerServiceImpl implements WorkerService {
         try {
             WorkOrder workOrder = workOrderService.getById(workOrderParam.getId());
             if (workOrder != null) {
+                workOrder.setWeightingListNo(workOrderParam.getWeightingListNo());
+                workOrder.setWeightingListUrl(workOrderParam.getWeightingListUrl());
+                workOrder.setPiWeight(workOrderParam.getPiWeight());
+                workOrder.setMaoWeight(workOrderParam.getMaoWeight());
+                workOrder.setJingWeight(workOrderParam.getJingWeight());
                 //1.车辆进入作业中状态
                 Truck truck = truckService.getById(workOrder.getTruckId());
                 truck.setTmsStatus(TmsTruckStatus.WORKING);
                 truckService.updateById(truck);
-                //2.创建行程周期
-                WorkCycle workCycle = new WorkCycle();
-                BeanUtils.copyProperties(truck, workCycle);
-                BeanUtils.copyProperties(workOrder, workCycle);
-                workCycleService.save(workCycle);
-
                 if (workOrder.getType() == 1) {
                     //3.订单进入前往装车点状态,
                     workOrder.setOrderStatus(WorkOrderEnum.ZHUANGCHE_RESULT_SUBMIT.orderStatus());
@@ -180,17 +180,17 @@ public class WorkerServiceImpl implements WorkerService {
                 Truck truck = truckService.getById(workOrder.getTruckId());
                 truck.setTmsStatus(TmsTruckStatus.RETURNING);
                 truckService.updateById(truck);
-                //2.创建行程周期
-                WorkCycle workCycle = new WorkCycle();
-                BeanUtils.copyProperties(truck, workCycle);
-                BeanUtils.copyProperties(workOrder, workCycle);
-                workCycleService.save(workCycle);
 
                 //2.订单完成状态
                 workOrder.setOrderStatus(WorkOrderEnum.COMPLETED.orderStatus());
                 workOrder.setCompleteTime(LocalDateTime.now());
                 workOrderService.updateById(workOrder);
 
+                //3.更新行车周期中的净重
+                WorkCycle workCycle = workCycleService.getById(workOrder.getCycleId());
+                workCycle.setJingWeight(Integer.valueOf(workOrderParam.getJingWeight()));
+                workCycleService.updateById(workCycle);
+
                 //3.并记行车日志
                 //TODO
             }

+ 148 - 0
src/main/java/com/aoyang/tms/util/WriteImgUtil.java

@@ -0,0 +1,148 @@
+package com.aoyang.tms.util;
+
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFDrawing;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: Excel插入图片工具类
+ * @Author guoyong
+ * @Date 2022/4/26 13:52
+ * @Version 1.0
+ */
+
+public class WriteImgUtil {
+
+    /**
+     * 写入图片到Excel指定的位置
+     *
+     * @param patriarch 画图的顶级管理器,一个sheet只能获取一次,多次插入图片请使用同一个patriarch对象
+     * @param wb        HSSFWorkbook对象
+     * @param filepath  图片文件路径
+     * @param cellPoint 自定义的对象,指定要插入图片的坐标(x, y)
+     * @return cellPoint 自定义的对象,返回下一个要插入图片的坐标(x, y)
+     * @throws IOException
+     */
+    public static void whiteImg(XSSFDrawing patriarch, XSSFWorkbook wb, String filepath, CellPoint cellPoint) throws IOException {
+
+        ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
+        BufferedImage bufferImg = ImageIO.read(new File(filepath));
+        ImageIO.write(bufferImg, filepath.substring(filepath.lastIndexOf(".") + 1), byteArrayOut);
+
+        // 起点坐标
+        int x1 = cellPoint.getRow1();
+        int y1 = cellPoint.getCol1();
+        // 终点坐标
+        int x2 = cellPoint.getRow2();
+        int y2 = cellPoint.getCol2();
+        // anchor主要用于设置图片的属性
+        XSSFClientAnchor anchor1 = new XSSFClientAnchor(0, 0, 0, 0, (short) x1, y1, (short) x2, y2);
+        // 插入图片
+        int index = wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PICT);
+        patriarch.createPicture(anchor1, index);
+    }
+
+
+    public static class CellPoint {
+        // 起点横坐标
+        private int row1;
+        // 起点纵坐标
+        private int col1;
+        // 终点横坐标
+        private int row2;
+        // 终点纵坐标
+        private int col2;
+
+        public CellPoint(int row1, int col1, int row2, int col2) {
+            this.row1 = row1;
+            this.col1 = col1;
+            this.row2 = row2;
+            this.col2 = col2;
+        }
+
+        public int getRow1() {
+            return row1;
+        }
+
+        public void setRow1(int row1) {
+            this.row1 = row1;
+        }
+
+        public int getCol1() {
+            return col1;
+        }
+
+        public void setCol1(int col1) {
+            this.col1 = col1;
+        }
+
+        public int getRow2() {
+            return row2;
+        }
+
+        public void setRow2(int row2) {
+            this.row2 = row2;
+        }
+
+        public int getCol2() {
+            return col2;
+        }
+
+        public void setCol2(int col2) {
+            this.col2 = col2;
+        }
+    }
+
+    /**
+     * * 插入图片到指定excel
+     *
+     * @param file       待插入excel文件
+     * @param sheetIndex 待插入excel的Sheet序号(从0开始)
+     * @param map        key: 待插入图片路径  value: 图片在excel中的坐标
+     * @return
+     * @Date: 2020/11/28 10:09
+     */
+    public static void addImageToExcel(File file, Integer sheetIndex, Map<String, CellPoint> map) {
+        FileOutputStream fileOut = null;
+        try {
+            FileInputStream inputstream = new FileInputStream(file);
+            XSSFWorkbook wb = new XSSFWorkbook(inputstream);
+            XSSFSheet sheet1 = wb.getSheetAt(sheetIndex);
+            // 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
+            XSSFDrawing patriarch = sheet1.createDrawingPatriarch();
+            for (Map.Entry<String, CellPoint> entry : map.entrySet()) {
+                String key = entry.getKey(); // 图片路径
+                CellPoint point = entry.getValue(); // 图片插入坐标
+                whiteImg(patriarch, wb, key, point);
+            }
+            fileOut = new FileOutputStream(file);
+            // 写入excel文件
+            wb.write(fileOut);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (fileOut != null) {
+                try {
+                    fileOut.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    public static void main(String[] args) throws IOException {
+        Map<String, CellPoint> map = new HashMap<>();
+        map.put("D:\\1.png", new CellPoint(46, 3, 48, 4));
+        addImageToExcel(new File("D:\\日志.xlsx"), 0, map);
+        System.out.println("ok");
+    }
+
+}