工作流 修改一些todo

This commit is contained in:
bupengxiang
2023-04-20 18:02:56 +08:00
parent f70799511a
commit 22221173fe
13 changed files with 140 additions and 112 deletions
@@ -113,7 +113,6 @@ public class UserEO extends BaseEntity implements Serializable {
@TableField(exist = false)
private String roleId;
@TableField(exist = false)
private String orgName;
}
@@ -1,13 +1,12 @@
package com.adc.da.sys.vo;
import java.util.ArrayList;
import java.util.List;
import com.adc.da.sys.entity.OrgEO;
import com.adc.da.sys.entity.RoleEO;
import com.adc.da.sys.vo.iam.OrgsShortVoIAM;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class UserVO {
@@ -43,7 +42,7 @@ public class UserVO {
private String usname;
/**
* 角色ID列表
* 角色列表
*/
private List<RoleEO> roleEOList = new ArrayList<>();
@@ -163,11 +163,11 @@
#{id}
</foreach>
</select>
<select id="getUserEoById" resultMap="BaseResultMap">
select u.* , org.ORG_NAME as orgName from ts_user u
LEFT JOIN tr_user_org tuo on u.USID = tuo.ORG_ID
LEFT JOIN ts_org org on org.ID = tuo.ORG_ID
WHERE u.id = #{usid}
</select>
<!-- <select id="getUserEoById" resultMap="BaseResultMap">-->
<!-- select u.* , org.ORG_NAME as orgName from ts_user u-->
<!-- LEFT JOIN tr_user_org tuo on u.USID = tuo.ORG_ID-->
<!-- LEFT JOIN ts_org org on org.ID = tuo.ORG_ID-->
<!-- WHERE u.id = #{usid}-->
<!-- </select>-->
</mapper>
@@ -3,6 +3,7 @@ package com.adc.da.wkflow.business_activiti.define;
import cn.hutool.core.util.StrUtil;
import com.adc.da.sys.entity.UserEO;
import com.adc.da.sys.service.iservice.IUserEoService;
import com.adc.da.wkflow.business_activiti.service.ActivitDefineService;
import com.adc.da.wkflow.business_main.entity.BusProcessName;
import com.adc.da.wkflow.business_main.service.IBusProcessNameService;
import com.adc.da.wkflow.enums.SubmitStatusEnum;
@@ -55,6 +56,8 @@ public class ActivitDefineController {
@Autowired
private IBusProcessNameService ibusprocessnameService;
@Autowired
private ActivitDefineService activitDefineService;
@Resource
IUserEoService userEoService;
@@ -174,7 +177,8 @@ public class ActivitDefineController {
busProcessName.setCreatUserName(byId.getUsname());
busProcessName.setPrcNum((String) prcNameAndPrcNum.get("prcNum"));
busProcessName.setPrcType(prcType);
String dateId = this.saveOrUpdateDate(prcType,msg);
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data);
busProcessName.setDataId(dateId);
busProcessName.setPrcName((String) prcNameAndPrcNum.get("prcName"));
busProcessName.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue());
@@ -194,7 +198,8 @@ public class ActivitDefineController {
one.setPrcId(pi.getId());
one.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue());
one.setCreatTime(sdf.format(new Date()));
String dateId = this.saveOrUpdateDate(prcType,msg);
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data);
one.setDataId(dateId);
ibusprocessnameService.save(one);
}
@@ -203,15 +208,6 @@ public class ActivitDefineController {
return WrapMapper.ok(task.getId());
}
//保存data数据
private String saveOrUpdateDate(String prcType, Object msg) {
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect);
String dataId = "";
if ("".equals(prcType)){
}
return dataId;
}
@ApiOperation(value = "判断流程定义key的唯一性")
@GetMapping("/check_define_key")
@@ -0,0 +1,19 @@
package com.adc.da.wkflow.business_activiti.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@Service
public class ActivitDefineService {
protected Logger logger = LoggerFactory.getLogger(getClass());
//保存data数据
public String saveOrUpdateDate(String prcType, String dataJson) {
String dataId = "";
if ("".equals(prcType)){
}
return dataId;
}
}
@@ -2,6 +2,7 @@ package com.adc.da.wkflow.business_activiti.task;
import com.adc.da.sys.entity.UserEO;
import com.adc.da.sys.service.iservice.IUserEoService;
import com.adc.da.sys.vo.UserVO;
import com.adc.da.wkflow.business_main.entity.BusProcessApprove;
import com.adc.da.wkflow.business_main.entity.BusProcessEntrust;
import com.adc.da.wkflow.business_main.entity.BusProcessName;
@@ -58,13 +59,7 @@ public class TaskController {
@GetMapping("/get_list_by_instance")
public List<Map<String, Object>> get_list_by_instance(String prcNum,String sortWord,String shunxu) {
QueryWrapper queryWrapper = new QueryWrapper();
if(prcNum.indexOf("(子)") != -1){
String[] split = prcNum.split("\\)");
queryWrapper.eq("PRC_NUM",split[1]);
queryWrapper.eq("PRC_TYPE","72");
}else {
queryWrapper.eq("PRC_NUM",prcNum);
}
BusProcessName one = iBusProcessNameService.getOne(queryWrapper);
// 缺了PRCID导致的BUg
if (one == null || StringUtils.isEmpty(one.getPrcId())){
@@ -91,13 +86,13 @@ public class TaskController {
}
}
}else{
UserEO assignee = userEoService.getUserById(historicTaskInstance.get("assignee").toString());
if(assignee != null){
String assigneeId = historicTaskInstance.get("assignee").toString();
List<UserVO> userByIdList = userEoService.getUserByIdList(Arrays.asList(assigneeId));
if(userByIdList.size()>0){
UserVO assignee = userByIdList.get(0);
historicTaskInstance.put("assignee", assignee.getUsname());
historicTaskInstance.put("assigneeId", assignee.getUsid());
// TODO 部门同步完成后,补充部门数据
// historicTaskInstance.put("orgName",assignee.getData().getOrgName());
historicTaskInstance.put("orgName",assignee.getOrgEOList().get(0));
QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper2.orderByAsc("CREATE_TIME");
@@ -7,6 +7,7 @@ import com.adc.da.sys.vo.UserVO;
import com.adc.da.util.exception.AdcDaBaseException;
import com.adc.da.wkflow.business_activiti.dto.Page;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery;
import com.adc.da.wkflow.business_activiti.service.ActivitDefineService;
import com.adc.da.wkflow.business_activiti.service.TaskTodoService;
import com.adc.da.wkflow.business_main.entity.BusProcessApprove;
import com.adc.da.wkflow.business_main.entity.BusProcessEntrust;
@@ -19,6 +20,7 @@ import com.adc.da.wkflow.business_main.service.IBusProcessEntrustService;
import com.adc.da.wkflow.business_main.service.IBusProcessNameService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService;
import com.adc.da.wkflow.business_main.vo.ApproveDataVO;
import com.adc.da.wkflow.business_main.vo.BusProcessNewVO;
import com.adc.da.wkflow.enums.SubmitStatusEnum;
import com.adc.da.wkflow.util.activiti.ActivitiTools;
import com.adc.da.wkflow.util.date.DateTools;
@@ -46,6 +48,8 @@ import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -95,6 +99,8 @@ public class TodoTaskController {
@Resource
private IUserEoService userEoService;
@Autowired
private ActivitDefineService activitDefineService;
@ApiOperation(value = "我的待办任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@@ -151,16 +157,16 @@ public class TodoTaskController {
queryWrapper.lambda().eq(BusProcessName::getSubmitStatus,SubmitStatusEnum.SUBMIT.getValue());
BusProcessName busProcessName = iBusProcessNameService.getOne(queryWrapper);
String taskIds = "";
for (Map<String, Object> map : entry.getValue()) {
taskIds += map.get("id").toString() + ",";
}
// 因 现只考虑单任务id的情况 故注掉 ,如出现问题在做调整
// for (Map<String, Object> map : entry.getValue()) {
// taskIds += map.get("id").toString() + ",";
// }
String taskId = entry.getValue().get(0).get("id").toString();
if (busProcessName != null) {
if(StringUtils.isNotEmpty(taskIds)){
taskIds = taskIds.substring(0,taskIds.length()-1);
}
// TODO 处理单个任务id的情况
busProcessName.setTaskId(taskIds);
// if(StringUtils.isNotEmpty(taskId)){
// taskIds = taskIds.substring(0,taskIds.length()-1);
// }
busProcessName.setTaskId(taskId);
busProcessName.setTaskInfo(entry.getValue().get(0).get("name").toString());
busProcessName.setTaskDefinitionKey(entry.getValue().get(0).get("taskDefinitionKey").toString());
todoList.add(busProcessName);
@@ -226,7 +232,7 @@ public class TodoTaskController {
@ApiImplicitParams({@ApiImplicitParam(name = "taskId", value = "任务id"),
@ApiImplicitParam(name = "userId", value = "完成任务用户Id")})
@PostMapping("/completeTask")
public Wrapper<String> completeTaskByUserId(@RequestBody ApproveDataVO busMes) {
public Wrapper<String> completeTaskByUserId(@RequestBody ApproveDataVO busMes,@RequestBody String dateJson) {
log.info("!!!!!!!!!!!!!TaskId!!!!!!!!!!!!!!!"+busMes.getTaskId());
if (busMes.getTaskId() != null && !busMes.getTaskId().equals("")) {
Task task = taskService.createTaskQuery().taskId(busMes.getTaskId()).singleResult();
@@ -234,19 +240,17 @@ public class TodoTaskController {
if (StrUtil.isEmpty(task.getAssignee())) {
taskService.claim(busMes.getTaskId(), busMes.getUserId());
}
//TODO 对 “SubmitJson” 这串json的设计
String approve = JSON.parseObject(busMes.getSubmitJson()).getString("approve");
BusProcessApprove busProcessApprove = new BusProcessApprove();
busProcessApprove.setTaskId(busMes.getTaskId());
busProcessApprove.setCreateUserId(UserUtils.getUserId());
busProcessApprove.setPrcId(task.getProcessInstanceId());
busProcessApprove.setCreateDate(new Date());
busProcessApprove.setFromValsJson(approve);
busProcessApprove.setFromValsJson(busMes.getSubmitJson());
iBusProcessApproveService.save(busProcessApprove);
//根据业务情况 对业务数据进行saveOrupdate
this.saveOrUpdateDate(busMes);
if (StringUtils.isNotEmpty(dateJson)){
//根据业务情况 对业务数据进行saveOrupdate
activitDefineService.saveOrUpdateDate(busMes.getPrcType(),dateJson);
}
taskService.complete(busMes.getTaskId());
}
return WrapMapper.ok(task.getProcessInstanceId());
@@ -255,21 +259,6 @@ public class TodoTaskController {
}
}
/**
* 存储业务数据 到对应的表
* @param busMes
*/
private String saveOrUpdateDate(ApproveDataVO busMes) {
String date = JSON.parseObject(busMes.getSubmitJson()).getString("date");
String dateId = "";
if ("".equals(busMes.getPrcType())){
}
return dateId;
}
@ApiOperation(value = "查询流程编号", notes = "根据流程实例ID查询流程编号")
@ApiImplicitParams({@ApiImplicitParam(name = "pId", value = "流程id")})
@GetMapping("/findPrcNumByPid")
@@ -354,45 +343,38 @@ public class TodoTaskController {
/**
*
* @param taskIds,pId
* @param taskId
* @param prcType
*/
@ApiOperation(value = "详情")
@GetMapping("/queryDetail")
public BusProcessNew queryDetail(String taskIds,String prcType) {
List<String> taskIdList = new ArrayList<>(Arrays.asList(taskIds.split(",")));
List<BusProcessNew> list = iBusProcessNewService.findNoExecuteBusProcessNewForEnd(taskIdList);
if (list.isEmpty()) {
public BusProcessNewVO queryDetail(String taskId,String prcType) {
BusProcessNew busProcessNew = iBusProcessNewService.selectEOByTaskId(taskId);
if (busProcessNew == null) {
return null;
}
// TODO 去对应的业务表中找相应的ID --- start
// 查找详细业务数据
BusProcessNew processNew = this.queryDetailDate(list,prcType);
BusProcessNewVO busProcessNewVO = this.queryDetailDate(busProcessNew, prcType);
//审批数据
BusProcessApprove busProcessApprove = busProcessApproveMapper.selectEoByPrcIdAndTask(processNew.getPId(),
processNew.getTaskId());
BusProcessApprove busProcessApprove = busProcessApproveMapper.selectEoByPrcIdAndTask(busProcessNewVO.getPId(),
busProcessNewVO.getTaskId());
String approveJson = JSON.toJSONString(busProcessApprove);
processNew.setApproveJson(approveJson);
// JSONObject object = JSONObject.parseObject(list.get(0).getMesg());
// object.put("taskId", list.get(0).getTaskId());
// BeanUtils.copyProperties(list.get(0), processNew);
// processNew.setMesg(object.toJSONString());
// TODO 去对应的业务表中找相应的ID --- end
return processNew;
busProcessNewVO.setApproveJson(approveJson);
return busProcessNewVO;
}
private BusProcessNew queryDetailDate(List<BusProcessNew> list, String prcType) {
BusProcessNew busProcessNew = list.get(0);
private BusProcessNewVO queryDetailDate(BusProcessNew busProcessNew, String prcType) {
BusProcessNewVO busProcessNewVO = new BusProcessNewVO();
BeanUtils.copyProperties(busProcessNew,busProcessNewVO);
if ("".equals(prcType)){
String dataId = busProcessNew.getDataId();
//去对应的 数据表查数据
// busProcessNewVO.setDateMesg();
}
return busProcessNew;
return busProcessNewVO;
}
/**
@@ -401,7 +383,7 @@ public class TodoTaskController {
*/
@ApiOperation(value = "保存任务第一步")
@PostMapping("/saveTaskFirst")
public Wrapper<String> saveTaskFirst(@RequestBody ApproveDataVO approveDataVO) {
public Wrapper<String> saveTaskFirst(@RequestBody ApproveDataVO approveDataVO,@RequestBody String dataJson) {
String saveId = null;
if (approveDataVO.getId() != null && !approveDataVO.getId().equals("")) {
saveId = approveDataVO.getId();
@@ -414,23 +396,22 @@ public class TodoTaskController {
List<BusProcessName> list = iBusProcessNameService.list(queryWrapper);
if (list != null && list.size() > 0) {
BusProcessName busProcessName = list.get(0);
// TODO 先存到业务表单中,再存入busProcessName --start
String dataId = this.saveOrUpdateDate(approveDataVO);
busProcessName.setDataId(dataId);
busProcessName.setSubmitStatus(SubmitStatusEnum.DRAFT.getValue());
iBusProcessNameService.saveOrUpdate(busProcessName);
// TODO 先存到业务表单中,再存入busProcessName --end
}
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(new Date());
BusProcessName busProcessName = new BusProcessName();
String dataId = this.saveOrUpdateDate(approveDataVO);
if (StringUtils.isNotEmpty(dataJson)) {
//根据业务情况 对业务数据进行saveOrupdate
String dataId = activitDefineService.saveOrUpdateDate(approveDataVO.getPrcType(), dataJson);
busProcessName.setDataId(dataId);
}
busProcessName.setPrcType(approveDataVO.getPrcType());
busProcessName.setCreatUser(approveDataVO.getCreateUser());
busProcessName.setCreatTime(time);
busProcessName.setDataId(dataId);
busProcessName.setCreatUserName(approveDataVO.getCreateUserName());
busProcessName.setSubmitStatus(SubmitStatusEnum.DRAFT.getValue());
iBusProcessNameService.save(busProcessName);
@@ -1227,7 +1208,6 @@ public class TodoTaskController {
* 根据用户idList获取用户信息
*/
public List<UserVO> getUserInfoByIdList(List<String> userIdList){
// TODO 根据用户id列表获取用户信息,不完善 -- lixuetao改
List<UserVO> userList = this.userEoService.getUserByIdList(userIdList);
return userList;
}
@@ -37,21 +37,10 @@ public class BusProcessNew implements Serializable {
@TableField("USER_ID")
private String userId;
@TableField(exist = false)
private String userName;
@ApiModelProperty(value = "具体的数据ID,关联具体的业务表的id")
@TableField("DATA_ID")
private String dataId;
@ApiModelProperty(value = "具体的业务数据")
@TableField(exist = false)
private String dateMesg;
@ApiModelProperty(value = "具体的审批数据")
@TableField(exist = false)
private String approveJson;
@ApiModelProperty(value = "节点信息")
@TableField("TASK_INFO")
private String taskInfo;
@@ -24,6 +24,8 @@ public interface BusProcessNewMapper extends BaseMapper<BusProcessNew> {
List<BusProcessNew> findNoExecuteBusProcessNew(@Param("taskIds")List<String> taskIds);
List<BusProcessNew> findNoExecuteBusProcessNewForEnd(@Param("taskIds")List<String> taskIds);
BusProcessNew selectEOByTaskId(@Param("taskId") String taskId);
// String queryTaskName(@Param("id")String id);
}
@@ -29,4 +29,5 @@ public interface IBusProcessNewService extends IService<BusProcessNew> {
List<BusProcessNew> findNoExecuteBusProcessNewForEnd(List<String> taskIdList);
BusProcessNew selectEOByTaskId(String taskId);
}
@@ -68,4 +68,9 @@ public class BusProcessNewServiceImpl extends ServiceImpl<BusProcessNewMapper, B
public List<BusProcessNew> findNoExecuteBusProcessNewForEnd(List<String> taskIdList) {
return baseMapper.findNoExecuteBusProcessNewForEnd(taskIdList);
}
@Override
public BusProcessNew selectEOByTaskId(String taskId) {
return baseMapper.selectEOByTaskId(taskId);
}
}
@@ -0,0 +1,38 @@
package com.adc.da.wkflow.business_main.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class BusProcessNewVO {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "处理人")
private String userId;
@TableField(exist = false)
private String userName;
@ApiModelProperty(value = "具体的数据ID,关联具体的业务表的id")
private String dataId;
@ApiModelProperty(value = "具体的业务数据")
private String dateMesg;
@ApiModelProperty(value = "具体的审批数据")
private String approveJson;
@ApiModelProperty(value = "节点信息")
private String taskInfo;
@ApiModelProperty(value = "任务id")
private String taskId;
@ApiModelProperty(value = "流程实例id")
private String pId;
}
@@ -27,4 +27,9 @@
<select id="queryTaskName" resultType="java.lang.String">
SELECT NAME_ FROM ACT_HI_TASKINST WHERE ID_ = #{id}
</select>
<select id="selectEOByTaskId" resultType="com.adc.da.wkflow.business_main.entity.BusProcessNew">
select BUS_PROCESS_NEW.* from BUS_PROCESS_NEW
INNER JOIN ACT_HI_TASKINST on BUS_PROCESS_NEW.TASK_ID = ACT_HI_TASKINST.ID_
where BUS_PROCESS_NEW.TASK_ID = #{taskId}
</select>
</mapper>