Browse Source

OA已办工作

master
dimengzhe 3 months ago
parent
commit
9fbe145e55
  1. 4
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java
  2. 4
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java
  3. 6
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java
  4. 5
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java
  5. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  6. 5
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java
  7. 3
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml
  8. 130
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  9. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java
  10. 4
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java
  11. 5
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java
  12. 122
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java

4
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java

@ -50,7 +50,7 @@ public class FlowableFallback implements FlowableFeign {
return null;
}
@Override
/* @Override
public ResultBean<UpdateFlowFieldVo> startProcess(BusinessVariables dto) {
return null;
}
@ -60,7 +60,7 @@ public class FlowableFallback implements FlowableFeign {
public ResultBean handleProsess(BusinessVariables bv) {
return null;
}
*/
@Override
public ResultBean revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl ) {
return null;

4
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java

@ -97,7 +97,7 @@ public interface FlowableFeign {
@ResponseBody
ResultBean<UserAndOrgPath> getNextNodeUserSidsOfSubmit(@RequestBody BusinessVariables bv);
@ApiOperation(value = "启动流程")
/* @ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@ -105,7 +105,7 @@ public interface FlowableFeign {
@ApiOperation(value = "处理流程")
@PostMapping(value = "/handleProsess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv);
ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv);*/
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")

6
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java

@ -85,6 +85,12 @@ public interface FlowTaskFeign {
ResultBean<Page<FlowTaskDto>> businessDoneListForApp(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid")String userSid,
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery);
@ApiOperation(value = "业务系统查询已办任务列表_移动端")
@PostMapping("/businessDoneListForOAApp/{userSid}")
@ResponseBody
ResultBean<Page<FlowTaskDto>> businessDoneListForOAApp(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid")String userSid,
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery);
@ApiOperation(value = "流程历史流转记录")
@PostMapping(value = "/flowRecord")
@ResponseBody

5
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java

@ -77,6 +77,11 @@ public class FlowTaskFeignFallBack implements FlowTaskFeign {
return null;
}
@Override
public ResultBean<Page<FlowTaskDto>> businessDoneListForOAApp(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) {
return null;
}
@Override
public ResultBean flowRecord(RecordQuery recordQuery) {
return null;

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -287,7 +287,7 @@ public class FlowableRest implements FlowableFeign {
}
}
@Override
// @Override
public ResultBean<UpdateFlowFieldVo> startProcess(BusinessVariables dto) {
log.info("startProcess.dto:{}", dto);
ResultBean rb = ResultBean.fireFail();
@ -331,7 +331,7 @@ public class FlowableRest implements FlowableFeign {
Logger log = LoggerFactory.getLogger(FlowableRest.class);
@Override
// @Override
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables dto) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = handleProsess(dto, true);

5
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java

@ -143,6 +143,11 @@ public class FlowTaskController implements FlowTaskFeign {
return flowTaskService.businessDoneListNewForApp(userSid, taskQueryPagerQuery);
}
@Override
public ResultBean<Page<FlowTaskDto>> businessDoneListForOAApp(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) {
return flowTaskService.businessDoneListNewForOAApp(userSid, taskQueryPagerQuery);
}
@Override
public ResultBean flowRecord(RecordQuery recordQuery) {
String deployId = recordQuery.getDeployId();

3
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml

@ -165,6 +165,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="startUserSid != null and startUserSid != ''">
and A0.NAME_ = 'INITIATOR' and A0.TEXT_ LIKE concat('%',#{startUserSid},'%')
</if>
<if test="category != null and category != ''">
and arpd.CATEGORY_ LIKE concat('%',#{category},'%')
</if>
</where>
) flow
GROUP BY flow.PROC_INST_ID_

130
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -996,6 +996,129 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
return rb.success().setData(page);
}
public ResultBean<Page<FlowTaskDto>> businessFinishedListForOAApp(String userSid, List<BusinessTaskParam> params, Integer pageNum, Integer pageSize) {
Page<FlowTaskDto> page = new Page<>();
Map<String, Object> paraMap = new HashMap<>();
String names = "";
List<Map<String, Object>> ll = new ArrayList<>();
for (BusinessTaskParam btq : params) {
paraMap.put(btq.getField(), btq.getValue());
Map<String, Object> mapss = new HashMap<>();
if (btq.getSqlOperationSymbol().equals(SQLOperationSymbol.EQUAL)) {
mapss.put("symbol", "=");
mapss.put("value", btq.getValue());
mapss.put("filed", btq.getField());
}
ll.add(mapss);
}
paraMap.put("category","OA");
paraMap.put("userSid", userSid);
paraMap.put("list", ll);
paraMap.put("page", (pageNum - 1) * pageSize);
paraMap.put("size", pageSize);
List<Map<String, Object>> maps = baseMapper.finishedList1(paraMap);
int count = baseMapper.finishedListCount(paraMap);
List<FlowTaskDto> hisTaskList = new ArrayList();
for (Map<String, Object> histTask : maps) {
FlowTaskDto flowTask = new FlowTaskDto();
// 当前流程信息
flowTask.setTaskId(histTask.get("ID_").toString());
// 审批人员信息
Timestamp start_time_ = (Timestamp) histTask.get("START_TIME_");
Timestamp processCreateTime = (Timestamp) histTask.get("processCreateTime");
long time = start_time_.getTime();
long processCreateTime1 = processCreateTime.getTime();
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setProcessCreateTime(new Date(processCreateTime1));
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
flowTask.setTaskDefKey(histTask.get("taskDefKey") == null ? "" : histTask.get("taskDefKey").toString());
flowTask.setTaskName(histTask.get("NAME_") == null ? "" : histTask.get("NAME_").toString());
flowTask.setDeployId(histTask.get("DEPLOYMENT_ID_") == null ? "" : histTask.get("DEPLOYMENT_ID_").toString());
flowTask.setProcDefName(histTask.get("PROC_DEF_NAME_") == null ? "" : histTask.get("PROC_DEF_NAME_").toString());
flowTask.setFlowableName(histTask.get("PROC_DEF_NAME_") == null ? "" : histTask.get("PROC_DEF_NAME_").toString());
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().taskId(flowTask.getTaskId()).singleResult();
flowTask.setProcessVariables(historicTaskInstance.getProcessVariables());
Object end_act_id = histTask.get("end_act_id_");
if (end_act_id != null) {
flowTask.setEndActId((String) end_act_id);
}
Object end_time = histTask.get("END_TIME_");
if (end_time != null) {
Timestamp end_time_t = (Timestamp) end_time;
long end_time_t_l = end_time_t.getTime();
flowTask.setEndTime(new Date(end_time_t_l));
}
flowTask.setProcessVariables(historicTaskInstance.getProcessVariables());
ResultBean<List<SysProUrlVo>> listResultBean = sysProUrlService.selectUrlByKey(flowTask.getProcDefId(), flowTask.getTaskDefKey(), "2", "2");
if (listResultBean.getData() != null && listResultBean.getData().size() > 0) {
flowTask.setSysProUrlVo(listResultBean.getData().get(0));
}
//发起人部门
String createOrgPath = ConstantUtils.getString(flowTask.getProcessVariables(), "createOrgPath", "");
String ogrName = "";
if (StringUtils.isNotBlank(createOrgPath)) {
List<String> stringList = Arrays.asList(createOrgPath.split("/"));
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(stringList.get(stringList.size() - 1));
if (sysOrganizationVoResultBean.getData() != null) {
if (StringUtils.isNotBlank(sysOrganizationVoResultBean.getData().getPsid())) {
ResultBean<SysOrganizationVo> sysOrganizationVoResultBeanP = sysOrganizationFeign.fetchBySid(sysOrganizationVoResultBean.getData().getPsid());
if (sysOrganizationVoResultBeanP.getData() != null) {
ogrName = sysOrganizationVoResultBeanP.getData().getName();
flowTask.setStartDeptName(ogrName + "-" + sysOrganizationVoResultBean.getData().getName());
}
} else {
flowTask.setStartDeptName(sysOrganizationVoResultBean.getData().getName());
}
}
} else {
ResultBean<String> pathSidByUserSid = sysStaffOrgFeign.getPathSidByUserSid(sysUserVoResultBean.getData().getSid());
if (pathSidByUserSid.getData() != null) {
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(pathSidByUserSid.getData());
if (sysOrganizationVoResultBean.getData() != null) {
ogrName = sysOrganizationVoResultBean.getData().getName();
flowTask.setStartDeptName(ogrName + "-" + sysUserVoResultBean.getData().getOrganizationName());
} else {
flowTask.setStartDeptName(sysUserVoResultBean.getData().getOrganizationName());
}
}
}
if (flowTask.getProcessVariables().containsKey("orderNames")) {
flowTask.setProcDefName(flowTask.getProcessVariables().get("orderNames").toString());
}
hisTaskList.add(flowTask);
}
List<FlowTaskDto> userHisTaskList = Optional.ofNullable(hisTaskList).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FlowTaskDto.class)).collect(Collectors.toList());
List<FlowTaskDto> namesHisTaskList = Optional.ofNullable(hisTaskList).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FlowTaskDto.class)).collect(Collectors.toList());
page.setTotal(count);
page.setRecords(hisTaskList);
ResultBean<Page<FlowTaskDto>> rb = new ResultBean<Page<FlowTaskDto>>();
return rb.success().setData(page);
}
/**
* 完成任务
*
@ -1913,6 +2036,13 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
return businessFinishedListForApp(userSid, fields, current, size);
}
public ResultBean<Page<FlowTaskDto>> businessDoneListNewForOAApp(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) {
int size = Integer.valueOf(taskQueryPagerQuery.getSize() + "");
int current = Integer.valueOf(taskQueryPagerQuery.getCurrent() + "");
List<BusinessTaskParam> fields = taskQueryPagerQuery.getParams().getFields();
return businessFinishedListForOAApp(userSid, fields, current, size);
}
public ResultBean stopProcessNew(String userSid, FlowTaskVo flowTaskVo) {
stopProcess(userSid, flowTaskVo);
return ResultBean.fireSuccess();

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java

@ -113,5 +113,10 @@ public class FlowableFallback implements FlowableFeign{
return null;
}
@Override
public ResultBean<PagerVo<FlowTaskFinishVo>> finishedOaApp(PagerQuery<FlowTaskDoQuery> pagerQuery) {
return null;
}
}

4
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java

@ -231,5 +231,9 @@ public interface FlowableFeign {
@PostMapping("/finishedApp")
ResultBean<PagerVo<FlowTaskFinishVo>> finishApp(@RequestBody PagerQuery<FlowTaskDoQuery> pagerQuery);
@ApiOperation(value = "移动端OA已办列表")
@PostMapping("/finishedOaApp")
ResultBean<PagerVo<FlowTaskFinishVo>> finishedOaApp(@RequestBody PagerQuery<FlowTaskDoQuery> pagerQuery);
}

5
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java

@ -368,4 +368,9 @@ public class FlowableRest implements FlowableFeign {
public ResultBean<PagerVo<FlowTaskFinishVo>> finishApp(PagerQuery<FlowTaskDoQuery> pagerQuery) {
return flowableService.finishApp(pagerQuery);
}
@Override
public ResultBean<PagerVo<FlowTaskFinishVo>> finishedOaApp(PagerQuery<FlowTaskDoQuery> pagerQuery) {
return flowableService.finishOaApp(pagerQuery);
}
}

122
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java

@ -781,4 +781,126 @@ public class FlowableService extends MybatisBaseService<FlowableMapper, Flowable
page.setPages(pages);
return rb.success().setData(page);
}
public ResultBean<PagerVo<FlowTaskFinishVo>> finishOaApp(PagerQuery<FlowTaskDoQuery> pagerQuery) {
ResultBean<PagerVo<FlowTaskFinishVo>> rb = ResultBean.fireFail();
PagerQuery<BusinessTaskQuery> taskQueryPagerQuery = new PagerQuery<>();
taskQueryPagerQuery.setCurrent(pagerQuery.getCurrent()).setSize(pagerQuery.getSize());
FlowTaskDoQuery params = pagerQuery.getParams();
String names = params.getNames();
String userSid = params.getUserSid();
BusinessTaskQuery taskQuery = new BusinessTaskQuery();
List<BusinessTaskParam> taskParamList = new ArrayList<>();
if (StringUtils.isNotBlank(names)) {
BusinessTaskParam taskParam = new BusinessTaskParam();
taskParam.setField("proDefName");
taskParam.setValue(names);
taskParam.setSqlOperationSymbol(SQLOperationSymbol.LIKE);
taskParamList.add(taskParam);
}
String date = params.getDate();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
if(StringUtils.isNotBlank(date)){
String[] s = date.split("至");
String startDate = s[0];
if (StringUtils.isNotBlank(startDate)) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(DateUtils.dateStrConvertDate(startDate, "yyyy-MM-dd").getTime()), ZoneId.systemDefault());
LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
BusinessTaskParam taskParam = new BusinessTaskParam();
taskParam.setField("startDate");
taskParam.setValue(startOfDay.format(formatter));
taskParam.setSqlOperationSymbol(SQLOperationSymbol.GE);
taskParamList.add(taskParam);
}
String endDate = s[1];
if (StringUtils.isNotBlank(endDate)) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(DateUtils.dateStrConvertDate(endDate, "yyyy-MM-dd").getTime()), ZoneId.systemDefault());;
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
BusinessTaskParam taskParam = new BusinessTaskParam();
taskParam.setField("endDate");
taskParam.setValue(endOfDay.format(formatter));
taskParam.setSqlOperationSymbol(SQLOperationSymbol.LE);
taskParamList.add(taskParam);
}
}
if(StringUtils.isNotBlank(params.getCreateUser())){
BusinessTaskParam taskParam = new BusinessTaskParam();
taskParam.setField("startUserSid");
taskParam.setSqlOperationSymbol(SQLOperationSymbol.NONE);
taskParam.setValue(params.getCreateUser());
taskParamList.add(taskParam);
}
taskQuery.setFields(taskParamList);
taskQueryPagerQuery.setParams(taskQuery);
ResultBean<Page<com.yxt.anrui.flowable.api.flowtask.FlowTaskDto>> resultBean = flowTaskFeign.businessDoneListForOAApp(userSid, taskQueryPagerQuery);
if (!resultBean.getSuccess()) {
log.error(resultBean.getMsg());
return rb.setMsg("流程错误");
}
PagerVo<FlowTaskFinishVo> page = new PagerVo<>();
List<FlowTaskFinishVo> voList = Optional.ofNullable(resultBean.getData().getRecords()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FlowTaskFinishVo.class)).collect(Collectors.toList());
voList.removeAll(Collections.singleton(null));
//定义的app的sid的index集合
Map<String, List<Integer>> appVer = new HashMap<>();
for (int i = 0; i < voList.size(); i++) {
FlowTaskFinishVo f = voList.get(i);
//根据流程定义id查询是否有终止地址
String proDefId = f.getProcDefId();
List<String> proDefIdList = Arrays.asList(proDefId.split(":"));
String proDefKey = proDefIdList.get(0);
//根据流程定义key查询终止地址
SysUrlConfig sysUrlConifg = sysUrlConfigService.selectByKey(proDefKey);
if(sysUrlConifg != null){
f.setStopUrl(sysUrlConifg.getUrl());
}else{
sysUrlConifg = sysUrlConfigService.selectByKey("defaultKey");
if(sysUrlConifg!= null){
f.setStopUrl(sysUrlConifg.getUrl());
}
}
Map<String, Object> flowMap = f.getProcessVariables();
f.setBusinessSid(flowMap.get("businessSid").toString());
Map<String, Object> appMap = ConstantUtils.getMap(flowMap, "app");
String json = JSONObject.toJSONString(appMap);
AppVo appVo = new AppVo();
appVo.setJson(json);
//app版本的sid
String appSid = "";
//app版本的类型
String type = "";
if (f.getSysProUrlVo() != null) {
appVo.setModuleAction(f.getSysProUrlVo().getUrl());
appSid = f.getSysProUrlVo().getModulePluginName();
}
//根据appSid查询最新版本的app插件包:以及类型:2插件,1框架
if (StringUtils.isNotBlank(appSid)) {
if (appSid.contains("#")) {
type = Arrays.asList(appSid.split("#")).get(1);
}
}
if ("1".equals(type)) {
//框架
} else if ("2".equals(type)) {
//插件
String appSid2 = appSid.substring(0, appSid.indexOf("#"));
List<Integer> integers = appVer.get(appSid2);
if (integers == null) {
integers = new ArrayList<>();
}
integers.add(i);
appVer.put(appSid2, integers);
}
appVo.setType(type);
voList.get(i).setAppVariables(appVo);
}
page.setRecords(voList);
page.setCurrent(resultBean.getData().getCurrent());
page.setSize(resultBean.getData().getSize());
page.setTotal(resultBean.getData().getTotal());
long pages = (resultBean.getData().getTotal() + resultBean.getData().getSize() -1) / resultBean.getData().getSize();
page.setPages(pages);
return rb.success().setData(page);
}
}

Loading…
Cancel
Save