2023年6月13日16:09:45

main
litao 3 years ago
parent 5deb28c7f2
commit a11f3e37b2
  1. 13
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/impl/HomePageServiceImpl.java
  2. 2
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/controller/ProjectDatabaseController.java
  3. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/excel/DatabaseExcel.java
  4. 106
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/ModuleDatatableMapper.xml
  5. 5
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java
  6. 85
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/controller/WorkOrderController.java
  7. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/OrderExcel.java
  8. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/WorkOrderExcel.java
  9. 102
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java
  10. 35
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/util/RestTemplateConfig.java
  11. 183
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java
  12. 28
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java
  13. 10
      lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/User.java
  14. 24
      lab-service/lab-user/src/main/java/org/springblade/system/user/controller/UserController.java
  15. 3
      lab-service/lab-user/src/main/java/org/springblade/system/user/feign/UserClient.java
  16. 2
      lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java
  17. 4
      lab-service/lab-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
  18. 2
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/IUserService.java
  19. 6
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@ -355,11 +355,13 @@ public class HomePageServiceImpl implements IHomePageService {
List<HistoricProcessInstance> collect1 = historicProcessInstanceStartList.stream().filter(process -> {
String startUserId = process.getStartUserId();
User user = UserCache.getUser(Long.parseLong(startUserId));
String userDept = user.getDeptId();
List<Long> userDeptList = Func.toLongList(userDept);
for (Long l : userDeptList) {
if (nowUserDeptList.contains(l)) {
return true;
if (user != null) {
String userDept = user.getDeptId();
List<Long> userDeptList = Func.toLongList(userDept);
for (Long l : userDeptList) {
if (nowUserDeptList.contains(l)) {
return true;
}
}
}
return false;
@ -608,6 +610,7 @@ public class HomePageServiceImpl implements IHomePageService {
//查询近一个月的
Date lastMonthDate = DateUtil.minusMonths(DateUtil.now(), 1);
List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery().startedAfter(lastMonthDate)
.finished()
.processInstanceTenantId(WfTaskUtil.getTenantId())
.list();

@ -78,7 +78,7 @@ public class ProjectDatabaseController extends BladeController {
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (ProjectDatabaseVo table : dataTableList) {
table.setDeptName(sysClient.getDeptName(table.getDeptId()).getData());
table.setCompanyName(userClient.userInfoById(table.getCompany()).getData().getName());
// table.setCompanyName(userClient.userInfoById(table.getCompany()).getData().getName());
if (StringUtils.isNotBlank(table.getDataBaseAlias())) {
table.setDatabaseProjectName(table.getDataBaseAlias() + "(" + table.getDatabaseProjectName() + ")");
}

@ -20,7 +20,7 @@ public class DatabaseExcel implements Serializable {
private String dataBasePort;
@ColumnWidth(20)
@ExcelProperty("数据库/系统名称")
@ExcelProperty("部门系统")
private String databaseProjectName;
@ColumnWidth(20)
@ -40,7 +40,7 @@ public class DatabaseExcel implements Serializable {
// private String systemModuleName;
@ColumnWidth(20)
@ExcelProperty("管理部门")
@ExcelProperty("部门名称")
private String deptId;
@ColumnWidth(20)

@ -3,61 +3,63 @@
<mapper namespace="org.springblade.plugin.operation.database.mapper.ModuleDatatableMapper">
<select id="page" resultType="org.springblade.plugin.operation.database.entity.ProjectDatabaseVo">
select
b.data_base_ip,
b.data_base_port,
b.database_project_name,
b.type,
b.data_base_alias,
b.system_name,
b.dept_id,
b.company,
t.datatable_module_name,
t.data_table_alias
from t_project_database b left join t_module_datatable t on b.id = t.project_database_id
where t.is_deleted = 0
<if test="dataBase.getDatabaseProjectName!=null and dataBase.getDatabaseProjectName != ''">
and b.database_project_name = #{dataBase.databaseProjectName}
</if>
<if test="dataBase.getDatatableModuleName!=null and dataBase.getDatatableModuleName != ''">
and t.datatable_module_name = #{dataBase.datatableModuleName}
</if>
<if test="dataBase.getType!=null">
and b.type = #{dataBase.type}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
order by t.create_time DESC
LIMIT #{current},#{size}
select
b.data_base_ip,
b.data_base_port,
b.database_project_name,
b.type,
b.data_base_alias,
b.system_name,
b.dept_id,
b.company,
u.name as companyName,
t.datatable_module_name,
t.data_table_alias
from t_project_database b
left join t_module_datatable t on b.id = t.project_database_id
left join lims.blade_user u on u.id = b.company
where t.is_deleted = 0
<if test="dataBase.getDatabaseProjectName!=null and dataBase.getDatabaseProjectName != ''">
and b.database_project_name = #{dataBase.databaseProjectName}
</if>
<if test="dataBase.getDatatableModuleName!=null and dataBase.getDatatableModuleName != ''">
and t.datatable_module_name = #{dataBase.datatableModuleName}
</if>
<if test="dataBase.getType!=null">
and b.type = #{dataBase.type}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
order by t.create_time DESC
LIMIT #{current},#{size}
</select>
<select id="dataCount" resultType="long">
select
count(*)
from t_project_database b left join t_module_datatable t on b.id = t.project_database_id
where t.is_deleted = 0
<if test="dataBase.getDatabaseProjectName!=null and dataBase.getDatabaseProjectName != ''">
and b.database_project_name = #{dataBase.databaseProjectName}
</if>
<if test="dataBase.getDatatableModuleName!=null and dataBase.getDatatableModuleName != ''">
and t.datatable_module_name = #{dataBase.datatableModuleName}
</if>
<if test="dataBase.getType!=null">
and b.type = #{dataBase.type}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
</select>
<select id="dataCount" resultType="long">
select
count(*)
from t_project_database b left join t_module_datatable t on b.id = t.project_database_id
where t.is_deleted = 0
<if test="dataBase.getDatabaseProjectName!=null and dataBase.getDatabaseProjectName != ''">
and b.database_project_name = #{dataBase.databaseProjectName}
</if>
<if test="dataBase.getDatatableModuleName!=null and dataBase.getDatatableModuleName != ''">
and t.datatable_module_name = #{dataBase.datatableModuleName}
</if>
<if test="dataBase.getType!=null">
and b.type = #{dataBase.type}
</if>
<if test="dataBase.getDeptId!=null">
and b.dept_id = #{dataBase.deptId}
</if>
<if test="dataBase.getCompany!=null">
and b.company = #{dataBase.company}
</if>
</select>
</mapper>

@ -1,7 +1,6 @@
package org.springblade.plugin.operation.task.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -10,7 +9,6 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
@ -25,6 +23,8 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springblade.plugin.operation.webservice.WebServiceUtils;
import org.springblade.plugin.operation.workorder.entity.InsertTodealByPollCode;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.DictBiz;
import org.springframework.web.bind.annotation.*;
@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**

@ -1,13 +1,11 @@
package org.springblade.plugin.operation.workorder.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.annotation.NonDS;
@ -15,7 +13,6 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springblade.plugin.operation.workorder.entity.InsertTodealByPollCode;
import org.springblade.plugin.operation.workorder.entity.WorkOrder;
import org.springblade.plugin.operation.workorder.service.IWorkOrderService;
import org.springblade.system.cache.DictBizCache;
@ -24,14 +21,7 @@ import org.springblade.system.entity.DictBiz;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
@ -39,6 +29,7 @@ import java.util.*;
/**
* 工单
*
* @Description
* @Author lt
* @Date 2023年2月17日09:46:45
@ -55,9 +46,6 @@ public class WorkOrderController extends BladeController {
private final ISysClient sysClient;
private final IUserClient userClient;
private RestTemplate restTemplate;
// private RestTemplateToInterface restTemplateToInterface;
/**
* 流程中心
*/
@ -110,7 +98,7 @@ public class WorkOrderController extends BladeController {
* 流程中心导出
*/
@GetMapping("/exportExcel")
public void exportExcel(WorkOrder workOrder, HttpServletResponse response){
public void exportExcel(WorkOrder workOrder, HttpServletResponse response) {
workOrderService.exportExcel(workOrder, response);
}
@ -130,75 +118,6 @@ public class WorkOrderController extends BladeController {
*/
@GetMapping("/workOrderRecord")
public R<IPage<WorkOrder>> workOrderRecord(WorkOrder workOrder, Query query) {
InsertTodealByPollCode code = new InsertTodealByPollCode();
code.setTodealGuid("{20180407-1554-0306-6507-00FF718FC7C2}");
code.setFileGuid("{20180407-1554-0306-6507-00FF718FC7C2}");
// code.setFlowGuid("");
code.setTitle("测试标题");
code.setDocType("2");
code.setReceiveLocalPerson("qdsn.dsjyyk");
code.setReceiveLocalPersonGuid("{9DEEE6C9-1419-47FF-B76D-4BF3753CC00A}");
code.setSendperson("qdsn.dsjyyk");
code.setSendpersonGuid("{9DEEE6C9-1419-47FF-B76D-4BF3753CC00A}");
code.setTypeName("其他");
// code.setKeyNumber("20");
code.setIsout("0");
// code.setUrl("");
code.setOpenFlag("1");
code.setIsReply("0");
code.setIsTop("0");
code.setFromExchangeCode("00020000000000000001");
code.setToExchangeCode("00020000000000000001");
code.setPollCode("000000");
// String s = restTemplateToInterface.doPostWith1("http://15.72.158.155/jhoa200/OAReceiver/OuterSystemOAReceiver.asmx", code);
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
JSONObject param = new JSONObject();
param.put("todealGuid", code.getTodealGuid());
param.put("fileGuid", code.getFileGuid());
// param.put("flowGuid", code.getTodealGuid());
param.put("title", code.getTitle());
param.put("docType", code.getDocType());
param.put("receiveLocalPerson", code.getReceiveLocalPerson());
param.put("receiveLocalPersonGuid", code.getReceiveLocalPersonGuid());
param.put("sendperson", code.getSendperson());
param.put("sendpersonGuid", code.getSendpersonGuid());
param.put("typeName", code.getTypeName());
// param.put("keyNumber", code.getTodealGuid());
param.put("isout", code.getIsout());
// param.put("url", code.getTodealGuid());
param.put("openFlag", code.getOpenFlag());
param.put("isReply", code.getIsReply());
param.put("isTop", code.getIsTop());
param.put("fromExchangeCode", code.getFromExchangeCode());
param.put("toExchangeCode", code.getToExchangeCode());
param.put("pollCode", code.getPollCode());
// 2.设置请求体的参数
// HttpEntity<InsertTodealByPollCode> formEntity = new HttpEntity<>(code, headers);
HttpEntity<JSONObject> formEntity = new HttpEntity<>(param, headers);
System.out.println("=============================================");
System.out.println(code);
String url = "http://15.72.158.155/jhoa200/OAReceiver/OuterSystemOAReceiver.asmx";
ResponseEntity<JSONObject> responseEntity = null;
JSONObject object = null;
try {
object = restTemplate.postForObject(url, formEntity, JSONObject.class);
System.out.println("结果:" + object);
responseEntity = restTemplate.postForEntity(url, param, JSONObject.class);
System.out.println("结果:" + responseEntity.getBody());
} catch (RestClientException e) {
System.out.println(e.toString());
}
System.out.println("=============================================");
return R.data(workOrderService.myPage(workOrder, query));
}

@ -20,11 +20,11 @@ public class OrderExcel implements Serializable {
private String taskType;
@ColumnWidth(20)
@ExcelProperty("操作模块")
@ExcelProperty("操作对象")
private String operationModule;
@ColumnWidth(20)
@ExcelProperty("分管部门")
@ExcelProperty("部门名称")
private String dept;
@ColumnWidth(20)

@ -20,7 +20,7 @@ public class WorkOrderExcel implements Serializable {
private String taskType;
@ColumnWidth(20)
@ExcelProperty("操作模块")
@ExcelProperty("操作对象")
private String operationModule;
@ColumnWidth(20)
@ -28,7 +28,7 @@ public class WorkOrderExcel implements Serializable {
private String currentResponsiblePerson;
@ColumnWidth(20)
@ExcelProperty("分管部门")
@ExcelProperty("部门名称")
private String dept;
@ColumnWidth(20)

@ -226,7 +226,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 创建时间范围
if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) {
workOrders = workOrders.stream().filter(s -> (s.getCreateTime().after(workOrder.getStartTime())) && (s.getCreateTime().before(workOrder.getEndTime()))).collect(Collectors.toList());
workOrders = workOrders.stream().filter(s ->
(s.getCreateTime().after(workOrder.getStartTime())) &&
(s.getCreateTime().before(workOrder.getEndTime()))).collect(Collectors.toList());
}
// 排序
@ -454,16 +456,16 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
historicVars.forEach(var ->
varMap.put(var.getVariableName(), var.getValue()));
// 任务父类
varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue());
ProjectDatabase byId = dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString());
if (byId != null) {
varMap.put("xitongmingchengshujuku", byId.getDatabaseProjectName());
}
// 运维公司
varMap.put("yunweigongsi", userClient.userInfoById(Long.parseLong(varMap.get("yunweigongsi").toString())).getData().getRealName());
// // 任务父类
// varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue());
//
// ProjectDatabase byId = dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString());
// if (byId != null) {
// varMap.put("xitongmingchengshujuku", byId.getDatabaseProjectName());
// }
//
// // 运维公司
// varMap.put("yunweigongsi", userClient.userInfoById(Long.parseLong(varMap.get("yunweigongsi").toString())).getData().getRealName());
Task task = taskService.createTaskQuery().processInstanceId(historicProcessInstance.getId()).singleResult();
if (task != null) {
@ -485,9 +487,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
varMap.put("startTime", historicProcessInstance.getStartTime());
varMap.put("endTime", historicProcessInstance.getEndTime());
varMap.put("startUserId", userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName());
varMap.put("processInstanceId", historicProcessInstance.getId());
varMap.put("taskId", "");
// varMap.put("startUserId", userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName());
// varMap.put("processInstanceId", historicProcessInstance.getId());
// varMap.put("taskId", "");
workOrders.add(varMap);
}
}
@ -497,13 +499,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
for (Map<String, Object> order : workOrders) {
WorkOrderExcel excel = new WorkOrderExcel();
excel.setTaskType(order.get("$renwuzhonglei").toString());
excel.setTaskParent(order.get("renwufulei").toString());
excel.setOperationModule(order.get("xitongmingchengshujuku").toString());
// excel.setTaskParent(order.get("renwufulei").toString());
// excel.setOperationModule(order.get("xitongmingchengshujuku").toString());
excel.setCurrentResponsiblePerson(order.get("currentResponsiblePerson").toString());
excel.setDept(order.get("$guanlibumen").toString());
excel.setLevel(order.get("$renwudengji").toString());
excel.setCompany(order.get("yunweigongsi").toString());
excel.setSponsor(order.get("startUserId").toString());
// excel.setCompany(order.get("yunweigongsi").toString());
// excel.setSponsor(order.get("startUserId").toString());
excel.setApprovalStatus(order.get("status").toString());
excel.setCreateTime(format.format(order.get("startTime")));
@ -527,8 +529,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
wrapper.in(WorkOrder::getManagement, Func.toStrList(AuthUtil.getDeptId()));
if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) {
wrapper.between(WorkOrder::getCreateTime, workOrder.getStartTime(), workOrder.getEndTime());
wrapper.ge(WorkOrder::getCreateTime, workOrder.getStartTime());
wrapper.le(WorkOrder::getFinishTime, workOrder.getEndTime());
// wrapper.ge(WorkOrder::getCreateTime, workOrder.getStartTime());
// wrapper.le(WorkOrder::getFinishTime, workOrder.getEndTime());
}
wrapper.orderByDesc(WorkOrder::getCreateTime);
IPage<WorkOrder> page = page(Condition.getPage(query), wrapper);
@ -607,34 +609,20 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
.processInstanceTenantId(WfTaskUtil.getTenantId()).list();
List<Map<String, Object>> workOrders = new ArrayList<>();
if (CollectionUtils.isNotEmpty(list)) {
for (HistoricProcessInstance historicProcessInstance : list) {
Map<String, Object> varMap = new HashMap<>();
List<HistoricVariableInstance> historicVars = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(historicProcessInstance.getId()).list();
historicVars.forEach(var ->
varMap.put(var.getVariableName(), var.getValue()));
historicVars.forEach(var -> varMap.put(var.getVariableName(), var.getValue()));
// 任务父类
varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue());
// 操作模块
// if ("1".equals(varMap.get("type").toString())) {
// varMap.put("xitongmingchengshujuku", projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString()).getProjectName());
// } else {
ProjectDatabase byId = dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString());
if (byId != null) {
varMap.put("xitongmingchengshujuku", byId.getDatabaseProjectName());
}
// }
// ProjectInfo projectInfo = projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString());
// if (projectInfo != null) {
// varMap.put("xitongmingchengshujuku", projectInfo.getProjectName());
// } else {
// varMap.put("xitongmingchengshujuku", dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString()).getDataBaseName());
// }
// 运维公司
varMap.put("yunweigongsi", userClient.userInfoById(Long.parseLong(varMap.get("yunweigongsi").toString())).getData().getRealName());
@ -668,7 +656,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
varMap.put("processInstanceId", historicProcessInstance.getId());
List<HistoricTaskInstance> taskInstanceList = historyService.createHistoricTaskInstanceQuery().processInstanceId(historicProcessInstance.getId()).orderByTaskCreateTime().desc().list();
varMap.put("taskId", taskInstanceList.get(0).getId());
workOrders.add(varMap);
}
@ -676,16 +663,17 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 只看本部门数据权限
List<Map<String, Object>> workOrderList = new ArrayList<>();
// List<Map<String, Object>> workOrderList = new ArrayList<>();
List<String> deptIds = Func.toStrList(AuthUtil.getDeptId());
workOrders.forEach(order -> {
String deptId = order.get("startDeptId").toString();
if (deptIds.contains(deptId)) {
workOrderList.add(order);
}
});
workOrders = workOrderList;
// workOrders.forEach(order -> {
// String deptId = order.get("startDeptId").toString();
// if (deptIds.contains(deptId)) {
// workOrderList.add(order);
// }
// });
// workOrders = workOrderList;
workOrders = workOrders.stream().filter(s -> deptIds.contains(s.get("guanlibumen").toString())).collect(Collectors.toList());
// 任务父类
if (StringUtils.isNotBlank(workOrder.getTaskParent())) {
@ -732,32 +720,16 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) {
workOrders = workOrders.stream().filter(s ->
{
if (s.get("endTime") != null) {
try {
return (format.parse(format.format(s.get("startTime"))).after(workOrder.getStartTime())) &&
(format.parse(format.format(s.get("endTime"))).before(workOrder.getEndTime()));
} catch (ParseException e) {
e.printStackTrace();
}
try {
return (format.parse(format.format(s.get("startTime"))).after(workOrder.getStartTime())) &&
(format.parse(format.format(s.get("startTime"))).before(workOrder.getEndTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}).collect(Collectors.toList());
}
// 结束时间范围
// if (workOrder.getEndTime() != null) {
// workOrders = workOrders.stream().filter(s ->
// {
// if (s.get("endTime") != null) {
// try {
// return format.parse(format.format(s.get("endTime"))).before(workOrder.getEndTime());
// } catch (ParseException e) {
// e.printStackTrace();
// }
// }
// return false;
// }).collect(Collectors.toList());
// }
return workOrders;
}
}

@ -1,35 +0,0 @@
package org.springblade.plugin.operation.workorder.util;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
// @Bean
// public RestTemplate restTemplate(){
// // RestTemplate restTemplate = new RestTemplate();
// //设置中文乱码问题方式一
// // restTemplate.getMessageConverters().add(1,new StringHttpMessageConverter(Charset.forName("UTF-8")));
// // 设置中文乱码问题方式二
// // restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 支持中文编码
// return new RestTemplate();
// }
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(20000);
factory.setReadTimeout(30000);
return factory;
}
}

@ -23,6 +23,8 @@ import org.springblade.plugin.operation.system.entity.ProjectInfo;
import org.springblade.plugin.operation.system.service.IModuleInfoService;
import org.springblade.plugin.operation.system.service.IProjectInfoService;
import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springblade.plugin.operation.webservice.WebServiceUtils;
import org.springblade.plugin.operation.workorder.entity.InsertTodealByPollCode;
import org.springblade.plugin.operation.workorder.entity.WorkOrder;
import org.springblade.plugin.operation.workorder.service.IWorkOrderService;
import org.springblade.plugin.workbench.entity.AutoStartModel;
@ -39,6 +41,7 @@ import org.springblade.system.entity.Dept;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.cache.UserCache;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
@ -61,6 +64,8 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
private final ISysClient sysClient;
private final IUserClient userClient;
private final ITaskInfoService taskInfoService;
private final IProjectDatabaseService dataBaseService;
@ -72,7 +77,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
private final ProcessErrorLogClient processErrorLogClient;
@Override
public void saveProcessErrorLog(@RequestBody LogError logError){
public void saveProcessErrorLog(@RequestBody LogError logError) {
processErrorLogClient.saveErrorLog(logError);
}
@ -86,13 +91,13 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
queryWrapper.ne(AutoStartModel::getIsBreak, 1);
List<AutoStartModel> autoStartModels = baseMapper.selectList(queryWrapper);
List<Map<String,Object>> maps = new ArrayList<>();
if(autoStartModels.size() > 0){
autoStartModels.forEach(bl ->{
List<Map<String, Object>> maps = new ArrayList<>();
if (autoStartModels.size() > 0) {
autoStartModels.forEach(bl -> {
List<HistoricVariableInstance> variableList = historyService.createHistoricVariableInstanceQuery().processInstanceId(bl.getProcessInstanceId()).list();
Map<String,Object> variable = new HashMap<>();
variableList.forEach(va ->{
variable.put(va.getVariableName(),va.getValue());
Map<String, Object> variable = new HashMap<>();
variableList.forEach(va -> {
variable.put(va.getVariableName(), va.getValue());
});
maps.add(variable);
});
@ -112,9 +117,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
}
@Override
public List<AutoStartModelVO> setInfo(@NonNull List<AutoStartModel> list){
public List<AutoStartModelVO> setInfo(@NonNull List<AutoStartModel> list) {
List<AutoStartModelVO> lists = new ArrayList<>();
list.forEach(l->{
list.forEach(l -> {
AutoStartModelVO copy = Func.copy(l, AutoStartModelVO.class);
copy.setTaskType(taskInfoService.getById(l.getTaskType()).getTaskTypeName());
copy.setTaskParent(DictBizCache.getById(l.getTaskParent()).getDictValue());
@ -153,9 +158,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
public boolean breakAutoStartModel(String ids) {
List<String> strings = Func.toStrList(ids);
for(String s : strings){
for (String s : strings) {
AutoStartModel autoStartModel = baseMapper.selectById(Long.valueOf(s));
if(Func.isNotEmpty(autoStartModel)){
if (Func.isNotEmpty(autoStartModel)) {
autoStartModel.setIsBreak(1);
autoStartModel.setStatus(1);
autoStartModel.setBreakTime(DateUtil.now());
@ -200,14 +205,15 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
/**
* 不重复任务直接生成工单
*
* @param processInstanceId
* @param variables
*/
@Override
public boolean newWorkOrder(String processInstanceId,Map<String,Object> variables){
public boolean newWorkOrder(String processInstanceId, Map<String, Object> variables) {
boolean save = false;
WorkOrder workOrder = new WorkOrder();
try{
try {
workOrder.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord")));
workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString());
workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString());
@ -223,33 +229,37 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString());
workOrder.setTenantId(WfTaskUtil.getTenantId());
workOrder.setProcessInstanceId(processInstanceId);
workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString(),"yyyy-MM-dd HH:mm:ss"));
workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss"));
workOrder.setRepeatMode(variables.get("chongfumoshi").toString());
workOrder.setDetail(variables.get("beizhu").toString());
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString()));
String roleId = applyUser.getRoleId();
if(StringUtils.equals(roleId,"1623514957507272705") && StringUtils.equals(variables.get("renwudengji").toString(),"1625035000825049090")){
if (StringUtils.equals(roleId, "1623514957507272705") && StringUtils.equals(variables.get("renwudengji").toString(), "1625035000825049090")) {
workOrder.setIsFinish(1);
workOrder.setFinishTime(new Date());
} else {
workOrder.setIsFinish(0);
// 消息推送
messagePush(variables.get("applyUser").toString(), variables.get("yunweigongsi").toString());
}
save = workOrderService.save(workOrder);
int retryNum = 0;
while(retryNum < 5 && !save){
try{
while (retryNum < 5 && !save) {
try {
save = workOrderService.save(workOrder);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}finally {
retryNum ++;
} finally {
retryNum++;
}
}
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}finally {
} finally {
return save;
}
}
@ -259,26 +269,26 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
* 1.新建工单
* 2.保存模板数据
* 3.更新模板的下一次开始和结束时间
*
* @param processinstanceId
* @param variables
* @return
* "更新模板数据失败"
* @return "更新模板数据失败"
* 生成工单失败
* 保存工单模板数据失败
*/
@Override
public String saveStartProcess(String processinstanceId,Map<String,Object> variables){
String result = "";
public String saveStartProcess(String processinstanceId, Map<String, Object> variables) {
String result = "";
//保存新增工单和工单模板数据 返回结果: “1” 成功 或 “生成工单失败” 或 “保存工单模板数据失败”
result = this.newWorkOrderAndSaveModel(processinstanceId,variables);
result = this.newWorkOrderAndSaveModel(processinstanceId, variables);
if(!StringUtils.equals(result,"1")) {
if (!StringUtils.equals(result, "1")) {
return result;
}else{
//更新工单模板的nestStartTime和nextEndTime
} else {
//更新工单模板的nestStartTime和nextEndTime
LambdaQueryWrapper<AutoStartModel> wrapper = Wrappers.lambdaQuery();
wrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId).orderByDesc(AutoStartModel::getCreateTime).last("limit 1");
wrapper.eq(AutoStartModel::getProcessInstanceId, processinstanceId).orderByDesc(AutoStartModel::getCreateTime).last("limit 1");
AutoStartModel autoStartModel = baseMapper.selectOne(wrapper);
Date startTime = autoStartModel.getNextStartTime();
@ -288,14 +298,14 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
Date nextEndTime = this.nextTime(endTime, repeatMode);
//如果下次结束时间大于当前记录的结束时间,才会更新
if(DateUtil.between(endTime,nextEndTime).getSeconds() > 0){
if (DateUtil.between(endTime, nextEndTime).getSeconds() > 0) {
Date nextStartTime = this.setStartTime(nextEndTime, repeatMode);
autoStartModel.setNextStartTime(nextStartTime);
autoStartModel.setNextEndTime(nextEndTime);
int i = baseMapper.updateById(autoStartModel);
if(i > 0) return "1";
if (i > 0) return "1";
}
}
return "更新模板数据失败";
@ -303,13 +313,14 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
/**
* 新增工单并保存模板数据返回结果 0 成功 生成工单失败 保存工单模板数据失败
*
* @param processinstanceId
* @param variables
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public String newWorkOrderAndSaveModel(String processinstanceId,Map<String,Object> variables){
public String newWorkOrderAndSaveModel(String processinstanceId, Map<String, Object> variables) {
String result = "1";
//根据流程表单数据创建AutoStartModel对象
AutoStartModel autoStartModel = new AutoStartModel();
@ -340,17 +351,17 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
//自动生成工单并保存
boolean saveOrder = false;
int retrySaveOrder = 0;
while(!saveOrder && retrySaveOrder < 5){
try{
while (!saveOrder && retrySaveOrder < 5) {
try {
saveOrder = this.newWorkOrder(autoStartModel);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}finally {
retrySaveOrder ++;
} finally {
retrySaveOrder++;
}
}
//如果生成工单失败,返回失败信息
if(!saveOrder){
if (!saveOrder) {
result = "生成工单失败";
return result;
}
@ -359,25 +370,25 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
int retrySaveModel = 0;
//首先判断autoStartModel中是否有符合processinstanceId的记录,没有才能继续
LambdaQueryWrapper<AutoStartModel> autoStartModelWrapper = Wrappers.lambdaQuery();
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId);
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId, processinstanceId);
List<AutoStartModel> autoStartModels = baseMapper.selectList(autoStartModelWrapper);
if(autoStartModels.size() > 0) return "数据库中已经有该工作数据了";
if (autoStartModels.size() > 0) return "数据库中已经有该工作数据了";
while(insertModel <= 0){
try{
while (insertModel <= 0) {
try {
boolean save = this.save(autoStartModel);
if (save) {
insertModel = 1;
}
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}finally {
retrySaveOrder ++;
} finally {
retrySaveOrder++;
}
}
//如果保存模板数据失败,返回失败信息
if(insertModel <=0){
if (insertModel <= 0) {
result = "保存工单模板数据失败";
return result;
}
@ -386,31 +397,31 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
}
//根据期望结束时间,计算开始时间
private Date setStartTime(Date endTime,String repeatMode){
private Date setStartTime(Date endTime, String repeatMode) {
Date startDate;
LocalDateTime localEndTime = DateUtil.fromDate(endTime);
LocalDate localDate = LocalDate.of(localEndTime.getYear(),localEndTime.getMonth(),localEndTime.getDayOfMonth());
LocalDate localDate = LocalDate.of(localEndTime.getYear(), localEndTime.getMonth(), localEndTime.getDayOfMonth());
//repeatMode 为空串
if(StringUtils.isEmpty(repeatMode) || StringUtils.isBlank(repeatMode)) return endTime;
if (StringUtils.isEmpty(repeatMode) || StringUtils.isBlank(repeatMode)) return endTime;
//每天重复
if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode)){
if (StringUtils.equals(RepeatEnum.每天.getCode(), repeatMode)) {
startDate = DateUtil.toDate(localDate);
return startDate;
}
//每周重复,获取当前日期所在周的周一
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)){
if (StringUtils.equals(RepeatEnum.每周.getCode(), repeatMode)) {
Date date = DateUtil.toDate(localDate);
return MyDateUtil.getFirstDayOfWeek(date);
}
//每月重复,获取当前日期所在月的第一天
if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode)){
if (StringUtils.equals(RepeatEnum.每月.getCode(), repeatMode)) {
LocalDate firsDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
return DateUtil.toDate(firsDayOfMonth);
}
//每季度重复,获取当前日期所在季度的首月的第一天
if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode)){
if (StringUtils.equals(RepeatEnum.每季度.getCode(), repeatMode)) {
int month = localDate.getMonth().getValue();
if (1 <= month && month <= 3) {
localDate = localDate.withMonth(1);
@ -421,35 +432,35 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
} else {
localDate = localDate.withMonth(10);
}
return DateUtil.toDate(localDate);
return DateUtil.toDate(localDate);
}
return endTime;
}
//计算下次时间
private Date nextTime(Date date,String repeatMode){
private Date nextTime(Date date, String repeatMode) {
Date now = DateUtil.now();
//每分钟重复
// if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode)) return DateUtil.plusMinutes(date,1);
//每天重复
if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode)) return DateUtil.plusDays(date,1);
if (StringUtils.equals(RepeatEnum.每天.getCode(), repeatMode)) return DateUtil.plusDays(date, 1);
//每周重复
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode)) return DateUtil.plusWeeks(date,1);
if (StringUtils.equals(RepeatEnum.每周.getCode(), repeatMode)) return DateUtil.plusWeeks(date, 1);
//每月重复
if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode)) return DateUtil.plusMonths(date,1);
if (StringUtils.equals(RepeatEnum.每月.getCode(), repeatMode)) return DateUtil.plusMonths(date, 1);
//每季度重复
if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode)) return DateUtil.plusMonths(date,3);
if (StringUtils.equals(RepeatEnum.每季度.getCode(), repeatMode)) return DateUtil.plusMonths(date, 3);
return now;
}
private boolean newWorkOrder(AutoStartModel autoStartModel){
private boolean newWorkOrder(AutoStartModel autoStartModel) {
boolean save = false;
//生成工单
WorkOrder workOrder = new WorkOrder();
@ -470,16 +481,19 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setIsFinish(0);
workOrder.setDetail(autoStartModel.getDetail());
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){
if (StringUtils.equals(autoStartModel.getApplyRole(), "运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(), "1625035000825049090")) {
workOrder.setIsFinish(1);
workOrder.setFinishTime(new Date());
} else {
// 消息推送
messagePush(workOrder.getApplyUser(), workOrder.getMaintenanceCompany());
}
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
save = workOrderService.save(workOrder);
return save;
}
private boolean autoNewWorkOrder(AutoStartModel autoStartModel){
private boolean autoNewWorkOrder(AutoStartModel autoStartModel) {
boolean save = false;
//生成工单
WorkOrder workOrder = new WorkOrder();
@ -501,17 +515,19 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setDetail(autoStartModel.getDetail());
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime());
save = workOrderService.save(workOrder);
// 消息推送
messagePush(workOrder.getApplyUser(), workOrder.getMaintenanceCompany());
return save;
}
@Override
public void autoCreateWorkOrderByQuartz(){
public void autoCreateWorkOrderByQuartz() {
this.autoCreateWorkOrder();
}
//自动生成工单
private void autoCreateWorkOrder(){
synchronized (AutoStartModelServiceImpl.class){
private void autoCreateWorkOrder() {
synchronized (AutoStartModelServiceImpl.class) {
Date now = DateUtil.now();
LambdaQueryWrapper<AutoStartModel> wrapper = Wrappers.lambdaQuery();
@ -527,9 +543,9 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
}
//递归生成工单并更新autoStartModel的nextSatartTime nextEndTime
private void autoCreateWorkOrder(Date now,AutoStartModel autoStartModel){
private void autoCreateWorkOrder(Date now, AutoStartModel autoStartModel) {
boolean b = this.autoNewWorkOrder(autoStartModel);
if(b){
if (b) {
Date endTime = autoStartModel.getNextEndTime();
//计算下次开始结束时间
@ -541,11 +557,34 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
autoStartModel.setNextEndTime(nextEndTime);
baseMapper.updateById(autoStartModel);
// boolean ii = DateUtil.between(nextStartTime,now).isNegative();
// boolean ii = DateUtil.between(nextStartTime,now).isNegative();
if(!DateUtil.between(nextStartTime,now).isNegative()){
autoCreateWorkOrder(now,autoStartModel);
if (!DateUtil.between(nextStartTime, now).isNegative()) {
autoCreateWorkOrder(now, autoStartModel);
}
}
}
private void messagePush(String applyUserId,String userId) {
// 发起人
User startUser = userClient.userInfoById(Long.parseLong(applyUserId)).getData();
// 接收人
User user = userClient.userInfoById(Long.parseLong(userId)).getData();
InsertTodealByPollCode code = new InsertTodealByPollCode();
code.setTitle("新的工单待处理");
if (user != null) {
// 接收人
code.setReceiveLocalPerson(user.getName());
code.setReceiveLocalPersonGuid(user.getGuid());
code.setToExchangeCode(user.getMobile());
}
if (startUser != null) {
// 发送人
code.setSendperson(startUser.getName());
code.setSendpersonGuid(startUser.getGuid());
code.setFromExchangeCode(startUser.getMobile());
}
WebServiceUtils.InsertTodealByPollCode(WebServiceUtils.getData(code));
}
}

@ -41,6 +41,8 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.plugin.operation.webservice.WebServiceUtils;
import org.springblade.plugin.operation.workorder.entity.InsertTodealByPollCode;
import org.springblade.plugin.workbench.cache.FlowCache;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
@ -61,6 +63,7 @@ import org.springblade.plugin.workflow.process.model.WfTaskUser;
import org.springblade.plugin.workflow.process.service.*;
import org.springblade.system.user.cache.UserCache;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springblade.system.user.feign.IUserSearchClient;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
@ -100,6 +103,8 @@ public class WfProcessService implements IWfProcessService {
private final RedisTemplate redisTemplate;
private final IUserClient userClient;
// private final LimsInvoked limsInvoked;
@Override
@ -1638,6 +1643,29 @@ public class WfProcessService implements IWfProcessService {
.list();
if (list.size() == 0) return;
if (ObjectUtil.isNotEmpty(assignee)) {
/*======================================消息推送====================================*/
// 发起人
User startUser = userClient.userInfoById(AuthUtil.getUserId()).getData();
// 接收人
User user = userClient.userInfoById(Long.parseLong(assignee.toString())).getData();
InsertTodealByPollCode code = new InsertTodealByPollCode();
code.setTitle("新的工单待处理");
if (user != null) {
// 接收人
code.setReceiveLocalPerson(user.getName());
code.setReceiveLocalPersonGuid(user.getGuid());
code.setToExchangeCode(user.getMobile());
}
if (startUser != null) {
// 发送人
code.setSendperson(startUser.getName());
code.setSendpersonGuid(startUser.getGuid());
code.setFromExchangeCode(startUser.getMobile());
}
WebServiceUtils.InsertTodealByPollCode(WebServiceUtils.getData(code));
/*====================================消息推送=====================================*/
String[] ids = assignee.toString().split(",");
if (list.size() > 1 || (list.size() == 1 && this.isMultiInstance(list.get(0).getTaskDefinitionKey(), list.get(0).getProcessDefinitionId()))) { // 多实例
int index = 0;

@ -95,4 +95,14 @@ public class User extends TenantEntity {
*/
private Integer accountStatus;
/**
* GUID
*/
private String guid;
/**
* 交换码
*/
private String mobile;
}

@ -5,6 +5,7 @@ package org.springblade.system.user.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@ -16,6 +17,7 @@ import lombok.AllArgsConstructor;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
@ -423,11 +425,11 @@ public class UserController {
* 运维公司
*/
@GetMapping("/maintenanceCompany")
public R<List<User>> maintenanceCompany() {
public R<List<User>> maintenanceCompany(Integer isDetail) {
BladeUser user = AuthUtil.getUser();
List<User> users = new ArrayList<>();
// 判断是否运维公司
if ("运维公司".equals(user.getRoleName())) {
if (isDetail == 0 && "运维公司".equals(user.getRoleName())) {
User byId = userService.getById(user.getUserId());
users.add(byId);
return R.data(users);
@ -436,11 +438,21 @@ public class UserController {
String roleId = sysClient.getRoleIdByAlias(AuthUtil.getTenantId(), "运维公司").getData();
// 查当前操作人部门下的运维公司
List<String> strings = Func.toStrList(user.getDeptId());
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.in(User::getDeptId, Func.toStrList(user.getDeptId()));
wrapper.eq(User::getRoleId, roleId);
users = userService.list(wrapper);
return R.data(users);
Set<User> userSet = new TreeSet<>(Comparator.comparing(BaseEntity::getId));
if (CollectionUtils.isNotEmpty(strings)) {
for (String string : strings) {
wrapper.like(User::getDeptId, string);
wrapper.eq(User::getRoleId, roleId);
users.addAll(userService.list(wrapper));
wrapper.clear();
}
}
userSet.addAll(users);
return R.data(new ArrayList<>(userSet));
}
}

@ -37,7 +37,8 @@ public class UserClient implements IUserClient {
@Override
@GetMapping(USER_INFO_BY_ID)
public R<User> userInfoById(Long userId) {
return R.data(service.getById(userId));
// return R.data(service.getById(userId));
return R.data(service.getUserOne(userId));
}
@Override

@ -46,4 +46,6 @@ public interface UserMapper extends BaseMapper<User> {
List<UserExcel> exportUser(@Param("ew") Wrapper<User> queryWrapper);
List<User> userList (@Param("deptIdList") List<Long> deptIdList);
User getUserOne(@Param("userId") Long userId);
}

@ -87,4 +87,8 @@
)
</select>
<select id="getUserOne" resultType="org.springblade.system.user.entity.User">
SELECT * FROM blade_user WHERE id = #{userId}
</select>
</mapper>

@ -216,4 +216,6 @@ public interface IUserService extends BaseService<User> {
* @return
*/
public List<User> listRolebyId(String rolename);
public User getUserOne(Long userId);
}

@ -66,6 +66,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
private final ISysClient sysClient;
private final BladeTenantProperties tenantProperties;
private final IRoleClient roleClient;
private final UserMapper userMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@ -610,5 +611,10 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
return null;
}
@Override
public User getUserOne(Long userId) {
return userMapper.getUserOne(userId);
}
}

Loading…
Cancel
Save