Преглед изворни кода

Merge remote-tracking branch 'origin/dev' into dev

纪新园 пре 1 година
родитељ
комит
fbae45c4af

+ 49 - 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/wx/AttachmngsController.java

@@ -2,14 +2,30 @@ package com.ruoyi.web.controller.wx;
 
 
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.AddWatermarkUtil;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.domain.AttachMngs;
 import com.ruoyi.system.service.IAttachMngsService;
+import net.coobird.thumbnailator.Thumbnails;
+import org.apache.commons.compress.utils.IOUtils;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
+import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletRequest;
+import java.awt.*;
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.Map;
 
 @RestController
@@ -22,18 +38,46 @@ public class AttachmngsController {
     /**
      * 上传图片
      *
-     * @param file 图片
+     * @param file      图片
+     * @param longitude 经度
+     * @param latitude  纬度
      * @return
      * @throws Exception
      */
     @PostMapping
     public AjaxResult updateAttachmngs(@RequestParam("avatarfile") MultipartFile file,
                                        @RequestParam("attachId") Long attachId,
+                                       @RequestParam("longitude") String longitude,
+                                       @RequestParam("latitude") String latitude,
+                                       @RequestParam("updateDate") String date,
                                        HttpServletRequest request) throws Exception {
         if (file.isEmpty()) {
             return AjaxResult.error("上传失败请重试1");
         }
-        byte[] bytes = file.getBytes();
+
+
+        System.out.println("水印时间");
+        System.out.println(date);
+
+        // 水印
+        // String watermark = longitude + "," + latitude + "-" + date;
+        String watermark =  date;
+        File file2 = AddWatermarkUtil.transferToFile(file);
+        // addWaterMark(file2, file2, watermark);
+
+        Thumbnails.of(file2)
+                .scale(1f) //图片大小(长宽)压缩比例 从0-1,1表示原图
+                .outputQuality(0.3f) //图片质量压缩比例 从0-1,越接近1质量越好
+                .toFile(file2);
+
+
+        // AddWatermarkUtil.waterPress(file2, file2, Color.DARK_GRAY, 48, watermark);
+        AddWatermarkUtil.addWaterMark(file2, file2, Color.DARK_GRAY, 48, watermark);
+
+        // 转二进制
+        byte[] bytes = AddWatermarkUtil.fileToTransfer(file2).getBytes();
+
+        // 存储到数据库
         AttachMngs attachMngs = new AttachMngs();
         attachMngs.setSysId(1L);
         attachMngs.setAttachId(attachId);
@@ -64,7 +108,7 @@ public class AttachmngsController {
         return toPrimitives(img);
     }
 
-    // byte[] to Byte[]
+
     private Byte[] toObjects(byte[] bytesPrim) {
         Byte[] bytes = new Byte[bytesPrim.length];
 
@@ -74,11 +118,10 @@ public class AttachmngsController {
         return bytes;
     }
 
-    private byte[] toPrimitives(Byte[] oBytes)
-    {
+    private byte[] toPrimitives(Byte[] oBytes) {
         byte[] bytes = new byte[oBytes.length];
 
-        for(int i = 0; i < oBytes.length; i++) {
+        for (int i = 0; i < oBytes.length; i++) {
             bytes[i] = oBytes[i];
         }
 

+ 11 - 7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/wx/OrderBillsPlansController.java

@@ -4,6 +4,7 @@ import cn.hutool.http.server.HttpServerRequest;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.system.domain.TmsAttachMngs;
 import com.ruoyi.system.domain.vo.OrderBillsPlansVo;
+import com.ruoyi.system.domain.vo.TmsAttachMngsVo;
 import com.ruoyi.system.service.IOrderBillsPlansService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -39,8 +40,10 @@ public class OrderBillsPlansController {
         }
 
         String orderNo = orderBillsPlansVo.getOrderNo();
+        Integer head = orderBillsPlansVo.getHead();
+        Integer tail = orderBillsPlansVo.getTail();
 
-        return AjaxResult.success(orderBillsPlansService.getOrderBillsPlansList(dataStart, dataEnd, orderNo));
+        return AjaxResult.success(orderBillsPlansService.getOrderBillsPlansList(dataStart, dataEnd, orderNo, head, tail));
     }
 
     /**
@@ -67,7 +70,7 @@ public class OrderBillsPlansController {
     }
 
     /**
-     * 获取报销费用下拉
+     * 获取其他费用
      *
      * @return
      */
@@ -83,8 +86,9 @@ public class OrderBillsPlansController {
      * @return 数据
      */
     @GetMapping("/load-fee-items/{orderNo}")
-    public AjaxResult getLoadFeeItems(@PathVariable(value = "orderNo") Long orderNo) {
-        return AjaxResult.success(orderBillsPlansService.getLoadFeeItems(orderNo));
+    public AjaxResult getLoadFeeItems(@PathVariable(value = "orderNo") Long orderNo,
+                                      HttpServletRequest request) {
+        return AjaxResult.success(orderBillsPlansService.getLoadFeeItems(orderNo, request));
     }
 
     /**
@@ -111,12 +115,12 @@ public class OrderBillsPlansController {
 
     /**
      * 插入主库图片数据
-     * @param tmsAttachMngs
+     * @param tmsAttachMngsVo
      * @return
      */
     @PostMapping("/attach-mngs")
-    public AjaxResult insertAttachMngs(@RequestBody TmsAttachMngs tmsAttachMngs) {
-        return orderBillsPlansService.insertAttachMngs(tmsAttachMngs);
+    public AjaxResult insertAttachMngs(@RequestBody TmsAttachMngsVo tmsAttachMngsVo) {
+        return orderBillsPlansService.insertAttachMngs(tmsAttachMngsVo);
     }
 
     /**

+ 221 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/AddWatermarkUtil.java

@@ -0,0 +1,221 @@
+package com.ruoyi.common.utils;
+
+import org.apache.commons.compress.utils.IOUtils;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.springframework.http.MediaType;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.io.*;
+
+/**
+ * @ProjectName: test
+ * @Package: com.test.utils
+ * @ClassName: MyTest
+ * @Author: ***
+ * @Description:
+ * @Date: 2020/10/29 11:48
+ * @Version: 1.0
+ */
+public class AddWatermarkUtil {
+    public static void waterPress(File srcImgFile, File outputFile,
+                                  Color markContentColor, int fontSize, String waterMarkContent) {
+        try {
+            String[] waterMarkContents = waterMarkContent.split("\\|\\|");
+            // 读取原图片信息
+            Image srcImg = ImageIO.read(srcImgFile);
+            int srcImgWidth = srcImg.getWidth(null);
+            int srcImgHeight = srcImg.getHeight(null);
+            // 加水印
+            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
+            // 得到画笔对象
+            Graphics2D g = bufImg.createGraphics();
+            // 设置起点
+            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
+            Font font = new Font("Default", Font.PLAIN, fontSize);
+            // 水印透明度
+            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5F));
+            // 根据图片的背景设置水印颜色
+            g.setColor(markContentColor);
+            // 设置水印文字字体
+            g.setFont(font);
+            // 数组长度
+            int contentLength = waterMarkContents.length;
+            // 获取水印文字中最长的
+            int maxLength = 0;
+            for (int i = 0; i < contentLength; i++) {
+                int fontlen = getWatermarkLength(waterMarkContents[i], g);
+                if (maxLength < fontlen) {
+                    maxLength = fontlen;
+                }
+            }
+
+            for (int j = 0; j < contentLength; j++) {
+                waterMarkContent = waterMarkContents[j];
+                int tempX = 10;
+                int tempY = fontSize;
+                // 单字符长度
+                int tempCharLen = 0;
+                // 单行字符总长度临时计算
+                int tempLineLen = 0;
+                StringBuffer sb = new StringBuffer();
+                for (int i = 0; i < waterMarkContent.length(); i++) {
+                    char tempChar = waterMarkContent.charAt(i);
+                    tempCharLen = getCharLen(tempChar, g);
+                    tempLineLen += tempCharLen;
+                    if (tempLineLen >= srcImgWidth) {
+                        // 长度已经满一行,进行文字叠加
+                        g.drawString(sb.toString(), tempX, tempY);
+                        // 清空内容,重新追加
+                        sb.delete(0, sb.length());
+                        tempLineLen = 0;
+                    }
+                    // 追加字符
+                    sb.append(tempChar);
+                }
+                // 通过设置后两个输入参数给水印定位
+                //右下角
+                g.drawString(sb.toString(), srcImgWidth - maxLength, srcImgHeight - (contentLength - j - 1) * tempY - 50);
+                // g.drawString(sb.toString(), 20, srcImgHeight - (contentLength - j - 1) * tempY - 50);
+            }
+            g.dispose();
+
+            // 输出图片
+            // 释放资源
+            g.dispose();
+            ImageIO.write(bufImg, "PNG", outputFile);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static int getCharLen(char c, Graphics2D g) {
+        return g.getFontMetrics(g.getFont()).charWidth(c);
+    }
+
+    /**
+     * 获取水印文字总长度
+     *
+     * @paramwaterMarkContent水印的文字
+     * @paramg
+     * @return水印文字总长度
+     */
+    public static int getWatermarkLength(String waterMarkContent, Graphics2D g) {
+        return g.getFontMetrics(g.getFont()).charsWidth(
+                waterMarkContent.toCharArray(), 0, waterMarkContent.length());
+    }
+
+    /**
+     * 添加倾斜水印
+     *
+     * @param inputFile  图片
+     * @param outputFile
+     * @param text
+     * @throws IOException
+     */
+    public static void addWaterMark(File inputFile, File outputFile, Color markContentColor, int fontSize, String text) throws IOException {
+        Image image = ImageIO.read(inputFile);
+        int imgWidth = image.getWidth(null);// 获取图片的宽
+        int imgHeight = image.getHeight(null);// 获取图片的高
+
+        int angel = 315;// 旋转角度
+        int xpadding = 280;// 每个水印水平间隔
+        int ypadding = 280;// 每个水印垂直间隔
+        // int fontSize = 10;
+
+        BufferedImage bi = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_ARGB);
+
+        Graphics2D g = bi.createGraphics();
+        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+
+        // 绘制原图片
+        float alpha = 1F;
+        AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
+        g.setComposite(ac);
+        g.drawImage(image, 0, 0, imgWidth, imgHeight, null);
+        g.setBackground(Color.BLACK);
+
+        // 开始绘制水印
+        // 水印字体
+        Font font = new Font("Default", Font.BOLD, fontSize);
+        g.setFont(font);
+        FontRenderContext frc = g.getFontRenderContext();
+        TextLayout tl = new TextLayout(text, font, frc);
+        // 水印串宽度
+        int stringWidth = g.getFontMetrics(g.getFont()).charsWidth(text.toCharArray(), 0, text.length());
+
+        // 旋转水印
+        g.rotate(Math.toRadians(angel), (double) imgWidth / 2, (double) imgHeight / 2);
+        // 水印透明度
+        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5F));
+        // 字体色
+        g.setColor(markContentColor);
+
+        int x = -imgHeight / 2;
+        int y = -imgWidth / 2;
+
+        // 循环绘制
+        while (x < imgWidth + imgHeight / 2) {
+            y = -imgWidth / 2;
+            while (y < imgHeight + imgWidth / 2) {
+                Shape sha = tl.getOutline(AffineTransform.getTranslateInstance(x, y));
+                g.fill(sha);
+
+                y += ypadding;
+            }
+            x += stringWidth + xpadding;
+        }
+
+        // 释放资源
+        g.dispose();
+        ImageIO.write(bi, "PNG", outputFile);
+    }
+
+    /**
+     * MultipartFile 转 File
+     * @param multipartFile
+     * @return
+     */
+    public static File transferToFile(MultipartFile multipartFile) {
+        //选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
+        File file = null;
+        try {
+            String originalFilename = multipartFile.getOriginalFilename();
+            String[] filename = originalFilename.split("\\.");
+            file = File.createTempFile(filename[0], filename[1]);
+            multipartFile.transferTo(file);
+            file.deleteOnExit();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return file;
+    }
+
+    /**
+     * File 转 MultipartFile
+     * @param file
+     * @return
+     */
+    public static MultipartFile fileToTransfer(File file) {
+        FileItem item = new DiskFileItemFactory().createItem("file"
+                , MediaType.MULTIPART_FORM_DATA_VALUE
+                , true
+                , file.getName());
+        try (InputStream input = new FileInputStream(file);
+             OutputStream os = item.getOutputStream()) {
+            // 流转移
+            IOUtils.copy(input, os);
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Invalid file: " + e, e);
+        }
+
+        return new CommonsMultipartFile(item);
+    }
+}

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/LoadFeeItems.java

@@ -66,4 +66,7 @@ public class LoadFeeItems {
     // private String itemProp;
     private String auditType;
 
+    @TableField(jdbcType = JdbcType.VARCHAR)
+    private String remarks;
+
 }

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderBillsPlans.java

@@ -103,6 +103,10 @@ public class OrderBillsPlans {
     private String gasstation2;
 
 
+    @TableField(jdbcType = JdbcType.INTEGER)
+    private Long srcEntityId;
+
+
     private String driver1Name;
     private String driver1mobile;
 

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/TmsAttachMngs.java

@@ -27,4 +27,6 @@ public class TmsAttachMngs {
 
     @TableField(jdbcType = JdbcType.INTEGER)
     private Long loadBillsSysId;
+
+    private String suffixName;
 }

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/WfTaskList.java

@@ -44,4 +44,7 @@ public class WfTaskList {
     private Long billStatus;
     private String billStatusName;
 
+    private Long status317;
+    private Long status376;
+
 }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/OrderBillsPlansVo.java

@@ -32,4 +32,10 @@ public class OrderBillsPlansVo extends OrderBillsPlans {
      * 照片
      */
     private List<ImgVo> fileList1;
+
+    /**
+     * 分页
+     */
+    private Integer head;
+    private Integer tail;
 }

+ 18 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TmsAttachMngsVo.java

@@ -0,0 +1,18 @@
+package com.ruoyi.system.domain.vo;
+
+import com.ruoyi.system.domain.TmsAttachMngs;
+import lombok.Data;
+
+@Data
+public class TmsAttachMngsVo extends TmsAttachMngs {
+
+    /**
+     * 订单号
+     */
+    private String orderNo;
+
+    /**
+     * 图片上传时间
+     */
+    private String date;
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderBillsPlansMapper.java

@@ -140,4 +140,11 @@ public interface OrderBillsPlansMapper {
      * @return
      */
     Integer deleteTmsAttachMngsByAttachId(Long attachId);
+
+    /**
+     * 根据EntityId更新
+     * @param srcEntityId
+     * @return
+     */
+    Integer updateLoadBillsByEntityID(OrderBillsPlansVo srcEntityId);
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java

@@ -67,4 +67,11 @@ public interface SysConfigMapper {
      * @return 结果
      */
     public int deleteConfigByIds(Long[] configIds);
+
+    /**
+     * 根据key查询value
+     * @param configKey
+     * @return
+     */
+    String getByConfigKey(String configKey);
 }

+ 7 - 5
ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderBillsPlansService.java

@@ -3,8 +3,8 @@ package com.ruoyi.system.service;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.domain.vo.ItemsVo;
-import com.ruoyi.system.domain.vo.LoadFeeItemsVo;
 import com.ruoyi.system.domain.vo.OrderBillsPlansVo;
+import com.ruoyi.system.domain.vo.TmsAttachMngsVo;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -16,9 +16,11 @@ public interface IOrderBillsPlansService {
      *
      * @param dataStart 日期起
      * @param dataEnd   日期止
+     * @param pageNum
+     * @param pageSize
      * @return
      */
-    List<WfTaskList> getOrderBillsPlansList(String dataStart, String dataEnd, String orderNo);
+    List<WfTaskList> getOrderBillsPlansList(String dataStart, String dataEnd, String orderNo, Integer head, Integer tail);
 
     /**
      * 根据orderNo查询
@@ -60,14 +62,14 @@ public interface IOrderBillsPlansService {
      * @param
      * @return 数据
      */
-    OrderBillsPlansVo getLoadFeeItems(Long orderNo);
+    OrderBillsPlansVo getLoadFeeItems(Long orderNo, HttpServletRequest request);
 
     /**
      * 插入主库图片数据
-     * @param tmsAttachMngs
+     * @param tmsAttachMngsVo
      * @return
      */
-    AjaxResult insertAttachMngs(TmsAttachMngs tmsAttachMngs);
+    AjaxResult insertAttachMngs(TmsAttachMngsVo tmsAttachMngsVo);
 
     /**
      * 根据attachId在Tms库的AttachMngs表删除数据

+ 86 - 20
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderBillsPlansServiceImpl.java

@@ -2,14 +2,14 @@ package com.ruoyi.system.service.impl;
 
 import com.ruoyi.common.annotation.DataSource;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.DataSourceType;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.SnowFlakeUtil;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.domain.vo.ImgVo;
 import com.ruoyi.system.domain.vo.ItemsVo;
-import com.ruoyi.system.domain.vo.LoadFeeItemsVo;
 import com.ruoyi.system.domain.vo.OrderBillsPlansVo;
+import com.ruoyi.system.domain.vo.TmsAttachMngsVo;
 import com.ruoyi.system.mapper.EmplsMapper;
 import com.ruoyi.system.mapper.OrderBillsPlansMapper;
 import com.ruoyi.system.service.IOrderBillsPlansService;
@@ -22,6 +22,8 @@ import java.beans.Transient;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
+import static com.alibaba.fastjson.JSONPatch.OperationType.replace;
+
 /**
  * 火烈鸟数据库
  */
@@ -41,15 +43,21 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
     @Autowired
     private EmplsMapper emplsMapper;
 
+
+    @Autowired
+    private RedisCache redisCache;
+
     /**
      * 查询业务表数据List
      *
      * @param dataStart 日期起
      * @param dataEnd   日期止
+     * @param pageNum
+     * @param pageSize
      * @return
      */
     @Override
-    public List<WfTaskList> getOrderBillsPlansList(String dataStart, String dataEnd, String orderNo) {
+    public List<WfTaskList> getOrderBillsPlansList(String dataStart, String dataEnd, String orderNo, Integer head, Integer tail) {
 
         // 根据登录名去匹配EMPLS 里面的EMPL  找到 EMPLID
         String userName = SecurityUtils.getLoginUser().getUsername();
@@ -67,17 +75,35 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
             orderNo = "%" + orderNo + "%";
         }
 
+        Object actId = redisCache.getCacheObject("sys_config:risk.actId");
+
         map.put("emplId", emplId);
         map.put("dataStart", dataStart);
         map.put("dataEnd", dataEnd);
         map.put("orderNo", orderNo);
+        map.put("actId", actId.toString());
+        map.put("head", head);
+        map.put("tail", tail);
+        List<WfTaskList> orderBillsPlansList = new ArrayList<>();
+        try {
 
-        List<WfTaskList> orderBillsPlansList = orderBillsPlansMapper.getOrderBillsPlansLsit(map);
+            orderBillsPlansList = orderBillsPlansMapper.getOrderBillsPlansLsit(map);
+        } catch (Exception a) {
+            System.out.println("aa");
+        }
         for (WfTaskList wfTaskList : orderBillsPlansList) {
-            if (wfTaskList.getBillStatus() == 6) {
-                wfTaskList.setBillStatusName("禁止修改");
-            } else if (wfTaskList.getBillStatus() == 2) {
-                wfTaskList.setBillStatusName("允许修改");
+            Long status317 = wfTaskList.getStatus317();
+            Long status376 = wfTaskList.getStatus376();
+            if (status317 == null || status376 == null) {
+                break;
+            }
+
+            if (status317 == 2) {
+                wfTaskList.setBillStatusName("里程待提交");
+            } else if (status376 == 2 || status376 == 0) {
+                wfTaskList.setBillStatusName("费用待提交");
+            } else if (status376 == 6) {
+                wfTaskList.setBillStatusName("报单完成");
             }
         }
         return orderBillsPlansList;
@@ -106,6 +132,10 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
             vo.setUnLoadDateString(ft.format(unLoadDate));
         }
 
+        Object actId = redisCache.getCacheObject("sys_config:risk.actId");
+
+        orderBillsPlans.setActId(Long.valueOf(actId.toString()));
+
         // 查找照片List
         List<Long> attachIdList = orderBillsPlansMapper.getAttachMngsAttachIdBySysIdAndEntityIdAndActId(orderBillsPlans);
 
@@ -144,9 +174,13 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
             String unLoadDateString = orderBillsPlansVo.getUnLoadDateString();
             if (loadDateString != null && !"".equals(loadDateString)) {
                 orderBillsPlans.setLoadDate(ft.parse(loadDateString));
+            } else {
+                orderBillsPlans.setLoadDate(null);
             }
             if (unLoadDateString != null && !"".equals(unLoadDateString)) {
                 orderBillsPlans.setUnLoadDate(ft.parse(unLoadDateString));
+            } else {
+                orderBillsPlans.setUnLoadDate(null);
             }
         } catch (Exception e) {
             System.out.println(e.getMessage());
@@ -184,6 +218,8 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
 
         // 更新业务表
         Integer i = orderBillsPlansMapper.updateOrderBillsPlansByOrderNo(orderBillsPlansVo);
+        // 更新LoadBills
+        Integer y = orderBillsPlansMapper.updateLoadBillsByEntityID(orderBillsPlansVo);
 
         // 根据登录名去匹配EMPLS 里面的EMPL  找到 EMPLID
         String userName = SecurityUtils.getLoginUser().getUsername();
@@ -209,8 +245,8 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
 
         for (LoadFeeItems loadFeeItems : orderBillsPlansVo.getLoadFeeItemsList()) {
 
-            if (loadFeeItems.getAmt() == 0)
-                break;
+            // if (loadFeeItems.getAmt() == 0)
+            //     break;
 
             orderBillsPlansMapper.updateOrderBillsPlansBySysidEntityidLineno(loadFeeItems);
 
@@ -237,8 +273,29 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
      * @return 数据
      */
     @Override
-    public OrderBillsPlansVo getLoadFeeItems(Long orderNo) {
+    public OrderBillsPlansVo getLoadFeeItems(Long orderNo, HttpServletRequest request) {
         OrderBillsPlansVo data = orderBillsPlansMapper.getOrderBillsPlansByOrder(orderNo);
+        // 图片
+        Object actId = redisCache.getCacheObject("sys_config:risk.actId");
+        data.setActId(Long.valueOf(actId.toString()));
+        // 查找照片List
+        List<Long> attachIdList = orderBillsPlansMapper.getAttachMngsAttachIdBySysIdAndEntityIdAndActId(data);
+
+        List<ImgVo> fileList1 = new ArrayList<>();
+        for (Long attachId : attachIdList) {
+            ImgVo imgVo = new ImgVo();
+
+            String serverName = request.getServerName();
+            int serverPort = request.getServerPort();
+            String url = "http://" + serverName + ":" + serverPort + "/attachmngs/img/" + attachId;
+            imgVo.setUrl(url);
+
+            fileList1.add(imgVo);
+        }
+
+        data.setFileList1(fileList1);
+
+
         List<LoadFeeItems> loadFeeItemsList = orderBillsPlansMapper.getLoadFeeItemsByEntityId(data.getLoadBillsEntityId());
         data.setLoadFeeItemsList(loadFeeItemsList);
         return data;
@@ -246,30 +303,39 @@ public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService {
 
     /**
      * 插入主库图片数据
-     * @param tmsAttachMngs
+     *
+     * @param tmsAttachMngsVo
      * @return
      */
     @Override
-    public AjaxResult insertAttachMngs(TmsAttachMngs tmsAttachMngs) {
+    public AjaxResult insertAttachMngs(TmsAttachMngsVo tmsAttachMngsVo) {
 
         // 查询最大的lineNo进行+1赋值
-        Long lineNo = orderBillsPlansMapper.getAttachMngsBySysIdEntityId(tmsAttachMngs);
+        Long lineNo = orderBillsPlansMapper.getAttachMngsBySysIdEntityId(tmsAttachMngsVo);
+
+        lineNo = lineNo == null ? 1L : lineNo + 1;
 
         String username = SecurityUtils.getLoginUser().getUsername();
-        tmsAttachMngs.setActId(375L);
-        tmsAttachMngs.setAttachName(UUID.randomUUID().toString().replace("-", ""));
-        tmsAttachMngs.setLineNo(lineNo == null ? 1L : lineNo + 1);
-        tmsAttachMngs.setUserName(username);
+        Object actId = redisCache.getCacheObject("sys_config:risk.actId");
+        tmsAttachMngsVo.setActId(Long.valueOf(actId.toString()));
+        String orderNo = tmsAttachMngsVo.getOrderNo();
+        String date = tmsAttachMngsVo.getDate();
+
+
+        tmsAttachMngsVo.setAttachName(orderNo + "-" + date + "-" + lineNo + ".jpg");
+        tmsAttachMngsVo.setLineNo(lineNo);
+        tmsAttachMngsVo.setUserName(username);
 
         // 插入照片表
-        Integer i = orderBillsPlansMapper.insertAttachMngs(tmsAttachMngs);
+        Integer i = orderBillsPlansMapper.insertAttachMngs(tmsAttachMngsVo);
         // 查询AttachtypeId返回前端在照片库中插入
-        Long attachId = orderBillsPlansMapper.getAttachMngsAttachtypeIdBySysIdAndEntityIdAndLineNo(tmsAttachMngs);
+        Long attachId = orderBillsPlansMapper.getAttachMngsAttachtypeIdBySysIdAndEntityIdAndLineNo(tmsAttachMngsVo);
         return AjaxResult.success(attachId);
     }
 
     /**
      * 根据attachId在Tms库的AttachMngs表删除数据
+     *
      * @param attachId
      * @return
      */

+ 47 - 21
ruoyi-system/src/main/resources/mapper/system/OrderBillsPlansMapper.xml

@@ -44,22 +44,31 @@
             oilcash1Amt    = #{oilcash1Amt},
             oilcardQty     = #{oilcardQty},
             oilcardAmt     = #{oilcardAmt},
-            gasstation1    = #{gasstation1},
-            gasstation2    = #{gasstation2}
+            oilcard1Qty     = #{oilcardQty},
+            oilcard1Amt     = #{oilcardAmt},
+            driverassdesc = #{driverassdesc}
         where orderNo = #{orderNo}
     </update>
     <update id="updateOrderBillsPlansBySysidEntityidLineno">
 
         update LoadFeeItems
-        set Price  = #{amt},
-            Amt    = #{amt},
-            AMT1   = #{amt},
-            AMT2   = #{amt},
-            AMTORG = #{amt}
-
+        set Price   = #{amt},
+            Amt     = #{amt},
+            AMT1    = #{amt},
+            AMT2    = #{amt},
+            AMTORG  = #{amt},
+            remarks = #{remarks}
         where sysId = '1'
-          AND entityid = #{entityId} and lineno = #{lineNo}
+          AND entityid = #{entityId}
+          and lineno = #{lineNo}
     </update>
+    <update id="updateLoadBillsByEntityID">
+        update LoadBills
+        set gasstation1 = #{gasstation1},
+            gasstation2 = #{gasstation2}
+        where SrcEntityID = #{entityId}
+    </update>
+
     <delete id="deleteLoadFeeItemsByEntityId">
         delete from LoadFeeItems where sysid = 1 and entityid = #{entityId}
     </delete>
@@ -69,8 +78,7 @@
 
 
     <select id="getOrderBillsPlansLsit" parameterType="Map" resultType="com.ruoyi.system.domain.WfTaskList">
-        Select
-        Distinct p.SysID sysId
+        Select Distinct p.SysID sysId
         , p.EntityID entityId
         , p.LineNo lineNo
         , p.OrderNo orderNo
@@ -100,9 +108,12 @@
         ,e.Empl transact
         , b.BillDate billDate
         , p.rightqty
-
         , b.billStatus
+        ,t.Status status317
+        , tt.Status status376
         from wf_TaskList t
+        Left join wf_TaskList tt on (tt.SysID=t.SysID and tt.ActID=#{actId, jdbcType=VARCHAR} and
+        tt.EntityID=t.EntityID)
         Left join LoadBills b on (b.SysID=t.SysID and b.EntityID=t.EntityID)
         Left join OrderBillsPlans p on (p.SysID=b.SysID and p.EntityID=b.SrcEntityID and p.LineNo=b.SrcLineNo)
         Left join Empls e on (e.SysID=b.SysID and e.EmplID=b.TransactID)
@@ -128,7 +139,8 @@
             </if>
         </where>
 
-        ORDER BY b.BillDate desc
+        ORDER BY b.BillDate DESC ROWS #{head} TO #{tail}
+
     </select>
 
     <select id="getOrderBillsPlansByid" resultType="com.ruoyi.system.domain.OrderBillsPlans">
@@ -181,7 +193,7 @@
 
 
     <select id="getItemsList" resultType="com.ruoyi.system.domain.vo.ItemsVo">
-        select itemId, cName, itemProp, auditType from Items where SysID=1 and  itemProp='F'
+        select itemId, cName, itemProp, auditType from Items where SysID=1 and  itemProp='F' order by zorder
     </select>
     <select id="getLoadFeeitemsMapByentityIdKeyItemId" resultType="java.util.Map">
         select itemId, atm1, entityId from LoadFeeItems where entityId = #{entityId}
@@ -202,8 +214,8 @@
              , o.oilcash1Amt
              , o.oilcardQty
              , o.oilcardAmt
-             , o.gasstation1
-             , o.gasstation2
+             , b.gasstation1
+             , b.gasstation2
              , o.entityId
              , o.orderNo
              , o.carId
@@ -211,7 +223,11 @@
              , o.actId
              , b.entityID loadBillsEntityId
              , dr1.Empl   driver1Name
-             ,dr1.mobile driver1mobile
+             , dr1.mobile driver1mobile
+             , b.billStatus
+             , b.entityId      loadBillsEntityId
+             , b.sysId         loadBillsSysId
+             , o.driverassdesc
         FROM OrderBillsPlans o
                  INNER JOIN LoadBills b
                             ON
@@ -220,14 +236,15 @@
                                     AND o.LineNo = b.SrcLineNo
 
                  Left join Empls dr1 on dr1.EmplID = o.DRIVER1ID
-        where o.orderNo = #{orderNo} and dr1.SysID = 1
+        where o.orderNo = #{orderNo}
+          and dr1.SysID = 1
     </select>
     <select id="getLoadFeeItemsByEntityId" resultType="com.ruoyi.system.domain.LoadFeeItems">
-        select l.itemid, l.amt, i.cName, i.itemProp, i.auditType, l.lineNo, l.entityid
+        select l.itemid, l.amt, i.cName, i.itemProp, i.auditType, l.lineNo, l.entityid, l.remarks
         from LoadFeeItems l
                  inner join Items i on l.ItemID = i.ItemID
         where l.sysid = 1
-          and l.entityId = #{entityId};
+          and l.entityId = #{entityId}  order by l.lineno
     </select>
     <select id="getAttachMngsBySysIdEntityId" resultType="java.lang.Long">
         select MAX(lineNo) from AttachMngs where sysId = #{loadBillsSysId} and entityId = #{loadBillsEntityId}
@@ -236,6 +253,15 @@
         select attachId from AttachMngs where SysId = #{loadBillsSysId} and EntityId = #{loadBillsEntityId} and LineNo = #{lineNo}
     </select>
     <select id="getAttachMngsAttachIdBySysIdAndEntityIdAndActId" resultType="java.lang.Long">
-        select attachId from AttachMngs where SysId = #{loadBillsSysId} and EntityId = #{loadBillsEntityId} and ActID = 375
+        select attachId from AttachMngs where SysId = #{loadBillsSysId} and EntityId = #{loadBillsEntityId} and ActID = #{actId}
+    </select>
+    <select id="getLoadBillsByOrderNo">
+        select *
+        FROM OrderBillsPlans o
+                 INNER JOIN LoadBills b
+                            ON
+                                        o.SysID = b.SysID
+                                    AND o.EntityID = b.SrcEntityID
+                                    AND o.LineNo = b.SrcLineNo
     </select>
 </mapper>

+ 3 - 0
ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml

@@ -63,6 +63,9 @@
         <include refid="selectConfigVo"/>
         where config_key = #{configKey} limit 1
     </select>
+    <select id="getByConfigKey" resultType="java.lang.String">
+        select config_value from sys_config where config_key = #{configKey}
+    </select>
 
     <insert id="insertConfig" parameterType="SysConfig">
         insert into sys_config (