package cn.huge.module.grid.controller.web; import cn.huge.base.common.bo.R; import cn.huge.base.common.utils.*; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.file.service.FileInfoService; import cn.huge.module.file.utils.FtpUtils; import cn.huge.module.grid.domain.dto.GridFileUploadDTO; import cn.huge.module.grid.domain.po.GridEvent; import cn.huge.module.grid.domain.po.GridEventRequest; import cn.huge.module.grid.domain.vo.*; import cn.huge.module.grid.service.*; import cn.huge.module.sys.constant.GridEnum; import cn.huge.module.sys.dto.FileInfoBaseDTO; import cn.huge.module.sys.vo.GridOrgUsersVo; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @title: dyh_th_grid_event接口api-web端 * @description: dyh_th_grid_event接口api-web端 * @company: hugeinfo * @author: wangwh * @time: 2025-02-21 17:42:19 * @version: 1.0.0 */ @Slf4j @RestController @RequestMapping("/api/web/gridEvent") public class GridEventWebController { @Autowired(required = false) private HttpServletRequest request; @Autowired private GridEventService service; @Autowired private FileInfoService fileInfoService; @Autowired private GridCaseDataService gridCaseDataService; @Autowired private GridCaseTaskService gridCaseTaskService; @Autowired private GridEventRequestService gridEventRequestService; @Autowired private GridUserService gridUserService; @Autowired private CustClientImpl custClient; /** * 获取请求URL参数 * * @return Map */ private Map getParameter() { Map terms = Maps.newHashMap(); // id String id = request.getParameter("id"); if (StringUtils.isNotBlank(id)) { terms.put("id", id); } // event_code String eventCode = request.getParameter("eventCode"); if (StringUtils.isNotBlank(eventCode)) { terms.put("eventCode", eventCode); } // title String title = request.getParameter("title"); if (StringUtils.isNotBlank(title)) { terms.put("title", title); } // entry_item_name String entryItemName = request.getParameter("entryItemName"); if (StringUtils.isNotBlank(entryItemName)) { terms.put("entryItemName", entryItemName); } // event_time String eventTime = request.getParameter("eventTime"); if (StringUtils.isNotBlank(eventTime)) { terms.put("eventTime", eventTime); } // sys_org_id String sysOrgId = request.getParameter("sysOrgId"); if (StringUtils.isNotBlank(sysOrgId)) { terms.put("sysOrgId", sysOrgId); } // sys_org_name String sysOrgName = request.getParameter("sysOrgName"); if (StringUtils.isNotBlank(sysOrgName)) { terms.put("sysOrgName", sysOrgName); } // eventX String eventx = request.getParameter("eventx"); if (StringUtils.isNotBlank(eventx)) { terms.put("eventx", eventx); } // eventY String eventy = request.getParameter("eventy"); if (StringUtils.isNotBlank(eventy)) { terms.put("eventy", eventy); } // address String address = request.getParameter("address"); if (StringUtils.isNotBlank(address)) { terms.put("address", address); } // handle_time String handleTime = request.getParameter("handleTime"); if (StringUtils.isNotBlank(handleTime)) { terms.put("handleTime", handleTime); } // delay_count String delayCount = request.getParameter("delayCount"); if (StringUtils.isNotBlank(delayCount)) { terms.put("delayCount", delayCount); } // now_work_date String nowWorkDate = request.getParameter("nowWorkDate"); if (StringUtils.isNotBlank(nowWorkDate)) { terms.put("nowWorkDate", nowWorkDate); } // yj_flag String yjFlag = request.getParameter("yjFlag"); if (StringUtils.isNotBlank(yjFlag)) { terms.put("yjFlag", yjFlag); } // processing_time String processingTime = request.getParameter("processingTime"); if (StringUtils.isNotBlank(processingTime)) { terms.put("processingTime", processingTime); } // info_source String infoSource = request.getParameter("infoSource"); if (StringUtils.isNotBlank(infoSource)) { terms.put("infoSource", infoSource); } // cur_node_custom_tag String curNodeCustomTag = request.getParameter("curNodeCustomTag"); if (StringUtils.isNotBlank(curNodeCustomTag)) { terms.put("curNodeCustomTag", curNodeCustomTag); } // event_area String eventArea = request.getParameter("eventArea"); if (StringUtils.isNotBlank(eventArea)) { terms.put("eventArea", eventArea); } // select_handle_org_name String selectHandleOrgName = request.getParameter("selectHandleOrgName"); if (StringUtils.isNotBlank(selectHandleOrgName)) { terms.put("selectHandleOrgName", selectHandleOrgName); } // status String status = request.getParameter("status"); if (StringUtils.isNotBlank(status)) { terms.put("status", status); } // grid_code String gridCode = request.getParameter("gridCode"); if (StringUtils.isNotBlank(gridCode)) { terms.put("gridCode", gridCode); } // entry_item_code String entryItemCode = request.getParameter("entryItemCode"); if (StringUtils.isNotBlank(entryItemCode)) { terms.put("entryItemCode", entryItemCode); } // case_id String caseId = request.getParameter("caseId"); if (StringUtils.isNotBlank(caseId)) { terms.put("caseId", caseId); } // 创建时间区间 String createStart = request.getParameter("createStart"); String createEnd = request.getParameter("createEnd"); if (StringUtils.isNotBlank(createStart) && StringUtils.isNotBlank(createEnd)) { terms.put("createStart", createStart); terms.put("createEnd", createEnd); } // 更新时间区间 String updateStart = request.getParameter("updateStart"); String updateEnd = request.getParameter("updateEnd"); if (StringUtils.isNotBlank(updateStart) && StringUtils.isNotBlank(updateEnd)) { terms.put("updateStart", updateStart); terms.put("updateEnd", updateEnd); } return terms; } /** * 条件查询多个 * * @return Object * @url {ctx}/api/web/gridEvent/listQuery */ @GetMapping("/listQuery") public Object listQuery() { try { Map terms = getParameter(); return ReturnSucUtils.getRepInfo(service.listTerms(terms)); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 条件分页查询 * * @param page 页码 * @param size 每页数量 * @return Object * @url {ctx}/api/web/gridEvent/pageQuery */ @GetMapping("/pageQuery") public Object pageQuery(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) { try { Map terms = getParameter(); Sort sort = Sort.by(Sort.Direction.DESC, "create_time"); PageRequest pageRequest = PageRequest.of(page - 1, size, sort); Page gridEventPage = service.pageQuery(pageRequest, terms); return ReturnSucUtils.getRepInfo("处理成功", gridEventPage); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据编号查询单个 * * @param id 主键编号 * @return Object * @url {ctx}/api/web/gridEvent/getById */ @GetMapping("/getById") public Object getById(@RequestParam(value = "id") String id) { try { return ReturnSucUtils.getRepInfo(service.getById(id)); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据主键单个 * * @param id 主键编号 * @return Object * @url {ctx}/api/web/gridEvent/deleteById */ @GetMapping("/deleteById") public Object deleteById(@RequestParam(value = "id") String id) { try { service.removeById(id); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 新增或更新对象 * * @param gridEvent 实体对象 * @return Object * @url {ctx}/api/web/gridEvent/saveGridEvent */ @PostMapping("/saveGridEvent") public Object saveGridEvent(@RequestBody GridEvent gridEvent) { try { service.saveGridEvent(gridEvent); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据编号查询单个 * * @param caseId 案件编号 * @return Object * @url {ctx}/api/web/gridEvent/getGridEventId */ @GetMapping("/getGridEventId") public Object getGridEventId(@RequestParam(value = "caseId") String caseId) { try { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("case_id", caseId); GridEvent gridEvent = service.getOne(queryWrapper); if (ObjectUtils.isNotEmpty(gridEvent)) { return ReturnSucUtils.getRepInfo(gridEvent); } return ReturnFailUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据编号查询单个 * * @param gridApprovalRecordVo * @return Object * @url {ctx}/api/web/gridEvent/updateCaseEvent */ @PostMapping("/updateCaseEvent") public Object updateCaseEvent(@RequestBody GridApprovalRecordVo gridApprovalRecordVo) { GridEventRequest gridEventRequest = new GridEventRequest(); gridEventRequest.setEventStatus(gridApprovalRecordVo.getHandleName()); //添加请求记录 gridEventRequest.setId(IdUtils.getNewTimeId()); gridEventRequest.setEventId(gridApprovalRecordVo.getEventId()); gridEventRequest.setCaseId(gridApprovalRecordVo.getCaseId()); gridEventRequest.setCreateTime(DateUtils.getNowDate()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("case_id", gridApprovalRecordVo.getCaseId()); GridEvent gridEvent = service.getOne(queryWrapper); try { //查询网格组织编号 String appGridUnitId = null; if (StringUtils.isNotBlank(gridApprovalRecordVo.getAppOrgId())) { appGridUnitId = gridCaseTaskService.getGridUnitIdByUnitId(gridApprovalRecordVo.getAppOrgId()); gridApprovalRecordVo.setAppOrgId(appGridUnitId); if (StringUtils.isBlank(appGridUnitId)) { throw new Exception("当前环节处理网格组织不存在"); } } else { gridApprovalRecordVo.setAppOrgId(gridEvent.getSysOrgId()); gridApprovalRecordVo.setAppOrgName(gridEvent.getSysOrgName()); } log.info("当前环节组织:" + gridApprovalRecordVo.getAppOrgId()); if (StringUtils.isNotBlank(gridApprovalRecordVo.getAppUserId())) { CtUserDTO ctUserDTO = custClient.clientGetUserAll(gridApprovalRecordVo.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()) { gridApprovalRecordVo.setAppUserId(result.getData().getId()); log.info("当前环节审批用户为: " + gridApprovalRecordVo.getAppUserId()); } else { gridApprovalRecordVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,身份证找不到用户{},{}", ctUserDTO.getIdcard(), ctUserDTO.getTrueName()); } } else { gridApprovalRecordVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}", gridApprovalRecordVo.getAppUserId()); } } else { gridApprovalRecordVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}", gridApprovalRecordVo.getAppUserId()); } } else { gridApprovalRecordVo.setAppUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户"); } String nextGridUnitId = null; if (StringUtils.isNotBlank(gridApprovalRecordVo.getNextOrgId())) { nextGridUnitId = gridCaseTaskService.getGridUnitIdByUnitId(gridApprovalRecordVo.getNextOrgId()); gridApprovalRecordVo.setNextOrgId(nextGridUnitId); if (StringUtils.isBlank(nextGridUnitId)) { throw new Exception("下一环节处理网格组织不存在:" + gridApprovalRecordVo.getNextOrgId() + "-" + gridApprovalRecordVo.getNextOrgName()); } log.info("下一环节组织:" + gridApprovalRecordVo.getNextOrgId()); } //添加附件查询条件 List ownerIdList = gridApprovalRecordVo.getOwnerIdList(); log.info("开始获取附件:{}", gridApprovalRecordVo.getOwnerIdList()); log.info("开始获取附件:{}", gridApprovalRecordVo.getCaseId()); Map terms = new HashMap<>(); if (ownerIdList != null && ownerIdList.size() != 0) { terms.put("ownerIdList", ownerIdList); if (ObjectUtils.isNotEmpty(gridApprovalRecordVo) && StringUtils.isNotBlank(gridApprovalRecordVo.getCaseId())) { terms.put("mainId", gridApprovalRecordVo.getCaseId()); } List fileInfoBaseDTOList = fileInfoService.listFileInfoByTerms(terms); Map terms2 = new HashMap<>(); if (ObjectUtils.isNotEmpty(gridApprovalRecordVo) && StringUtils.isNotBlank(gridApprovalRecordVo.getCaseId())) { terms2.put("mainId", gridApprovalRecordVo.getCaseId()); terms2.put("ownerCat", "22_00014-5"); } List windUpList = fileInfoService.listFileInfoByTerms(terms2); List windupRelateVoList = new ArrayList<>(); log.info("获取到附件上传:" + fileInfoBaseDTOList.size()); if (windUpList != null && windUpList.size() > 0) { log.info("获取到结案附件上传:" + windUpList.size()); for (FileInfoBaseDTO fileInfoBaseDTO : windUpList) { try { GridFileUploadVo gridFileUploadVo = new GridFileUploadVo(); gridFileUploadVo.setFileName(fileInfoBaseDTO.getFileName()); gridFileUploadVo.setFilePath(fileInfoBaseDTO.getFullPath()); gridFileUploadVo.setFileSize(fileInfoBaseDTO.getSize() != null ? fileInfoBaseDTO.getSize().longValue() : 0L); gridFileUploadVo.setType(fileInfoBaseDTO.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()); windupRelateVoList.add(gridFileRelatedVo); } } catch (Exception e) { e.printStackTrace(); log.info("附件上传失败:" + fileInfoBaseDTO.getId()); } } } List gridFileRelatedVoList = new ArrayList<>(); for (FileInfoBaseDTO fileInfoBaseDTO : fileInfoBaseDTOList) { try { GridFileUploadVo gridFileUploadVo = new GridFileUploadVo(); gridFileUploadVo.setFileName(fileInfoBaseDTO.getFileName()); gridFileUploadVo.setFilePath(fileInfoBaseDTO.getFullPath()); gridFileUploadVo.setFileSize(fileInfoBaseDTO.getSize() != null ? fileInfoBaseDTO.getSize().longValue() : 0L); gridFileUploadVo.setType(fileInfoBaseDTO.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()); gridFileRelatedVoList.add(gridFileRelatedVo); } } catch (Exception e) { e.printStackTrace(); log.info("附件上传失败:" + fileInfoBaseDTO.getId()); } } log.info("xsdgridApprovalRecordVo{}",gridApprovalRecordVo); if (gridApprovalRecordVo.getHandleName().equals(GridEnum.EVENT_FLOW_3.getIndex())) { //插入到更新事件对象中 log.info("gridFileRelatedVoList{}",gridFileRelatedVoList); log.info("windupRelateVoList{}",windupRelateVoList); gridApprovalRecordVo.setAfterAttachmentInfoList(gridFileRelatedVoList); gridApprovalRecordVo.setEndAttachmentInfoList(windupRelateVoList); } else { //插入到更新事件对象中 gridApprovalRecordVo.setAttachmentInfoList(gridFileRelatedVoList); } } if (SpringContextUtil.checkDev()) { gridEventRequest.setReqInfo("http://183.2.142.21:9007" + "/api/thrid/grid/casedata/upload-node-info" + JSON.toJSONString(gridApprovalRecordVo)); } else { gridEventRequest.setReqInfo("http://219.137.166.84:8061" + "/event/saveApproveContent" + JSON.toJSONString(gridApprovalRecordVo)); } R result = gridCaseDataService.uploadCaseNodeInfo(gridApprovalRecordVo); if (result.getCode() == 0) { //记录请求成功信息 gridEventRequest.setReqStatus(0); gridEventRequestService.save(gridEventRequest); } else { //记录请求失败信息 gridEventRequest.setReqStatus(1); gridEventRequest.setErrorInfo(result.getMsg()); gridEventRequestService.save(gridEventRequest); } } catch (Exception e) { //记录请求失败信息 gridEventRequest.setReqStatus(1); gridEventRequest.setErrorInfo(e.getMessage()); gridEventRequestService.save(gridEventRequest); log.error("更新事件信息失败", e); return ReturnFailUtils.getRepInfo(); } return ReturnSucUtils.getRepInfo(); } }