|
@@ -22,6 +22,7 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
|
import org.apache.poi.ss.usermodel.*;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
+import org.springblade.business.entity.FixedFlow;
|
|
|
import org.springblade.business.entity.FixedFlowLink;
|
|
|
import org.springblade.business.entity.Task;
|
|
|
import org.springblade.business.entity.TaskParallel;
|
|
@@ -489,6 +490,11 @@ public class TaskController extends BladeController {
|
|
|
return R.fail("操作失败");
|
|
|
}
|
|
|
|
|
|
+ private int extractBranchSort(String key) {
|
|
|
+ String[] parts = key.split("@@@");
|
|
|
+ return Integer.parseInt(parts[0]);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 构造创建审批任务
|
|
|
*
|
|
@@ -499,28 +505,30 @@ public class TaskController extends BladeController {
|
|
|
*/
|
|
|
private void buildTaskInfo(Long taskId, MeterApprovalDTO approvalDTO, Set<String> aopParamsSet, Integer meterTaskType) {
|
|
|
/*预设流程*/
|
|
|
- String resultString = "";
|
|
|
+ Map<String, List<FixedFlowLink>> sortedMap = null;
|
|
|
if (ObjectUtil.isNotEmpty(approvalDTO.getFixedFlowId())) {
|
|
|
- List<FixedFlowLink> fixedFlowLinks = jdbcTemplate.query("select fixed_flow_link_user,fixed_flow_link_sort from u_fixed_flow_link where is_deleted = 0 AND fixed_flow_id = " + approvalDTO.getFixedFlowId(), new BeanPropertyRowMapper<>(FixedFlowLink.class));
|
|
|
+ List<FixedFlowLink> fixedFlowLinks = jdbcTemplate.query("SELECT * FROM u_fixed_flow_link WHERE is_deleted = 0 AND fixed_flow_id = ?", new Object[]{approvalDTO.getFixedFlowId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
|
|
|
if (fixedFlowLinks.size() > 0) {
|
|
|
- fixedFlowLinks.sort(Comparator.comparingInt(FixedFlowLink::getFixedFlowLinkSort));
|
|
|
- StringBuilder sortStr = new StringBuilder();
|
|
|
- for (FixedFlowLink link : fixedFlowLinks) {
|
|
|
- sortStr.append(link.getFixedFlowLinkUser()).append(",");
|
|
|
- }
|
|
|
- if (sortStr.length() > 0) {
|
|
|
- sortStr.deleteCharAt(sortStr.length() - 1);
|
|
|
+ List<Long> userIds = fixedFlowLinks.stream().map(FixedFlowLink::getFixedFlowLinkUser).collect(Collectors.toList());
|
|
|
+ String resultString = StringUtils.join(userIds, ",");
|
|
|
+ /*检查签字证书信息*/
|
|
|
+ if (ObjectUtil.isNotEmpty(resultString)) {
|
|
|
+ R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(resultString);
|
|
|
+ if (objectR.isSuccess()) {
|
|
|
+ approvalDTO.setTaskUserIds(resultString);
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("预设流程任务人没有签字证书信息");
|
|
|
+ }
|
|
|
}
|
|
|
- resultString = sortStr.toString();
|
|
|
- }
|
|
|
- }
|
|
|
- /*检查签字证书信息*/
|
|
|
- if (ObjectUtil.isNotEmpty(resultString)) {
|
|
|
- R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(resultString);
|
|
|
- if (objectR.isSuccess()) {
|
|
|
- approvalDTO.setTaskUserIds(resultString);
|
|
|
- } else {
|
|
|
- throw new ServiceException("预设流程任务人没有签字证书信息");
|
|
|
+
|
|
|
+ /*首先根据分支分组顺序排序*/
|
|
|
+ Map<String, List<FixedFlowLink>> collect = fixedFlowLinks.stream().collect(Collectors.groupingBy(obj -> obj.getFixedFlowBranchSort() + "@@@" + obj.getFixedFlowLinkType()));
|
|
|
+ sortedMap = new TreeMap<>((key1, key2) -> {
|
|
|
+ int branchSort1 = extractBranchSort(key1);
|
|
|
+ int branchSort2 = extractBranchSort(key2);
|
|
|
+ return Integer.compare(branchSort1, branchSort2);
|
|
|
+ });
|
|
|
+ sortedMap.putAll(collect);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -551,7 +559,7 @@ public class TaskController extends BladeController {
|
|
|
task.setContractId(approvalDTO.getContractId().toString());
|
|
|
task.setProjectId(approvalDTO.getProjectId().toString());
|
|
|
task.setBatch(approvalDTO.getBatch());
|
|
|
- task.setMeterTaskType(meterTaskType); //计量任务类型 1=中间计量申请,2=材料计量单,3=开工预付款计量单、4=变更令...
|
|
|
+ task.setMeterTaskType(meterTaskType); //计量任务类型 1=中间计量申请,2=材料计量单,3=开工预付款计量单、4=变更令
|
|
|
|
|
|
task.setType(1);
|
|
|
task.setApprovalType(5); //计量
|
|
@@ -560,34 +568,105 @@ public class TaskController extends BladeController {
|
|
|
task.setIsDeleted(0);
|
|
|
taskClient.saveTask(task);
|
|
|
|
|
|
- Map<Long, String> nameMap = jdbcTemplate.query("select id,name from blade_user where is_deleted = 0"
|
|
|
- , new BeanPropertyRowMapper<>(User.class)).stream().collect(Collectors.toMap(User::getId, User::getName, (key1, key2) -> key1));
|
|
|
-
|
|
|
- /*副任务(approvalDTO.getTaskUserIds()是按顺序构造,所以创建的任务也是按照顺序构造)*/
|
|
|
- String[] userIds = approvalDTO.getTaskUserIds().split(",");
|
|
|
- int sort = 1;
|
|
|
- for (String userId : userIds) {
|
|
|
- TaskParallel taskParallel = new TaskParallel();
|
|
|
- taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
- taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
- taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
- taskParallel.setTaskUser(userId);
|
|
|
- if (nameMap.get(Long.parseLong(userId)) != null) {
|
|
|
- taskParallel.setTaskUserName(nameMap.get(Long.parseLong(userId)));
|
|
|
- }
|
|
|
- taskParallel.setInitiative(1);
|
|
|
- taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateTime(nowTime);
|
|
|
- taskParallel.setUpdateTime(nowTime);
|
|
|
- taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateDept(null);
|
|
|
- taskParallel.setStatus(1); //待审批
|
|
|
- taskParallel.setIsDeleted(0);
|
|
|
- taskParallel.setSort(sort++);
|
|
|
- taskClient.saveTaskParallel(taskParallel);
|
|
|
-
|
|
|
- String param = userId + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
- aopParamsSet.add(param);
|
|
|
+ /*副任务*/
|
|
|
+
|
|
|
+ /*1.非预设流程*/
|
|
|
+ if (sortedMap == null) {
|
|
|
+ Map<Long, String> nameMap = jdbcTemplate.query("select id,name from blade_user where is_deleted = 0"
|
|
|
+ , new BeanPropertyRowMapper<>(User.class)).stream().collect(Collectors.toMap(User::getId, User::getName, (key1, key2) -> key1));
|
|
|
+
|
|
|
+ /*(approvalDTO.getTaskUserIds()是按顺序构造,所以创建的任务也是按照顺序构造)*/
|
|
|
+ String[] userIds = approvalDTO.getTaskUserIds().split(",");
|
|
|
+ int sort = 1;
|
|
|
+ for (String userId : userIds) {
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
+ taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
+ taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
+ taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
+ taskParallel.setTaskUser(userId);
|
|
|
+ if (nameMap.get(Long.parseLong(userId)) != null) {
|
|
|
+ taskParallel.setTaskUserName(nameMap.get(Long.parseLong(userId)));
|
|
|
+ }
|
|
|
+ taskParallel.setInitiative(1);
|
|
|
+ taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateTime(nowTime);
|
|
|
+ taskParallel.setUpdateTime(nowTime);
|
|
|
+ taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateDept(null);
|
|
|
+ taskParallel.setStatus(1); //待审批
|
|
|
+ taskParallel.setIsDeleted(0);
|
|
|
+ taskParallel.setSort(sort++);
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
+
|
|
|
+ String param = userId + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
+ aopParamsSet.add(param);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ /*2.预设流程*/
|
|
|
+ int sort = 1;
|
|
|
+ for (Map.Entry<String, List<FixedFlowLink>> stringListEntry : sortedMap.entrySet()) {
|
|
|
+ String sortStr = stringListEntry.getKey();
|
|
|
+ String branchType = sortStr.split("@@@")[1];
|
|
|
+
|
|
|
+ List<FixedFlowLink> value = stringListEntry.getValue();
|
|
|
+
|
|
|
+ if (branchType.equals("1")) {
|
|
|
+ //垂直,sort排序
|
|
|
+ value.sort(Comparator.comparingInt(FixedFlowLink::getFixedFlowLinkSort));
|
|
|
+
|
|
|
+ for (FixedFlowLink fixedFlowLink : value) {
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
+ taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
+ taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
+ taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
+ taskParallel.setTaskUser(fixedFlowLink.getFixedFlowLinkUser().toString());
|
|
|
+ taskParallel.setTaskUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
+ taskParallel.setInitiative(1);
|
|
|
+ taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateTime(nowTime);
|
|
|
+ taskParallel.setUpdateTime(nowTime);
|
|
|
+ taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateDept(null);
|
|
|
+ taskParallel.setStatus(1);
|
|
|
+ taskParallel.setIsDeleted(0);
|
|
|
+
|
|
|
+ taskParallel.setSort(sort++); //sort累加
|
|
|
+
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
+
|
|
|
+ String param = fixedFlowLink.getFixedFlowLinkUser() + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
+ aopParamsSet.add(param);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (branchType.equals("2")) {
|
|
|
+
|
|
|
+ //平行,固定sort
|
|
|
+ for (FixedFlowLink fixedFlowLink : value) {
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
+ taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
+ taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
+ taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
+ taskParallel.setTaskUser(fixedFlowLink.getFixedFlowLinkUser().toString());
|
|
|
+ taskParallel.setTaskUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
+ taskParallel.setInitiative(1);
|
|
|
+ taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateTime(nowTime);
|
|
|
+ taskParallel.setUpdateTime(nowTime);
|
|
|
+ taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateDept(null);
|
|
|
+ taskParallel.setStatus(1);
|
|
|
+ taskParallel.setIsDeleted(0);
|
|
|
+
|
|
|
+ taskParallel.setSort(sort); //sort固定
|
|
|
+
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
+
|
|
|
+ String param = fixedFlowLink.getFixedFlowLinkUser() + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
+ aopParamsSet.add(param);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2793,6 +2872,160 @@ public class TaskController extends BladeController {
|
|
|
return report;
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("/getFixedFlowPage")
|
|
|
+ @ApiOperationSupport(order = 21)
|
|
|
+ @ApiOperation(value = "计量预设流程分页", notes = "传入dto")
|
|
|
+ public R<Page<Map<String, Object>>> getFixedFlowPage(@RequestBody PageFixedFlowDTO dto) {
|
|
|
+ return R.data(taskClient.getFixedFlowPage(dto));
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/saveFixedFlow")
|
|
|
+ @ApiOperationSupport(order = 22)
|
|
|
+ @ApiOperation(value = "计量新增预设流程", notes = "传入dto")
|
|
|
+ public R<Object> saveFixedFlow(@RequestBody SaveFixedFlowDTO dto) {
|
|
|
+ if (ObjectUtil.isEmpty(dto.getFixedBranchList()) || dto.getFixedBranchList().size() == 0) {
|
|
|
+ return R.fail("请选择任务流程人员");
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getFixedName())
|
|
|
+ && ObjectUtil.isNotEmpty(dto.getProjectId())
|
|
|
+ && ObjectUtil.isNotEmpty(dto.getContractId())) {
|
|
|
+
|
|
|
+ List<SaveFixedFlowDTO.FixedBranch> fixedBranchList = dto.getFixedBranchList();
|
|
|
+ Set<String> allUserIds = new HashSet<>();
|
|
|
+ Set<String> duplicateUserIds = new HashSet<>();
|
|
|
+ for (SaveFixedFlowDTO.FixedBranch fixedBranch : fixedBranchList) {
|
|
|
+ String userIds = fixedBranch.getUserIds();
|
|
|
+ String[] userIdArray = userIds.split(",");
|
|
|
+ for (String userId : userIdArray) {
|
|
|
+ if (!allUserIds.add(userId)) {
|
|
|
+ //如果添加失败,说明这个userId已经存在,表示有重复
|
|
|
+ duplicateUserIds.add(userId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!duplicateUserIds.isEmpty()) {
|
|
|
+ throw new ServiceException("存在重复的用户ID:" + String.join(",", duplicateUserIds));
|
|
|
+ }
|
|
|
+
|
|
|
+ Long fixedFlowId = SnowFlakeUtil.getId();
|
|
|
+ if (taskClient.saveFixedFlow(fixedFlowId, dto.getFixedName(), dto.getProjectId(), dto.getContractId())) {
|
|
|
+
|
|
|
+ int sort = 1;
|
|
|
+ for (SaveFixedFlowDTO.FixedBranch fixedBranch : dto.getFixedBranchList()) {
|
|
|
+ taskClient.saveFixedFlowLink(fixedFlowId, fixedBranch.getName(), fixedBranch.getType(),
|
|
|
+ fixedBranch.getUserIds(), dto.getProjectId(), dto.getContractId(), sort++);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return R.fail("操作失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/getFixedFlow")
|
|
|
+ @ApiOperationSupport(order = 23)
|
|
|
+ @ApiOperation(value = "计量获取预设流程信息", notes = "传入预设流程id")
|
|
|
+ public R<FixedFlowVO> getFixedFlow(@RequestBody String id) {
|
|
|
+ FixedFlow fixedFlow = jdbcTemplate.query("SELECT * FROM u_fixed_flow WHERE is_deleted = 0 AND id = ?", new Object[]{id}, new BeanPropertyRowMapper<>(FixedFlow.class)).stream().findAny().orElse(null);
|
|
|
+ if (fixedFlow != null) {
|
|
|
+ List<FixedFlowLink> fixedFlowLinkList = jdbcTemplate.query("SELECT * FROM u_fixed_flow_link WHERE is_deleted = 0 AND fixed_flow_id = ?", new Object[]{fixedFlow.getId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
|
|
|
+ if (fixedFlowLinkList.size() > 0) {
|
|
|
+ Map<String, List<FixedFlowLink>> group = fixedFlowLinkList.stream().collect(Collectors.groupingBy(obj -> obj.getFixedFlowLink() + "@@@" + obj.getFixedFlowLinkType()));
|
|
|
+
|
|
|
+ FixedFlowVO vo = new FixedFlowVO();
|
|
|
+ vo.setFixedFlowId(fixedFlow.getId());
|
|
|
+ vo.setFixedFlowName(fixedFlow.getFixedFlowName());
|
|
|
+
|
|
|
+ List<FixedFlowVO.FixedBranchVO> fixedBranchVOList = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<FixedFlowLink>> listEntry : group.entrySet()) {
|
|
|
+
|
|
|
+ String nameAndType = listEntry.getKey();
|
|
|
+ String name = nameAndType.split("@@@")[0];
|
|
|
+ String type = nameAndType.split("@@@")[1];
|
|
|
+
|
|
|
+ FixedFlowVO.FixedBranchVO fixedBranchVO = new FixedFlowVO.FixedBranchVO();
|
|
|
+ fixedBranchVO.setName(name);
|
|
|
+ fixedBranchVO.setType(Integer.parseInt(type));
|
|
|
+
|
|
|
+ List<FixedFlowVO.FixedBranchVO.User> userListResult = new LinkedList<>();
|
|
|
+ List<FixedFlowLink> userList = listEntry.getValue();
|
|
|
+ for (FixedFlowLink fixedFlowLink : userList) {
|
|
|
+ FixedFlowVO.FixedBranchVO.User user = new FixedFlowVO.FixedBranchVO.User();
|
|
|
+ user.setUserId(fixedFlowLink.getFixedFlowLinkUser());
|
|
|
+ user.setUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
+ user.setSort(ObjectUtil.isNotEmpty(fixedFlowLink.getFixedFlowLinkSort()) ? fixedFlowLink.getFixedFlowLinkSort() : null);
|
|
|
+ userListResult.add(user);
|
|
|
+ }
|
|
|
+
|
|
|
+ fixedBranchVO.setUserList(userListResult);
|
|
|
|
|
|
+ fixedBranchVOList.add(fixedBranchVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ vo.setFixedBranchVOList(fixedBranchVOList);
|
|
|
+
|
|
|
+ return R.data(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.data(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/updateFixedFlow")
|
|
|
+ @ApiOperationSupport(order = 24)
|
|
|
+ @ApiOperation(value = "计量修改预设流程", notes = "传入dto")
|
|
|
+ public R<Object> updateFixedFlow(@RequestBody UpdateFixedFlowDTO dto) {
|
|
|
+ if (ObjectUtil.isEmpty(dto.getFixedBranchList()) || dto.getFixedBranchList().size() == 0) {
|
|
|
+ return R.fail("请选择任务流程人员");
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getFixedName())) {
|
|
|
+
|
|
|
+ List<UpdateFixedFlowDTO.FixedBranch> fixedBranchList = dto.getFixedBranchList();
|
|
|
+ Set<String> allUserIds = new HashSet<>();
|
|
|
+ Set<String> duplicateUserIds = new HashSet<>();
|
|
|
+ for (UpdateFixedFlowDTO.FixedBranch fixedBranch : fixedBranchList) {
|
|
|
+ String userIds = fixedBranch.getUserIds();
|
|
|
+ String[] userIdArray = userIds.split(",");
|
|
|
+ for (String userId : userIdArray) {
|
|
|
+ if (!allUserIds.add(userId)) {
|
|
|
+ //如果添加失败,说明这个userId已经存在,表示有重复
|
|
|
+ duplicateUserIds.add(userId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!duplicateUserIds.isEmpty()) {
|
|
|
+ throw new ServiceException("存在重复的用户ID:" + String.join(",", duplicateUserIds));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (taskClient.updateFixedFlow(dto.getFixedFlowId(), dto.getFixedName())) {
|
|
|
+
|
|
|
+ int sort = 1;
|
|
|
+ for (UpdateFixedFlowDTO.FixedBranch fixedBranch : dto.getFixedBranchList()) {
|
|
|
+ taskClient.updateFixedFlowLink(dto.getFixedFlowId(), fixedBranch.getName(), fixedBranch.getType(),
|
|
|
+ fixedBranch.getUserIds(), dto.getProjectId(), dto.getContractId(), sort++);
|
|
|
+ }
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return R.fail("操作失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/deleteFixedFlowBranch")
|
|
|
+ @ApiOperationSupport(order = 25)
|
|
|
+ @ApiOperation(value = "计量刪除预设流程分支", notes = "传入预设流程id、分支名称")
|
|
|
+ public R<Object> deleteFixedFlowBranch(@RequestParam String id, @RequestParam String name) {
|
|
|
+ jdbcTemplate.update("DELETE FROM u_fixed_flow_link WHERE fixed_flow_id = ? AND fixed_flow_link = ?", new Object[]{id, name});
|
|
|
+ return R.fail("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/deleteFixedFlow")
|
|
|
+ @ApiOperationSupport(order = 26)
|
|
|
+ @ApiOperation(value = "计量刪除预设流程", notes = "传入预设流程id")
|
|
|
+ public R<Object> deleteFixedFlow(@RequestParam String id) {
|
|
|
+ jdbcTemplate.update("DELETE FROM u_fixed_flow WHERE id = ?", new Object[]{id});
|
|
|
+ jdbcTemplate.update("DELETE FROM u_fixed_flow_link WHERE fixed_flow_id = ?", new Object[]{id});
|
|
|
+ return R.fail("操作成功");
|
|
|
+ }
|
|
|
|
|
|
}
|