package cn.huge.module.grid.service; import cn.huge.base.common.bo.R; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.HttpClientUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.file.domain.po.FileInfo; import cn.huge.module.file.service.FileInfoService; import cn.huge.module.grid.dao.mapper.GridEventMapper; import cn.huge.module.grid.domain.dto.GridFileUploadDTO; import cn.huge.module.grid.domain.dto.GridOrgDTO; import cn.huge.module.grid.domain.po.GridEvent; import cn.huge.module.grid.domain.vo.*; import cn.huge.module.sys.dto.FileInfoBaseDTO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; /** * @author wangwh * @version 1.0.0 * @title: dyh_th_grid_event业务逻辑处理 * @Description dyh_th_grid_event业务逻辑处理 * @company hugeinfo * @Time 2025-02-21 17:42:19 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class GridEventService extends ServiceImpl { @Autowired private GridEventMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private GridCaseTaskService gridCaseTaskService; @Autowired private GridCaseDataService gridCaseDataService; @Autowired private GridUserService gridUserService; @Autowired private CustClientImpl custClient; @Autowired private FileInfoService fileInfoService; @Value("${grid.url:http://219.137.166.84:8061}") private String gridUrl; @Value("${grid.username:mtxt0011}") private String userName; @Value("${grid.password}") private String passWord; @Value("${grid.secret:BZb2hLCx05}") private String secret; @Value("${grid.passid:b08c0ec0-772d-caf8-5c9b-1f7d86295a95}") private String passid; public HashMap initHeadVo() { long timestamp = System.currentTimeMillis()/1000; HashMap headVo = new HashMap<>(); headVo.put("x-rio-paasid",passid); headVo.put("x-rio-timestamp",timestamp+""); headVo.put("x-rio-nonce","mt"); headVo.put("x-rio-signature", DigestUtils.sha256Hex(timestamp+secret+"mt"+timestamp)); return headVo; } /** * 更新对象 * * @param entity 对象 */ public void updateGridEvent(GridEvent entity) { try { mapper.updateGridEvent(entity); } catch (Exception e) { log.error("[GridEventService.updateGridEvent]调用失败,异常信息:" + e, e); throw new ServiceException("GridEventService.updateGridEvent", e); } } /** * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updateGridEventTerms(GridEvent entity, Map terms) { try { mapper.updateGridEventTerms(entity, terms); } catch (Exception e) { log.error("[GridEventService.updateGridEventTerms]调用失败,异常信息:" + e, e); throw new ServiceException("GridEventService.updateGridEventTerms", e); } } /** * 根据编号物理删除 * * @param id 查询条件集合 */ public void deleteGridEvent(String id) { try { mapper.deleteGridEvent(id); } catch (Exception e) { log.error("[GridEventService.deleteGridEvent]调用失败,异常信息:" + e, e); throw new ServiceException("GridEventService.deleteGridEvent", e); } } /** * 按条件查询 * * @param terms 条件 * @return List */ public List listTerms(Map terms) { return mapper.listTerms(terms); } /** * 按条件统计 * * @param terms 条件 * @return long */ public long countTerms(Map terms) { return mapper.countTerms(terms); } /** * 按条件分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms) { long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * * @param gridEvent 实体对象 */ public void saveGridEvent(GridEvent gridEvent) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(gridEvent.getId())) { gridEvent.setId(utilsClient.getNewTimeId()); gridEvent.setCreateTime(nowDate); } gridEvent.setUpdateTime(nowDate); this.saveOrUpdate(gridEvent); } catch (Exception e) { log.error("[GridEventService.saveGridEvent]调用失败,异常信息:" + e, e); throw new ServiceException("GridEventService.saveGridEvent", e); } } public GridEvent getEventByCaseId(String caseId) { return mapper.getEventByCaseId(caseId); } /** * 同步矛纠工单的办理反馈信息 * * @param saveEventFeedBackVo * @return */ public R saveEventFeedback(SaveEventFeedBackVo saveEventFeedBackVo) { HashMap headVo= initHeadVo(); try{ // 传递过来的是子平台的id,需要转换为大平台的id String appOrgId = saveEventFeedBackVo.getAppOrgId(); String appGridUnitId = null; if (StringUtils.isNotBlank(appOrgId)) { appGridUnitId = gridCaseTaskService.getGridUnitIdByUnitId(saveEventFeedBackVo.getAppOrgId()); saveEventFeedBackVo.setAppOrgId(appGridUnitId); if (StringUtils.isBlank(appGridUnitId)) { throw new Exception("矛纠工单的办理反馈信息的组织不存在"); } } // else { // saveEventFeedBackVo.setAppOrgId(gridEvent.getSysOrgId()); // saveEventFeedBackVo.setAppOrgName(gridEvent.getSysOrgName()); // } log.info("当前环节组织:" + saveEventFeedBackVo.getAppOrgId()); if (StringUtils.isNotBlank(saveEventFeedBackVo.getAppUserId())) { CtUserDTO ctUserDTO = custClient.clientGetUserAll(saveEventFeedBackVo.getAppUserId()); if (ObjectUtils.isNotEmpty(ctUserDTO)) { if (StringUtils.isNotBlank(ctUserDTO.getIdcard())) { GridUserIdNumberVo gridUserIdNumberVo = new GridUserIdNumberVo(); gridUserIdNumberVo.setIdNumber(ctUserDTO.getIdcard()); R result = gridUserService.getUserByIdNumber(gridUserIdNumberVo); if (R.SUCCESS == result.getCode()) { saveEventFeedBackVo.setAppUserId(result.getData().getId()); log.info("当前环节审批用户为: " + saveEventFeedBackVo.getAppUserId()); } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,身份证找不到用户{},{}", ctUserDTO.getIdcard(), ctUserDTO.getTrueName()); } } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}", saveEventFeedBackVo.getAppUserId()); } } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}", saveEventFeedBackVo.getAppUserId()); } } else { saveEventFeedBackVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("矛纠工单的办理反馈信息的用户为特殊用户"); } // 判断附件不为空 List fileInfoList = saveEventFeedBackVo.getFileInfoList(); if (!CollectionUtils.isEmpty(fileInfoList)){ List feedbackAttrInfos = new ArrayList<>(); log.info("获取到矛纠工单的办理反馈信息的附件上传:" + fileInfoList.size()); for (FileInfoBaseDTO fileInfoBaseDTO : fileInfoList) { try { GridFileUploadVo gridFileUploadVo = new GridFileUploadVo(); // 通过id获取文件信息 FileInfo fileInfo = fileInfoService.getById(fileInfoBaseDTO.getId()); gridFileUploadVo.setFileName(fileInfo.getFileName()); gridFileUploadVo.setFilePath(fileInfo.getFullPath()); gridFileUploadVo.setFileSize(fileInfo.getSize() != null ? fileInfo.getSize().longValue() : 0L); gridFileUploadVo.setType(fileInfo.getSuffix()); R result = null; //上传附件信息 result = gridCaseDataService.uploadFileInfo(gridFileUploadVo); if (R.SUCCESS == result.getCode()) { //获取上传结果,组成新的附件对象 GridFileUploadDTO gridFileUploadDTO = result.getData(); GridFileRelatedVo gridFileRelatedVo = new GridFileRelatedVo(); gridFileRelatedVo.setFileName(gridFileUploadDTO.getFileName()); gridFileRelatedVo.setFilePath(gridFileUploadDTO.getFilePath()); gridFileRelatedVo.setOriginalFileName(gridFileUploadDTO.getOriginalFileName()); gridFileRelatedVo.setFileSize(gridFileUploadDTO.getFileSize()); gridFileRelatedVo.setType("add"); gridFileRelatedVo.setFileType(gridFileUploadDTO.getFileType()); feedbackAttrInfos.add(gridFileRelatedVo); } } catch (Exception e) { e.printStackTrace(); log.info("附件上传失败:" + fileInfoBaseDTO.getId()); } } // 上传完成后设置原附件列表为空 saveEventFeedBackVo.setFileInfoList(null); } // 发起请求 log.info("办理反馈信息-xsd:{}", JSON.toJSONString(saveEventFeedBackVo)); log.info("办理反馈信息-xsd:{}", gridUrl + "/standard/eventform/saveFeedback"); String s = null; try { s = HttpClientUtils.httpPostRaw(gridUrl + "/standard/eventform/saveFeedback", JSON.toJSONString(saveEventFeedBackVo), headVo, "utf-8"); } catch (Exception e) { log.info("xsderror:{}", e); throw new RuntimeException(e); } log.info("xsd:{}", s); // JSONObject object = JSONObject.parseObject(s); if (object.getInteger("code") != null && object.getInteger("code") == 0) { log.info("同步矛纠工单的办理反馈信息成功!"); Object data = object.get("data"); return R.ok(data); } else { log.info("同步矛纠工单的办理反馈信息失败,错误原因:" + object.getString("message")); return R.fail("同步矛纠工单的办理反馈信息失败"); } }catch (Exception e){ log.error("同步矛纠工单的办理反馈信息报错",e); } return R.fail("同步矛纠工单的办理反馈信息失败"); } }