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;
|
|
}
|
|
}
|