Merge remote-tracking branch 'origin/master'

This commit is contained in:
ye1023
2026-05-28 09:51:20 +08:00
13 changed files with 769 additions and 22 deletions
@@ -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
@@ -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")
@@ -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);
}
@@ -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);
}
}