k94314517
2024-06-06 5519e6a190a714923eabc3156539a48b572f3fa5
代码初始化
已添加1个文件
已修改16个文件
448 ■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/NoticesService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java
@@ -15,6 +15,7 @@
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.xpath.operations.Bool;
import sun.misc.BASE64Encoder;
/** */
@@ -237,7 +238,6 @@
        // è®¾ç½®PassiveMode传输
        try {
            ftpClient.enterLocalPassiveMode();
            // è®¾ç½®ä»¥äºŒè¿›åˆ¶æµçš„æ–¹å¼ä¼ è¾“
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.setControlEncoding("GBK");
@@ -266,6 +266,42 @@
        }
        return false;
    }
    public boolean uploadInputstreamBatch(InputStream inputStream, String remote, Boolean close)  {
        // è®¾ç½®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();
            if(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();
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.doumee.dao.system.dto;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/6/5 9:27
 */
@Data
public class NoticesDTO {
    @ApiModelProperty(value = "用户主键",hidden = true)
    private Integer memberId;
    @ApiModelProperty(value = "查询类型: 0=待处理;1=已处理;2=我发布的;3=抄送我")
    private Integer queryType;
    @ApiModelProperty(value = "开始日期")
    private Date startDate;
    @ApiModelProperty(value = "结束日期")
    private Date endDate;
    @ApiModelProperty(value = "0访客审批 1访客报备 2用车审批 3隐患处理 4物流车审批 5系统系统")
    private Integer type;
    @ApiModelProperty(value = "只看未读:1=是;0=否")
    private Integer noRead;
    @ApiModelProperty(value = "任务名称/标题")
    private String title;
}
server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java
@@ -88,15 +88,15 @@
    private String typeDetail;
    @ApiModelProperty(value = "关联参数1" ,notes = "存储 æ¶ˆæ¯å±•示JSON ")
    @ApiModelProperty(value = "存储 æ¶ˆæ¯å±•示JSON" ,notes = "存储 æ¶ˆæ¯å±•示JSON ")
    @ExcelColumn(name="关联参数1")
    private String param1;
    @ApiModelProperty(value = "关联参数2",notes = "用于存储 ä¸šåŠ¡çŠ¶æ€ä¿¡æ¯ 0 =待处理;1=已同意/已处理;2=已拒绝/已退回;3=已转交;4=已撤销")
    @ApiModelProperty(value = "用于存储 ä¸šåŠ¡çŠ¶æ€ä¿¡æ¯ 0 =待处理;1=已同意/已处理;2=已拒绝/已退回;3=已转交;4=已撤销",notes = "用于存储 ä¸šåŠ¡çŠ¶æ€ä¿¡æ¯ 0 =待处理;1=已同意/已处理;2=已拒绝/已退回;3=已转交;4=已撤销")
    @ExcelColumn(name="关联参数2")
    private String param2;
    @ApiModelProperty(value = "关联参数3",notes = "发起人")
    @ApiModelProperty(value = "发起人",notes = "发起人")
    @ExcelColumn(name="关联参数3")
    private String param3;
server/system_service/src/main/java/com/doumee/service/system/NoticesService.java
@@ -2,6 +2,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.system.dto.NoticesDTO;
import com.doumee.dao.system.model.Notices;
import java.util.List;
@@ -97,5 +98,10 @@
    long count(Notices notices);
    PageData<Notices> taskCanterPage(PageWrap<NoticesDTO> pageWrap);
    void signReadById(Integer noticesId);
    void signRead(Integer memberId);
}
server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
@@ -4,21 +4,26 @@
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.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
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.system.dto.NoticesDTO;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Notices;
import com.doumee.service.system.NoticesService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
 * ç³»ç»Ÿæ¶ˆæ¯ä¿¡æ¯è¡¨Service实现
@@ -93,8 +98,6 @@
        IPage<Notices> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        queryWrapper.selectAll(Notices.class);
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.eq(Notices::getIsdeleted, pageWrap.getModel().getIsdeleted());
@@ -140,7 +143,82 @@
        return noticesMapper.selectCount(wrapper);
    }
    @Override
    public PageData<Notices> taskCanterPage(PageWrap<NoticesDTO> pageWrap) {
        IPage<Notices> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.selectAll(Notices.class);
        NoticesDTO noticesDTO = pageWrap.getModel();
        if(Objects.isNull(noticesDTO)
            || Objects.isNull(noticesDTO.getMemberId())
            || Objects.isNull(noticesDTO.getQueryType())){
                queryWrapper.eq("1","2");
        }
        if(noticesDTO.getQueryType().equals(Constants.ZERO)){
            queryWrapper.eq(Notices::getStatus,Constants.ZERO);
            queryWrapper.eq(Notices::getSendacopy,Constants.ZERO);
            queryWrapper.eq(Notices::getUserId, noticesDTO.getMemberId());
        } else if(noticesDTO.getQueryType().equals(Constants.ONE)){
            queryWrapper.eq(Notices::getStatus,Constants.ONE);
            queryWrapper.eq(Notices::getSendacopy,Constants.ZERO);
        } else if(noticesDTO.getQueryType().equals(Constants.TWO)){
            queryWrapper.eq(Notices::getParam3, noticesDTO.getMemberId());
        } else if (noticesDTO.getQueryType().equals(Constants.THREE)) {
            queryWrapper.eq(Notices::getUserId, noticesDTO.getMemberId());
            queryWrapper.eq(Notices::getSendacopy,Constants.ONE);
            if(Objects.nonNull(noticesDTO.getNoRead())&&Constants.equalsInteger(noticesDTO.getNoRead(),Constants.ONE)){
                queryWrapper.eq(Notices::getReaded,Constants.ONE);
            }
        }else{
            queryWrapper.eq("1","2");
        }
        queryWrapper.ge(noticesDTO.getStartDate() != null, Notices::getCreateDate, Utils.Date.getStart(noticesDTO.getStartDate() ));
        queryWrapper.le(noticesDTO.getStartDate() != null,  Notices::getCreateDate, Utils.Date.getEnd(noticesDTO.getStartDate() ));
        queryWrapper.ge(noticesDTO.getEndDate() != null, Notices::getCreateDate, Utils.Date.getStart(noticesDTO.getEndDate() ));
        queryWrapper.le(noticesDTO.getEndDate() != null,  Notices::getCreateDate, Utils.Date.getEnd(noticesDTO.getEndDate() ));
        queryWrapper.eq(Objects.nonNull(noticesDTO.getType()),Notices::getType,noticesDTO.getType());
        queryWrapper.eq(StringUtils.isNotBlank(noticesDTO.getTitle()),Notices::getTitle,noticesDTO.getTitle());
        queryWrapper.orderByDesc(Notices::getCreateDate);
        PageData<Notices> pageData = PageData.from(noticesMapper.selectJoinPage(page,Notices.class, queryWrapper));
        return pageData;
    }
    /**
     * æ ‡è®°å·²è¯»
     * @param noticesId
     */
    @Override
    public void signReadById(Integer noticesId){
        if(Objects.isNull(noticesId)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Notices notices = noticesMapper.selectById(noticesId);
        if(Objects.isNull(notices)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(Constants.equalsInteger(notices.getSendacopy(),Constants.ONE)){
            if(Constants.equalsInteger(Constants.ZERO,notices.getReaded())){
                noticesMapper.update(null,new UpdateWrapper<Notices>().lambda()
                        .set(Notices::getReaded,Constants.ONE).eq(Notices::getId,notices));
            }
        }else{
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非抄送数据,无法进行标记");
        }
    }
    /**
     * æ‰¹é‡æ ‡è®°å·²è¯»
     * @param memberId
     */
    @Override
    public void signRead(Integer memberId) {
        noticesMapper.update(null, new UpdateWrapper<Notices>().lambda()
                .set(Notices::getReaded, Constants.ONE)
                .eq(Notices::getSendacopy,Constants.ONE)
                .eq(Notices::getReaded,Constants.ZERO)
                .eq(Notices::getUserId, memberId));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java
@@ -104,7 +104,7 @@
    @GetMapping("/{id}")
    @RequiresPermissions("business:visits:query")
    public ApiResponse<Visits> findById(@PathVariable Integer id) {
        return ApiResponse.success(visitsService.findById(id));
        return ApiResponse.success(visitsService.findById(id,null));
    }
    @ApiOperation("滞留人员")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
@@ -80,7 +80,7 @@
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:hiddendanger:query")
    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
    public ApiResponse<HiddenDanger> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(hiddenDangerService.findById(id));
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
@@ -1,21 +1,31 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.response.StagingDataVO;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.system.dto.NoticesDTO;
import com.doumee.dao.system.model.Notices;
import com.doumee.dao.web.response.InternalHomeVO;
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.VisitsService;
import com.doumee.service.system.NoticesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
/**
 * Created by IntelliJ IDEA.
@@ -38,6 +48,8 @@
    @Autowired
    private NoticesService noticesService;
    @Autowired
    private ApproveService approveService;
    @ApiOperation("头部数据")
@@ -70,13 +82,38 @@
    }
    @ApiOperation("任务中心分页")
    @PostMapping("/taskPage")
    @RequiresPermissions("business:notices:query")
    public ApiResponse<PageData<Notices>> taskPage (@RequestBody PageWrap<Notices> pageWrap) {
        pageWrap.getModel().setPalt(Constants.ZERO);
        return ApiResponse.success(noticesService.findPage(pageWrap));
    @ApiOperation(value = "任务中心头部", notes = "H5")
    @GetMapping("/taskCenterHead")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "isDetail", value = " æ˜¯å¦æŸ¥è¯¢è¯¦ç»† 1是;0否", required = true),
    })
    public ApiResponse<InternalHomeVO> taskCenterHead(@RequestParam Integer isDetail,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success("查询成功",approveService.getHomeData(getLoginUser(token).getMemberId(),isDetail));
    }
    @ApiOperation("任务中心分页")
    @PostMapping("/taskPage")
    public ApiResponse<PageData<Notices>> taskPage (@RequestBody PageWrap<NoticesDTO> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo loginUserInfo = getLoginUser(token);
        pageWrap.getModel().setMemberId(loginUserInfo.getMemberId());
        return ApiResponse.success(noticesService.taskCanterPage(pageWrap));
    }
    @ApiOperation("标记已读")
    @GetMapping("/signRead")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "noticesId", value = "记录主键", required = false),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "signType", value = "标记类型:0=单个标记;1=标记全部未读", required = false),
    })
    public ApiResponse signRead (Integer noticesId,@RequestParam Integer signType, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo loginUserInfo = getLoginUser(token);
        if(Constants.equalsInteger(signType,Constants.ZERO)){
            noticesService.signReadById(noticesId);
        }else{
            noticesService.signRead(loginUserInfo.getMemberId());
        }
        return ApiResponse.success("操作成功");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
@@ -6,6 +6,7 @@
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -96,6 +97,7 @@
    @PostMapping("/page")
    @CloudRequiredPermission("business:visits:query")
    public ApiResponse<PageData<Visits>> findPage (@RequestBody PageWrap<Visits> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        pageWrap.getModel().setMemberId(getLoginUser(token).getMemberId());
        return ApiResponse.success(visitsService.findPage(pageWrap));
    }
@@ -110,7 +112,8 @@
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:visits:query")
    public ApiResponse<Visits> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(visitsService.findById(id));
        LoginUserInfo loginUserInfo = getLoginUser(token);
        return ApiResponse.success(visitsService.findById(id,loginUserInfo.getMemberId()));
    }
    @ApiOperation("滞留人员")
@@ -126,7 +129,9 @@
    @ApiOperation(value = "访客报备", notes = "访客报备")
    @PostMapping("/createVisit")
    public ApiResponse createVisit(@RequestBody Visits visits,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        visits.setMemberId(getLoginUser(token).getMemberId());
        LoginUserInfo loginUserInfo = getLoginUser(token);
        visits.setMemberId(loginUserInfo.getMemberId());
        visits.setCreateMemberId(loginUserInfo.getMemberId());
        visits.setReceptMemberId(visits.getMemberId());
        return ApiResponse.success("查询成功", visitsService.visitReporting(visits));
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
@@ -1,13 +1,18 @@
package com.doumee.cloud.common;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.FtpUtil;
import com.doumee.core.utils.aliyun.ALiYunUtil;
import com.doumee.dao.system.model.SystemDict;
import com.doumee.dao.system.model.SystemDictData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -26,10 +31,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import java.util.*;
/**
 * @author Eva.Caesar Liu
@@ -50,6 +52,102 @@
    public static FtpUtil ftp  = null;
    @ApiOperation(value = "批量上传文件到FTP")
    @RequestMapping(method= RequestMethod.POST,value="/uploadBatch")
    @ResponseBody
    public void uploadBatch(HttpServletRequest request, HttpServletResponse response, String folder) throws Exception {
        if(Objects.isNull(folder)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        SystemDictData folderData =  systemDictDataBiz.queryByCode(Constants.FTP,folder);
        if(Objects.isNull(folderData)||StringUtils.isBlank(folderData.getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"目标文件夹错误");
        }
        folder = systemDictDataBiz.queryByCode(Constants.FTP,folder).getCode();
        String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode();
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        Map<String, Object> context = new HashMap<>();
        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();
            }
            context.put("success", true);
            context.put("code", 200);
            context.put("errno",0);
            CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
            if (multipartResovler.isMultipart(request)) {
                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
                List<MultipartFile> fileList = multipartRequest.getFiles("file");
                Iterator<String> it = multipartRequest.getFileNames();
                JSONArray jsonArray = new JSONArray();
                if (fileList.size() > 0) {
                    //遍历文件列表
                    Iterator<MultipartFile> fileIte = fileList.iterator();
                    Integer index = Constants.ONE;
                    while (fileIte.hasNext()) {
                        //获得每一个文件
                        MultipartFile file = fileIte.next();
                        String originname = file.getOriginalFilename();
                        InputStream is = file.getInputStream();
                        String endType = originname.substring(originname.lastIndexOf("."), originname.length());
                        String date = DateUtil.getNowShortDate();
                        String fName = date + "/" + UUID.randomUUID() + endType;
                        String fileName = folder + "/" + fName;
                        boolean r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()));
                        if (r) {
                            JSONObject fileJSON = new JSONObject();
                            fileJSON.put("url", prefixPath + fileName);
                            fileJSON.put("imgaddr", fName);
                            fileJSON.put("imgname", fileName);
                            fileJSON.put("originname", originname);
                            jsonArray.add(fileJSON);
                        }
                        index = index + 1;
                    }
                }
//                while (it.hasNext()) {
//                    MultipartFile file = multipartRequest.getFile(it.next());
//                    String originname = file.getOriginalFilename();
//                    is = file.getInputStream();
//                    String endType = originname.substring(originname.lastIndexOf("."),originname.length());
//                    String date = DateUtil.getNowShortDate();
//                    String fName =  date+"/"+ UUID.randomUUID()+endType;
//                    String fileName = folder+"/"+fName;
//                    boolean r = ftp.uploadInputstream(is,fileName);
//                    if(r){
//                        JSONObject fileJSON = new JSONObject();
//                        fileJSON.put("url", prefixPath+fileName);
//                        fileJSON.put("imgaddr", fName);
//                        fileJSON.put("imgname", fileName);
//                        fileJSON.put("originname", originname);
//                        jsonArray.add(fileJSON);
//                    }
//                }
                context.put("data",jsonArray);
            }
        } catch (Exception e) {
            log.error("【上传FTP失败】======================"+e.getMessage());
            context.put("code", 0);
            context.put("message", "上传失败");
            context.put("errno",0);
            writerJson(response, context);
            return;
        }
        writerJson(response, context);
        return;
    }
    @ApiOperation(value = "上传文件到FTP")
    @RequestMapping(method= RequestMethod.POST,value="/upload")
    @ResponseBody
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java
@@ -61,11 +61,11 @@
    private ApproveService approveService;
    @ApiOperation(value = "内部人员首页", notes = "H5")
    @GetMapping("/internalHome")
    public ApiResponse<InternalHomeVO> internalHome(@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success("查询成功",approveService.getHomeData(getLoginUser(token).getMemberId()));
    }
//    @ApiOperation(value = "内部人员首页", notes = "H5")
//    @GetMapping("/internalHome")
//    public ApiResponse<InternalHomeVO> internalHome(@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
//        return ApiResponse.success("查询成功",approveService.getHomeData(getLoginUser(token).getMemberId()));
//    }
    @ApiOperation("任务中心")
    @PostMapping("/taskCenter")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import com.doumee.dao.business.vo.ApproveDataVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -292,4 +293,13 @@
    @ApiModelProperty(value = "离场状态;0=未离场", example = "1",hidden = true)
    @TableField(exist = false)
    private Integer levelStatus;
    @ApiModelProperty(value = "创建人姓名", example = "1")
    @TableField(exist = false)
    private String createMemberName;
    @ApiModelProperty(value = "审批信息数据")
    @TableField(exist = false)
    private ApproveDataVO approveDateVO;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -105,7 +105,7 @@
     * @param memberId
     * @return
     */
    InternalHomeVO getHomeData(Integer memberId);
    InternalHomeVO getHomeData(Integer memberId,Integer isDetail);
    void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -79,7 +79,7 @@
     * @param id ä¸»é”®
     * @return Visits
     */
    Visits findById(Integer id);
    Visits findById(Integer id,Integer memberId);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -236,42 +236,45 @@
    /**
     * å†…部人员H5页面首页
     * @param memberId
     * @param isDetail æ˜¯å¦æŸ¥è¯¢è¯¦ç»† 1是;0否
     * @return
     */
    @Override
    public InternalHomeVO getHomeData(Integer memberId){
    public InternalHomeVO getHomeData(Integer memberId,Integer isDetail){
        InternalHomeVO internalHomeVO = new InternalHomeVO();
        internalHomeVO.setHomeImg(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.HOME_IMAGE).getCode());
        internalHomeVO.setTaskNum(approveMapper.selectCount(new QueryWrapper<Approve>().lambda().eq(Approve::getChekorId,memberId).eq(Approve::getStatus,Constants.ZERO)));
        //任务数据
        List<Notices> noticesList = noticesJoinMapper.selectList(new QueryWrapper<Notices>().lambda().eq(Notices::getUserId,memberId).orderByDesc(Notices::getCreateDate));
        if(CollectionUtils.isNotEmpty(noticesList)){
            //待我处理的数据
            internalHomeVO.setNoticeWaitNum(
                noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                        &&Constants.equalsInteger(i.getStatus(),Constants.ZERO)
                        &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
                ).count()
            );
            internalHomeVO.setNoticeDealNum(
                noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                        &&Constants.equalsInteger(i.getStatus(),Constants.ONE)
                        &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
                ).count()
            );
        List<Notices> noticesList = noticesJoinMapper.
                selectList(new QueryWrapper<Notices>().lambda()
                        .eq(Notices::getUserId,memberId).orderByDesc(Notices::getCreateDate));
        internalHomeVO.setTaskNum(noticesList.size());
        if(Constants.equalsInteger(Constants.ONE,isDetail)){
            if(CollectionUtils.isNotEmpty(noticesList)){
                //待我处理的数据
                internalHomeVO.setNoticeWaitNum(
                        noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                                &&Constants.equalsInteger(i.getStatus(),Constants.ZERO)
                                &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
                        ).count()
                );
                internalHomeVO.setNoticeDealNum(
                        noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                                &&Constants.equalsInteger(i.getStatus(),Constants.ONE)
                                &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
                        ).count()
                );
            internalHomeVO.setNoticeCreateNum(
                    noticesJoinMapper.selectCount(new QueryWrapper<Notices>().lambda().eq(Notices::getParam3,memberId))
            );
                internalHomeVO.setNoticeCreateNum(
                        noticesJoinMapper.selectCount(new QueryWrapper<Notices>().lambda().eq(Notices::getParam3,memberId))
                );
            internalHomeVO.setNoticeCopyNum(
                noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                        &&Constants.equalsInteger(i.getSendacopy(),Constants.ONE)
                ).count()
            );
                internalHomeVO.setNoticeCopyNum(
                        noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                                &&Constants.equalsInteger(i.getSendacopy(),Constants.ONE)
                        ).count()
                );
            }
        }
        return internalHomeVO;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -76,6 +76,7 @@
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        hiddenDanger.setMemberId(hiddenDanger.getLoginUserInfo().getMemberId());
        hiddenDanger.setIsdeleted(Constants.ZERO);
        hiddenDanger.setCreateDate(new Date());
        hiddenDanger.setEditDate(new Date());
@@ -109,7 +110,7 @@
        hiddenDangerLog.setObjType(Constants.ZERO);
        hiddenDangerLogMapper.insert(hiddenDangerLog);
        List<Multifile> multifiles  = hiddenDanger.getMultifileList();
        List<Multifile> multifiles  = hiddenDanger.getSubmitFileList();
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifiles)){
            for (int i = 0; i < multifiles.size(); i++) {
                    Multifile multifile = multifiles.get(i);
@@ -125,8 +126,8 @@
        String title = "[隐患随手拍]提报人-"+hiddenDanger.getLoginUserInfo().getRealname();
        //json数据
        Map<String,Object> jsonMap = new HashMap<>();
        jsonMap.put("name", "发现区域:" + hiddenDangerParam.getName());
        jsonMap.put("name", "隐患类型:" + hiddenDangerCate.getName());
        jsonMap.put("area", "发现区域:" + hiddenDangerParam.getName());
        jsonMap.put("cate", "隐患类型:" + hiddenDangerCate.getName());
        jsonMap.put("sTime", "发现时间:" + DateUtil.DateToStr(hiddenDanger.getSubmitTime() , "yyyy-MM-dd HH:mm"));
        //默认生成一条 ç”³è¯·äººçš„æ•°æ® æ ‡è®°åˆ é™¤çŠ¶æ€ç”¨äºŽå¤„ç†åˆ° ä»»åŠ¡ä¸­å¿ƒï¼ˆæˆ‘å‘èµ·ï¼‰ä½¿ç”¨
        Notices createNotices = new Notices();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -266,6 +266,7 @@
        //创建时间
        visits.setCreateDate(date);
        //访客报备
        visits.setIsdeleted(Constants.ZERO);
        visits.setType(Constants.TWO);
        visits.setReceptMemberId(visitMember.getId());
        visits.setStatus(Constants.VisitStatus.waitCheck);
@@ -274,6 +275,7 @@
        //初始化访客信息
//        initVisitInfo(visits,date);
        visitsMapper.insert(visits);
        approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
        return visits.getId();
    }
@@ -621,12 +623,12 @@
            }
        }
        //访客报备
        if(visits.getType().equals(Constants.TWO)
        if(Constants.equalsInteger(visits.getType(),Constants.TWO)
            && (StringUtils.isBlank( visits.getName())
                ||  StringUtils.isBlank( visits.getPhone())
                ||  StringUtils.isBlank( visits.getCompanyName()))
                ||  StringUtils.isBlank( visits.getCompanyName())
                ||  StringUtils.isBlank( visits.getCarNos())
                ||  Objects.isNull(visits.getReceptMemberId())
                ||  Objects.isNull(visits.getReceptMemberId()))
        ){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!");
        }else if(visits.getType().equals(Constants.ONE) && StringUtils.isBlank(visits.getConstructionReason())){
@@ -1085,14 +1087,16 @@
    }
    @Override
    public Visits findById(Integer id) {
    public Visits findById(Integer id,Integer memberId) {
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Visits.class);
        queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName);
        queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
        queryWrapper.select("t3.name",Visits::getCreateMemberName);
        queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
        queryWrapper.leftJoin(Company.class,Company::getErpId,Member::getErpOrgId);
        queryWrapper.leftJoin("Member t3 on t.CREATE_MEMBER_ID=t3.id");
        queryWrapper.eq(Visits::getId,id);
        Visits result = visitsJoinMapper.selectJoinOne(Visits.class,queryWrapper);
@@ -1119,6 +1123,13 @@
        result.setWithUserList(visitsList);
        result.setPrefixUrl(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
        result.setApproveDateVO(
                approveService.arrangeApprovedData(id,
                        result.getType(),
                        memberId)
        );
        return result;
    }
@@ -1147,10 +1158,9 @@
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(pageWrap.getModel().getType()!=null,Visits::getType,pageWrap.getModel().getType());
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType());
        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getOpenid()),Visits::getOpenid,pageWrap.getModel().getOpenid());
        queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
//        queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getName,pageWrap.getModel().getName())
                .or().like(Visits::getPhone,pageWrap.getModel().getName()))
                .eq(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Visits::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, pageWrap.getModel().getIdcardNo()))