!28 feat(xispeak): 部门审批信息改为持久化到业务表单JSON,不再依赖流程引擎变量
Merge pull request !28 from new_new_new/feature/20260527
This commit is contained in:
+20
@@ -266,6 +266,26 @@ public class BgXiSpeakController extends JeecgController<BgXiSpeak, IBgXiSpeakSe
|
||||
return Result.OK("保存成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存部门审批信息(isEnd、部门经办人)到业务表单 approveInfo JSON
|
||||
*/
|
||||
@AutoLog(value = "保存部门审批信息")
|
||||
@Operation(summary="保存部门审批信息到业务表单")
|
||||
@PostMapping(value = "/saveSubApprove")
|
||||
public Result<String> saveSubApprove(@RequestBody Map<String, Object> params) {
|
||||
String mainId = (String) params.get("mainId");
|
||||
String deptId = (String) params.get("deptId");
|
||||
Integer isEnd = params.get("isEnd") != null ? Integer.valueOf(params.get("isEnd").toString()) : null;
|
||||
String implWorker = (String) params.get("implWorker");
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> implUserNameList = (List<String>) params.get("implUserNameList");
|
||||
if (oConvertUtils.isEmpty(mainId) || oConvertUtils.isEmpty(deptId)) {
|
||||
return Result.error("主表ID和部门ID不能为空");
|
||||
}
|
||||
bgXiSpeakService.saveSubApprove(mainId, deptId, isEnd, implWorker, implUserNameList);
|
||||
return Result.OK("保存成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存业务数据同时更新流程变量jsonData
|
||||
* @param id
|
||||
|
||||
+2
@@ -14,6 +14,8 @@ public class DeptApproveDetail {
|
||||
private String deptId; // 部门ID
|
||||
private String approverId; // 审批人ID(从监听器获取的)
|
||||
private String approverName; // 审批人姓名(可选)
|
||||
private Integer isEnd; // 是否办结(0=分配部门经办人,1=办结)
|
||||
private String implWorker; // 被分配的部门经办人用户名
|
||||
@JsonAlias("implUserId")
|
||||
private List<String> implUserIdList; // 落实人Id
|
||||
@JsonAlias("implUserName")
|
||||
|
||||
+6
@@ -85,4 +85,10 @@ public interface IBgXiSpeakService extends IService<BgXiSpeak> {
|
||||
List<BgXiSpeak> getRootListWithDept(String pid);
|
||||
|
||||
void checkAndMarkCompletedByProcessInstId(String processInstanceId);
|
||||
|
||||
/**
|
||||
* 保存部门审批信息(isEnd、部门经办人/经办人列表)到业务表单 approveInfo JSON 中
|
||||
* isEnd=1 时 implWorker 生效,isEnd=0 时 implUserNameList 生效
|
||||
*/
|
||||
void saveSubApprove(String mainId, String deptId, Integer isEnd, String implWorker, List<String> implUserNameList);
|
||||
}
|
||||
|
||||
+38
@@ -8,6 +8,8 @@ import org.jeecg.common.exception.JeecgBootException;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
import org.jeecg.common.system.vo.SelectTreeModel;
|
||||
import org.jeecg.modules.bg.xispeak.entity.BgXiSpeak;
|
||||
import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetail;
|
||||
import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetailMap;
|
||||
import org.jeecg.modules.bg.xispeak.mapper.BgXiSpeakMapper;
|
||||
import org.jeecg.modules.bg.xispeak.service.IBgXiSpeakService;
|
||||
import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion;
|
||||
@@ -351,4 +353,40 @@ public class BgXiSpeakServiceImpl extends ServiceImpl<BgXiSpeakMapper, BgXiSpeak
|
||||
log.info("业务表单 {} 的所有流程已结束,完成状态已更新为已完成", businessId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveSubApprove(String mainId, String deptId, Integer isEnd, String implWorker, List<String> implUserNameList) {
|
||||
BgXiSpeak xiSpeak = this.getById(mainId);
|
||||
if (xiSpeak == null) {
|
||||
throw new JeecgBootException("业务表单不存在");
|
||||
}
|
||||
|
||||
DeptApproveDetailMap approveMap = xiSpeak.getApproveInfo();
|
||||
if (approveMap == null) {
|
||||
approveMap = new DeptApproveDetailMap();
|
||||
}
|
||||
|
||||
DeptApproveDetail detail = approveMap.get(deptId);
|
||||
if (detail == null) {
|
||||
detail = new DeptApproveDetail();
|
||||
detail.setDeptId(deptId);
|
||||
detail.setImplUserNameList(new ArrayList<>());
|
||||
approveMap.put(deptId, detail);
|
||||
}
|
||||
|
||||
detail.setIsEnd(isEnd);
|
||||
if (isEnd != null && isEnd == 1) {
|
||||
detail.setImplWorker(implWorker);
|
||||
detail.setImplUserNameList(null);
|
||||
} else {
|
||||
detail.setImplWorker(null);
|
||||
detail.setImplUserNameList(implUserNameList != null ? implUserNameList : new ArrayList<>());
|
||||
}
|
||||
|
||||
xiSpeak.setApproveInfo(approveMap);
|
||||
this.updateById(xiSpeak);
|
||||
log.info("部门审批信息保存成功 mainId={}, deptId={}, isEnd={}, implWorker={}, implUserNameList={}",
|
||||
mainId, deptId, isEnd, implWorker, implUserNameList);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user