lishuai
2023-12-15 eb53aef53bdab3eb452b95276b575bb45e616316
Merge remote-tracking branch 'origin/master'
已添加5个文件
已修改23个文件
994 ■■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/CarsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/ParkBookController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/ParksController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CarPictureRequest.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/DevicePictureRequest.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitPictureRequest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/model/openapi/request/ApproveNoticeRequest.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/model/openapi/request/erp/MemberFailRequest.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/FtpUtil.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/MemberCardMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/MemberRoleMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/ParksJoinMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Parks.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/ERPSyncService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParksServiceImpl.java 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java 148 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/openapi/src/main/java/com/doumee/api/web/BizResourceController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/openapi/src/main/java/com/doumee/api/web/ErpResourceController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/CarsController.java
@@ -69,7 +69,7 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:cars:query")
   // @RequiresPermissions("business:cars:query")
    public ApiResponse<PageData<Cars>> findPage (@RequestBody PageWrap<Cars> pageWrap) {
        return ApiResponse.success(carsService.findPage(pageWrap));
    }
server/dmvisit_admin/src/main/java/com/doumee/api/business/ParkBookController.java
@@ -69,7 +69,7 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:parkbook:query")
   // @RequiresPermissions("business:parkbook:query")
    public ApiResponse<PageData<ParkBook>> findPage (@RequestBody PageWrap<ParkBook> pageWrap) {
        return ApiResponse.success(parkBookService.findPage(pageWrap));
    }
server/dmvisit_admin/src/main/java/com/doumee/api/business/ParksController.java
@@ -74,6 +74,13 @@
        return ApiResponse.success(parksService.findPage(pageWrap));
    }
    @ApiOperation("所属停车场列表")
    @PostMapping("/findList")
    @RequiresPermissions("business:parks:query")
    public ApiResponse<List<Parks>> findList (@RequestBody Parks parks) {
        return ApiResponse.success(parksService.findList(parks));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:parks:exportExcel")
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -1,23 +1,12 @@
package com.doumee.task;
import com.doumee.biz.system.SystemDictDataBiz;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.net.URI;
import java.util.Date;
import java.util.Map;
/**
 * å®šæ—¶ä»»åŠ¡
@@ -29,9 +18,8 @@
@EnableScheduling
public class ScheduleTool {
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    private HkSyncImgServiceImpl hkSyncImgService;
    /**
     * æ˜¯å¦å¼€å‘者
     */
@@ -43,60 +31,9 @@
     * ç¼“存省市区
     * @throws Exception
     */
    @Scheduled(fixedDelay=24*60*60*1000)
    public void cacheCampus() throws Exception {
    }
     /**
     * æ¯å¤©å‡Œæ™¨é‡ç½®æ‰€æœ‰è®¢å•code类初始值
     * @throws Exception
     */
    @Scheduled(cron="0 0 0 * * ?")
    public void resetOrderCodes() throws Exception {
    }
    /**
     * å‘送get请求
     * @param url è¯·æ±‚URL
     * @param param è¯·æ±‚参数 key:value url携带参数 æˆ–者无参可不填
     * @return
     */
    public  String doGet(String url, Map<String, String> param) {
        // åˆ›å»ºHttpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        String resultString = "";
        CloseableHttpResponse response = null;
        try {
            // åˆ›å»ºuri
            URIBuilder builder = new URIBuilder(url);
            if (param != null) {
                for (String key : param.keySet()) {
                    builder.addParameter(key, param.get(key));
                }
            }
            URI uri = builder.build();
            // åˆ›å»ºhttp GET请求
            HttpGet httpGet = new HttpGet(uri);
            // æ‰§è¡Œè¯·æ±‚
            response = httpclient.execute(httpGet);
            // åˆ¤æ–­è¿”回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return resultString;
    @Scheduled(fixedDelay= 60*1000)
    public void downloadHkImg() throws Exception {
        hkSyncImgService.downHKImgs(0);
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -7,8 +7,8 @@
@Data
public class HKConstants {
    public static final String IMG_INDEX ="HKIMG_" ;
    public static final String IMG_INDEX_ERROR ="HKIMG_ERROR=" ;
    public static final String IMG_INDEX ="HKIMG=" ;
    public static final String IMG_INDEX_ERROR ="HKIMG=ERROR=" ;
    private Logger logger = LoggerFactory.getLogger(HKConstants.class);
    //海康平台根据现场环境配置http还是https
    public static final String RESPONSE_SUCCEE = "0";
@@ -53,6 +53,9 @@
        String eventSub= "/api/eventService/v1/eventSubscriptionByEventTypes";//事件订阅
        String doorSearch= "/api/resource/v2/door/search";//查询门禁点列表v2
        String cancelEventSub= "/api/eventService/v1/eventUnSubscriptionByEventTypes";//取消事件订阅
        String visitPicture= "/api/visitor/v1/record/pictures";//获取访客记录中的图片
        String devicePicture= "/api/acs/v1/event/pictures";//获取门禁事件的图片
        String carPicture= "/api/pms/v1/image";//查询车辆抓拍图片
    }
    /**
@@ -78,7 +81,6 @@
            this.name = name;
            this.key = key;
        }
        // get set æ–¹æ³•
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -291,6 +291,60 @@
        }
    }
    /**
     * èŽ·å–è®¿å®¢è®°å½•ä¸­çš„å›¾ç‰‡
     * @param body
     * @return
     */
    public static InputStream getVisitPicture(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.visitPicture);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
            HttpEntity entity = resp.getEntity();
            InputStream in = entity.getContent();
            return  in;
        }else{
            throw  new Exception("获取访客记录中的图片下载出错");
        }
    }
    /**
     * èŽ·å–é—¨ç¦äº‹ä»¶çš„å›¾ç‰‡
     * @param body
     * @return
     */
    public static InputStream getDevicePicture(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.devicePicture);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
            HttpEntity entity = resp.getEntity();
            InputStream in = entity.getContent();
            return  in;
        }else{
            throw  new Exception("获取门禁事件的图片下载出错");
        }
    }
    /**
     * æŸ¥è¯¢è½¦è¾†æŠ“拍图片
     * @param body
     * @return
     */
    public static InputStream getCarPicture(String body)  throws  Exception{
        Map<String, String> path = getPath(HKConstants.InterfacePath.carPicture);
        //参数根据接口实际情况设置
        HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
        if (200==resp.getStatusLine().getStatusCode()) {
            HttpEntity entity = resp.getEntity();
            InputStream in = entity.getContent();
            return  in;
        }else{
            throw  new Exception("查询车辆抓拍图片下载出错");
        }
    }
    /**
     *    èŽ·å–é—¨ç¦ç‚¹åˆ—è¡¨
     * @param body
     * @return
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CarPictureRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class CarPictureRequest {
    private String  aswSyscode;//    string    True    å›¾ç‰‡æœåŠ¡å”¯ä¸€æ ‡è¯†ç ï¼ˆæœ€å¤§é•¿åº¦64)  ä»Žå…¶ä»–返回图片Uri接口处获取
    private String  picUri    ;//string    True    å›¾ç‰‡Uri(最大长度256)
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/DevicePictureRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class DevicePictureRequest {
    private String  svrIndexCode    ;//    string    True    æä¾›picUri处会提供此字段
    private String  picUri    ;//    string    True    å›¾ç‰‡ç›¸å¯¹åœ°å€
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitPictureRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class VisitPictureRequest {
    private String  svrIndexCode    ;//    string    True    æä¾›picUri处会提供此字段
    private String  picUri    ;//    string    True    å›¾ç‰‡ç›¸å¯¹åœ°å€
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1,29 +1,19 @@
package com.doumee.core.haikang.service;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.utils.Constants;
import com.alibaba.fastjson.TypeReference;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.HKTools;
import com.doumee.core.haikang.model.param.BaseRequst;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.service.business.InterfaceLogService;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import com.alibaba.fastjson.TypeReference;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
@Slf4j
@@ -244,6 +234,51 @@
        }
        return  null;
    }
    /**
     * èŽ·å–è®¿å®¢è®°å½•ä¸­çš„å›¾ç‰‡
     * @return
     */
    public static InputStream getVisitPicture(VisitPictureRequest param) {
        log.info("【海康访客图片流】================开始===="+JSONObject.toJSONString(param));
        try {
            InputStream res = HKTools.getVisitPicture(JSONObject.toJSONString(param));
            log.error("【海康访客图片流】================成功====\n");
            return  res;
        }catch (Exception e){
            log.error("【海康访客图片流】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     * èŽ·å–é—¨ç¦äº‹ä»¶çš„å›¾ç‰‡
     * @return
     */
    public static InputStream getDevicePicture(DevicePictureRequest param) {
        log.info("【海康门禁事件图片流】================开始===="+JSONObject.toJSONString(param));
        try {
            InputStream res = HKTools.getDevicePicture(JSONObject.toJSONString(param));
            log.error("【海康门禁事件图片流】================成功====\n");
            return  res;
        }catch (Exception e){
            log.error("【海康门禁事件图片流】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     * æŸ¥è¯¢è½¦è¾†æŠ“拍图片
     * @return
     */
    public static InputStream getCarPicture(CarPictureRequest param) {
        log.info("【海康车辆抓拍图片图片流】================开始===="+JSONObject.toJSONString(param));
        try {
            InputStream res = HKTools.getCarPicture(JSONObject.toJSONString(param));
            log.error("【海康车辆抓拍图片图片流】================成功====\n");
            return  res;
        }catch (Exception e){
            log.error("【海康车辆抓拍图片图片流】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *获取车库列表数据(全量)
server/dmvisit_service/src/main/java/com/doumee/core/model/openapi/request/ApproveNoticeRequest.java
@@ -1,5 +1,6 @@
package com.doumee.core.model.openapi.request;
import com.doumee.core.haikang.model.param.BaseRequst;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -11,11 +12,11 @@
 */
@Data
@ApiModel("访客申请审批结果通知请求信息")
public class ApproveNoticeRequest {
public class ApproveNoticeRequest extends BaseRequst {
    @ApiModelProperty(value = "审批记录唯一标识(ERP端ID)" ,example = "1")
    private Integer id;
    @ApiModelProperty(value = "审批结果 0-不通过 1-通过,默认 0" ,example = "1")
    private Integer status;
    @ApiModelProperty(value = "审核时间" )
    @ApiModelProperty(value = "审核时间 yyyy-MM-dd HH:mm:ss" )
    private String approveDate ;
}
server/dmvisit_service/src/main/java/com/doumee/core/model/openapi/request/erp/MemberFailRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.core.model.openapi.request.erp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/23 14:03
 */
@Data
@ApiModel(value = "员工同步失败推送请求参数" )
public class MemberFailRequest {
    @ApiModelProperty(value = "员工id"  )
    private  String userId;
    @ApiModelProperty(value = "失败类型 0人员同步失败 1权限下发失败 "  )
    private  Integer type;
    @ApiModelProperty(value = "备注信息,描述失败原因")
    private String info;
}
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -44,11 +44,18 @@
    public static final String FILE_DIR = "";
    // è®¿å®¢æ¥è®¿é…ç½®
    public static final String VISIT_CONFIG = "VISIT_CONFIG";
    public static final String MEMBER_IMG = "MEMBER_IMG";
    // åŠ³åŠ¡æ¥è®¿é…ç½®
    public static final String LABOR_CONFIG = "LABOR_CONFIG";
    public static final String VISIT_EVENT_IMG = "VISIT_EVENT_IMG";
    public static final String CAR_EVENT_IMG = "CAR_EVENT_IMG";
    public static final String DEVICE_EVENT_IMG = "DEVICE_EVENT_IMG";
    public static final String FTP ="FTP" ;
    public static final String FTP_HOST ="FTP_HOST" ;
    public static final String FTP_PORT ="FTP_PORT" ;
    public static final String FTP_USERNAME ="FTP_USERNAME" ;
    public static final String FTP_PWD ="FTP_PWD" ;
    public static final String FTP_RESOURCE_PATH ="FTP_RESOURCE_PATH" ;
    public static  boolean DEALING_HK_IMG = false;
    // ERP接口配置
    public static final String ERP_CONFIG = "ERP_CONFIG";
server/dmvisit_service/src/main/java/com/doumee/core/utils/FtpUtil.java
@@ -29,6 +29,10 @@
@Slf4j
public class FtpUtil {
    public FTPClient ftpClient = new FTPClient();
    public static String hostname;
    public static int port;
    public static String username;
    public static  String password;
    public FtpUtil() {
        // è®¾ç½®å°†è¿‡ç¨‹ä¸­ä½¿ç”¨åˆ°çš„命令输出到控制台
@@ -39,26 +43,22 @@
    public FtpUtil(String hostname, int port, String username, String password)
            throws IOException {
        // è®¾ç½®å°†è¿‡ç¨‹ä¸­ä½¿ç”¨åˆ°çš„命令输出到控制台
        connect(hostname, port, username, password);
        FtpUtil.hostname =hostname;
        FtpUtil.port =port;
        FtpUtil.username =username;
        FtpUtil.password =password;
        connect();
    }
    /** */
    /**
     * è¿žæŽ¥åˆ°FTP服务器
     *
     * @param hostname
     *            ä¸»æœºå
     * @param port
     *            ç«¯å£
     * @param username
     *            ç”¨æˆ·å
     * @param password
     *            å¯†ç 
     * @return æ˜¯å¦è¿žæŽ¥æˆåŠŸ
     * @throws IOException
     */
    public boolean connect(String hostname, int port, String username,
            String password) throws IOException {
    public boolean connect() throws IOException {
        ftpClient.connect(hostname, port);
        ftpClient.setControlEncoding("GBK");
        if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
@@ -233,6 +233,39 @@
        }
        return result;
    }
    public boolean uploadInputstream(InputStream inputStream, String remote)  {
        // è®¾ç½®PassiveMode传输
        try {
            ftpClient.enterLocalPassiveMode();
            // è®¾ç½®ä»¥äºŒè¿›åˆ¶æµçš„æ–¹å¼ä¼ è¾“
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.setControlEncoding("GBK");
            // å¯¹è¿œç¨‹ç›®å½•的处理
            String remoteFileName = remote;
            if (remote.contains("/")) {
                remoteFileName = remote.substring(remote.lastIndexOf("/") + 1);
                // åˆ›å»ºæœåŠ¡å™¨è¿œç¨‹ç›®å½•ç»“æž„ï¼Œåˆ›å»ºå¤±è´¥ç›´æŽ¥è¿”å›ž
                if (StringUtils.equals(CreateDirecroty(remote, ftpClient), "2")) {
                    log.error("创建ftp目录失败======================="+remote);
                    return false;
                }
            }
            boolean result = ftpClient.storeFile(remoteFileName, inputStream);
            inputStream.close();
            ftpClient.logout();
            if(result){
                log.info("上传文件成功======================"+remote);
            }else{
                log.error("上传文件失败======================="+remote);
            }
            return result;
        }catch (Exception e){
            e.printStackTrace();
            log.error("上传文件失败======================="+remote);
        }
        return false;
    }
    public int getNumFromStr(String str,char searchstr) {
        int count = 0;
        char[] charArray = str.toCharArray();
@@ -265,8 +298,8 @@
        String result;
        // å¯¹è¿œç¨‹ç›®å½•的处理
        String remoteFileName = remote ;
         if (remote.contains(File.separator)) {
            remoteFileName = remote.substring(remote.lastIndexOf(File.separator) + 1);
         if (remote.contains("/")) {
            remoteFileName = remote.substring(remote.lastIndexOf("/") + 1);
            // åˆ›å»ºæœåŠ¡å™¨è¿œç¨‹ç›®å½•ç»“æž„ï¼Œåˆ›å»ºå¤±è´¥ç›´æŽ¥è¿”å›ž
            if (StringUtils.equals(CreateDirecroty(remote, ftpClient), "2")) {
                return "2";
@@ -339,20 +372,20 @@
            throws IOException {
        String status = "1";
        // UploadStatus status = UploadStatus.Create_Directory_Success;
        String directory = remote.substring(0, remote.lastIndexOf(File.separator) + 1);
        if (!directory.equalsIgnoreCase(File.separator)
        String directory = remote.substring(0, remote.lastIndexOf("/") + 1);
        if (!directory.equalsIgnoreCase("/")
                && !ftpClient.changeWorkingDirectory(new String(directory
                .getBytes("GBK"), "iso-8859-1"))) {
            // å¦‚果远程目录不存在,则递归创建远程服务器目录
            int start = 0;
            int end = 0;
            if (directory.startsWith(File.separator)) {
            if (directory.startsWith("/")) {
                start = 1;
            } else {
                start = 0;
            }
            end = directory
                    .indexOf(File.separator, start);
                    .indexOf("/", start);
            while (true) {
                String subDirectory = new String(remote.substring(start, end)
                        .getBytes("GBK"), "iso-8859-1");
@@ -367,7 +400,7 @@
                }
                start = end + 1;
                end = directory.indexOf(File.separator,
                end = directory.indexOf("/",
                        start);
                // æ£€æŸ¥æ‰€æœ‰ç›®å½•是否创建完毕
@@ -508,7 +541,7 @@
    public static void main(String[] args) throws Exception {
        try {
            FtpUtil ftpUtil = new FtpUtil("175.27.187.84", 21, "ftpuser","doumee168" );
            ftpUtil.uploadOnlineFile("https://profile-avatar.csdnimg.cn/default.jpg!1", "test"+File.separator, UUID.randomUUID().toString()+"test.jpg");
            ftpUtil.uploadOnlineFile("https://profile-avatar.csdnimg.cn/default.jpg!1", "test"+"/", UUID.randomUUID().toString()+"test.jpg");
            /*FtpUtil myFtp = new FtpUtil("106.15.54.228", 21, "ftptlg",
                    "tlg168.com");
            System.out.println(myFtp.upload("D:\\devices.sql", "/1111/devices.sql"));
@@ -598,9 +631,7 @@
            String remoteDirectoryPath) throws Exception {
        File src = new File(localDirectory);
        try {
            remoteDirectoryPath =  remoteDirectoryPath  + File.separator;
//            System.out.println(remoteDirectoryPath+":===============创建目录=================");
            remoteDirectoryPath =  remoteDirectoryPath  + "/";
            boolean makeDirFlag = this.ftpClient.makeDirectory(remoteDirectoryPath);
        }catch (IOException e) {
            e.printStackTrace();
@@ -611,12 +642,10 @@
        for (int currentFile = 0;currentFile < allFile.length;currentFile++) {
            File f =allFile[currentFile];
            String srcName=    f.getPath().toString();
//            System.out.println(srcName+":====================读取文件======================");
            String tPath = remoteDirectoryPath+f.getName();
            if (!f.isDirectory()) {
//                System.out.println(srcName+":====================开始传输文件======================");
                int dNum = getNumFromStr(tPath,File.separator.toCharArray()[0]);
                int dNum = getNumFromStr(tPath,"/".toCharArray()[0]);
                uploadFile(f, tPath);
                if(dNum -2>=0){
                    for (int i = 0; i < dNum-1; i++) {
@@ -624,11 +653,9 @@
                    }
                }
            }else{
//                System.out.println(srcName+":====================创建子目录======================");
                uploadDirectory(srcName,
                        tPath+File.separator);
                        tPath+"/");
            }
//            System.out.println(srcName+":====================上传完毕======================");
        }
        return true;
    }
@@ -639,7 +666,7 @@
     * */
    public boolean delDirectory(String pathName ) throws Exception {
        try {
            this.ftpClient.changeWorkingDirectory( pathName.substring(0, pathName.lastIndexOf(File.separator)) );
            this.ftpClient.changeWorkingDirectory( pathName.substring(0, pathName.lastIndexOf("/")) );
            ftpClient.removeDirectory(pathName);
        }catch (IOException e) {
            e.printStackTrace();
server/dmvisit_service/src/main/java/com/doumee/dao/business/MemberCardMapper.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.MemberCard;
import com.doumee.dao.business.model.MemberRole;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
@@ -9,4 +12,5 @@
 */
public interface MemberCardMapper extends BaseMapper<MemberCard> {
    void insertBatchSomeColumn(List<MemberCard> list);
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/MemberRoleMapper.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.MemberRole;
import com.doumee.dao.business.model.VisitEvent;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
@@ -9,4 +12,6 @@
 */
public interface MemberRoleMapper extends BaseMapper<MemberRole> {
    void insertBatchSomeColumn(List<MemberRole> list);
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/ParksJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.dao.business.join;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Parks;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
public interface ParksJoinMapper extends MPJJoinMapper<Parks> {
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -96,4 +97,29 @@
    @ExcelColumn(name="状态 0禁用 1启用")
    private Integer status;
    @ApiModelProperty(value = "停车场名称", example = "1")
    @ExcelColumn(name="停车场名称")
    @TableField(exist = false)
    private String parksName;
    @ApiModelProperty(value = "用户类型 0劳务访客 1普通访客  2内部人员", example = "1")
    @ExcelColumn(name="用户类型 0劳务访客 1普通访客  2内部人员")
    @TableField(exist = false)
    private Integer memberType;
    @ApiModelProperty(value = "姓名", example = "1")
    @ExcelColumn(name="姓名")
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "手机号", example = "1")
    @ExcelColumn(name="手机号")
    @TableField(exist = false)
    private String memberPhone;
    @ApiModelProperty(value = "部门", example = "1")
    @ExcelColumn(name="部门")
    @TableField(exist = false)
    private String companyName;
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -106,4 +107,30 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date hkDate;
    @ApiModelProperty(value = "停车场名称", example = "1")
    @ExcelColumn(name="停车场名称")
    @TableField(exist = false)
    private String parksName;
    @ApiModelProperty(value = "用户类型 0劳务访客 1普通访客  2内部人员", example = "1")
    @ExcelColumn(name="用户类型 0劳务访客 1普通访客  2内部人员")
    @TableField(exist = false)
    private Integer memberType;
    @ApiModelProperty(value = "姓名", example = "1")
    @ExcelColumn(name="姓名")
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "手机号", example = "1")
    @ExcelColumn(name="手机号")
    @TableField(exist = false)
    private String memberPhone;
    @ApiModelProperty(value = "部门", example = "1")
    @ExcelColumn(name="部门")
    @TableField(exist = false)
    private String companyName;
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Parks.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -99,4 +100,8 @@
    @ExcelColumn(name="状态 0禁用 1启用")
    private Integer status;
    @ApiModelProperty(value = "所属停车库", example = "1")
    @TableField(exist = false)
    private String parentName;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/ERPSyncService.java
@@ -89,4 +89,6 @@
    void orgUpdate(OrgUpdateRequest param);
    void userUpdate(UserUpdateRequest param);
    void approveApply(ApproveNoticeRequest param);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -1,20 +1,21 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.CarsQuery;
import com.doumee.dao.admin.response.CarsDTO;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.CarsMapper;
import com.doumee.dao.business.join.CarJoinMapper;
import com.doumee.dao.business.join.ParkBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.CarsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -101,73 +102,24 @@
        IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<Cars> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(Cars::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(Cars::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(Cars::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(Cars::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEdirot() != null) {
            queryWrapper.lambda().eq(Cars::getEdirot, pageWrap.getModel().getEdirot());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(Cars::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(Cars::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(Cars::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(Cars::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getHkId() != null) {
            queryWrapper.lambda().eq(Cars::getHkId, pageWrap.getModel().getHkId());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(Cars::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getCode() != null) {
            queryWrapper.lambda().eq(Cars::getCode, pageWrap.getModel().getCode());
        }
        if (pageWrap.getModel().getParkId() != null) {
            queryWrapper.lambda().eq(Cars::getParkId, pageWrap.getModel().getParkId());
        }
        if (pageWrap.getModel().getHkId2() != null) {
            queryWrapper.lambda().eq(Cars::getHkId2, pageWrap.getModel().getHkId2());
        }
        if (pageWrap.getModel().getHkStatus() != null) {
            queryWrapper.lambda().eq(Cars::getHkStatus, pageWrap.getModel().getHkStatus());
        }
        if (pageWrap.getModel().getHkDate() != null) {
            queryWrapper.lambda().ge(Cars::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()));
            queryWrapper.lambda().le(Cars::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()));
        }
        if (pageWrap.getModel().getMemberId() != null) {
            queryWrapper.lambda().eq(Cars::getMemberId, pageWrap.getModel().getMemberId());
        }
        if (pageWrap.getModel().getMemberUserId() != null) {
            queryWrapper.lambda().eq(Cars::getMemberUserId, pageWrap.getModel().getMemberUserId());
        }
        if (pageWrap.getModel().getErpId() != null) {
            queryWrapper.lambda().eq(Cars::getErpId, pageWrap.getModel().getErpId());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(Cars::getStatus, pageWrap.getModel().getStatus());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(carsMapper.selectPage(page, queryWrapper));
        MPJLambdaWrapper<Cars> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Cars.class);
        queryWrapper.selectAs(Parks::getName,Cars::getParksName);
        queryWrapper.selectAs(Member::getType,Cars::getMemberType);
        queryWrapper.selectAs(Member::getName,Cars::getMemberName);
        queryWrapper.selectAs(Member::getPhone,Cars::getMemberPhone);
        queryWrapper.selectAs(Company::getName,Cars::getCompanyName);
        queryWrapper.leftJoin(Parks.class,Parks::getId,Cars::getParkId);
        queryWrapper.leftJoin(Member.class,Member::getId,Cars::getMemberId);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.eq(Cars::getIsdeleted,Constants.ZERO);
        queryWrapper.orderByDesc(Cars::getCreateDate);
        IPage<Cars> result = carJoinMapper.selectJoinPage(page, Cars.class,queryWrapper);
        return PageData.from(result);
    }
    @Override
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java
@@ -2,14 +2,18 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ParkBookMapper;
import com.doumee.dao.business.model.ParkBook;
import com.doumee.dao.business.join.ParkBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.ParkBookService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -26,6 +30,11 @@
    @Autowired
    private ParkBookMapper parkBookMapper;
    @Autowired
    private ParkBookJoinMapper parkBookJoinMapper;
    @Override
    public Integer create(ParkBook parkBook) {
@@ -87,81 +96,28 @@
    @Override
    public PageData<ParkBook> findPage(PageWrap<ParkBook> pageWrap) {
        IPage<ParkBook> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<ParkBook> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(ParkBook::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(ParkBook::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(ParkBook::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(ParkBook::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEdirot() != null) {
            queryWrapper.lambda().eq(ParkBook::getEdirot, pageWrap.getModel().getEdirot());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(ParkBook::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(ParkBook::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(ParkBook::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(ParkBook::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getHkId() != null) {
            queryWrapper.lambda().eq(ParkBook::getHkId, pageWrap.getModel().getHkId());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(ParkBook::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getVisitId() != null) {
            queryWrapper.lambda().eq(ParkBook::getVisitId, pageWrap.getModel().getVisitId());
        }
        if (pageWrap.getModel().getCarCode() != null) {
            queryWrapper.lambda().eq(ParkBook::getCarCode, pageWrap.getModel().getCarCode());
        }
        if (pageWrap.getModel().getParkId() != null) {
            queryWrapper.lambda().eq(ParkBook::getParkId, pageWrap.getModel().getParkId());
        }
        if (pageWrap.getModel().getOrigin() != null) {
            queryWrapper.lambda().eq(ParkBook::getOrigin, pageWrap.getModel().getOrigin());
        }
        if (pageWrap.getModel().getStartTime() != null) {
            queryWrapper.lambda().ge(ParkBook::getStartTime, Utils.Date.getStart(pageWrap.getModel().getStartTime()));
            queryWrapper.lambda().le(ParkBook::getStartTime, Utils.Date.getEnd(pageWrap.getModel().getStartTime()));
        }
        if (pageWrap.getModel().getEndTime() != null) {
            queryWrapper.lambda().ge(ParkBook::getEndTime, Utils.Date.getStart(pageWrap.getModel().getEndTime()));
            queryWrapper.lambda().le(ParkBook::getEndTime, Utils.Date.getEnd(pageWrap.getModel().getEndTime()));
        }
        if (pageWrap.getModel().getMemberId() != null) {
            queryWrapper.lambda().eq(ParkBook::getMemberId, pageWrap.getModel().getMemberId());
        }
        if (pageWrap.getModel().getTimeType() != null) {
            queryWrapper.lambda().eq(ParkBook::getTimeType, pageWrap.getModel().getTimeType());
        }
        if (pageWrap.getModel().getHkId2() != null) {
            queryWrapper.lambda().eq(ParkBook::getHkId2, pageWrap.getModel().getHkId2());
        }
        if (pageWrap.getModel().getHkStatus() != null) {
            queryWrapper.lambda().eq(ParkBook::getHkStatus, pageWrap.getModel().getHkStatus());
        }
        if (pageWrap.getModel().getHkDate() != null) {
            queryWrapper.lambda().ge(ParkBook::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()));
            queryWrapper.lambda().le(ParkBook::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()));
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(parkBookMapper.selectPage(page, queryWrapper));
        MPJLambdaWrapper<ParkBook> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Cars.class);
        queryWrapper.selectAs(Parks::getName,Cars::getParksName);
        queryWrapper.selectAs(Member::getType,Cars::getMemberType);
        queryWrapper.selectAs(Member::getName,Cars::getMemberName);
        queryWrapper.selectAs(Member::getPhone,Cars::getMemberPhone);
        queryWrapper.selectAs(Company::getName,Cars::getCompanyName);
        queryWrapper.leftJoin(Parks.class,Parks::getId,ParkBook::getParkId);
        queryWrapper.leftJoin(Member.class,Member::getId,ParkBook::getMemberId);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.eq(ParkBook::getIsdeleted, Constants.ZERO)
          .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getPhone,pageWrap.getModel().getMemberName())
                .or().like(Member::getName,pageWrap.getModel().getMemberName()));
        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCarCode()),ParkBook::getCarCode,pageWrap.getModel().getCarCode());
        queryWrapper.orderByDesc(ParkBook::getCreateDate);
        IPage<ParkBook> result = parkBookJoinMapper.selectJoinPage(page, ParkBook.class,queryWrapper);
        return PageData.from(result);
    }
    @Override
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParksServiceImpl.java
@@ -2,19 +2,26 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.join.ParksJoinMapper;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Parks;
import com.doumee.service.business.ParksService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
 * åœè½¦åº“信息表Service实现
@@ -26,6 +33,10 @@
    @Autowired
    private ParksMapper parksMapper;
    @Autowired
    private ParksJoinMapper parksJoinMapper;
    @Override
    public Integer create(Parks parks) {
@@ -80,83 +91,29 @@
    @Override
    public List<Parks> findList(Parks parks) {
        QueryWrapper<Parks> wrapper = new QueryWrapper<>(parks);
        return parksMapper.selectList(wrapper);
        MPJLambdaWrapper<Parks> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.isNull(Parks::getParentHkId);
        queryWrapper.eq(Parks::getIsdeleted,Constants.ZERO);
        queryWrapper.orderByDesc(Parks::getCreateDate);
        return parksMapper.selectList(queryWrapper);
    }
  
    @Override
    public PageData<Parks> findPage(PageWrap<Parks> pageWrap) {
        IPage<Parks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<Parks> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(Parks::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(Parks::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(Parks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(Parks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEdirot() != null) {
            queryWrapper.lambda().eq(Parks::getEdirot, pageWrap.getModel().getEdirot());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(Parks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(Parks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(Parks::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(Parks::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(Parks::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getHkId() != null) {
            queryWrapper.lambda().eq(Parks::getHkId, pageWrap.getModel().getHkId());
        }
        if (pageWrap.getModel().getHkStatus() != null) {
            queryWrapper.lambda().eq(Parks::getHkStatus, pageWrap.getModel().getHkStatus());
        }
        if (pageWrap.getModel().getHkDate() != null) {
            queryWrapper.lambda().ge(Parks::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()));
            queryWrapper.lambda().le(Parks::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()));
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(Parks::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getParkCreateDate() != null) {
            queryWrapper.lambda().ge(Parks::getParkCreateDate, Utils.Date.getStart(pageWrap.getModel().getParkCreateDate()));
            queryWrapper.lambda().le(Parks::getParkCreateDate, Utils.Date.getEnd(pageWrap.getModel().getParkCreateDate()));
        }
        if (pageWrap.getModel().getParentHkId() != null) {
            queryWrapper.lambda().eq(Parks::getParentHkId, pageWrap.getModel().getParentHkId());
        }
        if (pageWrap.getModel().getParkEditDate() != null) {
            queryWrapper.lambda().ge(Parks::getParkEditDate, Utils.Date.getStart(pageWrap.getModel().getParkEditDate()));
            queryWrapper.lambda().le(Parks::getParkEditDate, Utils.Date.getEnd(pageWrap.getModel().getParkEditDate()));
        }
        if (pageWrap.getModel().getErpStatus() != null) {
            queryWrapper.lambda().eq(Parks::getErpStatus, pageWrap.getModel().getErpStatus());
        }
        if (pageWrap.getModel().getErpDate() != null) {
            queryWrapper.lambda().ge(Parks::getErpDate, Utils.Date.getStart(pageWrap.getModel().getErpDate()));
            queryWrapper.lambda().le(Parks::getErpDate, Utils.Date.getEnd(pageWrap.getModel().getErpDate()));
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(Parks::getStatus, pageWrap.getModel().getStatus());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(parksMapper.selectPage(page, queryWrapper));
        MPJLambdaWrapper<Parks> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Parks.class);
        queryWrapper.select(" p.name as parentName");
        queryWrapper.leftJoin(" parks p on p.id=t.PARENT_HK_ID");
        queryWrapper.isNotNull(Parks::getParentHkId);
        queryWrapper.eq(Parks::getIsdeleted, Constants.ZERO);
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Parks::getName,pageWrap.getModel().getName());
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getParentHkId()),Parks::getName,pageWrap.getModel().getParentHkId());
        queryWrapper.orderByDesc(Parks::getCreateDate);
        IPage<Parks> result = parksJoinMapper.selectJoinPage(page, Parks.class,queryWrapper);
        return PageData.from(result);
    }
    @Override
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -26,6 +26,7 @@
import com.doumee.core.model.openapi.response.erp.OrgListRespone;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.utils.redis.RedisUtil;
import com.doumee.dao.admin.response.MemberInfoDTO;
@@ -99,6 +100,9 @@
    @Autowired
    private MemberCardMapper memberCardMapper;
    @Autowired
    private VisitsMapper visitsMapper;
    @Autowired
    private InterfaceLogService interfaceLogService;
@@ -506,26 +510,40 @@
                memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
                //TODO æµ·åº·æ•°æ®æ›´æ–°
            }
            //添加人员角关联数据
            //添加人员角色关联数据
            if(!Objects.isNull(param.getRoleIds())&&param.getRoleIds().length>Constants.ZERO){
                //查询数据库存在的权限
                List<MemberRole> memberRoleList = memberRoleMapper.selectList(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getId,param.getRoleIds()));
                List<Integer> roleIds = Arrays.asList(param.getRoleIds());
//                List<MemberRole> memberRoleList = new ArrayList<>();
//
//                for (Integer id:roleIds) {
//
//                }
                List<DeviceRole> deviceRoleList
                        = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda().eq(DeviceRole::getId,param.getRoleIds()));
                if(CollectionUtils.isNotEmpty(deviceRoleList)){
                    List<MemberRole> memberRoleList = new ArrayList<>();
                    for (DeviceRole deviceRole:deviceRoleList) {
                        MemberRole memberRole = new MemberRole();
                        memberRole.setCreateDate(new Date());
                        memberRole.setMemberId(member.getId());
                        memberRole.setIsdeleted(Constants.ZERO);
                        memberRole.setRoleId(deviceRole.getId().toString());
                        memberRoleList.add(memberRole);
                    }
                    memberRoleMapper.insertBatchSomeColumn(memberRoleList);
                }
            }
            
            //添加人员卡片数据
            if(!Objects.isNull(param.getCardList())&&param.getCardList().size()>Constants.ZERO){
                if(CollectionUtils.isNotEmpty(param.getCardList())){
                    List<MemberCard> memberCardList = new ArrayList<>();
                    for (String id:param.getCardList()) {
                        MemberCard memberCard = new MemberCard();
                        memberCard.setCreateDate(new Date());
                        memberCard.setMemberId(member.getId());
                        memberCard.setIsdeleted(Constants.ZERO);
                        memberCard.setCode(id);
                        memberCardList.add(memberCard);
                    }
                    memberCardMapper.insertBatchSomeColumn(memberCardList);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
@@ -534,6 +552,36 @@
    }
    @Override
    public void approveApply(ApproveNoticeRequest param){
        try{
            if(Objects.isNull(param)
                    ||Objects.isNull(param.getId())
                    ||Objects.isNull(param.getStatus())
            ){
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            if(!(param.getStatus()==Constants.ZERO||param.getStatus()==Constants.ONE)){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"状态码错误");
            }
            if(visitsMapper.selectCount(new QueryWrapper<Visits>().lambda().eq(Visits::getErpId,param.getId())
                    .ne(Visits::getStatus,Constants.VisitStatus.submitCheck))>Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态码错误");
            }
            List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda().eq(Visits::getErpId,param.getId()));
            if(CollectionUtils.isNotEmpty(visitsList)){
                visitsList.forEach(i->{
                    i.setStatus(param.getStatus().equals(Constants.ZERO)?Constants.VisitStatus.pass:Constants.VisitStatus.noPass);
                    i.setEndCheckDate(DateUtil.StringToDate(param.getApproveDate(),"yyyy-MM-dd HH:mm:ss"));
                    visitsMapper.updateById(i);
                });
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/approveApply",null,Constants.ZERO);
        }
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java
@@ -2,28 +2,36 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.FtpUtil;
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.CarEvent;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.DeviceEvent;
import com.doumee.dao.business.model.VisitEvent;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
 * è®¾å¤‡ä¿¡æ¯è¡¨Service实现
@@ -31,6 +39,7 @@
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class HkSyncImgServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
@@ -39,6 +48,8 @@
    private DeviceEventMapper deviceEventMapper;
    @Autowired
    private VisitEventMapper visitEventMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public  String downHKImgs(int type){
        if(Constants.DEALING_HK_IMG){
@@ -48,13 +59,12 @@
        try {
            //查询所有访客事件记录中所有下载的海康端 æŠ“拍照片 å’Œ ç…§ç‰‡
            startDealVisitImg();
            //查询所有停车场事件记录中所有下载的海康端 è½¦ç‰Œå›¾ç‰‡ å’Œ   è½¦è¾†å›¾ç‰‡
            startDealCarImg();
            //查询所有门禁事件记录中所有下载的海康端 æŠ“拍照片 å’Œ   èº«ä»½è¯å›¾ç‰‡URL
            startDealDeviceImg();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            Constants.DEALING_HK_IMG =false;
        }
@@ -64,29 +74,40 @@
    private void startDealDeviceImg() {
        List<DeviceEvent> deviceEventList = deviceEventMapper.selectList(new QueryWrapper<DeviceEvent>().lambda()
                .eq(DeviceEvent::getIsdeleted,Constants.ZERO)
                .and(wrapper ->{wrapper.likeLeft(DeviceEvent::getExtEventPictureURL,HKConstants.IMG_INDEX)
                .and(wrapper ->{wrapper.likeRight(DeviceEvent::getExtEventPictureURL,HKConstants.IMG_INDEX)
                        .or()
                        .likeLeft(DeviceEvent::getExtEventIDCardPictureURL,HKConstants.IMG_INDEX) ;}));
                        .likeRight(DeviceEvent::getExtEventIDCardPictureURL,HKConstants.IMG_INDEX) ;}));
        Date date= new Date();
        if(deviceEventList !=null && deviceEventList.size()>0){
            for(DeviceEvent model:deviceEventList){
                String img1 = model.getExtEventPictureURL();
                String img2 = model.getExtEventIDCardPictureURL();
                String serverIndex = model.getSvrIndexCode();//服务器编码
                String rs1 = downHkImgToFtp(img1,serverIndex,Constants.DEVICE_EVENT_IMG);
                String rs2 = downHkImgToFtp(img2,serverIndex,Constants.DEVICE_EVENT_IMG);
                if(StringUtils.isBlank(serverIndex)){
                    continue;
                }
                String rs1 = null;
                String rs2 = null;
                DeviceEvent event = new DeviceEvent();
                event.setId(model.getId());
                event.setEditDate(date);
                if(StringUtils.isNotBlank(model.getExtEventPictureURL())){
                    String img1 = model.getExtEventPictureURL().replace(HKConstants.IMG_INDEX_ERROR, "").replace(HKConstants.IMG_INDEX, "");
                    rs1 = downHkImgToFtp(img1,serverIndex,Constants.DEVICE_EVENT_IMG);
                if(StringUtils.isNotBlank(rs1)){
                    event.setExtEventPictureURL(rs1);
                }else{
                    event.setExtEventPictureURL(img1.replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                        event.setExtEventPictureURL(model.getExtEventPictureURL().replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                }
                }
                if(StringUtils.isNotBlank(model.getExtEventIDCardPictureURL())){
                    String img2 = model.getExtEventIDCardPictureURL().replace(HKConstants.IMG_INDEX_ERROR, "").replace(HKConstants.IMG_INDEX, "");
                    rs2 = downHkImgToFtp(img2,serverIndex,Constants.DEVICE_EVENT_IMG);
                if(StringUtils.isNotBlank(rs2)){
                    event.setExtEventIDCardPictureURL(rs2);
                }else{
                    event.setExtEventIDCardPictureURL(img2.replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                        event.setExtEventIDCardPictureURL(model.getExtEventIDCardPictureURL().replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                    }
                }
                deviceEventMapper.updateById(event);
            }
@@ -97,30 +118,41 @@
    private void startDealCarImg() {
        List<CarEvent> carEventList = carEventMapper.selectList(new QueryWrapper<CarEvent>().lambda()
                .eq(CarEvent::getIsdeleted,Constants.ZERO)
                .and(wrapper ->{wrapper.likeLeft(CarEvent::getPlatePicUrl,HKConstants.IMG_INDEX)
                .and(wrapper ->{wrapper.likeRight(CarEvent::getPlatePicUrl,HKConstants.IMG_INDEX)
                        .or()
                        .likeLeft(CarEvent::getVehiclePicUrl,HKConstants.IMG_INDEX) ;}));
                        .likeRight(CarEvent::getVehiclePicUrl,HKConstants.IMG_INDEX) ;}));
        Date date= new Date();
        if(carEventList !=null && carEventList.size()>0){
            for(CarEvent model:carEventList){
                String img1 = model.getPlatePicUrl();
                String img2 = model.getVehiclePicUrl();
                String serverIndex = model.getSvrIndex();//服务器编码
                String rs1 = downHkImgToFtp(img1,serverIndex,Constants.CAR_EVENT_IMG);
                String rs2 = downHkImgToFtp(img2,serverIndex,Constants.CAR_EVENT_IMG);
                if(StringUtils.isBlank(serverIndex)){
                    continue;
                }
                CarEvent event = new CarEvent();
                event.setId(model.getId());
                event.setEditDate(date);
                String rs1 = null;
                String rs2 = null;
                if(StringUtils.isNotBlank(model.getPlatePicUrl())){
                    String img1 = model.getPlatePicUrl().replace(HKConstants.IMG_INDEX_ERROR, "").replace(HKConstants.IMG_INDEX, "");
                    rs1 = downHkImgToFtp(img1,serverIndex,Constants.CAR_EVENT_IMG);
                if(StringUtils.isNotBlank(rs1)){
                    event.setPlatePicUrl(rs1);
                }else{
                    event.setPlatePicUrl(img1.replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                        event.setPlatePicUrl(model.getPlatePicUrl().replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                }
                }
                if(StringUtils.isNotBlank(model.getVehiclePicUrl())){
                    String img2 = model.getVehiclePicUrl().replace(HKConstants.IMG_INDEX_ERROR, "").replace(HKConstants.IMG_INDEX, "");
                    rs2 = downHkImgToFtp(img2,serverIndex,Constants.CAR_EVENT_IMG);
                if(StringUtils.isNotBlank(rs2)){
                    event.setVehiclePicUrl(rs2);
                }else{
                    event.setVehiclePicUrl(img2.replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                        event.setVehiclePicUrl(model.getVehiclePicUrl().replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                }
                }
                carEventMapper.updateById(event);
            }
        }
@@ -130,40 +162,96 @@
    private void startDealVisitImg() {
        List<VisitEvent> visitEventList = visitEventMapper.selectList(new QueryWrapper<VisitEvent>().lambda()
                .eq(VisitEvent::getIsdeleted,Constants.ZERO)
                .and(wrapper ->{wrapper.likeLeft(VisitEvent::getCaptureUrl,HKConstants.IMG_INDEX)
                .and(wrapper ->{wrapper.likeRight(VisitEvent::getCaptureUrl,HKConstants.IMG_INDEX)
                        .or()
                        .likeLeft(VisitEvent::getPhotoUrl,HKConstants.IMG_INDEX) ;}));
                        .likeRight(VisitEvent::getPhotoUrl,HKConstants.IMG_INDEX) ;}));
        Date date= new Date();
        if(visitEventList !=null && visitEventList.size()>0){
            for(VisitEvent model:visitEventList){
                String img1 = model.getCaptureUrl();
                String img2 = model.getPhotoUrl();
                String serverIndex = model.getSvrIndexCode();//服务器编码
                String rs1 = downHkImgToFtp(img1,serverIndex,Constants.VISIT_EVENT_IMG);
                String rs2 = downHkImgToFtp(img2,serverIndex,Constants.VISIT_EVENT_IMG);
                if(StringUtils.isBlank(serverIndex)){
                    continue;
                }
                VisitEvent event = new VisitEvent();
                event.setId(model.getId());
                event.setEditDate(date);
                String rs1 = null;
                String rs2 = null;
                if(StringUtils.isNotBlank(model.getCaptureUrl())){
                    String img1 = model.getCaptureUrl().replace(HKConstants.IMG_INDEX_ERROR, "").replace(HKConstants.IMG_INDEX, "");
                    rs1 = downHkImgToFtp(img1,serverIndex,Constants.VISIT_EVENT_IMG);
                if(StringUtils.isNotBlank(rs1)){
                    event.setCaptureUrl(rs1);
                }else{
                    event.setCaptureUrl(img1.replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                        event.setCaptureUrl(model.getCaptureUrl().replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                }
                }
                if(StringUtils.isNotBlank(model.getPhotoUrl())){
                    String img2 = model.getPhotoUrl().replace(HKConstants.IMG_INDEX_ERROR, "").replace(HKConstants.IMG_INDEX, "");
                    rs2 = downHkImgToFtp(img2,serverIndex,Constants.VISIT_EVENT_IMG);
                if(StringUtils.isNotBlank(rs2)){
                    event.setPhotoUrl(rs2);
                }else{
                    event.setPhotoUrl(img2.replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                        event.setPhotoUrl(model.getPhotoUrl().replace(HKConstants.IMG_INDEX, HKConstants.IMG_INDEX_ERROR));
                }
                }
                visitEventMapper.updateById(event);
            }
        }
    }
    private String downHkImgToFtp(String img1, String serverIndex, String visitEventImg) {
        //
    public static  FtpUtil ftp  = null;
    private String downHkImgToFtp(String img1, String serverIndex, String folder_code) {
        String folder = systemDictDataBiz.queryByCode(Constants.FTP,folder_code).getCode();
        InputStream is = null;
        if(StringUtils.equals(folder_code,Constants.CAR_EVENT_IMG)){
            //停车场抓拍图
            CarPictureRequest param = new CarPictureRequest();
            param.setPicUri(img1.replace(HKConstants.IMG_INDEX_ERROR,"").replace(HKConstants.IMG_INDEX,""));
            param.setAswSyscode(serverIndex);
            is = HKService.getCarPicture(param);
        }else if(StringUtils.equals(folder_code,Constants.DEVICE_EVENT_IMG)){
            //门禁事件图片
            DevicePictureRequest param = new DevicePictureRequest();
            param.setPicUri(img1.replace(HKConstants.IMG_INDEX_ERROR,"").replace(HKConstants.IMG_INDEX,""));
            param.setSvrIndexCode(serverIndex);
            is = HKService.getDevicePicture(param);
        }else if(StringUtils.equals(folder_code,Constants.VISIT_EVENT_IMG)){
            //访客事件图片
            VisitPictureRequest param = new VisitPictureRequest();
            param.setPicUri(img1.replace(HKConstants.IMG_INDEX_ERROR,"").replace(HKConstants.IMG_INDEX,""));
            param.setSvrIndexCode(serverIndex);
            is = HKService.getVisitPicture(param);
        }
        if(is ==null){
            return  null;
        }
        //TODO------jiangping---------
        try {
            if(ftp == null){
                 ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(),
                        Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()),
                        systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(),
                        systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PWD).getCode());
            }else{
                ftp.connect();
            }
            String date = DateUtil.getNowShortDate();
            String fName =  date+"/"+ UUID.randomUUID().toString()+".jpg";
            String fileName = folder+fName;
            boolean r = ftp.uploadInputstream(is,fileName);//上传
            if(r){
                log.info("【海康图片下载上传FTP成功】======================" );
                return  fName;
            }else{
                log.error("【海康图片下载上传FTP失败】======================" );
            }
        } catch (Exception e) {
            log.error("【海康图片下载上传FTP失败】======================"+e.getMessage());
        }
        return  null;
    }
}
server/openapi/src/main/java/com/doumee/api/web/BizResourceController.java
@@ -151,7 +151,9 @@
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "授权token值", required = true)
    })
    public ApiResponse approveApply(@RequestBody ApproveNoticeRequest account ) {
    public ApiResponse approveApply(@RequestBody ApproveNoticeRequest param) {
        param.setToken(this.getToken());
        erpSyncService.approveApply(param);
        return  ApiResponse.success(null);
    }
}
server/openapi/src/main/java/com/doumee/api/web/ErpResourceController.java
@@ -5,6 +5,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.openapi.request.erp.ApproveAddRequest;
import com.doumee.core.model.openapi.request.erp.MemberFailRequest;
import com.doumee.core.model.openapi.request.erp.OrgListRequest;
import com.doumee.core.model.openapi.request.erp.UserListRequest;
import com.doumee.core.model.openapi.response.erp.ApproveInfoResponse;
@@ -16,6 +17,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.UUID;
/**
@@ -27,32 +29,37 @@
@Api(tags = "2、【ERP】端提供接口(向访客端提供或提交数据信息)")
@RestController
@RequestMapping("/erp")
@RequestMapping("/erp/resource")
@Slf4j
public class ErpResourceController extends ApiController{
    @ApiOperation(value = "全量组织信息接口", notes = "ERP端提供,供访客端拉取全部组织信息,用于初始化及周期性数据核查")
    @PostMapping("/resource/org/list")
    @PostMapping("/org/list")
    public ApiResponse<PageData<OrgListResponse>> orgList (@RequestBody PageWrap<OrgListRequest> pageWrap) {
        return ApiResponse.success(null);
    }
    @ApiOperation(value = "全量人员信息接口", notes = "ERP端提供,供访客端拉取全部人员信息,用于初始化及周期性数据核查")
    @PostMapping("/resource/user/list")
    @PostMapping("/user/list")
    public ApiResponse<PageData<UserListRespone>> userList (@RequestBody PageWrap<UserListRequest> pageWrap) {
        return ApiResponse.success(null);
    }
    @ApiOperation(value = "访客申请提交审批接口", notes = "ERP端提供,供访客端调用,提交访客申请信息,接口提交成功,ERP端返回审批记录编码")
    @PostMapping("/event/approve/apply")
    public ApiResponse<String> approveApply(@RequestBody ApproveAddRequest account ) {
    public ApiResponse<String> approveApply(@RequestBody ApproveAddRequest param ) {
        return  ApiResponse.success(UUID.randomUUID().toString());
    }
    @ApiOperation(value = "访客申请审批结果查询接口", notes = "ERP端提供,供访客端调用,查询访客申请审批结果")
    @GetMapping("/resource/approve/info")
    @GetMapping("/approve/info")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "审批记录唯一标识", required = true)
    })
    public ApiResponse<ApproveInfoResponse> approveInfo(@RequestParam String id ) {
        return  ApiResponse.success(null );
    }
    @ApiOperation(value = "员工同步失败推送接口", notes = "ERP端提供,供访客端调用,告知erp员工信息同步失败的数据")
    @PostMapping("/member/fail")
    public ApiResponse<ApproveInfoResponse> memberFail(@RequestBody List<MemberFailRequest> param) {
        return  ApiResponse.success(null );
    }
}