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; } /** * 条件查询多个 * @url {ctx}/api/web/gridEvent/listQuery * @return Object */ @GetMapping("/listQuery") public Object listQuery() { try { Map terms = getParameter(); return ReturnSucUtils.getRepInfo(service.listTerms(terms)); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 条件分页查询 * @url {ctx}/api/web/gridEvent/pageQuery * @param page 页码 * @param size 每页数量 * @return Object */ @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(); } } /** * 根据编号查询单个 * @url {ctx}/api/web/gridEvent/getById * @param id 主键编号 * @return Object */ @GetMapping("/getById") public Object getById(@RequestParam(value = "id") String id) { try { return ReturnSucUtils.getRepInfo(service.getById(id)); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据主键单个 * @url {ctx}/api/web/gridEvent/deleteById * @param id 主键编号 * @return Object */ @GetMapping("/deleteById") public Object deleteById(@RequestParam(value = "id") String id) { try { service.removeById(id); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 新增或更新对象 * @url {ctx}/api/web/gridEvent/saveGridEvent * @param gridEvent 实体对象 * @return Object */ @PostMapping("/saveGridEvent") public Object saveGridEvent(@RequestBody GridEvent gridEvent) { try { service.saveGridEvent(gridEvent); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { return ReturnFailUtils.getRepInfo(); } } /** * 根据编号查询单个 * @url {ctx}/api/web/gridEvent/getGridEventId * @param caseId 案件编号 * @return Object */ @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(); } } /** * 根据编号查询单个 * @url {ctx}/api/web/gridEvent/updateCaseEvent * @param gridApprovalRecordVo * @return Object */ @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()); } //添加附件查询条件 ListownerIdList = gridApprovalRecordVo.getOwnerIdList(); Mapterms = 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); log.info("获取到附件上传:"+fileInfoBaseDTOList.size()); 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()); } } if(gridApprovalRecordVo.getHandleName().equals(GridEnum.EVENT_FLOW_3.getIndex())){ //插入到更新事件对象中 gridApprovalRecordVo.setAfterAttachmentInfoList(gridFileRelatedVoList); }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(); } }