package cn.huge.module.grid.service; import cn.huge.base.common.bo.R; import cn.huge.base.common.utils.*; import cn.huge.module.grid.dao.mapper.GridCaseTaskMapper; import cn.huge.module.grid.domain.po.GridCaseTask; import cn.huge.module.grid.domain.vo.HeadVo; import cn.huge.module.sys.vo.*; import cn.huge.module.grid.domain.vo.*; import com.alibaba.druid.support.logging.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.collections.CollectionUtils; 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.*; import java.util.stream.Collectors; @Slf4j @Service public class GridToDoService { @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; private String testUrl = "http://183.2.142.21:9007"; @Autowired private GridCaseTaskService gridCaseTaskService; @Autowired private GridUserService gridUserService; @Autowired private GridCaseTaskMapper gridCaseTaskMapper; public R createToDo(GridToDoVo gridToDoVo) { HashMap headVo = initHeadVo(); log.info("xsd:{}", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty)); log.info("xsd:{}", gridUrl + "/sysUserTodo/save"); String s = null; try { s = HttpClientUtils.httpPostRaw(gridUrl + "/sysUserTodo/save", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty), headVo, "utf-8"); } catch (Exception e) { log.info("xsderror:{}", e); throw new RuntimeException(e); } log.info("xsd:{}", s); GridToDoVo gridToDoDto = JSONObject.parseObject(s).getObject("data", GridToDoVo.class); if (ObjectUtils.isNotEmpty(gridToDoDto)) { GridCaseTask gridCaseTask = new GridCaseTask(); BeanUtils.copyProperties(gridToDoDto, gridCaseTask); gridCaseTaskService.save(gridCaseTask); } return R.ok(gridToDoDto); } public R> batchCreateToDo(GridToDoBacthVo gridToDoVo) { HashMap headVo = initHeadVo(); String s = null; try { if (SpringContextUtil.checkDev()) { log.info("xsd:{}", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty)); log.info("xsd:{}", testUrl + "/api/thrid/grid/todo/batch-create-todo" + JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/todo/batch-create-todo", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty), headVo, "utf-8"); } else { log.info("xsd:{}", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty)); log.info("xsd:{}", gridUrl + "/sysUserTodo/saveBatch" + JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty)); s = HttpClientUtils.httpPostRaw(gridUrl + "/sysUserTodo/saveBatch", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty), 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) { JSONArray data = object.getJSONArray("data"); List gridToDoVos = data.toJavaList(GridToDoVo.class); return R.ok(gridToDoVos); } else { return R.fail("获取失败"); } } public R updateToDo(GridToDoVo gridToDoVo) { HashMap headVo = initHeadVo(); String s = null; log.info("xsd:{}", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty)); log.info("xsd:{}", gridUrl + "/sysUserTodo/update"); try { s = HttpClientUtils.httpPostRaw(gridUrl + "/sysUserTodo/update", JSON.toJSONString(gridToDoVo, SerializerFeature.WriteNullStringAsEmpty),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) { gridToDoVo = object.getObject("data", GridToDoVo.class); return R.ok(gridToDoVo, "创建待办成功"); } else { return R.fail("创建待办失败"); } } public R> batchUpdateToDo(List gridToDoVos) { HashMap headVo = initHeadVo(); String s = null; log.info("xsd:{}", JSON.toJSONString(gridToDoVos, SerializerFeature.WriteNullStringAsEmpty)); log.info("xsd:{}", gridUrl + "/sysUserTodo/updateBatch"); try { if (SpringContextUtil.checkDev()) { log.info("xsdurl:{}", testUrl + "/api/thrid/grid/todo/batch-update-todo"); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/todo/batch-update-todo", JSON.toJSONString(gridToDoVos, SerializerFeature.WriteNullStringAsEmpty),headVo, "utf-8"); } else { s = HttpClientUtils.httpPostRaw(gridUrl + "/sysUserTodo/updateBatch", JSON.toJSONString(gridToDoVos, SerializerFeature.WriteNullStringAsEmpty),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) { JSONArray data = object.getJSONArray("data"); List list = data.toJavaList(GridToDoVo.class); return R.ok(list); } else { return R.fail("获取失败"); } } public R deleteToDo(GridIdsVo gridIdsVo) { HashMap headVo = initHeadVo(); String s = null; try { if (SpringContextUtil.checkDev()) { log.info("xsd:{}", gridIdsVo); log.info("xsd:{}", testUrl + "/api/thrid/grid/todo/delete-todo" + JSON.toJSONString(gridIdsVo, SerializerFeature.WriteNullStringAsEmpty)); s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/todo/delete-todo", JSON.toJSONString(gridIdsVo, SerializerFeature.WriteNullStringAsEmpty),headVo, "utf-8"); } else { log.info("xsd:{}", gridUrl + "/sysUserTodo/batchDel" + JSON.toJSONString(gridIdsVo, SerializerFeature.WriteNullStringAsEmpty)); s = HttpClientUtils.httpPostRaw(gridUrl + "/sysUserTodo/batchDel", JSON.toJSONString(gridIdsVo, SerializerFeature.WriteNullStringAsEmpty),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(object.getString("data"), "删除失败"); } } 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> getToDo(GridGetToDoVo gridGetToDoVo) { HashMap headVo = initHeadVo(); gridGetToDoVo.setCurrent(1); gridGetToDoVo.setSize(10); log.info("xsd:{}", testUrl + "/api/thrid/grid/todo/get-todo" + JSON.toJSONString(gridGetToDoVo, SerializerFeature.WriteNullStringAsEmpty)); String s = null; try { if (SpringContextUtil.checkDev()) { s = HttpClientUtils.httpPostRaw(testUrl + "/api/thrid/grid/todo/get-todo", JSON.toJSONString(gridGetToDoVo, SerializerFeature.WriteNullStringAsEmpty),headVo, "utf-8"); } else { s = HttpClientUtils.httpPostRaw(gridUrl + "/sysUserTodo/page", JSON.toJSONString(gridGetToDoVo, SerializerFeature.WriteNullStringAsEmpty),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) { JSONArray data = JSONObject.parseObject(s).getJSONArray("data"); List gridToDoVos = data.toJavaList(GridToDoVo.class); return R.ok(gridToDoVos); } else { return R.fail("获取失败"); } } public R> updateTaskToDo(GridToDoVo gridToDoVo, String previousTaskId) { //修改网格系统工单 List gridToDoVoList = new ArrayList<>(); List gridCaseTaskList = gridCaseTaskService.listGridCaseTask(gridToDoVo.getObjId(), previousTaskId); for (GridCaseTask gridCaseTask : gridCaseTaskList) { gridToDoVo.setId(gridCaseTask.getId()); gridToDoVo.setMobile(gridCaseTask.getMobile()); gridToDoVoList.add(gridToDoVo); } R> resultData = this.batchUpdateToDo(gridToDoVoList); //修改保存的待办工单 List GridToDoVoResult = resultData.getData(); List gridCaseTaskListNew = new ArrayList<>(); for (GridToDoVo gridToDoVoResult : GridToDoVoResult) { GridCaseTask gridCaseTask = new GridCaseTask(); BeanUtils.copyProperties(gridToDoVoResult, gridCaseTask); gridCaseTask.setCaseId(gridToDoVo.getObjId()); gridCaseTask.setCaseTaskId(gridToDoVo.getCaseTaskId()); gridCaseTaskListNew.add(gridCaseTask); } gridCaseTaskService.updateBatchById(gridCaseTaskListNew); return resultData; } public R> createTaskToDo(GridToDoBacthVo gridToDoBacthVo, String unitId) { Date now = DateUtils.getNowDate(); //查询网格组织编号 String gridUnitId = gridCaseTaskMapper.getGridUnitIdByUnitId(unitId); log.info("caseId:" + gridToDoBacthVo.getObjId() + "查询到网格组织编号为:" + gridUnitId); if(org.apache.commons.lang3.StringUtils.isNotBlank(gridUnitId)){ //查询组织下用户 GridOrgUsersVo gridOrgUsersVo = new GridOrgUsersVo(); gridOrgUsersVo.setCurrOrgId(gridUnitId); List gridUserVoList = gridUserService.getUserListByOrg(gridOrgUsersVo).getData(); log.info("caseId:" + gridToDoBacthVo.getObjId() + "查询到网格编号为:"+gridUnitId+ "下的用户有:"+ gridUserVoList.stream().map(GridUserVo:: getId).collect(Collectors.joining(","))); if(CollectionUtils.isNotEmpty(gridUserVoList)){ //创建待办工单 List userIdList = gridUserVoList.stream().map(GridUserVo::getId).collect(Collectors.toList()); gridToDoBacthVo.setUserIdList(userIdList); R> resultData = this.batchCreateToDo(gridToDoBacthVo); log.info("caseId:" + gridToDoBacthVo.getObjId() + "批量添加网格任务成功"); //保存待办工单 List GridToDoVoResult = resultData.getData(); if(CollectionUtils.isNotEmpty(GridToDoVoResult)) { List gridCaseTaskListNew = new ArrayList<>(); for (GridToDoVo gridToDoVoResult : GridToDoVoResult) { GridCaseTask gridCaseTask = new GridCaseTask(); BeanUtils.copyProperties(gridToDoVoResult, gridCaseTask); gridCaseTask.setCaseId(gridToDoBacthVo.getObjId()); gridCaseTask.setCaseTaskId(gridToDoBacthVo.getCaseTaskId()); gridCaseTask.setCreateTime(now); gridCaseTask.setUpdateTime(now); gridCaseTaskListNew.add(gridCaseTask); } BeanUtils.copyProperties(GridToDoVoResult, gridCaseTaskListNew); gridCaseTaskService.saveBatch(gridCaseTaskListNew); log.info("caseId:" + gridToDoBacthVo.getObjId() + "成功在本系统添加网格待办信息"); } return resultData; } } return R.ok(); } public R deleteTaskToDo(GridTaskVo gridTaskVo) { try { List gridCaseTaskList = gridCaseTaskService.listGridCaseTask(gridTaskVo.getCaseId(), gridTaskVo.getCaseTaskId()); List idList = gridCaseTaskList.stream().map(GridCaseTask::getId).collect(Collectors.toList()); String ids = gridCaseTaskList.stream().map(GridCaseTask::getId).collect(Collectors.joining(",")); log.info("caseId:" + gridTaskVo.getCaseId() + "查询到本系统保存的编号" + ids); GridIdsVo gridIdsVo = new GridIdsVo(); gridIdsVo.setIds(idList); R result = this.deleteToDo(gridIdsVo); log.info("caseId:" + gridTaskVo.getCaseId() + "成功删除网格系统的待办任务,编号为:" + ids); gridCaseTaskService.removeByIds(idList); log.info("caseId:" + gridTaskVo.getCaseId() + "成功删除本系统保存的网格任务,编号为:" + ids); return result; }catch (Exception e){ log.info("xsderror:{}", e); throw new RuntimeException(e); } } }