数据库运维

main
litao 3 years ago
parent 3424f6e6b1
commit 2ac5dc6bde
  1. 2
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/context/CustomSheetWriteHandler.java
  2. 106
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/controller/DataBaseController.java
  3. 10
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/DataBase.java
  4. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/entity/DataTable.java
  5. 8
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/DataTableMapper.java
  6. 52
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/mapper/DataTableMapper.xml
  7. 2
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IDataBaseService.java
  8. 6
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/IDataTableService.java
  9. 70
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataBaseServiceImpl.java
  10. 13
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataTableServiceImpl.java
  11. 74
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/vo/DataBaseVO.java
  12. 2
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java
  13. 331
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/controller/WfProcessController.java

@ -77,7 +77,7 @@ public class CustomSheetWriteHandler implements SheetWriteHandler {
if (CollectionUtils.isNotEmpty(userList)) {
List<String> userNames = new ArrayList<>();
for (User user : userList) {
userNames.add(user.getRealName());
userNames.add(user.getName());
}
CellRangeAddressList cellRangeAddressList2 = new CellRangeAddressList(1, 100, 8, 8);
DataValidationHelper helper2 = writeSheetHolder.getSheet().getDataValidationHelper();

@ -4,11 +4,13 @@ package org.springblade.plugin.operation.database.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.nacos.common.utils.CollectionUtils;
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.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;
import org.springblade.core.cache.utils.CacheUtil;
@ -30,7 +32,10 @@ import org.springblade.plugin.operation.database.excel.DatabaseExcel;
import org.springblade.plugin.operation.database.excel.UploadReturn;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.Dept;
import org.springblade.system.entity.DictBiz;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
@ -72,25 +77,32 @@ public class DataBaseController extends BladeController {
* 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入dataScope")
public R<IPage<DataTable>> list(DataTable dataTable, Query query) {
IPage<DataTable> pages = dataTableService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(dataTable));
List<DataTable> dataTableList = pages.getRecords();
public R<IPage<DataBaseVO>> list(DataBase dataBase, Query query) {
IPage<DataBaseVO> pages = dataTableService.pageVO(Condition.getPage(query), dataBase);
List<DataBaseVO> dataTableList = pages.getRecords();
if (CollectionUtils.isNotEmpty(dataTableList)) {
for (DataTable table : dataTableList) {
DataBase dataBase = dataBaseService.getById(table.getDataBaseId());
table.setDataBaseName(dataBase.getDataBaseName());
table.setDataBaseAlias(dataBase.getDataBaseAlias());
table.setDataBaseType(dataBase.getDataBaseType());
table.setDataBaseIp(dataBase.getDataBaseIp());
table.setDataBasePort(dataBase.getDataBasePort());
table.setSystemName(dataBase.getSystemName());
for (DataBaseVO table : dataTableList) {
table.setDeptName(sysClient.getDeptName(table.getDeptId()).getData());
table.setCompanyName(userClient.userInfoById(table.getCompany()).getData().getRealName());
table.setCompanyName(userClient.userInfoById(table.getCompany()).getData().getName());
}
pages.setRecords(dataTableList);
}
// IPage<DataTable> pages = dataTableService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(dataTable));
// List<DataTable> dataTableList = pages.getRecords();
// if (CollectionUtils.isNotEmpty(dataTableList)) {
// for (DataTable table : dataTableList) {
// DataBase dataBase = dataBaseService.getById(table.getDataBaseId());
// table.setDataBaseName(dataBase.getDataBaseName());
// table.setDataBaseAlias(dataBase.getDataBaseAlias());
// table.setDataBaseType(dataBase.getDataBaseType());
// table.setDataBaseIp(dataBase.getDataBaseIp());
// table.setDataBasePort(dataBase.getDataBasePort());
// table.setSystemName(dataBase.getSystemName());
// table.setDeptName(sysClient.getDeptName(dataBase.getDeptId()).getData());
// table.setCompanyName(userClient.userInfoById(dataBase.getCompany()).getData().getName());
// }
// pages.setRecords(dataTableList);
// }
return R.data(pages);
}
@ -128,28 +140,8 @@ public class DataBaseController extends BladeController {
* excel导入
*/
@PostMapping("/dataImport")
public R importUser(MultipartFile file) {
List<DatabaseExcel> excelList = ExcelUtil.read(file, DatabaseExcel.class);
if (CollectionUtils.isNotEmpty(excelList)) {
List<DataBase> dataBaseList = new ArrayList<>();
List<DataTable> dataTableList = new ArrayList<>();
excelList.forEach(item -> {
// String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData();
// User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData();
// 数据库
DataBase dataBase = BeanUtil.copy(item, DataBase.class);
dataBase.setDataBaseType(Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType())));
dataBaseList.add(dataBase);
// 数据表
DataTable dataTable = BeanUtil.copy(item, DataTable.class);
dataTableList.add(dataTable);
});
dataBaseService.saveBatch(dataBaseList);
dataTableService.saveBatch(dataTableList);
}
return R.success("操作成功");
public R dataImport(MultipartFile file) {
return R.status(dataBaseService.dataImport(file));
}
/**
@ -174,7 +166,10 @@ public class DataBaseController extends BladeController {
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, DatabaseExcel.class).registerWriteHandler(new CustomSheetWriteHandler())
.registerWriteHandler(new CustomCellWriteHandler()).sheet("模板").doWrite(excels);
download(fileName, response);
File file = new File(fileName);
file.delete();
}
/**
@ -212,7 +207,6 @@ public class DataBaseController extends BladeController {
return R.data(uploadReturn);
}
/**
* 查看文件
*/
@ -278,4 +272,42 @@ public class DataBaseController extends BladeController {
}
}
/**
* 列表数据返回
*/
@GetMapping("/listData")
public R listData() {
Map<String, Object> map = new HashMap<>();
// 数据库实例名集合
QueryWrapper<DataBase> wrapper = new QueryWrapper<>();
wrapper.select("DISTINCT data_base_name");
map.put("dataBaseNames", dataBaseService.list(wrapper));
wrapper.clear();
// 运维公司集合
wrapper.select("DISTINCT company");
List<DataBase> dataBases = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(dataBases)) {
List<User> users = new ArrayList<>();
for (DataBase dataBase : dataBases) {
User user = userClient.userInfoById(dataBase.getCompany()).getData();
users.add(user);
}
map.put("companys", users);
wrapper.clear();
}
// 部门集合
wrapper.select("DISTINCT dept_id");
List<DataBase> depts = dataBaseService.list(wrapper);
if (CollectionUtils.isNotEmpty(depts)) {
List<Dept> deptList = new ArrayList<>();
for (DataBase dataBase : depts) {
Dept dept = sysClient.getDept(dataBase.getDeptId()).getData();
deptList.add(dept);
}
map.put("depts", deptList);
}
return R.data(map);
}
}

@ -47,4 +47,14 @@ public class DataBase extends TenantEntity {
*/
private String systemName;
/**
* 管理部门id
*/
private Long deptId;
/**
* 运维公司id
*/
private Long company;
}

@ -36,21 +36,25 @@ public class DataTable extends TenantEntity {
/**
* 管理部门id
*/
@TableField(exist = false)
private Long deptId;
/**
* 管理部门
*/
@TableField(exist = false)
private String deptName;
/**
* 运维公司id
*/
@TableField(exist = false)
private Long company;
/**
* 运维公司
*/
@TableField(exist = false)
private String companyName;
/**

@ -2,7 +2,12 @@
package org.springblade.plugin.operation.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
import java.util.List;
/**
* Mapper 接口
@ -11,4 +16,7 @@ import org.springblade.plugin.operation.database.entity.DataTable;
*/
public interface DataTableMapper extends BaseMapper<DataTable> {
List<DataBaseVO> page(@Param("dataBase")DataBase dataBase, @Param("current")long current, @Param("size")long size);
long dataCount(@Param("dataBase")DataBase dataBase);
}

@ -3,4 +3,56 @@
<mapper namespace="org.springblade.plugin.operation.database.mapper.DataTableMapper">
<select id="page" resultType="org.springblade.plugin.operation.database.vo.DataBaseVO">
select
b.data_base_ip,
b.data_base_port,
b.data_base_name,
b.data_base_type,
b.data_base_alias,
b.system_name,
t.system_module_name,
b.dept_id,
b.company,
t.data_table_name,
t.data_table_alias
from t_data_base b left join t_data_table t on b.id = t.data_base_id
where t.is_deleted = 0
<if test="dataBase.getDataBaseName!=null and dataBase.getDataBaseName != ''">
and b.data_base_name = #{dataBase.dataBaseName}
</if>
<if test="dataBase.getDataBaseType!=null">
and b.data_base_type = #{dataBase.dataBaseType}
</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_data_base b left join t_data_table t on b.id = t.data_base_id
where t.is_deleted = 0
<if test="dataBase.getDataBaseName!=null and dataBase.getDataBaseName != ''">
and b.data_base_name = #{dataBase.dataBaseName}
</if>
<if test="dataBase.getDataBaseType!=null">
and b.data_base_type = #{dataBase.dataBaseType}
</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>

@ -3,6 +3,7 @@ package org.springblade.plugin.operation.database.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springframework.web.multipart.MultipartFile;
/**
* 服务类
@ -11,4 +12,5 @@ import org.springblade.plugin.operation.database.entity.DataBase;
*/
public interface IDataBaseService extends BaseService<DataBase> {
boolean dataImport(MultipartFile file);
}

@ -1,14 +1,20 @@
package org.springblade.plugin.operation.database.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
/**
* 服务类
*
*
* @author BladeX
*/
public interface IDataTableService extends BaseService<DataTable> {
IPage<DataBaseVO> pageVO(IPage<DataBaseVO> page, DataBase dataBase);
}

@ -1,11 +1,30 @@
package org.springblade.plugin.operation.database.service.impl;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.excel.DatabaseExcel;
import org.springblade.plugin.operation.database.mapper.DataBaseMapper;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
/**
* 服务实现类
@ -13,6 +32,57 @@ import org.springframework.stereotype.Service;
* @author BladeX
*/
@Service
@AllArgsConstructor
public class DataBaseServiceImpl extends BaseServiceImpl<DataBaseMapper, DataBase> implements IDataBaseService {
private final IDataTableService dataTableService;
private final ISysClient sysClient;
private final IUserClient userClient;
@Override
public boolean dataImport(MultipartFile file) {
List<DatabaseExcel> excelList = ExcelUtil.read(file, DatabaseExcel.class);
if (CollectionUtils.isNotEmpty(excelList)) {
List<DataTable> dataTableList = new ArrayList<>();
excelList.forEach(item -> {
Integer databaseType = Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType()));
LambdaQueryWrapper<DataBase> wrapper = new LambdaQueryWrapper<>();
wrapper.select(DataBase::getId);
wrapper.eq(DataBase::getDataBaseName, item.getDataBaseName());
wrapper.eq(DataBase::getDataBaseType, databaseType);
DataBase base = getOne(wrapper);
if (base == null) {
// 数据库
DataBase dataBase = BeanUtil.copy(item, DataBase.class);
String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData();
User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData();
dataBase.setDataBaseType(databaseType);
dataBase.setDeptId(Long.parseLong(data));
dataBase.setCompany(user.getId());
save(dataBase);
// 数据表
DataTable dataTable = BeanUtil.copy(item, DataTable.class);
dataTable.setDataBaseId(dataBase.getId());
dataTableList.add(dataTable);
} else {
LambdaQueryWrapper<DataTable> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataTable::getDataBaseId, base.getId());
queryWrapper.eq(DataTable::getDataTableName, item.getDataTableName());
int count = dataTableService.count(queryWrapper);
if (count <= 0) {
// 数据表
DataTable dataTable = BeanUtil.copy(item, DataTable.class);
dataTable.setDataBaseId(base.getId());
dataTableList.add(dataTable);
}
}
});
return dataTableService.saveBatch(dataTableList);
}
return false;
}
}

@ -2,13 +2,13 @@
package org.springblade.plugin.operation.database.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.plugin.operation.database.entity.DataBase;
import org.springblade.plugin.operation.database.entity.DataTable;
import org.springblade.plugin.operation.database.mapper.DataBaseMapper;
import org.springblade.plugin.operation.database.mapper.DataTableMapper;
import org.springblade.plugin.operation.database.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.database.vo.DataBaseVO;
import org.springframework.stereotype.Service;
/**
@ -17,6 +17,15 @@ import org.springframework.stereotype.Service;
* @author BladeX
*/
@Service
@AllArgsConstructor
public class DataTableServiceImpl extends BaseServiceImpl<DataTableMapper, DataTable> implements IDataTableService {
private final DataTableMapper dataTableMapper;
@Override
public IPage<DataBaseVO> pageVO(IPage<DataBaseVO> page, DataBase dataBase) {
page.setTotal(dataTableMapper.dataCount(dataBase));
return page.setRecords(dataTableMapper.page(dataBase, page.getCurrent(), page.getSize()));
}
}

@ -0,0 +1,74 @@
package org.springblade.plugin.operation.database.vo;
import lombok.Data;
@Data
public class DataBaseVO {
private static final long serialVersionUID = 1L;
/**
* 模块名称
*/
private String systemModuleName;
/**
* 表名称
*/
private String dataTableName;
/**
* 中文别名
*/
private String dataTableAlias;
/**
* 管理部门
*/
private String deptName;
/**
* 运维公司
*/
private String companyName;
/**
* 管理部门id
*/
private Long deptId;
/**
* 运维公司id
*/
private Long company;
/**
* 数据库名称
*/
private String dataBaseName;
/**
* 数据库中文别名
*/
private String dataBaseAlias;
/**
* 数据库类型
*/
private Integer dataBaseType;
/**
* 数据库ip
*/
private String dataBaseIp;
/**
* 数据库端口
*/
private String dataBasePort;
/**
* 系统名称
*/
private String systemName;
}

@ -132,7 +132,7 @@ public class ProjectInfoController extends BladeController {
for (DataBase dataBase : dataBaseList) {
TaskAndDataBase taskAndDataBase = new TaskAndDataBase();
taskAndDataBase.setId(dataBase.getId());
taskAndDataBase.setName(dataBase.getSystemName());
taskAndDataBase.setName(dataBase.getDataBaseName() + "(" + dataBase.getDataBaseIp() + ")");
taskAndDataBase.setType(2);
list.add(taskAndDataBase);
}

@ -9,13 +9,16 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import liquibase.pro.packaged.S;
import lombok.AllArgsConstructor;
import org.flowable.engine.HistoryService;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngines;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.plugin.workflow.core.constant.WfProcessConstant;
import org.springblade.plugin.workflow.core.utils.ObjectUtil;
import org.springblade.plugin.workflow.core.utils.WfTaskUtil;
@ -51,6 +54,7 @@ public class WfProcessController {
private final IWfCopyService copyService;
// private final LimsInvoked limsInvoked;
private final HistoryService historyService;
@GetMapping("processList")
@ -132,7 +136,9 @@ public class WfProcessController {
@GetMapping("/getOneTodo")
public R<Map<String, String>> getOneTodo(String processInstanceId, String userCode) throws Exception {
if (processInstanceId == null || userCode == null) { throw new Exception("必填参数不能为空"); }
if (processInstanceId == null || userCode == null) {
throw new Exception("必填参数不能为空");
}
Task task = processService.selectProcessInstanceId(processInstanceId, userCode);
Map<String, String> map = new HashMap<>(9);
map.put("id", task.getId());
@ -235,305 +241,56 @@ public class WfProcessController {
@ApiImplicitParam(name = "processInsId", value = "流程实例id", required = true),
})
public R<Map<String, Object>> detail(String taskId, String processInsId) throws ExecutionException, InterruptedException {
if (ObjectUtil.isAnyEmpty(taskId, processInsId)) { return R.fail("参数错误"); }
Future<Map<String, Object>> formFuture = formService.getFormByTaskId(taskId);
Future<List<WfButton>> buttonFuture = buttonService.getButtonByTaskId(taskId);
Future<WfProcess> processFuture = processService.detail(taskId, WfTaskUtil.getTaskUser(), WfTaskUtil.getCandidateGroup());
Future<List<WfProcess>> flowFuture = processService.historyFlowList(processInsId, null, null);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
Map<String, Object> formMap = formFuture.get();
String taskDefinitionKey = processFuture.get().getTaskDefinitionKey();
// if ("drawTaskBlueprint".equals(taskDefinitionKey)) {
// Map<String, Object> allAppFormMap = JSON.parseObject((String)formMap.get("allAppForm"), Map.class);
// List<Map<String, Object>> groupList = (List<Map<String, Object>>) allAppFormMap.get("group");
// List<Map<String, Object>> newGroupList = new ArrayList<>(groupList.size());
// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// TaskService taskService = processEngine.getTaskService();
// Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// if (task != null) {
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columnList = (List<Map<String, Object>>) columnsMap.get("column");
// for (Map<String, Object> columnMap : columnList) {
// String prop = (String) columnMap.get("prop");
// if ("experieNum11".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum12".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum13".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum21".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum22".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum23".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum31".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum32".equals(prop)) { columnMap.put("value", "01923"); }
// if ("experieNum33".equals(prop)) { columnMap.put("value", "01923"); }
// }
// columnsMap.put("column", columnList);
// newGroupList.add(columnsMap);
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// }
// TODO 有空把代码抽一下.....
if ("branchExperiment1".equals(taskDefinitionKey) || "branchExperiment2".equals(taskDefinitionKey) || "branchExperiment3".equals(taskDefinitionKey)
|| "doExperimentBy11".equals(taskDefinitionKey) || "doExperimentBy12".equals(taskDefinitionKey) || "doExperimentBy13".equals(taskDefinitionKey)
|| "doExperimentBy21".equals(taskDefinitionKey) || "doExperimentBy22".equals(taskDefinitionKey) || "doExperimentBy23".equals(taskDefinitionKey)
|| "doExperimentBy31".equals(taskDefinitionKey) || "doExperimentBy32".equals(taskDefinitionKey) || "doExperimentBy33".equals(taskDefinitionKey)) {
Map<String, Object> allAppFormMap = JSON.parseObject((String)formMap.get("allAppForm"), Map.class);
List<Map<String, Object>> groupList = (List<Map<String, Object>>) allAppFormMap.get("group");
List<Map<String, Object>> newGroupList = new ArrayList<>(groupList.size());
if (ObjectUtil.isAnyEmpty(processInsId)) {
return R.fail("参数错误");
}
// 科室一组长分配任务
// if ("branchExperiment1".equals(taskDefinitionKey)) {
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columns = (List<Map<String, Object>>) columnsMap.get("column");
// List<Examine> examineList = limsInvoked.getExamineListByProcessInsIdAndTaskId(processInsId, 1L);
// for (Map<String, Object> columnMap : columns) {
// if (examineList != null && examineList.size() > 0) {
// Examine examine1 = new Examine();
// Examine examine2 = new Examine();
// Examine examine3 = new Examine();
// for (Examine examine : examineList) {
// if (examine.getExamineOrder().equals(1)) { examine1 = examine; }
// if (examine.getExamineOrder().equals(2)) { examine2 = examine; }
// if (examine.getExamineOrder().equals(3)) { examine3 = examine; }
// }
// String prop = (String) columnMap.get("prop");
// if ("simpleName1".equals(prop)) { columnMap.put("value", examine1.getSimpleName()); }
// if ("simpleCount1".equals(prop)) { columnMap.put("value", examine1.getSimpleCount()); }
// if ("experieNum1".equals(prop)) { columnMap.put("value", examine1.getExperieNum()); }
// if ("examineItem1".equals(prop)) { columnMap.put("value", examine1.getExamineItemId()); }
// if ("examineWay1".equals(prop)) { columnMap.put("value", examine1.getExamineWayId()); }
// if ("examineBasis1".equals(prop)) { columnMap.put("value", examine1.getExamineBasisId()); }
// if ("demandCompletionTime1".equals(prop)) { columnMap.put("value", sdf.format(examine1.getDemandCompletionTime())); }
//
// if ("simpleName2".equals(prop)) { columnMap.put("value", examine2.getSimpleName()); }
// if ("simpleCount2".equals(prop)) { columnMap.put("value", examine2.getSimpleCount()); }
// if ("experieNum2".equals(prop)) { columnMap.put("value", examine2.getExperieNum()); }
// if ("examineItem2".equals(prop)) { columnMap.put("value", examine2.getExamineItemId()); }
// if ("examineWay2".equals(prop)) { columnMap.put("value", examine2.getExamineWayId()); }
// if ("examineBasis2".equals(prop)) { columnMap.put("value", examine2.getExamineBasisId()); }
// if ("demandCompletionTime2".equals(prop)) { columnMap.put("value", sdf.format(examine2.getDemandCompletionTime())); }
//
// if ("simpleName3".equals(prop)) { columnMap.put("value", examine3.getSimpleName()); }
// if ("simpleCount3".equals(prop)) { columnMap.put("value", examine3.getSimpleCount()); }
// if ("experieNum3".equals(prop)) { columnMap.put("value", examine3.getExperieNum()); }
// if ("examineItem3".equals(prop)) { columnMap.put("value", examine3.getExamineItemId()); }
// if ("examineWay3".equals(prop)) { columnMap.put("value", examine3.getExamineWayId()); }
// if ("examineBasis3".equals(prop)) { columnMap.put("value", examine3.getExamineBasisId()); }
// if ("demandCompletionTime3".equals(prop)) { columnMap.put("value", sdf.format(examine3.getDemandCompletionTime())); }
// }
// }
// columnsMap.put("column", columns);
// newGroupList.add(columnsMap);
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// 科室二组长分配任务
// if ("branchExperiment2".equals(taskDefinitionKey)) {
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columns = (List<Map<String, Object>>) columnsMap.get("column");
// List<Examine> examineList = limsInvoked.getExamineListByProcessInsIdAndTaskId(processInsId, 2L);
// for (Map<String, Object> columnMap : columns) {
// if (examineList != null && examineList.size() > 0) {
// Examine examine1 = new Examine();
// Examine examine2 = new Examine();
// Examine examine3 = new Examine();
// for (Examine examine : examineList) {
// if (examine.getExamineOrder().equals(1)) { examine1 = examine; }
// if (examine.getExamineOrder().equals(2)) { examine2 = examine; }
// if (examine.getExamineOrder().equals(3)) { examine3 = examine; }
// }
// String prop = (String) columnMap.get("prop");
// if ("simpleName1".equals(prop)) { columnMap.put("value", examine1.getSimpleName()); }
// if ("simpleCount1".equals(prop)) { columnMap.put("value", examine1.getSimpleCount()); }
// if ("experieNum1".equals(prop)) { columnMap.put("value", examine1.getExperieNum()); }
// if ("examineItem1".equals(prop)) { columnMap.put("value", examine1.getExamineItemId()); }
// if ("examineWay1".equals(prop)) { columnMap.put("value", examine1.getExamineWayId()); }
// if ("examineBasis1".equals(prop)) { columnMap.put("value", examine1.getExamineBasisId()); }
// if ("demandCompletionTime1".equals(prop)) { columnMap.put("value", sdf.format(examine1.getDemandCompletionTime())); }
//
// if ("simpleName2".equals(prop)) { columnMap.put("value", examine2.getSimpleName()); }
// if ("simpleCount2".equals(prop)) { columnMap.put("value", examine2.getSimpleCount()); }
// if ("experieNum2".equals(prop)) { columnMap.put("value", examine2.getExperieNum()); }
// if ("examineItem2".equals(prop)) { columnMap.put("value", examine2.getExamineItemId()); }
// if ("examineWay2".equals(prop)) { columnMap.put("value", examine2.getExamineWayId()); }
// if ("examineBasis2".equals(prop)) { columnMap.put("value", examine2.getExamineBasisId()); }
// if ("demandCompletionTime2".equals(prop)) { columnMap.put("value", sdf.format(examine2.getDemandCompletionTime())); }
//
// if ("simpleName3".equals(prop)) { columnMap.put("value", examine3.getSimpleName()); }
// if ("simpleCount3".equals(prop)) { columnMap.put("value", examine3.getSimpleCount()); }
// if ("experieNum3".equals(prop)) { columnMap.put("value", examine3.getExperieNum()); }
// if ("examineItem3".equals(prop)) { columnMap.put("value", examine3.getExamineItemId()); }
// if ("examineWay3".equals(prop)) { columnMap.put("value", examine3.getExamineWayId()); }
// if ("examineBasis3".equals(prop)) { columnMap.put("value", examine3.getExamineBasisId()); }
// if ("demandCompletionTime3".equals(prop)) { columnMap.put("value", sdf.format(examine3.getDemandCompletionTime())); }
// }
// }
// columnsMap.put("column", columns);
// newGroupList.add(columnsMap);
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// 科室三组长分配任务
// if ("branchExperiment3".equals(taskDefinitionKey)) {
// List<Examine> examineList = limsInvoked.getExamineListByProcessInsIdAndTaskId(processInsId, 3L);
// if (examineList != null && examineList.size() > 0) {
// Examine examine1 = new Examine();
// Examine examine2 = new Examine();
// Examine examine3 = new Examine();
// for (Examine examine : examineList) {
// if (examine.getExamineOrder().equals(1)) { examine1 = examine; }
// if (examine.getExamineOrder().equals(2)) { examine2 = examine; }
// if (examine.getExamineOrder().equals(3)) { examine3 = examine; }
// }
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columns = (List<Map<String, Object>>) columnsMap.get("column");
// for (Map<String, Object> columnMap : columns) {
// String prop = (String) columnMap.get("prop");
// if ("simpleName1".equals(prop)) { columnMap.put("value", examine1.getSimpleName()); }
// if ("simpleCount1".equals(prop)) { columnMap.put("value", examine1.getSimpleCount()); }
// if ("experieNum1".equals(prop)) { columnMap.put("value", examine1.getExperieNum()); }
// if ("examineItem1".equals(prop)) { columnMap.put("value", examine1.getExamineItemId()); }
// if ("examineWay1".equals(prop)) { columnMap.put("value", examine1.getExamineWayId()); }
// if ("examineBasis1".equals(prop)) { columnMap.put("value", examine1.getExamineBasisId()); }
// if ("demandCompletionTime1".equals(prop)) { columnMap.put("value", sdf.format(examine1.getDemandCompletionTime())); }
// Future<Map<String, Object>> formFuture = formService.getFormByTaskId(taskId);
// Future<List<WfButton>> buttonFuture = buttonService.getButtonByTaskId(taskId);
// Future<WfProcess> processFuture = processService.detail(taskId, WfTaskUtil.getTaskUser(), WfTaskUtil.getCandidateGroup());
// Future<List<WfProcess>> flowFuture = processService.historyFlowList(processInsId, null, null);
// SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
//
// if ("simpleName2".equals(prop)) { columnMap.put("value", examine2.getSimpleName()); }
// if ("simpleCount2".equals(prop)) { columnMap.put("value", examine2.getSimpleCount()); }
// if ("experieNum2".equals(prop)) { columnMap.put("value", examine2.getExperieNum()); }
// if ("examineItem2".equals(prop)) { columnMap.put("value", examine2.getExamineItemId()); }
// if ("examineWay2".equals(prop)) { columnMap.put("value", examine2.getExamineWayId()); }
// if ("examineBasis2".equals(prop)) { columnMap.put("value", examine2.getExamineBasisId()); }
// if ("demandCompletionTime2".equals(prop)) { columnMap.put("value", sdf.format(examine2.getDemandCompletionTime())); }
// Map<String, Object> formMap = formFuture.get();
// String taskDefinitionKey = processFuture.get().getTaskDefinitionKey();
//
// if ("simpleName3".equals(prop)) { columnMap.put("value", examine3.getSimpleName()); }
// if ("simpleCount3".equals(prop)) { columnMap.put("value", examine3.getSimpleCount()); }
// if ("experieNum3".equals(prop)) { columnMap.put("value", examine3.getExperieNum()); }
// if ("examineItem3".equals(prop)) { columnMap.put("value", examine3.getExamineItemId()); }
// if ("examineWay3".equals(prop)) { columnMap.put("value", examine3.getExamineWayId()); }
// if ("examineBasis3".equals(prop)) { columnMap.put("value", examine3.getExamineBasisId()); }
// if ("demandCompletionTime3".equals(prop)) { columnMap.put("value", sdf.format(examine3.getDemandCompletionTime())); }
// if ("branchExperiment1".equals(taskDefinitionKey) || "branchExperiment2".equals(taskDefinitionKey) || "branchExperiment3".equals(taskDefinitionKey)
// || "doExperimentBy11".equals(taskDefinitionKey) || "doExperimentBy12".equals(taskDefinitionKey) || "doExperimentBy13".equals(taskDefinitionKey)
// || "doExperimentBy21".equals(taskDefinitionKey) || "doExperimentBy22".equals(taskDefinitionKey) || "doExperimentBy23".equals(taskDefinitionKey)
// || "doExperimentBy31".equals(taskDefinitionKey) || "doExperimentBy32".equals(taskDefinitionKey) || "doExperimentBy33".equals(taskDefinitionKey)) {
// Map<String, Object> allAppFormMap = JSON.parseObject((String) formMap.get("allAppForm"), Map.class);
// List<Map<String, Object>> groupList = (List<Map<String, Object>>) allAppFormMap.get("group");
// List<Map<String, Object>> newGroupList = new ArrayList<>(groupList.size());
//
// }
// columnsMap.put("column", columns);
// newGroupList.add(columnsMap);
// }
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// 科室一的实验员做试验
// if ("doExperimentBy11".equals(taskDefinitionKey) || "doExperimentBy12".equals(taskDefinitionKey) || "doExperimentBy13".equals(taskDefinitionKey)) {
// // 拿当前检验员
// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// TaskService taskService = processEngine.getTaskService();
// Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// if (task != null) {
// String assignee = task.getAssignee();
// // 拿当前任务书下、这个检验员对应的检验对象
// Examine resultExamine = new Examine();
// List<Examine> examineList = limsInvoked.getExamineListByProcessInsIdAndTaskId(processInsId, 1L);
// for (Examine examine : examineList) { if (assignee.equals(examine.getExamineBy())) { resultExamine = examine; } }
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columnList = (List<Map<String, Object>>) columnsMap.get("column");
// for (Map<String, Object> columnMap : columnList) {
// String prop = (String) columnMap.get("prop");
// if ("simpleName".equals(prop)) { columnMap.put("value", resultExamine.getSimpleName()); }
// if ("simpleCount".equals(prop)) { columnMap.put("value", resultExamine.getSimpleCount()); }
// if ("experieNum".equals(prop)) { columnMap.put("value", resultExamine.getExperieNum()); }
// if ("examineItemId".equals(prop)) { columnMap.put("value", resultExamine.getExamineItemId()); }
// if ("examineWayId".equals(prop)) { columnMap.put("value", resultExamine.getExamineWayId()); }
// if ("examineBasisId".equals(prop)) { columnMap.put("value", resultExamine.getExamineBasisId()); }
// // if ("examineBasisContent".equals(prop)) { columnMap.put("value", resultExamine.getExamineBasisId()); }
// }
// columnsMap.put("column", columnList);
// newGroupList.add(columnsMap);
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// }
// 科室二实验员做试验
// if ("doExperimentBy21".equals(taskDefinitionKey) || "doExperimentBy22".equals(taskDefinitionKey) || "doExperimentBy23".equals(taskDefinitionKey)) {
// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// TaskService taskService = processEngine.getTaskService();
// Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// if (task != null) {
// String assignee = task.getAssignee();
// Examine resultExamine = new Examine();
// List<Examine> examineList = limsInvoked.getExamineListByProcessInsIdAndTaskId(processInsId, 2L);
// for (Examine examine : examineList) { if (assignee.equals(examine.getExamineBy())) { resultExamine = examine; } }
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columnList = (List<Map<String, Object>>) columnsMap.get("column");
// for (Map<String, Object> columnMap : columnList) {
// String prop = (String) columnMap.get("prop");
// if ("simpleName".equals(prop)) { columnMap.put("value", resultExamine.getSimpleName()); }
// if ("simpleCount".equals(prop)) { columnMap.put("value", resultExamine.getSimpleCount()); }
// if ("experieNum".equals(prop)) { columnMap.put("value", resultExamine.getExperieNum()); }
// if ("examineItemId".equals(prop)) { columnMap.put("value", resultExamine.getExamineItemId()); }
// if ("examineWayId".equals(prop)) { columnMap.put("value", resultExamine.getExamineWayId()); }
// if ("examineBasisId".equals(prop)) { columnMap.put("value", resultExamine.getExamineBasisId()); }
// // if ("examineBasisContent".equals(prop)) { columnMap.put("value", resultExamine.getExamineBasisId()); }
// }
// columnsMap.put("column", columnList);
// newGroupList.add(columnsMap);
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// }
// 科室三实验员做试验
// if ("doExperimentBy31".equals(taskDefinitionKey) || "doExperimentBy32".equals(taskDefinitionKey) || "doExperimentBy33".equals(taskDefinitionKey)) {
// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// TaskService taskService = processEngine.getTaskService();
// Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// if (task != null) {
// String assignee = task.getAssignee();
// Examine resultExamine = new Examine();
// List<Examine> examineList = limsInvoked.getExamineListByProcessInsIdAndTaskId(processInsId, 3L);
// for (Examine examine : examineList) { if (assignee.equals(examine.getExamineBy())) { resultExamine = examine; } }
// for (Map<String, Object> columnsMap : groupList) {
// List<Map<String, Object>> columnList = (List<Map<String, Object>>) columnsMap.get("column");
// for (Map<String, Object> columnMap : columnList) {
// String prop = (String) columnMap.get("prop");
// if ("simpleName".equals(prop)) { columnMap.put("value", resultExamine.getSimpleName()); }
// if ("simpleCount".equals(prop)) { columnMap.put("value", resultExamine.getSimpleCount()); }
// if ("experieNum".equals(prop)) { columnMap.put("value", resultExamine.getExperieNum()); }
// if ("examineItemId".equals(prop)) { columnMap.put("value", resultExamine.getExamineItemId()); }
// if ("examineWayId".equals(prop)) { columnMap.put("value", resultExamine.getExamineWayId()); }
// if ("examineBasisId".equals(prop)) { columnMap.put("value", resultExamine.getExamineBasisId()); }
// // if ("examineBasisContent".equals(prop)) { columnMap.put("value", resultExamine.getExamineBasisId()); }
// }
// columnsMap.put("column", columnList);
// newGroupList.add(columnsMap);
// }
// allAppFormMap.put("group", newGroupList);
// formMap.put("allAppForm", JSON.toJSONString(allAppFormMap));
// formMap.put("allForm", transToAlternativeJson(JSON.toJSONString(allAppFormMap)));
// }
// }
if (StringUtil.isBlank(taskId)) { // 不传taskId的情况下,取最后一个创建的任务
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInsId)
.orderByHistoricTaskInstanceStartTime()
.desc()
.list();
if (list.isEmpty()) {
return R.fail("查询不到任务详情");
}
taskId = list.get(0).getId();
}
Map<String, Object> result = new HashMap<>(4);
result.put("form", formMap);
Future<WfProcess> processFuture = processService.detail(taskId, WfTaskUtil.getTaskUser(), WfTaskUtil.getCandidateGroup());
Future<Map<String, Object>> formFuture = formService.getFormByTaskId(taskId);
Future<List<WfProcess>> flowFuture = processService.historyFlowList(processInsId, null, null);
Future<List<WfButton>> buttonFuture = buttonService.getButtonByTaskId(taskId);
Map<String, Object> result = new HashMap<>();
result.put("process", processFuture.get());
result.put("form", formFuture.get());
result.put("flow", flowFuture.get());
result.put("button", buttonFuture.get());
result.put("process", processFuture.get());
return R.data(result);
}
/**
* 转换为前端可解析的对象结构数据
*
* @param str
* @return
*/

Loading…
Cancel
Save