wwh 3 日 前
コミット
2ca4bf261f
25 ファイル変更3655 行追加3154 行削除
  1. 3080 3080
      huimv-admin/src/main/java/com/huimv/admin/timer/WaterAndElcTimer.java
  2. 6 0
      huimv-receive/pom.xml
  3. 63 0
      huimv-receive/src/main/java/com/huimv/receive/common/utils/BASE64DecodedMultipartFile.java
  4. 197 0
      huimv-receive/src/main/java/com/huimv/receive/common/utils/ImageSizeUtil.java
  5. 4 0
      huimv-receive/src/main/java/com/huimv/receive/common/utils/Print.java
  6. 33 0
      huimv-receive/src/main/java/com/huimv/receive/common/utils/ToolsUtil.java
  7. 31 0
      huimv-receive/src/main/java/com/huimv/receive/common/utils/UploadImage.java
  8. 16 4
      huimv-receive/src/main/java/com/huimv/receive/controller/BillAccessDoorController.java
  9. 7 2
      huimv-receive/src/main/java/com/huimv/receive/controller/BillGoodsInventoryController.java
  10. 6 0
      huimv-receive/src/main/java/com/huimv/receive/controller/BillPersonnelAdmissionController.java
  11. 10 1
      huimv-receive/src/main/java/com/huimv/receive/controller/LoginController.java
  12. 3 0
      huimv-receive/src/main/java/com/huimv/receive/entity/BaseWashoutPoint.java
  13. 4 0
      huimv-receive/src/main/java/com/huimv/receive/entity/dto/GetWashoutPointDto.java
  14. 2 0
      huimv-receive/src/main/java/com/huimv/receive/entity/dto/WashListDto.java
  15. 1 0
      huimv-receive/src/main/java/com/huimv/receive/entity/vo/DestVo.java
  16. 9 1
      huimv-receive/src/main/java/com/huimv/receive/service/IBillGoodsInventoryService.java
  17. 4 0
      huimv-receive/src/main/java/com/huimv/receive/service/IBillPersonnelAdmissionService.java
  18. 3 0
      huimv-receive/src/main/java/com/huimv/receive/service/impl/BaseProcessServiceImpl.java
  19. 13 0
      huimv-receive/src/main/java/com/huimv/receive/service/impl/BaseWashoutPointServiceImpl.java
  20. 33 12
      huimv-receive/src/main/java/com/huimv/receive/service/impl/BillGoodsInventoryServiceImpl.java
  21. 38 38
      huimv-receive/src/main/java/com/huimv/receive/service/impl/BillPcrServiceImpl.java
  22. 79 9
      huimv-receive/src/main/java/com/huimv/receive/service/impl/BillPersonnelAdmissionServiceImpl.java
  23. 4 4
      huimv-receive/src/main/java/com/huimv/receive/service/impl/BillSamplingServiceImpl.java
  24. 8 2
      huimv-receive/src/main/java/com/huimv/receive/service/impl/SysAccountMultilevelServiceImpl.java
  25. 1 1
      huimv-receive/src/main/resources/mapper/BaseWashoutPointMapper.xml

ファイルの差分が大きいため隠しています
+ 3080 - 3080
huimv-admin/src/main/java/com/huimv/admin/timer/WaterAndElcTimer.java


+ 6 - 0
huimv-receive/pom.xml

@@ -142,6 +142,12 @@
             <artifactId>jxls-poi</artifactId>
             <version>1.1.0</version>
         </dependency>
+        <!--thumbnailator 压缩工具-->
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.8</version>
+        </dependency>
 
 
 

+ 63 - 0
huimv-receive/src/main/java/com/huimv/receive/common/utils/BASE64DecodedMultipartFile.java

@@ -0,0 +1,63 @@
+package com.huimv.receive.common.utils;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+
+ 
+public class BASE64DecodedMultipartFile implements MultipartFile {
+    private final byte[] imgContent;
+    private final String header;
+
+    public BASE64DecodedMultipartFile(byte[] imgContent, String header) {
+        this.imgContent = imgContent;
+        this.header = header.split(";")[0];
+    }
+
+    @Override
+    public String getName() {
+        // TODO - implementation depends on your requirements
+        return System.currentTimeMillis() + Math.random() + "." + header.split("/")[1];
+    }
+
+    @Override
+    public String getOriginalFilename() {
+        // TODO - implementation depends on your requirements
+        return System.currentTimeMillis() + (int)Math.random() * 10000 + "." + header.split("/")[1];
+    }
+
+    @Override
+    public String getContentType() {
+        // TODO - implementation depends on your requirements
+        return header.split(":")[1];
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return imgContent == null || imgContent.length == 0;
+    }
+
+    @Override
+    public long getSize() {
+        return imgContent.length;
+    }
+
+    @Override
+    public byte[] getBytes() throws IOException {
+        return imgContent;
+    }
+
+    @Override
+    public InputStream getInputStream() throws IOException {
+        return new ByteArrayInputStream(imgContent);
+    }
+
+    @Override
+    public void transferTo(File dest) throws IOException, IllegalStateException {
+        new FileOutputStream(dest).write(imgContent);
+    }
+
+
+
+}
+

+ 197 - 0
huimv-receive/src/main/java/com/huimv/receive/common/utils/ImageSizeUtil.java

@@ -0,0 +1,197 @@
+package com.huimv.receive.common.utils;
+
+
+import net.coobird.thumbnailator.Thumbnails;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.multipart.MultipartFile;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import javax.imageio.ImageIO;
+import javax.imageio.ImageReader;
+import javax.imageio.stream.ImageInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * 获取图片尺寸和截图 工具类
+ *
+ * @author zhangxiaoyan
+ */
+public class ImageSizeUtil {
+
+//    private final static Logger logger = LoggerFactory.getLogger(ImageSizeUtil.class);
+
+
+
+    /**
+     * 获取图片最长边长度
+     * @param params
+     * @return
+     */
+    public static int getImageLengthOfSide(MultipartFile params){
+        int lengthSize = 0;
+        Map<String, Integer> result = new HashMap<>();
+        long beginTime = new Date().getTime();
+        // 获取图片格式
+        String suffixName = getSuffixNameInfo(params);
+        try {
+            Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(suffixName);
+            ImageReader reader = (ImageReader) readers.next();
+            ImageInputStream iis = ImageIO.createImageInputStream(params.getInputStream());
+            reader.setInput(iis, true);
+            result.put("width",reader.getWidth(0));
+            result.put("height",reader.getHeight(0));
+            if(reader.getWidth(0) > reader.getHeight(0)){
+                lengthSize = reader.getWidth(0);
+            }else{
+                lengthSize = reader.getHeight(0);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return lengthSize;
+    }
+
+    /**
+     * 获取图片格式
+     * @param params
+     * @return
+     */
+    public static String getSuffixNameInfo(MultipartFile params){
+        String result = "";
+        // 图片后缀
+        String suffixName = params.getOriginalFilename().substring(
+                params.getOriginalFilename().lastIndexOf("."));
+        if(suffixName.indexOf("png")>0){
+            result = "png";
+        }else if(suffixName.indexOf("jpg")>0){
+            result = "jpg";
+        }else if(suffixName.indexOf("jpeg")>0){
+            result = "jpeg";
+        }
+
+        return result;
+    }
+
+
+
+
+    /**
+     * 根据指定大小压缩图片
+     *
+     * @param imageBytes  源图片字节数组
+     * @param desFileSize 指定图片大小,单位kb
+     * @return 压缩质量后的图片字节数组
+     */
+    public static byte[] compressPicForScale(byte[] imageBytes, long desFileSize) {
+        if (imageBytes == null || imageBytes.length <= 0 || imageBytes.length < desFileSize * 1024) {
+            return imageBytes;
+        }
+        long srcSize = imageBytes.length;
+        double accuracy = getAccuracy(srcSize / 1024);
+//        double accuracy = 0.85;
+        try {
+            while (imageBytes.length > desFileSize * 1024) {
+                ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);
+                ByteArrayOutputStream outputStream = new ByteArrayOutputStream(imageBytes.length);
+                Thumbnails.of(inputStream)
+                        .scale(accuracy)
+                        .outputQuality(accuracy)
+                        .toOutputStream(outputStream);
+                imageBytes = outputStream.toByteArray();
+            }
+//            logger.info("【图片压缩】imageId={} | 图片原大小={}kb | 压缩后大小={}kb",
+//                    "", srcSize / 1024, imageBytes.length / 1024);
+        } catch (Exception e) {
+//            logger.error("【图片压缩】msg=图片压缩失败!", e);
+        }
+        return imageBytes;
+    }
+
+    /**
+     * 自动调节精度(经验数值)
+     *
+     * @param size 源图片大小,单位kb
+     * @return 图片压缩质量比
+     */
+    private static double getAccuracy(long size) {
+        double accuracy;
+        if (size < 900) {
+            accuracy = 0.85;
+        } else if (size < 2047) {
+//            accuracy = 0.6;
+            accuracy = 0.8;
+        } else if (size < 3275) {
+//            accuracy = 0.44;
+            accuracy = 0.7;
+        } else {
+            accuracy = 0.4;
+        }
+        return accuracy;
+    }
+
+    /**
+     * base64 转MultipartFile
+     * @param base64
+     * @return
+     */
+    public static MultipartFile base64ToMultipart(String base64) {
+        try {
+            // 注意base64是否有头信息,如:data:image/jpeg;base64,。。。
+            String[] baseStrs = base64.split(",");
+
+            BASE64Decoder decoder = new BASE64Decoder();
+            byte[] b = new byte[0];
+            b = decoder.decodeBuffer(baseStrs[1]);
+
+            for(int i = 0; i < b.length; ++i) {
+                if (b[i] < 0) {
+                    b[i] += 256;
+                }
+            }
+
+            return new BASE64DecodedMultipartFile(b, baseStrs[0]);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
+    /**
+     * 压缩图片
+     * @return
+     */
+    public static MultipartFile byte2Base64StringFun(MultipartFile fileImg){
+        MultipartFile result = fileImg;
+        // 获取图片最长边
+        int imageLengthSize = ImageSizeUtil.getImageLengthOfSide(fileImg);
+        Long swd = fileImg.getSize();
+            BASE64Encoder encoder = new BASE64Encoder();
+            String imgData1 = null;
+            try {
+                InputStream inputStream = fileImg.getInputStream();
+                byte[] imgData = ImageSizeUtil.compressPicForScale(ToolsUtil.getByteArray(inputStream),200);
+                imgData1 = "data:"+fileImg.getContentType()+";base64,"+encoder.encode(imgData);
+                MultipartFile def = ImageSizeUtil.base64ToMultipart(imgData1);
+                result = def;
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        return result;
+    }
+
+
+
+
+
+}
+

+ 4 - 0
huimv-receive/src/main/java/com/huimv/receive/common/utils/Print.java

@@ -145,6 +145,8 @@ public class Print {
                 dto.setBillStatus("异常");
             } else if (admission.getBillStatus() == 3) {
                 dto.setBillStatus("失效");
+            } else if (admission.getBillStatus() == 4) {
+                dto.setBillStatus("提前结束");
             }
 
             if (admission.getVistitType() == 0) {
@@ -196,6 +198,8 @@ public class Print {
                 dto.setBillStatus("异常");
             } else if (admission.getBillStatus() == 3) {
                 dto.setBillStatus("失效");
+            }else if (admission.getBillStatus() == 4) {
+                dto.setBillStatus("提前结束");
             }
 
             if (admission.getVistitType() == 0) {

+ 33 - 0
huimv-receive/src/main/java/com/huimv/receive/common/utils/ToolsUtil.java

@@ -0,0 +1,33 @@
+package com.huimv.receive.common.utils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * 公共 工具类
+ * Created by zxy on 18/11/15.
+ */
+public class ToolsUtil {
+
+    /**
+     * InputStream转换为byte[]
+     *
+     * @param inStream
+     * @return
+     * @throws IOException
+     */
+    public static final byte[] getByteArray(InputStream inStream) throws IOException {
+        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
+        byte[] buff = new byte[100];
+        int rc = 0;
+        while ((rc = inStream.read(buff, 0, 100)) > 0) {
+            swapStream.write(buff, 0, rc);
+        }
+        byte[] in2b = swapStream.toByteArray();
+        return in2b;
+    }
+
+
+}
+

+ 31 - 0
huimv-receive/src/main/java/com/huimv/receive/common/utils/UploadImage.java

@@ -41,6 +41,37 @@ public class UploadImage {
 
 
 
+
+    /**
+     * 判断文件大小
+     *
+     * @param len
+     *            文件长度
+     * @param size
+     *            限制大小
+     * @param unit
+     *            限制单位(B,K,M,G)
+     * @return
+     */
+    public boolean checkFileSize(Long len, int size, String unit) {
+//        long len = file.length();
+        double fileSize = 0;
+        if ("B".equals(unit.toUpperCase())) {
+            fileSize = (double) len;
+        } else if ("K".equals(unit.toUpperCase())) {
+            fileSize = (double) len / 1024;
+        } else if ("M".equals(unit.toUpperCase())) {
+            fileSize = (double) len / 1048576;
+        } else if ("G".equals(unit.toUpperCase())) {
+            fileSize = (double) len / 1073741824;
+        }
+        if (fileSize > size) {
+            return false;
+        }
+        return true;
+    }
+
+
     /**
      * 利用JSch包实现SFTP上传文件
      * @param bytes  文件字节流

+ 16 - 4
huimv-receive/src/main/java/com/huimv/receive/controller/BillAccessDoorController.java

@@ -4,6 +4,7 @@ package com.huimv.receive.controller;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.receive.common.token.TokenSign;
 import com.huimv.receive.common.utils.Result;
 import com.huimv.receive.common.utils.ResultCode;
 import com.huimv.receive.common.utils.UploadImage;
@@ -55,13 +56,24 @@ public class BillAccessDoorController {
         String farmId = paramsMap.get("farmId");
         String type = paramsMap.get("type");//1为人脸门禁 2为车辆闸机
         String id = paramsMap.get("id");
+        Integer id1 = TokenSign.getMemberIdByJwtToken(httpServletRequest);
         if ("1".equals(type)) {
-            BillAccessDoor doorServiceOne = doorService.getOne(new QueryWrapper<BillAccessDoor>()
-                    .eq("farm_id", farmId).eq("id", id));
+            QueryWrapper<BillAccessDoor> queryWrapper = new QueryWrapper();
+            if (277==id1) {
+                queryWrapper.eq("id", id);
+            } else {
+                queryWrapper.eq("id", id).in("farm_id", farmId, 1, 2);
+            }
+            BillAccessDoor doorServiceOne = doorService.getOne(queryWrapper);
             return new Result(ResultCode.SUCCESS, doorServiceOne);
         } else {
-            BillGate gate = gateService.getOne(new QueryWrapper<BillGate>().eq("farm_id", farmId)
-                    .eq("id", id));
+            QueryWrapper<BillGate> queryWrapper = new QueryWrapper();
+            if (277==id1) {
+                queryWrapper.eq("id", id);
+            } else {
+                queryWrapper.eq("id", id).in("farm_id", farmId, 1, 2);
+            }
+            BillGate gate = gateService.getOne(queryWrapper);
             return new Result(ResultCode.SUCCESS, gate);
         }
 

+ 7 - 2
huimv-receive/src/main/java/com/huimv/receive/controller/BillGoodsInventoryController.java

@@ -38,8 +38,13 @@ public class BillGoodsInventoryController {
     @RequestMapping("/edit")
     public Result edit(HttpServletRequest httpServletRequest, @RequestParam("id") String id,
                        @RequestParam("goods") String goods,
-                       @RequestParam("imgUrl")MultipartFile imgUrl) throws IOException {
-        return goodsInventoryService.edit(httpServletRequest, id,goods,imgUrl);
+                       @RequestParam("imgUrl1")MultipartFile imgUrl1,
+                       @RequestParam(value = "imgUrl2",required = false) MultipartFile imgUrl2,
+                       @RequestParam(value = "imgUrl3",required = false) MultipartFile imgUrl3,
+                       @RequestParam(value = "imgUrl4",required = false) MultipartFile imgUrl4,
+                       @RequestParam(value = "imgUrl5",required = false) MultipartFile imgUrl5,
+                       @RequestParam(value = "imgUrl6",required = false) MultipartFile imgUrl6) throws IOException {
+        return goodsInventoryService.edit(httpServletRequest, id,goods,imgUrl1,imgUrl2,imgUrl3,imgUrl4,imgUrl5,imgUrl6);
     }
 
     @RequestMapping("/list")

+ 6 - 0
huimv-receive/src/main/java/com/huimv/receive/controller/BillPersonnelAdmissionController.java

@@ -316,4 +316,10 @@ public class BillPersonnelAdmissionController {
                 destId, destName, farmId, carNum, source, goods, departureId, departureName,picture1,picture2,picture3, midId,midName);
     }
 
+
+    //入场申请撤回
+    @RequestMapping("/removeAdmission")
+    public Result removeAdmission(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return admissionService.removeAdmission(httpServletRequest, paramsMap);
+    }
 }

+ 10 - 1
huimv-receive/src/main/java/com/huimv/receive/controller/LoginController.java

@@ -25,8 +25,11 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.File;
 import java.io.IOException;
 import java.util.Date;
 import java.util.HashMap;
@@ -474,6 +477,12 @@ public class LoginController {
                                @RequestParam(value = "imgUrl", required = false) MultipartFile imgUrl,
                                @RequestParam("openId") String openId) throws IOException {
         String remoteHost = req.getRemoteHost();
+
+        MultipartFile multipartFile = ImageSizeUtil.byte2Base64StringFun(imgUrl);
+        boolean result = uploadImage.checkFileSize(multipartFile.getSize(), 200, "K");
+        if (!result) {
+            return new Result(10001, "上传个人照片太大,请重新上传", false);
+        }
         QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("type",7).and(i->i.eq("phone", phone).or().eq("papers_code", papersCode));
         if (ObjectUtil.isNotEmpty(accountMultilevelService.getOne(queryWrapper))) {
@@ -502,7 +511,7 @@ public class LoginController {
         sysAccountMultilevel.setPapersType(papersType);
         sysAccountMultilevel.setWechatId(openId);
         sysAccountMultilevel.setType(7);
-        String imageCom = uploadImage.getImageCom(imgUrl);
+        String imageCom = uploadImage.getImageCom(multipartFile);
         if (imageCom.equals("上传失败")) {
             return new Result(10001, "图片上传失败!", false);
         }

+ 3 - 0
huimv-receive/src/main/java/com/huimv/receive/entity/BaseWashoutPoint.java

@@ -90,4 +90,7 @@ public class BaseWashoutPoint implements Serializable {
 
     private String midName;
 
+
+    private String remark;
+
 }

+ 4 - 0
huimv-receive/src/main/java/com/huimv/receive/entity/dto/GetWashoutPointDto.java

@@ -21,4 +21,8 @@ public class GetWashoutPointDto {
     private String midName;
 
     private Integer midId;
+
+    private String remark;
+
+
 }

+ 2 - 0
huimv-receive/src/main/java/com/huimv/receive/entity/dto/WashListDto.java

@@ -17,4 +17,6 @@ public class WashListDto {
 
     /*洗消流程列表*/
     private String flowLists;
+
+    private String remark;
 }

+ 1 - 0
huimv-receive/src/main/java/com/huimv/receive/entity/vo/DestVo.java

@@ -6,4 +6,5 @@ import lombok.Data;
 public class DestVo {
     private Integer id;
     private String locationName;
+
 }

+ 9 - 1
huimv-receive/src/main/java/com/huimv/receive/service/IBillGoodsInventoryService.java

@@ -3,6 +3,7 @@ package com.huimv.receive.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.receive.common.utils.Result;
 import com.huimv.receive.entity.BillGoodsInventory;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -20,7 +21,14 @@ import java.util.Map;
 public interface IBillGoodsInventoryService extends IService<BillGoodsInventory> {
     Result listAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 
-    Result edit(HttpServletRequest httpServletRequest, String id, String goods, MultipartFile imgUrl/*, String wayType*/) throws IOException;
+    Result edit(HttpServletRequest httpServletRequest, String id, String goods, MultipartFile imgUrl1,
+                MultipartFile imgUrl2,
+                MultipartFile imgUrl3,
+                MultipartFile imgUrl4,
+                MultipartFile imgUrl5,
+                MultipartFile imgUrl6
+
+            /*, String wayType*/) throws IOException;
 
     Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

+ 4 - 0
huimv-receive/src/main/java/com/huimv/receive/service/IBillPersonnelAdmissionService.java

@@ -104,4 +104,8 @@ public interface IBillPersonnelAdmissionService extends IService<BillPersonnelAd
 
     //统一审批多个人的入场申请
     Result handleAdmissionBatch(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws IOException;
+
+
+    //入场申请撤回
+    Result removeAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

+ 3 - 0
huimv-receive/src/main/java/com/huimv/receive/service/impl/BaseProcessServiceImpl.java

@@ -140,6 +140,9 @@ public class BaseProcessServiceImpl extends ServiceImpl<BaseProcessMapper, BaseP
         BillPersonnelAdmission admission = admissionMapper.selectOne(new QueryWrapper<BillPersonnelAdmission>().eq("process_id", processId));
         if (admission.getBillStatus() == 0) {
             admission.setBillStatus(2);
+            admission.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
+            admission.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
+            admission.setPassDate(LocalDateTime.now());
             admissionMapper.updateById(admission);
             baseProcessMapper.updateById(baseProcess);
             return new Result(ResultCode.SUCCESS);

+ 13 - 0
huimv-receive/src/main/java/com/huimv/receive/service/impl/BaseWashoutPointServiceImpl.java

@@ -2,6 +2,7 @@ package com.huimv.receive.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huimv.receive.common.token.TokenSign;
 import com.huimv.receive.common.utils.Result;
@@ -67,6 +68,7 @@ public class BaseWashoutPointServiceImpl extends ServiceImpl<BaseWashoutPointMap
                         washListDto.setFlowLists(point.getFlowList());
                         washListDto.setNextName(point.getTailLocationName());
                         washListDto.setPcrTime(point.getPcrTime());
+                        washListDto.setRemark(point.getRemark());
                         washListDtos.add(washListDto);
                     }
                     GetWashoutPointDto getWashoutPointDto = new GetWashoutPointDto();
@@ -76,6 +78,7 @@ public class BaseWashoutPointServiceImpl extends ServiceImpl<BaseWashoutPointMap
                     getWashoutPointDto.setMidId(visiting.getId());
                     getWashoutPointDto.setMidName(visiting.getVisitingName());
                     getWashoutPointDto.setWashListDtos(washListDtos);
+                    getWashoutPointDto.setRemark(list.get(0).getRemark());
                     washoutPointDtos.add(getWashoutPointDto);
                 }
             }
@@ -116,6 +119,7 @@ public class BaseWashoutPointServiceImpl extends ServiceImpl<BaseWashoutPointMap
                 washoutPoint.setPointLevel(i);
                 washoutPoint.setMidName(washoutPointDto.getMidName());
                 washoutPoint.setMidId(washoutPointDto.getMidId());
+                washoutPoint.setRemark(washoutPointDto.getRemark());
                 washoutPointMapper.insert(washoutPoint);
                 i++;
             }
@@ -137,13 +141,22 @@ public class BaseWashoutPointServiceImpl extends ServiceImpl<BaseWashoutPointMap
     public Result listDest(Map<String, String> paramsMap) {
         String farmId = paramsMap.get("farmId");
         String vistitType = paramsMap.get("midId");
+        String type = paramsMap.get("type");
 //        if ("0".equals(vistitType)){
 //            vistitType=  "7";
 //        }
+
         List<BaseWashoutPoint> baseWashoutPointList = washoutPointMapper.listDest(farmId,vistitType);
         List<DestVo> destVoList = new ArrayList<>();
+        if ((StringUtils.isBlank(type ) || "0".equals(type)) ){
+            DestVo destVo3 = new DestVo();
+            destVo3.setId(0);
+            destVo3.setLocationName(baseWashoutPointList.get(0).getRemark());
+            destVoList.add(destVo3);
+        }
         for (BaseWashoutPoint baseWashoutPoint : baseWashoutPointList) {
             DestVo destVo2 = new DestVo();
+
             destVo2.setId(baseWashoutPoint.getLocationId());
             destVo2.setLocationName(baseWashoutPoint.getTailLocationName());
             destVoList.add(destVo2);

+ 33 - 12
huimv-receive/src/main/java/com/huimv/receive/service/impl/BillGoodsInventoryServiceImpl.java

@@ -73,9 +73,23 @@ public class BillGoodsInventoryServiceImpl extends ServiceImpl<BillGoodsInventor
         List<BillGoodsInventoryVo> billGoodsInventoryVos = inventoryMapper.listAll(queryWrapper);
         return new Result(ResultCode.SUCCESS, billGoodsInventoryVos);
     }
-
+    public String getUrl(String content, MultipartFile image) throws IOException {
+        if (ObjectUtil.isNotEmpty(image)){
+            if ( !"".equals(content)){
+                content = content +","+uploadImage.getImageCom(image);
+            }else {
+                content = content +uploadImage.getImageCom(image);
+            }
+        }
+        return content;
+    }
     @Override
-    public Result edit(HttpServletRequest httpServletRequest, String id, String goods, MultipartFile imgUrl/*, String wayType*/) throws IOException {
+    public Result edit(HttpServletRequest httpServletRequest, String id, String goods, MultipartFile imgUrl1,
+                       MultipartFile imgUrl2,
+                       MultipartFile imgUrl3,
+                       MultipartFile imgUrl4,
+                       MultipartFile imgUrl5,
+                       MultipartFile imgUrl6/*, String wayType*/) throws IOException {
 
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
         BillGoodsInventory goodsInventory = inventoryMapper.selectById(id);
@@ -99,17 +113,24 @@ public class BillGoodsInventoryServiceImpl extends ServiceImpl<BillGoodsInventor
         goodsInventory.setBillStatus(1);
         goodsInventory.setSubDate(LocalDateTime.now());
 //        goodsInventory.setWayType(wayType);
+//
+//        if (ObjectUtil.isNotEmpty(imgUrl1)) {
+//            String  imageCom = uploadImage.getImageCom(imgUrl1);
+//            if (imageCom.equals("上传失败")) {
+//                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                return new Result(10001, "图片1上传失败", false);
+//            }
+//
+//        }
+        String content ="";
+        content = getUrl(content,imgUrl1);
+        content = getUrl(content,imgUrl2);
+        content = getUrl(content,imgUrl3);
+        content = getUrl(content,imgUrl4);
+        content = getUrl(content,imgUrl5);
+        content = getUrl(content,imgUrl6);
 
-        if (ObjectUtil.isNotEmpty(imgUrl)) {
-            String  imageCom = uploadImage.getImageCom(imgUrl);
-            if (imageCom.equals("上传失败")) {
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return new Result(10001, "图片1上传失败", false);
-            }
-            goodsInventory.setImgUrl(imageCom);
-        }
-
-
+        goodsInventory.setImgUrl(content);
         QueryWrapper<BaseProcess> processQueryWrapper = new QueryWrapper<>();
         processQueryWrapper.eq("id", goodsInventory.getBillAdmission());
         BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程

+ 38 - 38
huimv-receive/src/main/java/com/huimv/receive/service/impl/BillPcrServiceImpl.java

@@ -991,7 +991,7 @@ public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> impl
                 return new Result(10000, "修改成功!", true);
             } else {
                 billPcr.setBillStatus(2);
-                billPcr.setPcrType(1);
+                billPcr.setPcrType(4);
                 billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
                 billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
                 billPcr.setTestLocation(baseLocation.getLocationName());
@@ -1001,8 +1001,19 @@ public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> impl
                 baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
                 String status = baseProcess.getCurrentStatus();
                 String substring = status.substring(0, status.length() - 1);
-                baseProcess.setCurrentStatus(substring + "2," + 0);
+                baseProcess.setProcessType(2);
+                baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
+                baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
+                baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
+                baseProcess.setCurrentStatus(substring + "2");
+
 
+                int i = allLocationId.indexOf(billPcr.getTestLocationId().toString());
+                String status1 = baseProcess.getAllLocationStatus();
+                System.out.println(status1);
+                StringBuilder sb = new StringBuilder(status1);
+                sb.setCharAt(i, '3');
+                baseProcess.setAllLocationStatus(sb.toString());
                 processMapper.updateById(baseProcess);
                 pcrMapper.updateById(billPcr);
                 return new Result(10000, "修改成功!", true);
@@ -1012,6 +1023,7 @@ public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> impl
         }
     }
 
+
     @Override
     @Transactional
     public Result editBatch(HttpServletRequest httpServletRequest,String farmId,  String ids, String date, String result,
@@ -1673,7 +1685,7 @@ public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> impl
                     return new Result(10000, "修改成功!", true);
                 } else {
                     billPcr.setBillStatus(2);
-                    billPcr.setPcrType(1);
+                    billPcr.setPcrType(4);
                     billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
                     billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
                     billPcr.setTestLocation(baseLocation.getLocationName());
@@ -1683,8 +1695,19 @@ public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> impl
                     baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
                     String status = baseProcess.getCurrentStatus();
                     String substring = status.substring(0, status.length() - 1);
-                    baseProcess.setCurrentStatus(substring + "2," + 0);
+                    baseProcess.setProcessType(2);
+                    baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
+                    baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
+                    baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
+                    baseProcess.setCurrentStatus(substring + "2");
+
 
+                    int i = allLocationId.indexOf(billPcr.getTestLocationId().toString());
+                    String status1 = baseProcess.getAllLocationStatus();
+                    System.out.println(status1);
+                    StringBuilder sb = new StringBuilder(status1);
+                    sb.setCharAt(i, '3');
+                    baseProcess.setAllLocationStatus(sb.toString());
                     processMapper.updateById(baseProcess);
                     pcrMapper.updateById(billPcr);
                     return new Result(10000, "修改成功!", true);
@@ -1696,40 +1719,17 @@ public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> impl
     }
 
     public static void main(String[] args) {
-        Random random = new Random();
-        int randomNum = random.nextInt(90000000) + 1000;
-        System.out.println(randomNum);
-
-//        String s3 = a.substring(0, s.indexOf(s1) + 3);
-////        System.out.println(s.indexOf(s1));
-//        String[] split = s3.split(",");
-//        String s2 = "";
-//        for (int i = 0; i < split.length; i++) {
-//
-//        }
-//        System.out.println(s2);
-//        s2 = s2 + s.substring(s.indexOf(s1) + 3);
-//        System.out.println(s2);
-//        String[] split = s.split(",");
-//        Integer index = 0;
-//        for (int i = 0; i < split.length; i++) {
-//            if ("1".equals(split[i])) {
-//                index = i;
-//            }
-//        }
-//        System.out.println(index);
-//        System.out.println(split[index + 2]);
-//        StringBuilder sb = new StringBuilder(s);
-//        Integer a = s.length() - 3;
-//        sb.setCharAt(a,'0');
-//        System.out.println(sb.toString());
-
-//        String s1 = "2,0,0";
-//        System.out.println(s1.indexOf("2"));
-//        StringBuilder sb = new StringBuilder(s1);
-//        sb.setCharAt(2, '1');
-//        sb.setCharAt(4, '1');
-//        System.out.println(sb.toString());
+//        int i = "0,45,0".indexOf("45");
+//        String status1 ="2,1,1,0";
+//        System.out.println(status1);
+//        StringBuilder sb = new StringBuilder(status1);
+//        sb.setCharAt(i-1, '3');
+//        System.out.println(sb);
+        int i = "0,45,0".indexOf("45");
+        String status1 = "2,1,1,0";
+        StringBuilder sb = new StringBuilder(status1);
+        sb.setCharAt(i, '3');
+        System.out.println(sb.toString());
 
     }
 

+ 79 - 9
huimv-receive/src/main/java/com/huimv/receive/service/impl/BillPersonnelAdmissionServiceImpl.java

@@ -611,6 +611,7 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
             }
 
 
+
             //通过
             billPersonnelAdmission.setBillStatus(1);
 
@@ -623,7 +624,27 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
                 nextLocationId = strings[1];
                 baseLocation = baseLocationMapper.selectById(nextLocationId);
             }
-
+            //人员通过只要经过待检点就要给门禁
+            if (billPersonnelAdmission.getVistitType() == 0 && baseLocation.getId() == 45) {
+                DeviceList deviceList = deviceListMapper.selectOne(new QueryWrapper<DeviceList>().eq("farm_id", "1"));
+                Date now = new Date();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(now);
+                calendar.add(Calendar.HOUR_OF_DAY, 6);
+                Date date1 = calendar.getTime();
+                SysAccountMultilevel sysAccountMultilevel = multilevelMapper.selectById(billPersonnelAdmission.getAdmissionUserId());
+                PeopleList peopleList1 = new PeopleList();
+                peopleList1.setFarmId("1");
+                peopleList1.setDeviceCode(deviceList.getDeviceCode());
+                peopleList1.setUserId(billPersonnelAdmission.getProcessId().toString());
+                peopleList1.setUserName(billPersonnelAdmission.getAdmissionUserName());
+                peopleList1.setPassword("123456");
+                peopleList1.setType(0);
+                peopleList1.setCreateTime(new Date());
+                peopleList1.setOutTime(date1);
+                peopleList1.setImgUrl(sysAccountMultilevel.getImgUrl());
+                peopleListMapper.insert(peopleList1);
+            }
 
             if (billPersonnelAdmission.getAdmissionType() == 0) {
                 String[] split = baseProcess.getCurrentStatus().split(",");
@@ -955,6 +976,7 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
         String status = paramsMap.get("status");//0为全部 1为通过 2为不通过
         String pageNum = paramsMap.get("pageNum");
         String pageSize = paramsMap.get("pageSize");
+        Integer id = TokenSign.getMemberIdByJwtToken(httpServletRequest);
         if ("".equals(pageNum) || null == pageNum) {
             pageNum = "1";
         }
@@ -966,10 +988,10 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
         }
         if ("1".equals(type)) {
             QueryWrapper<BillAccessDoor> queryWrapper = new QueryWrapper<>();
-            if ("21".equals(farmId)) {
-                queryWrapper.eq("farm_id", 26).orderByDesc("check_date");
+            if (277==id) {
+                queryWrapper.orderByDesc("check_date");
             } else {
-                queryWrapper.eq("farm_id", farmId).orderByDesc("check_date");
+                queryWrapper.in("farm_id", farmId,1,2).orderByDesc("check_date");
             }
             if ("1".equals(status)) {
                 queryWrapper.eq("bill_status", 1);
@@ -980,18 +1002,25 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
             return new Result(ResultCode.SUCCESS, doorMapper.selectPage(page, queryWrapper));
         } else {
             QueryWrapper<BillGate> queryWrapper = new QueryWrapper<>();
-            if ("21".equals(farmId)) {
-                queryWrapper.eq("farm_id", 26).orderByDesc("check_date");
+            if (277==id) {
+                queryWrapper.orderByDesc("check_date");
             } else {
-                queryWrapper.eq("farm_id", Integer.parseInt(farmId)).orderByDesc("check_date");
+                queryWrapper.in("farm_id", Integer.parseInt(farmId),1,2).orderByDesc("check_date");
             }
             if ("1".equals(status)) {
                 queryWrapper.eq("bill_status", 1);
             } else if ("2".equals(status)) {
                 queryWrapper.eq("bill_status", 0);
             }
-            Page<BillGate> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
-            return new Result(ResultCode.SUCCESS, gateMapper.selectPage(page, queryWrapper));
+            queryWrapper.last("limit 5");
+            List<BillGate> billGates = gateMapper.selectList(queryWrapper);
+            queryWrapper.eq("check_location","中转站地磅电脑(车牌识别摄像头)");
+            List<BillGate> billGates1 = gateMapper.selectList(queryWrapper);
+            billGates.addAll(billGates1);
+            Page<BillGate> page2 = new Page<>(Integer.parseInt(pageNum), billGates.size());
+             page2.setRecords(billGates);
+
+            return new Result(ResultCode.SUCCESS, page2);
         }
     }
 
@@ -1502,6 +1531,8 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
                 if (billPersonnelAdmission.getBillStatus() != 0) {
                     return new Result(10001, "该订单已通过,无需再次点击!", false);
                 }
+
+
                 //新增人员转场,不需要流程,入场审批通过后直接下发门禁,流程结束
                 if (billPersonnelAdmission.getMidId()==60||billPersonnelAdmission.getMidId()==61
                         ||billPersonnelAdmission.getMidId()==67||billPersonnelAdmission.getMidId()==68) {
@@ -1553,6 +1584,27 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
                     baseLocation = baseLocationMapper.selectById(nextLocationId);
                 }
 
+                //人员通过只要经过待检点就要给门禁
+                if (billPersonnelAdmission.getVistitType() == 0 && baseLocation.getId() == 45) {
+                    DeviceList deviceList = deviceListMapper.selectOne(new QueryWrapper<DeviceList>().eq("farm_id", "1"));
+                    Date now = new Date();
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(now);
+                    calendar.add(Calendar.HOUR_OF_DAY, 6);
+                    Date date1 = calendar.getTime();
+                    SysAccountMultilevel sysAccountMultilevel = multilevelMapper.selectById(billPersonnelAdmission.getAdmissionUserId());
+                    PeopleList peopleList1 = new PeopleList();
+                    peopleList1.setFarmId("1");
+                    peopleList1.setDeviceCode(deviceList.getDeviceCode());
+                    peopleList1.setUserId(billPersonnelAdmission.getProcessId().toString());
+                    peopleList1.setUserName(billPersonnelAdmission.getAdmissionUserName());
+                    peopleList1.setPassword("123456");
+                    peopleList1.setType(0);
+                    peopleList1.setCreateTime(new Date());
+                    peopleList1.setOutTime(date1);
+                    peopleList1.setImgUrl(sysAccountMultilevel.getImgUrl());
+                    peopleListMapper.insert(peopleList1);
+                }
 
                 if (billPersonnelAdmission.getAdmissionType() == 0) {
                     String[] split = baseProcess.getCurrentStatus().split(",");
@@ -1836,6 +1888,24 @@ public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnel
         return Result.SUCCESS();
     }
 
+    @Override
+    public Result removeAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        BillPersonnelAdmission billPersonnelAdmission = billPersonnelAdmissionMapper.selectById(id);
+        if (billPersonnelAdmission.getBillStatus() != 0) {
+            return new Result(10001, "当前记录已审批 不支持撤回", false);
+        }
+        Integer processId = billPersonnelAdmission.getProcessId();
+        pcrMapper.delete(new QueryWrapper<BillPcr>().eq("process_id", processId));
+        cleanMapper.delete(new QueryWrapper<BillClean>().eq("process_id", processId));
+        dryMapper.delete(new QueryWrapper<BillDry>().eq("process_id", processId));
+        billGoodsInventoryMapper.delete(new QueryWrapper<BillGoodsInventory>().eq("process_id", processId));
+        samplingMapper.delete(new QueryWrapper<BillSampling>().eq("process_id", processId));
+        billPersonnelAdmissionMapper.deleteById(id);
+        processMapper.deleteById(processId);
+        return Result.SUCCESS();
+    }
+
     /*数组排序*/
     public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
         //存放排序结果json数组

+ 4 - 4
huimv-receive/src/main/java/com/huimv/receive/service/impl/BillSamplingServiceImpl.java

@@ -300,7 +300,7 @@ public class BillSamplingServiceImpl extends ServiceImpl<BillSamplingMapper, Bil
                     billClean.setSamplingId(Integer.parseInt(id));
                     pcrMapper.insert(billClean);
                     //下发人脸门禁白名单
-                    if (sampling.getVistitType() == 0) {
+                    /*if (sampling.getVistitType() == 0) {
                         DeviceList deviceList = deviceListMapper.selectOne(new QueryWrapper<DeviceList>().eq("farm_id", 1));
                         PeopleList peopleList = new PeopleList();
                         peopleList.setFarmId("1");
@@ -319,7 +319,7 @@ public class BillSamplingServiceImpl extends ServiceImpl<BillSamplingMapper, Bil
                         SysAccountMultilevel sysAccountMultilevel = multilevelMapper.selectById(sampling.getAdmissionUserId());
                         peopleList.setImgUrl(sysAccountMultilevel.getImgUrl());
                         peopleListMapper.insert(peopleList);
-                    }
+                    }*/
                 } else if (Integer.parseInt(split[1]) == 3) {
                     //新增洗澡
                     BillClean billClean = (BillClean) entity;
@@ -436,7 +436,7 @@ public class BillSamplingServiceImpl extends ServiceImpl<BillSamplingMapper, Bil
             pcrMapper.insert(billClean);
             baseProcess.setCurrentFlowId(baseProcess.getCurrentFlowId() + "," + nextId);
             //下发人脸门禁白名单
-            if (sampling.getVistitType() == 0) {
+            /*if (sampling.getVistitType() == 0) {
                 DeviceList deviceList = deviceListMapper.selectOne(new QueryWrapper<DeviceList>().eq("farm_id", 1));
                 PeopleList peopleList = new PeopleList();
                 peopleList.setFarmId("1");
@@ -455,7 +455,7 @@ public class BillSamplingServiceImpl extends ServiceImpl<BillSamplingMapper, Bil
                 SysAccountMultilevel sysAccountMultilevel = multilevelMapper.selectById(sampling.getAdmissionUserId());
                 peopleList.setImgUrl(sysAccountMultilevel.getImgUrl());
                 peopleListMapper.insert(peopleList);
-            }
+            }*/
         } else if (nextId == 3) {
             //新增洗澡
             BillClean billClean = (BillClean) newObject;

+ 8 - 2
huimv-receive/src/main/java/com/huimv/receive/service/impl/SysAccountMultilevelServiceImpl.java

@@ -146,11 +146,17 @@ public class SysAccountMultilevelServiceImpl extends ServiceImpl<SysAccountMulti
     public Result updateUser(HttpServletRequest httpServletRequest, MultipartFile img, String userName, String phone, Integer workPost, String workLocation, String workLocationId, String workName, String papersType, String papersCode) throws IOException {
         SysAccountMultilevel sysAccountMultilevel = accountMultilevelMapper.selectById(TokenSign.getMemberIdByJwtToken(httpServletRequest));
         if (ObjectUtil.isNotEmpty(img)) {
-            if (uploadImage.getImageCom(img).equals("上传失败")) {
+            MultipartFile multipartFile = ImageSizeUtil.byte2Base64StringFun(img);
+            boolean result = uploadImage.checkFileSize(multipartFile.getSize(), 200, "K");
+            if (!result) {
+                return new Result(10001, "上传个人照片太大,请重新上传", false);
+            }
+            String imageCom = uploadImage.getImageCom(multipartFile);
+            if ("上传失败".equals(imageCom)) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return new Result(10001, "图片上传失败", false);
             }
-            sysAccountMultilevel.setImgUrl(uploadImage.getImageCom(img));
+            sysAccountMultilevel.setImgUrl(imageCom);
         }
         if (ObjectUtil.isNotEmpty(userName)) {
             sysAccountMultilevel.setUserName(userName);

+ 1 - 1
huimv-receive/src/main/resources/mapper/BaseWashoutPointMapper.xml

@@ -17,7 +17,7 @@
         <result column="visiting_type" property="visitingType" />
     </resultMap>
     <select id="listDest" resultType="com.huimv.receive.entity.BaseWashoutPoint">
-        SELECT w.location_id,l.location_name ,w.tail_location_name FROM `base_washout_point` w
+        SELECT w.location_id,l.location_name ,w.tail_location_name,w.remark FROM `base_washout_point` w
         LEFT JOIN `base_location` l ON l.id = w.location_id
         WHERE w.farm_ids LIKE concat('%',#{farmId},'%') AND w.mid_id = #{vistitType}