package cn.huge.module.grid.service; 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.utils.FileUtils; import cn.huge.module.file.utils.FtpUtils; import cn.huge.module.grid.domain.dto.GridCaseInfoDTO; import cn.huge.module.grid.domain.dto.GridFileUploadDTO; import cn.huge.module.grid.domain.dto.GridSysRoleDTO; import cn.huge.module.grid.domain.po.GridEvent; import cn.huge.module.grid.domain.po.GridEventRequest; import cn.huge.module.grid.domain.vo.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.annotation.AccessType; import org.springframework.stereotype.Service; import java.io.IOException; import java.io.InputStream; import java.util.*; @Slf4j @Service public class GridCaseDataService { @Value("${grid.url:http://219.137.166.84:8061}") private String gridUrl; @Value("${grid.username:mtxt0011}") private String userName; @Value("${grid.password:aek8CdcaM}") private String passWord; private String testUrl = "http://183.2.142.21:9007"; @Autowired private GridUserService gridUserService; @Autowired private GridEventService gridEventService; @Autowired private CustClientImpl custClient; @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; } public R> getCaseDataList(boolean isRepeat, GridCaseDataVo gridCaseDataVo) { HashMap headVo = initHeadVo(); log.info("xsd:{}", JSON.toJSONString(gridCaseDataVo)); log.info("xsd:{}", gridUrl + "/standard/eventform/queryOrgTodoEventList"); String s = null; try { if (SpringContextUtil.checkDev()) { log.info("xsdurl:{}", testUrl + "/api/thrid/grid/casedata/get-case-list" + JSON.toJSONString(gridCaseDataVo)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/casedata/get-case-list", JSON.toJSONString(gridCaseDataVo), headVo, "utf-8"); } else { s = HttpClientUtils.httpPostRaw(gridUrl + "/standard/eventform/queryOrgTodoEventList", JSON.toJSONString(gridCaseDataVo),headVo, "utf-8"); } } catch (Exception e) { log.info("xsderror:{}", e); throw new RuntimeException(e); } log.info("xsd:{}", s); JSONObject object = JSONObject.parseObject(s); List gridCaseInfoDTOS = new ArrayList<>(); if (object.getInteger("code") != null && object.getInteger("code") == 0) { JSONObject data1 = object.getJSONObject("data"); if(data1!=null){ int total = data1.getIntValue("total"); if (total > gridCaseDataVo.getPageSize() && isRepeat) { JSONArray data = data1.getJSONArray("records"); gridCaseInfoDTOS = data.toJavaList(GridCaseInfoDTO.class); gridCaseDataVo.setPage(2); gridCaseDataVo.setPageSize(total - gridCaseDataVo.getPageSize()); R> caseDataList = getCaseDataList(false, gridCaseDataVo); if (caseDataList != null) { gridCaseInfoDTOS.addAll(caseDataList.getData()); } } else { JSONArray data = data1.getJSONArray("records"); gridCaseInfoDTOS = data.toJavaList(GridCaseInfoDTO.class); } } return R.ok(gridCaseInfoDTOS); } else { return R.fail("获取非警务数据信息失败"); } } public R uploadCaseNodeInfo(GridApprovalRecordVo gridApprovalRecord) { HashMap headVo = initHeadVo(); log.info("xsd:{}", JSON.toJSONString(gridApprovalRecord)); log.info("xsd:{}", gridUrl + "/standard/eventform/doApproveWithoutFlow"); String s = null; try { if (SpringContextUtil.checkDev()) { //记录请求参数 log.info("xsdurl:{}", testUrl + "/api/thrid/grid/casedata/upload-node-info" + JSON.toJSONString(gridApprovalRecord)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/casedata/upload-node-info", JSON.toJSONString(gridApprovalRecord), headVo, "utf-8"); } else { //记录请求参数 s = HttpClientUtils.httpPostRaw(gridUrl + "/standard/eventform/doApproveWithoutFlow", JSON.toJSONString(gridApprovalRecord), 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) { return R.ok("上传节点信息成功"); } else { return R.fail("上传节点信息失败,失败原因:", s); } } public R uploadFileInfo(GridFileUploadVo gridFileUploadVo) throws IOException { HashMap headVo = initHeadVo(); FtpUtils ftpUtil = new FtpUtils(); InputStream inputStream = ftpUtil.retrieveFileStream(gridFileUploadVo.getFilePath()); GridFileUploadRequestVo.FileUpload fileUpload = new GridFileUploadRequestVo.FileUpload(); fileUpload.setFileData(FileUtils.convertToBase64(inputStream)); fileUpload.setFileSize(gridFileUploadVo.getFileSize()); fileUpload.setFileName(gridFileUploadVo.getFileName()); fileUpload.setOriginalFileName(gridFileUploadVo.getFileName()); fileUpload.setType(gridFileUploadVo.getType()); log.info("xsd:{}", JSON.toJSONString(fileUpload)); log.info("xsd上传文件:{}", gridUrl + "/standard/attachment/upload"); String s = null; try { if (SpringContextUtil.checkDev()) { log.info("xsdurl:{}", testUrl + "/api/thrid/grid/casedata/upload-file" + JSON.toJSONString(gridFileUploadVo)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/casedata/upload-file", JSON.toJSONString(gridFileUploadVo), headVo, "utf-8"); } else { s = HttpClientUtils.httpPostRaw(gridUrl + "/standard/attachment/uploadBase64", JSON.toJSONString(fileUpload), headVo, "utf-8"); } log.info("xsd:{}", s); JSONObject object = JSONObject.parseObject(s); if (object.getInteger("code") != null && object.getInteger("code") == 0) { GridFileUploadDTO data = object.getObject("data", GridFileUploadDTO.class); return R.ok(data); } else { return R.fail(s); } } catch (Exception e) { log.info("xsderror:{}", e); throw new RuntimeException(e); } finally { IOUtils.closeQuietly(inputStream); } } public R getCaseDetail(GridCaseDataDetailVo gridCaseDataVo) { HashMap headVo = initHeadVo(); log.info("xsd:{}", JSON.toJSONString(gridCaseDataVo)); log.info("xsd:{}", gridUrl + "/event/queryEventDetail"); String s = null; try { if (SpringContextUtil.checkDev()) { log.info("xsdurl:{}", testUrl + "/api/thrid/grid/casedata/get-case-list" + JSON.toJSONString(gridCaseDataVo)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/casedata/get-case-list", JSON.toJSONString(gridCaseDataVo), headVo, "utf-8"); } else { s = HttpClientUtils.httpPostRaw(gridUrl + "/event/queryEventDetail", JSON.toJSONString(gridCaseDataVo), 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) { JSONObject data1 = object.getJSONObject("data"); return R.ok(data1); } else { return R.fail("获取非警务数据信息失败"); } } public R cancelCase(GridCaseIdVo gridCaseIdVo) { if(StringUtils.isNotBlank(gridCaseIdVo.getUserId())){ CtUserDTO ctUserDTO = custClient.clientGetUserAll(gridCaseIdVo.getUserId()); 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()){ gridCaseIdVo.setUserId(result.getData().getId()); log.info("当前环节审批用户为: "+ gridCaseIdVo.getUserId()); }else{ gridCaseIdVo.setUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,身份证找不到用户{},{}",ctUserDTO.getIdcard(),ctUserDTO.getTrueName()); } }else { gridCaseIdVo.setUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}",gridCaseIdVo.getUserId()); } }else{ gridCaseIdVo.setUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户,找不到用户{}",gridCaseIdVo.getUserId()); } }else{ gridCaseIdVo.setUserId("a9406a88c8234cda82452799bf6bd6cd"); log.info("当前环节审批用户为特殊用户"); } List ids = gridCaseIdVo.getIds(); List realIds = new ArrayList<>(); for(String id:ids){ GridEvent eventByCaseId = gridEventService.getEventByCaseId(id); if(eventByCaseId!=null){ realIds.add(eventByCaseId.getId()); } } gridCaseIdVo.setIds(realIds); HashMap headVo = initHeadVo(); log.info("xsd:{}", JSON.toJSONString(gridCaseIdVo)); log.info("xsd:{}", gridUrl + "/event/cancelEvent"); String s = null; try { if (SpringContextUtil.checkDev()) { //记录请求参数 log.info("xsdurl:{}", testUrl + "/api/thrid/grid/casedata/cancel-case" + JSON.toJSONString(gridCaseIdVo)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/casedata/cancel-case", JSON.toJSONString(gridCaseIdVo), headVo, "utf-8"); } else { //记录请求参数 s = HttpClientUtils.httpPostRaw(gridUrl + "/event/cancelEvent", JSON.toJSONString(gridCaseIdVo), 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) { return R.ok("拒收成功"); } else { return R.fail("拒收失败,失败原因:", s); } } }