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.*; 
 | 
  
 | 
/** 
 | 
 * @author ZhuBaoMin 
 | 
 * @date 2024-11-11 16:29 
 | 
 * @LastEditTime 2024-11-11 16:29 
 | 
 * @Description 
 | 
 */ 
 | 
  
 | 
@Slf4j 
 | 
@Service 
 | 
public class IssueSv { 
 | 
    @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 
 | 
     * @return 
 | 
     */ 
 | 
    public String addIssueReport(OpeIssueReport po) { 
 | 
        po.setReportTime(new Date()); 
 | 
        po.setState((byte)1); 
 | 
        opeIssueReportMapper.insert(po); 
 | 
        Long issueReportId = po.getId(); 
 | 
        if(issueReportId == null) { 
 | 
            return "巡检员问题上报失败"; 
 | 
        } 
 | 
  
 | 
        return "success"; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据条件获取巡检员问题上报记录 
 | 
     * @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 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; 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |