| 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<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 = seIssueReportMapper.getIssueReportsCount(params); | 
|         QueryResultVo<List<VoIssueReport>> rsVo = new QueryResultVo<>(); | 
|   | 
|         rsVo.pageSize = queryVo.pageSize; | 
|         rsVo.pageCurr = queryVo.pageCurr; | 
|   | 
|         rsVo.calculateAndSet(itemTotal, params); | 
|   | 
|         List<VoIssueReport_temp> list_temp = seIssueReportMapper.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; | 
|         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); | 
|     } | 
|   | 
| } |