liurunyu
2025-01-15 5097dc483141bc4ad9a3f44d4f7449fc7b6276ad
pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/issue/IssueSv.java
@@ -1,12 +1,30 @@
package com.dy.pipIrrApp.issue;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.util.NumUtil;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrApp.issue.dto.DtoDeleteParam;
import com.dy.pipIrrApp.issue.qo.QoIssueReport;
import com.dy.pipIrrGlobal.daoOp.OpeIssueReportMapper;
import com.dy.pipIrrGlobal.daoOp.OpeReportReplyMapper;
import com.dy.pipIrrGlobal.dyFile.FileOperate;
import com.dy.pipIrrGlobal.dyFile.FileRestVo;
import com.dy.pipIrrGlobal.pojoOp.OpeIssueReport;
import com.dy.pipIrrGlobal.pojoOp.OpeReportReply;
import com.dy.pipIrrGlobal.voOp.VoIssueReport;
import com.dy.pipIrrGlobal.voOp.VoIssueReportReply;
import com.dy.pipIrrGlobal.voOp.VoIssueReport_temp;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.*;
/**
 * @author ZhuBaoMin
@@ -21,6 +39,36 @@
    @Autowired
    private OpeIssueReportMapper opeIssueReportMapper;
    @Autowired
    private OpeReportReplyMapper opeReportReplyMapper;
    @Value("${dy.webFile.fmUrl}")
    private String fmUrl ;
    @Autowired
    private FileOperate fileOp ;
    private void dealWebFilePath(JSONArray jsonArray, boolean hasZipFile, boolean isVideo){
        for (Object obj : jsonArray){
            if(obj instanceof JSONObject){
                JSONObject jsonObject = (JSONObject) obj;
                Object hashObj = jsonObject.get("hash") ;
                if(hashObj != null && NumUtil.isIntNumber(hashObj.toString())){
                    FileRestVo fvo = fileOp.parseHashcode(fmUrl, Integer.valueOf(hashObj.toString()));
                    if(fvo != null && fvo.fileWebUrl != null){
                        jsonObject.put("webPath", fvo.fileWebUrl + jsonObject.get("filePath"));
                        if(hasZipFile){
                            if(!isVideo){
                                jsonObject.put("webPathZip", fileOp.getFileZipPath(fvo.fileWebUrl + jsonObject.get("filePath")));
                            }else{
                                jsonObject.put("webPathZip", fileOp.getFileZipPath(fvo.fileWebUrl + jsonObject.get("filePath"), "jpg"));
                            }
                        }
                    }
                }
            }
        }
    }
    /**
     * 添加巡检员问题上报
     * @param po
@@ -39,13 +87,149 @@
    }
    /**
     * 添加巡检员问题上报信息
     * 根据条件获取巡检员问题上报记录
     * @param queryVo
     * @return
     */
    public QueryResultVo<List<VoIssueReport>> getIssueReports(QoIssueReport queryVo) {
        //完善查询充值记录的起止时间
        String timeStart = queryVo.getTimeStart();
        String timeStop = queryVo.getTimeStop();
        if (timeStart != null) {
            timeStart = timeStart + " 00:00:00";
            queryVo.setTimeStart(timeStart);
        }
        if (timeStop != null) {
            timeStop = timeStop + " 23:59:59";
            queryVo.setTimeStop(timeStop);
        }
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
        Long itemTotal = opeIssueReportMapper.getIssueReportsCount(params);
        //QueryResultVo<List<VoIssueReport_temp>> rsVo = new QueryResultVo<>();
        QueryResultVo<List<VoIssueReport>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = queryVo.pageSize;
        rsVo.pageCurr = queryVo.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        List<VoIssueReport_temp> list_temp = opeIssueReportMapper.getIssueReports(params);
        List<VoIssueReport> list = new ArrayList<>();
        for (int i = 0; i < list_temp.size(); i++) {
            VoIssueReport_temp report_temp = list_temp.get(i);
            VoIssueReport report = new VoIssueReport();
            BeanUtils.copyProperties(report_temp, report);
            JSONArray images_array = Optional.ofNullable(JSON.parseArray(report_temp.getImages())).orElse(new JSONArray());
            JSONArray audios_array = Optional.ofNullable(JSON.parseArray(report_temp.getAudios())).orElse(new JSONArray());
            JSONArray videos_array = Optional.ofNullable(JSON.parseArray(report_temp.getVideos())).orElse(new JSONArray());
            this.dealWebFilePath(images_array, true, false) ;
            this.dealWebFilePath(audios_array, false, false) ;
            this.dealWebFilePath(videos_array, true, true) ;
            report.setImages(images_array);
            report.setAudios(audios_array);
            report.setVideos(videos_array);
            list.add(report);
        }
        rsVo.obj = list;
        //rsVo.obj = opeIssueReportMapper.getIssueReports(params);
        return rsVo;
    }
    /**
     * 根据问题上报记录主键获取获取巡检员问题上报记录视图对象
     * @param issueReportId
     * @return
     */
    public VoIssueReport getIssueReportById(Long issueReportId) {
        VoIssueReport_temp issueReport = opeIssueReportMapper.getIssueReportById(issueReportId);
        VoIssueReport report = new VoIssueReport();
        BeanUtils.copyProperties(issueReport, report);
        JSONArray images_array = Optional.ofNullable(JSON.parseArray(issueReport.getImages())).orElse(new JSONArray());
        JSONArray audios_array = Optional.ofNullable(JSON.parseArray(issueReport.getAudios())).orElse(new JSONArray());
        JSONArray videos_array = Optional.ofNullable(JSON.parseArray(issueReport.getVideos())).orElse(new JSONArray());
        this.dealWebFilePath(images_array, true, false) ;
        this.dealWebFilePath(audios_array, false, false) ;
        this.dealWebFilePath(videos_array, true, true) ;
        report.setImages(images_array);
        report.setAudios(audios_array);
        report.setVideos(videos_array);
        return report;
    }
    /**
     * 逻辑删除巡检员问题上报,删除前先判断要删除的上报是否存在
     * @param po
     * @return
     */
    //public Long insertIssueReport(OpeIssueReport po) {
    //    opeIssueReportMapper.insert(po);
    //    return po.getId();
    //}
    public String deleteIssueReport(DtoDeleteParam po) {
        // 根据上报ID及巡检员ID获取未删除的上报,删除上报判断使用
        OpeIssueReport opeIssueReport = opeIssueReportMapper.getReport(po.getIssueReportId(), po.getInspectorId());
        if(opeIssueReport == null) {
            return "您要删除的问题上报不存在";
        }
        if(opeIssueReportMapper.deleteIssueReport(po.getIssueReportId()) == 0) {
            return "巡检员问题上报删除失败";
        }
        return "success";
    }
    /**
     * 添加巡检员问题上报回复
     *  添加问题上报回复记录
     *  问题上报状态改为已回复
     * @param po
     * @return
     */
    public String replyReport(OpeReportReply po) {
        po.setReplyTime(new Date());
        opeReportReplyMapper.insert(po);
        if(po.getId() == 0) {
            return "回复记录添加失败";
        }
        OpeIssueReport issueReport = new OpeIssueReport();
        issueReport.setId(po.getReportId());
        issueReport.setState((byte)2);
        Integer rec = opeIssueReportMapper.updateByPrimaryKeySelective(issueReport);
        if(rec == 0) {
            return "巡检员问题上报状态修改失败";
        }
        return "sucess";
    }
    /**
     * 获取上报回复信息
     * @param reportId
     * @return
     */
    public JSONObject getReportReply(Long reportId) {
        JSONObject result = new JSONObject();
        if(reportId == null) {
            result.put("code", ResultCodeMsg.RsCode.ERROR_CODE);
            result.put("msg","请选择一个问题上报");
            return result;
        }
        VoIssueReportReply issueReportReply = opeReportReplyMapper.getReportReplyByReportId(reportId);
        if(issueReportReply != null) {
            result.put("code", ResultCodeMsg.RsCode.SUCCESS_CODE);
            result.put("msg","success");
            result.put("data", issueReportReply);
            return result;
        }
        result.put("code", ResultCodeMsg.RsCode.ERROR_CODE);
        result.put("msg","未获取到上报回复信息");
        return result;
    }
}