diff --git a/db/20240726新增.sql b/db/20240726新增.sql new file mode 100644 index 00000000..b9f7454d --- /dev/null +++ b/db/20240726新增.sql @@ -0,0 +1,23 @@ +DROP TABLE IF EXISTS `laws_unified_todo_log`; +CREATE TABLE `laws_unified_todo_log` ( + `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '推送地址', + `json_str` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '推送内容', + `response_body` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回值', + `state` int NULL DEFAULT NULL COMMENT '状态1成功,2失败', + `create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `message_type` int NULL DEFAULT NULL COMMENT '消息类型1:OA消息 2:飞书', + `type` int NULL DEFAULT NULL COMMENT '消息处理类型: 1待办,2已办,3结束,6删除,其他是待办已办', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '统一代办推送日志表' ROW_FORMAT = DYNAMIC; +SET FOREIGN_KEY_CHECKS = 1; + +INSERT INTO `sys_dict`(`id`, `dict_name`, `dict_en_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `type`, `is_tag_dict`, `is_read_only`, `attribute_type`, `order_num`) VALUES ('1816762153966465026', '任务类型', NULL, 'task_type', '', 0, 'admin', '2024-07-26 17:07:06', NULL, NULL, NULL, 0, 0, NULL, NULL); +INSERT INTO `sys_dict_item`(`id`, `dict_id`, `parent_id`, `item_text`, `en_name`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `stat_node`) VALUES ('1816762430140411905', '1816762153966465026', '0', '删除', NULL, '6', '', 6, 1, 'admin', '2024-07-26 17:08:12', NULL, NULL, 0, 0, NULL, '0', NULL); +INSERT INTO `sys_dict_item`(`id`, `dict_id`, `parent_id`, `item_text`, `en_name`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `stat_node`) VALUES ('1816762385068421122', '1816762153966465026', '0', '结束', NULL, '3', '', 3, 1, 'admin', '2024-07-26 17:08:01', NULL, NULL, 0, 0, NULL, '0', NULL); +INSERT INTO `sys_dict_item`(`id`, `dict_id`, `parent_id`, `item_text`, `en_name`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `stat_node`) VALUES ('1816762266797436930', '1816762153966465026', '0', '已办', NULL, '2', '', 2, 1, 'admin', '2024-07-26 17:07:33', NULL, NULL, 0, 0, NULL, '0', NULL); +INSERT INTO `sys_dict_item`(`id`, `dict_id`, `parent_id`, `item_text`, `en_name`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `stat_node`) VALUES ('1816762222031630337', '1816762153966465026', '0', '待办', NULL, '1', '', 1, 1, 'admin', '2024-07-26 17:07:22', NULL, NULL, 0, 0, NULL, '0', NULL); + diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/LawsUnifiedTodoLogController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/LawsUnifiedTodoLogController.java new file mode 100644 index 00000000..ededb5de --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/LawsUnifiedTodoLogController.java @@ -0,0 +1,164 @@ +package com.jero.modules.docking.hiwork.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog; +import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService; +import com.jero.modules.docking.hiwork.service.impl.LawsUnifiedTodoLogServiceImpl; +import com.jero.modules.system.vo.IdMapBody; +import com.jero.modules.system.vo.IdsMapBody; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; + +/** + * 统一代办推送日志表(laws_unified_todo_log)表控制层 + * + * @author xxxxx + */ +@Slf4j +@Api(tags = "统一代办推送日志表") +@RestController +@RequestMapping("/lawsUnifiedTodoLog") +public class LawsUnifiedTodoLogController extends JeroController { + /** + * 服务对象 + */ + @Resource + private LawsUnifiedTodoLogService lawsUnifiedTodoLogService; + + /** + * 分页列表查询 + */ + @ApiOperation(value = "统一代办推送日志表-分页列表查询", notes = "统一代办推送日志表-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(LawsUnifiedTodoLog lawsUnifiedTodoLog, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + return lawsUnifiedTodoLogService.getPage(lawsUnifiedTodoLog,pageNo,pageSize,req); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "统一代办推送日志表-列表查询", notes = "统一代办推送日志表-列表查询") + @GetMapping(value = "/list") + public Result> queryList(LawsUnifiedTodoLog lawsUnifiedTodoLog, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(lawsUnifiedTodoLog, req.getParameterMap()); + List list = lawsUnifiedTodoLogService.list(queryWrapper); + return Result.OK(list); + } + + /** + * 添加 + */ + @AutoLog(value = "统一代办推送日志表-添加") + @ApiOperation(value = "统一代办推送日志表-添加", notes = "统一代办推送日志表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody LawsUnifiedTodoLog lawsUnifiedTodoLog) { + lawsUnifiedTodoLogService.add(lawsUnifiedTodoLog); + return Result.OK(ResultCommon.OK); + } + + /** + * 编辑 + */ + @AutoLog(value = "统一代办推送日志表-编辑") + @ApiOperation(value = "统一代办推送日志表-编辑", notes = "统一代办推送日志表-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody LawsUnifiedTodoLog lawsUnifiedTodoLog) { + lawsUnifiedTodoLogService.editById(lawsUnifiedTodoLog); + return Result.OK(ResultCommon.EDIT_OK); + } + + /** + * 通过id删除 + */ + @AutoLog(value = "统一代办推送日志表-通过id删除") + @ApiOperation(value = "统一代办推送日志表-通过id删除", notes = "统一代办推送日志表-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody IdMapBody map) { + String id = map.getId(); + if (StringUtils.isBlank(id)) { + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + lawsUnifiedTodoLogService.deleteById(id); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED); + } + + /** + * 批量删除 + */ + @AutoLog(value = "统一代办推送日志表-批量删除") + @ApiOperation(value = "统一代办推送日志表-批量删除", notes = "统一代办推送日志表-批量删除") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestBody IdsMapBody map) { + String ids = map.getIds(); + if (StringUtils.isBlank(ids)) { + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + List idList = Arrays.asList(map.getIds().split(",")); + this.lawsUnifiedTodoLogService.deleteByIds(idList); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED_IN_BULK); + } + + /** + * 通过id查询 + */ + @AutoLog(value = "统一代办推送日志表-通过id查询") + @ApiOperation(value = "统一代办推送日志表-通过id查询", notes = "统一代办推送日志表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + LawsUnifiedTodoLog lawsUnifiedTodoLog = lawsUnifiedTodoLogService.queryById(id); + if (lawsUnifiedTodoLog == null) { + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); + } + return Result.OK(lawsUnifiedTodoLog); + } + + /** + * 导出excel + */ + @ApiOperation(value = "统一代办推送日志表-导出excel") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, LawsUnifiedTodoLog lawsUnifiedTodoLog) { + return super.exportXls(request, lawsUnifiedTodoLog, LawsUnifiedTodoLog.class, "统一代办推送日志表"); + } + + /** + * 通过excel导入数据 + */ + @ApiOperation(value = "统一代办推送日志表-通过excel导入数据") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, LawsUnifiedTodoLog.class); + } + + /** + * 发送 + */ + @AutoLog(value = "统一代办推送日志表-发送") + @ApiOperation(value = "统一代办推送日志表-发送", notes = "统一代办推送日志表-发送") + @PostMapping(value = "/send") + public Result send(@RequestBody LawsUnifiedTodoLog lawsUnifiedTodoLog) { + return lawsUnifiedTodoLogService.send(lawsUnifiedTodoLog); + } + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/LawsUnifiedTodoLog.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/LawsUnifiedTodoLog.java new file mode 100644 index 00000000..5541091b --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/LawsUnifiedTodoLog.java @@ -0,0 +1,96 @@ +package com.jero.modules.docking.hiwork.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + *统一代办推送日志表 + *@author liJiaRao + *@date 2024-07-12 14:02 + */ +@Data +@ApiModel(description="统一代办推送日志表") +@TableName(value = "laws_unified_todo_log") +public class LawsUnifiedTodoLog { + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value="") + private String id; + + /** + * 推送地址 + */ + @TableField(value = "url") + @ApiModelProperty(value="推送地址") + private String url; + + /** + * 推送内容 + */ + @TableField(value = "json_str") + @ApiModelProperty(value="推送内容") + private String jsonStr; + /** + * 返回内容 + */ + @TableField(value = "response_body") + @ApiModelProperty(value="返回内容") + private String responseBody; + + /** + * 状态1成功,2失败 + */ + @TableField(value = "`state`") + @ApiModelProperty(value="状态1成功,2失败") + @Dict(dicCode = "msgSendStatus") + private Integer state; + + /** + * 任务处理类型: 1待办,2已办,3结束,6删除,其他是待办已办 + */ + @ApiModelProperty(value="消息处理类型: 1待办,2已办,3结束,6删除,其他是待办已办") + @Dict(dicCode = "task_type") + private Integer type; + + /** + * 消息类型1:OA消息 + */ + @ApiModelProperty(value="消息类型1:OA消息") + private Integer messageType; + + /** + * 创建人 + */ + @TableField(value = "create_by") + @ApiModelProperty(value="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value="创建时间") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "update_by") + @ApiModelProperty(value="更新人") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value="更新时间") + private Date updateTime; + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/mapper/LawsUnifiedTodoLogMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/mapper/LawsUnifiedTodoLogMapper.java new file mode 100644 index 00000000..84271709 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/mapper/LawsUnifiedTodoLogMapper.java @@ -0,0 +1,12 @@ +package com.jero.modules.docking.hiwork.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog; + +/** + * + *@author liJiaRao + *@date 2024-07-12 14:02 + */ +public interface LawsUnifiedTodoLogMapper extends BaseMapper { +} \ No newline at end of file diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/mapper/mapperxml/LawsUnifiedTodoLogMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/mapper/mapperxml/LawsUnifiedTodoLogMapper.xml new file mode 100644 index 00000000..2717fac9 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/mapper/mapperxml/LawsUnifiedTodoLogMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + id, url, `type`, json_str, `state`, create_by, create_time, update_by, update_time + + \ No newline at end of file diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/LawsUnifiedTodoLogService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/LawsUnifiedTodoLogService.java new file mode 100644 index 00000000..e76ce23c --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/LawsUnifiedTodoLogService.java @@ -0,0 +1,45 @@ +package com.jero.modules.docking.hiwork.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.common.api.vo.Result; +import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * + *@author liJiaRao + *@date 2024-07-12 14:02 + */ +public interface LawsUnifiedTodoLogService extends IService { + + /** + * 分页 + * @param lawsUnifiedTodoLog + * @param pageNo + * @param pageSize + * @param req + * @return + */ + Result> getPage(LawsUnifiedTodoLog lawsUnifiedTodoLog, Integer pageNo,Integer pageSize, + HttpServletRequest req); + + void add(LawsUnifiedTodoLog lawsUnifiedTodoLog); + + void editById(LawsUnifiedTodoLog lawsUnifiedTodoLog); + + void deleteById(String id); + + void deleteByIds(List idList); + + LawsUnifiedTodoLog queryById(String id); + + /** + * 发送 + * @param lawsUnifiedTodoLog + * @return + */ + Result send(LawsUnifiedTodoLog lawsUnifiedTodoLog); +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java index 9cdddfb5..83743670 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java @@ -18,6 +18,8 @@ import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; import com.jero.modules.activiti.service.ProcessNodeService; import com.jero.modules.docking.hiwork.entity.HiworkTodo; +import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog; +import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService; import com.jero.modules.docking.hiwork.util.HiworkPostUtil; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; @@ -27,7 +29,6 @@ import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; - import javax.annotation.Resource; import java.time.Instant; import java.util.ArrayList; @@ -56,6 +57,8 @@ public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI { private ProcessAllService processAllService; @Resource private RestTemplate restTemplate; + @Resource + private LawsUnifiedTodoLogService unifiedTodoLogService; @Value("${hiwork.ip}") private String ip; @@ -97,13 +100,8 @@ public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI { List hiworkTodoList = getHiworkTodos(hiworkTodoAddList); log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList)); log.info("统一待办推送url" + ip + todoUrl); - // 远程调用 - JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class); - if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ - log.info("统一待办推送成功"); - }else{ - log.info("统一待办推送失败{}",json); - } + String isTodo = hiworkTodoList.get(0).getIsTodo(); + push(ip + todoUrl,JSON.toJSONString(hiworkTodoAddList),isTodo); }catch (Exception e){ log.error("统一待办推送异常",e); } @@ -119,15 +117,11 @@ public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI { hiworkTodoAdd.setType(TODO_TYPE_3); } List hiworkTodoList = getHiworkTodos(hiworkTodoAddList); - log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList)); + log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoAddList)); log.info("统一待办推送url" + ip + todoUrl); - // 远程调用 - JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class); - if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ - log.info("统一待办推送成功"); - }else{ - log.info("统一待办推送失败{}",json); - } + + String isTodo = hiworkTodoList.get(0).getIsTodo(); + push(ip + todoUrl,JSON.toJSONString(hiworkTodoAddList),isTodo); }catch (Exception e){ log.error("统一待办推送异常",e); } @@ -146,17 +140,46 @@ public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI { log.info("统一待办删除推送入参" + JSON.toJSONString(hiworkTodoList)); log.info("统一待办推送url" + ip + todoUrl); // 远程调用 - JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class); - if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ - log.info("统一待办删除推送成功"); - }else{ - log.info("统一待办删除推送失败{}",json); - } + String isTodo = hiworkTodoList.get(0).getIsTodo(); + push(ip + todoUrl,JSON.toJSONString(hiworkTodoAddList),isTodo); }catch (Exception e){ log.error("统一待办删除推送异常",e); } } + private void push(String url, String jsonString, String type) { + // 设置最大重试次数 + int maxRetries = 3; + // 当前重试次数 + int retries = 0; + LawsUnifiedTodoLog lawsUnifiedTodoLog = new LawsUnifiedTodoLog(); + lawsUnifiedTodoLog.setType(Integer.valueOf(type)); + while (retries < maxRetries) { + // 远程调用 +// JSONObject json = new JSONObject(); +// json.put("success5", true); + JSONObject json = restTemplate.postForObject(url,jsonString, JSONObject.class); + if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ + log.info("统一待办推送成功"); + lawsUnifiedTodoLog.setResponseBody(JSON.toJSONString(json)); + break; + }else{ + lawsUnifiedTodoLog.setResponseBody(JSON.toJSONString(json)); + log.info("统一待办推送失败{}",json); + retries++; + } + } + lawsUnifiedTodoLog.setUrl(url); + lawsUnifiedTodoLog.setJsonStr(jsonString); + if (retries == maxRetries){ + lawsUnifiedTodoLog.setState(2); + }else { + lawsUnifiedTodoLog.setState(1); + } + unifiedTodoLogService.add(lawsUnifiedTodoLog); + } + + @NotNull private List getHiworkTodos(List hiworkTodoAddList) { List hiworkTodoList = new ArrayList<>(); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/LawsUnifiedTodoLogServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/LawsUnifiedTodoLogServiceImpl.java new file mode 100644 index 00000000..b99082d0 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/LawsUnifiedTodoLogServiceImpl.java @@ -0,0 +1,114 @@ +package com.jero.modules.docking.hiwork.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.PushWorkflowIntegrationAPI; +import com.jero.common.api.dto.message.HiworkTodoAdd; +import com.jero.common.api.vo.Result; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.docking.hiwork.entity.HiworkTodo; +import com.jero.modules.docking.hiwork.entity.LawsUnifiedTodoLog; +import com.jero.modules.docking.hiwork.enums.IsTodoEnum; +import com.jero.modules.docking.hiwork.mapper.LawsUnifiedTodoLogMapper; +import com.jero.modules.docking.hiwork.service.LawsUnifiedTodoLogService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Objects; + +/** + * + *@author liJiaRao + *@date 2024-07-12 14:02 + */ +@Service +@Slf4j +public class LawsUnifiedTodoLogServiceImpl extends ServiceImpl + implements LawsUnifiedTodoLogService{ + + @Resource + private PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI; + @Value("${hiwork.ip}") + private String ip; + @Value("${hiwork.todoUrl}") + private String todoUrl; + @Value("${hiwork.isWorkflow}") + private boolean isWorkflow; + + + private static final String TODO_TYPE_2 = "2"; + private static final String TODO_TYPE_3 = "3"; + private static final String TODO_TYPE_6 = "6"; + + @Override + public Result> getPage(LawsUnifiedTodoLog lawsUnifiedTodoLog, Integer pageNo, + Integer pageSize, HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(lawsUnifiedTodoLog, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = page(page, queryWrapper); + return Result.OK(pageList); + } + @Override + public void add(LawsUnifiedTodoLog lawsUnifiedTodoLog) { + this.save(lawsUnifiedTodoLog); + } + @Override + public void editById(LawsUnifiedTodoLog lawsUnifiedTodoLog) { + this.updateById(lawsUnifiedTodoLog); + } + @Override + public void deleteById(String id) { + this.removeById(id); + } + @Override + public void deleteByIds(List idList) { + for (String id : idList) { + deleteById(id); + } + } + @Override + public LawsUnifiedTodoLog queryById(String id) { + LawsUnifiedTodoLog lawsUnifiedTodoLog = this.getById(id); + return lawsUnifiedTodoLog; + } + + @Override + public Result send(LawsUnifiedTodoLog lawsUnifiedTodoLog) { + LawsUnifiedTodoLog lawsUnifiedTodoLogObj = getById(lawsUnifiedTodoLog.getId()); + if(Objects.isNull(lawsUnifiedTodoLogObj)){ + return Result.error("数据不存在"); + } + + String jsonStr = lawsUnifiedTodoLog.getJsonStr(); + String type = lawsUnifiedTodoLog.getType().toString(); // 当前任务的状态类型 + // 转换为List + List hiworkTodoAddList = JSON.parseObject(jsonStr, new TypeReference>() {}); + if (IsTodoEnum.TODO.getValue().equals(type) || IsTodoEnum.DONE.getValue().equals(type)) { + // 如果是待办或已办,走待办发送消息 + pushWorkflowIntegrationAPI.sendTodoTask(hiworkTodoAddList); + }else if (IsTodoEnum.FINISH.getValue().equals(type)) { + // 如果是结束,调用流程结束的发送消息 + pushWorkflowIntegrationAPI.sendActivityComplete(hiworkTodoAddList); + }else { + // 如果是删除,走删除发送消息 + pushWorkflowIntegrationAPI.sendDeleteTask(hiworkTodoAddList); + } + LambdaUpdateWrapper queryLawsUnifiedTodoLog = new LambdaUpdateWrapper<>(); + queryLawsUnifiedTodoLog.eq(LawsUnifiedTodoLog::getId,lawsUnifiedTodoLog.getId()); + queryLawsUnifiedTodoLog.set(LawsUnifiedTodoLog::getState,1); + update(queryLawsUnifiedTodoLog); + return Result.OK("操作成功"); + } + +}