package com.dy.pipIrrWechat.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.pipIrrGlobal.daoSe.SeIssueReportMapper; import com.dy.pipIrrGlobal.daoSe.SeReportReplyMapper; import com.dy.pipIrrGlobal.dyFile.FileOperate; import com.dy.pipIrrGlobal.dyFile.FileRestVo; import com.dy.pipIrrGlobal.pojoSe.SeIssueReport; import com.dy.pipIrrGlobal.pojoSe.SeReportReply; import com.dy.pipIrrGlobal.voSe.VoIssueReport; import com.dy.pipIrrGlobal.voSe.VoIssueReportReply; import com.dy.pipIrrGlobal.voSe.VoIssueReport_temp; import com.dy.pipIrrWechat.issue.qo.QoIssueReport; 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-10-30 10:34 * @LastEditTime 2024-10-30 10:34 * @Description 农户问题上报服务类 */ @Slf4j @Service public class IssueSv { @Autowired private SeIssueReportMapper seIssueReportMapper; @Autowired private SeReportReplyMapper seReportReplyMapper; @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(SeIssueReport po) { po.setReportTime(new Date()); po.setState((byte)1); seIssueReportMapper.insert(po); Long issueReportId = po.getId(); if(issueReportId == null) { return "农户问题上报失败"; } return "success"; } /** * 修改农户问题上报状态,回复及删除时使用 * @param po * @return */ public Integer updateIssueReport(SeIssueReport po) { return seIssueReportMapper.updateByPrimaryKeySelective(po); } /** * 根据指定条件获取农户问题上报 * @param queryVo * @return */ public QueryResultVo> 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 params = (Map) PojoUtils.generalize(queryVo); Long itemTotal = seIssueReportMapper.getIssueReportsCount(params); QueryResultVo> rsVo = new QueryResultVo<>(); rsVo.pageSize = queryVo.pageSize; rsVo.pageCurr = queryVo.pageCurr; rsVo.calculateAndSet(itemTotal, params); List list_temp = seIssueReportMapper.getIssueReports(params); List 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; return rsVo; } /** * 根据上报ID及农户ID获取未删除的上报,删除上报判断使用 * @param issueReportId * @param clientId * @return */ public SeIssueReport getReport(Long issueReportId, Long clientId) { return seIssueReportMapper.getReport(issueReportId, clientId); } /** * 删除农户问题上报 * @param issueReportId * @return */ public Integer deleteIssueReport(Long issueReportId) { return seIssueReportMapper.deleteIssueReport(issueReportId); } /** * 添加农户问题上报回复 * @param po * @return */ public Long insertReportReply(SeReportReply po) { seReportReplyMapper.insert(po); return po.getId(); } /** * 根据问题上报ID获取上报回复信息 * @param reportId * @return */ public VoIssueReportReply getReportReplyByReportId(Long reportId) { return seReportReplyMapper.getReportReplyByReportId(reportId); } }