package com.ycl.service.caseHandler.impl; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.gson.JsonObject; import com.ycl.common.constant.BaseCaseStatus; import com.ycl.common.constant.StepName; import com.ycl.common.dingding.DingCommon; import com.ycl.controller.user.UmsAdminController; import com.ycl.dto.caseHandler.DispatchInfoParam; import com.ycl.entity.caseHandler.BaseCase; import com.ycl.entity.caseHandler.DispatchInfo; import com.ycl.entity.caseHandler.DisposeRecord; import com.ycl.entity.caseHandler.WorkflowConfigStep; import com.ycl.entity.message.DingMessage; import com.ycl.entity.user.UmsAdmin; import com.ycl.exception.ApiException; import com.ycl.mapper.caseHandler.BaseCaseMapper; import com.ycl.mapper.caseHandler.DispatchInfoMapper; import com.ycl.mapper.caseHandler.DisposeRecordMapper; import com.ycl.mapper.caseHandler.WorkflowConfigStepMapper; import com.ycl.mapper.message.DingMessageMapper; import com.ycl.service.caseHandler.IDispatchHandleService; import com.ycl.service.user.UmsAdminService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Date; /** *

* 调度处理 服务实现类 *

* * @author mg * @since 2022-09-28 */ @Service @Transactional @Slf4j public class IDispatchHandleServiceImpl extends ServiceImpl implements IDispatchHandleService { @Resource BaseCaseMapper baseCaseMapper; @Resource DisposeRecordMapper disposeRecordMapper; @Resource WorkflowConfigStepMapper workflowConfigStepMapper; @Autowired DingCommon dingCommon; @Autowired UmsAdminService umsAdminService; @Autowired DingMessageMapper dingMessageMapper; @Override @Transactional public DispatchInfo dispatch(DispatchInfoParam dispatchInfoParam) { //新增调度信息 DispatchInfo dispatchInfo = new DispatchInfo(); BeanUtils.copyProperties(dispatchInfoParam, dispatchInfo); dispatchInfo.setCreateTime(new Date()); baseMapper.insert(dispatchInfo); //修改案件状态为调度 BaseCase baseCase = new BaseCase(); baseCase.setId(dispatchInfoParam.getBaseCaseId()); baseCase.setState(BaseCaseStatus.DISPATCH); baseCaseMapper.updateById(baseCase); QueryWrapper stepqurey = new QueryWrapper<>(); stepqurey.eq("name", StepName.DISPATCH.getName()); WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepqurey); if (workflowConfigStep == null) { throw new ApiException("未查询到该流程环节"); } UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("base_case_id", baseCase.getId()).eq("workflow_config_step_id", workflowConfigStep.getId()); //修改调度记录 DisposeRecord disposeRecord = new DisposeRecord(); disposeRecord.setHandlerId(dispatchInfo.getCreateUser()); disposeRecord.setResult(dispatchInfo.getDispatchOpinion()); //调度已结束 disposeRecord.setState(1); disposeRecord.setEndTime(LocalDateTime.now()); disposeRecordMapper.update(disposeRecord, updateWrapper); QueryWrapper stepNextqurey = new QueryWrapper<>(); stepNextqurey.eq("workflow_config_id", workflowConfigStep.getWorkflowConfigId()); stepNextqurey.eq("seq", workflowConfigStep.getSeq() + 1); WorkflowConfigStep stepNext = workflowConfigStepMapper.selectOne(stepNextqurey); //添加下一步记录 DisposeRecord stepNextRecord = new DisposeRecord(); stepNextRecord.setBaseCaseId(baseCase.getId()); stepNextRecord.setWorkflowConfigStepId(stepNext.getId()); stepNextRecord.setStepName(stepNext.getName()); stepNextRecord.setLimitTime(dispatchInfoParam.getDisposeDate()); stepNextRecord.setHandlerId(dispatchInfoParam.getLawEnforcer()); stepNextRecord.setHandlerRoleId(stepNext.getRoleId()); //上传处置未结束 stepNextRecord.setState(0); stepNextRecord.setStartTime(LocalDateTime.now()); stepNextRecord.setCreateUser(dispatchInfo.getCreateUser()); stepNextRecord.setCreateTime(LocalDateTime.now()); disposeRecordMapper.insert(stepNextRecord); //存钉钉工作通知消息到数据库 BaseCase baseCaseForCode = baseCaseMapper.selectById(dispatchInfoParam.getBaseCaseId()); String baseCaseCode = baseCaseForCode.getCode(); Long lawEnforcer = dispatchInfoParam.getLawEnforcer(); Long accountId = umsAdminService.getById(lawEnforcer).getAccountId(); if (accountId != null) { DingMessage dingMessage = DingMessage.builder() .accountId(accountId) .baseCaseCode(baseCaseCode) .createTime(new Date()).build(); dingMessageMapper.insert(dingMessage); } return dispatchInfo; } }