Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
yunuo970428 3 months ago
parent
commit
0e23acbd90
  1. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/OrgVo.java
  2. 4
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeign.java
  3. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeignFallback.java
  4. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeign.java
  5. 8
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeignFallback.java
  6. 6
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationRest.java
  7. 28
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationService.java
  8. 5
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgRest.java
  9. 23
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgService.java
  10. 219
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java
  11. 11
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/BusinessVariablesDto.java
  12. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/DelegateDto.java
  13. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/OaFormFlowDto.java
  14. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/SubmitDto.java
  15. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskDto.java
  16. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/OrgVo.java
  17. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java
  18. 5
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java
  19. 12
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java
  20. 21
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserQuery.java
  21. 19
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserRoleQuery.java

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/OrgVo.java → anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/OrgVo.java

@ -1,4 +1,4 @@
package com.yxt.anrui.portal.api.sysstafforg;
package com.yxt.anrui.portal.api.sysorganization;
import lombok.Data;

4
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeign.java

@ -230,4 +230,8 @@ public interface SysOrganizationFeign {
@ApiOperation("当前分公司销售专员")
ResultBean<List<SysFinanceVo>> selectStaffListByUseOrgSid(@RequestParam("useOrgSid") String useOrgSid);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据组织全路径查询组织")
ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeignFallback.java

@ -236,4 +236,9 @@ public class SysOrganizationFeignFallback implements SysOrganizationFeign {
public ResultBean<List<SysFinanceVo>> selectStaffListByUseOrgSid(String useOrgSid) {
return null;
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return null;
}
}

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeign.java

@ -127,8 +127,5 @@ public interface SysStaffOrgFeign {
@ApiOperation("根据组织全路径查询当前部门下的所有员工")
ResultBean<List<SysStaffOrgByUserVo>> selAllByOrgSidPath(@RequestParam("orgSidPath") String orgSidPath);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据组织全路径查询组织")
ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

8
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeignFallback.java

@ -1,5 +1,6 @@
package com.yxt.anrui.portal.api.sysstafforg;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -51,7 +52,7 @@ public class SysStaffOrgFeignFallback implements SysStaffOrgFeign {
public ResultBean save(SysStaffOrgDto dto){
return ResultBean.fireFail().setMsg("接口anrui_portal/sysstafforg/save无法访问");
}
@Override
public ResultBean update(SysStaffOrgDto dto,String sid){
return ResultBean.fireFail().setMsg("接口anrui_portal/sysstafforg/update无法访问");
@ -115,11 +116,6 @@ public class SysStaffOrgFeignFallback implements SysStaffOrgFeign {
return null;
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return null;
}
@Override
public ResultBean<SysStaffOrg> selectAllByStaffSid(String staffSid) {
return null;

6
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationRest.java

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.portal.api.sysorganization.*;
import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfo;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysuser.SysUser;
@ -505,4 +506,9 @@ public class SysOrganizationRest implements SysOrganizationFeign {
List<SysFinanceVo> voList = sysOrganizationService.selectStaffListByUseOrgSid(useOrgSid);
return rb.success().setData(voList);
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return sysOrganizationService.getOrgByPath(orgSidPath);
}
}

28
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationService.java

@ -717,7 +717,7 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
}
public List<SysOrganization> selectByOrgCodeAndPsid(String orgCode, String pSid) {
return baseMapper.selectByOrgCodeAndPsid(orgCode,pSid);
return baseMapper.selectByOrgCodeAndPsid(orgCode, pSid);
}
public List<SysOrganizationVo> tranOne(String sid) {
@ -728,8 +728,8 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
return baseMapper.tranTwo(sid);
}
public List<SysOrganizationVo> tranThree(String sid,String deptSid) {
return baseMapper.tranThree(sid,deptSid);
public List<SysOrganizationVo> tranThree(String sid, String deptSid) {
return baseMapper.tranThree(sid, deptSid);
}
public List<SysOrganizationVo> tranfour(String sid) {
@ -749,4 +749,26 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
}
return new ArrayList<>();
}
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
ResultBean<OrgVo> rb = ResultBean.fireFail();
OrgVo orgVo = new OrgVo();
String[] levels = orgSidPath.split("/"); // 将orgSidPath按'/'分割
String orgSid = "";
// 判断层级
if (levels.length > 3) {
orgSid = levels[2]; // 第三层级的sid
} else {
orgSid = levels[levels.length - 2]; // 倒数第二层级的sid
}
SysOrganization sysOrganization = fetchBySid(orgSid);
orgVo.setUseOrgName(sysOrganization.getName());
orgVo.setUseOrgSid(sysOrganization.getSid());
orgVo.setOrgCode(sysOrganization.getOrgCode());
String lastPart = levels[levels.length - 1];
sysOrganization = fetchBySid(lastPart);
orgVo.setDeptName(sysOrganization.getName());
orgVo.setDeptSid(sysOrganization.getSid());
return rb.success().setData(orgVo);
}
}

5
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgRest.java

@ -1,5 +1,6 @@
package com.yxt.anrui.portal.biz.sysstafforg;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.anrui.portal.api.sysstafforg.*;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
@ -160,8 +161,4 @@ public class SysStaffOrgRest implements SysStaffOrgFeign {
return sysStaffOrgService.getPathSidByUserSid(applySid);
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return sysStaffOrgService.getOrgByPath(orgSidPath);
}
}

23
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgService.java

@ -3,6 +3,7 @@ package com.yxt.anrui.portal.biz.sysstafforg;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysstafforg.*;
import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo;
@ -341,25 +342,5 @@ public class SysStaffOrgService extends MybatisBaseService<SysStaffOrgMapper, Sy
return rb.success().setData(sysStaffOrgByUserVoList);
}
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
ResultBean<OrgVo> rb = ResultBean.fireFail();
OrgVo orgVo = new OrgVo();
String[] levels = orgSidPath.split("/"); // 将orgSidPath按'/'分割
String orgSid = "";
// 判断层级
if (levels.length > 3) {
orgSid = levels[2]; // 第三层级的sid
} else {
orgSid = levels[levels.length - 2]; // 倒数第二层级的sid
}
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid);
orgVo.setUseOrgName(sysOrganization.getName());
orgVo.setUseOrgSid(sysOrganization.getSid());
orgVo.setOrgCode(sysOrganization.getOrgCode());
String lastPart = orgSidPath.contains("/") ? orgSidPath.substring(orgSidPath.lastIndexOf("/") + 1) : orgSidPath;
sysOrganization = sysOrganizationService.fetchBySid(lastPart);
orgVo.setDeptName(sysOrganization.getName());
orgVo.setDeptSid(sysOrganization.getSid());
return rb.success().setData(orgVo);
}
}

219
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java

@ -19,12 +19,14 @@ import com.yxt.anrui.oa.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.anrui.oa.feign.message.MessageFeign;
import com.yxt.anrui.oa.feign.message.MessageFlowVo;
import com.yxt.anrui.oa.feign.message.MessageFlowableQuery;
import com.yxt.anrui.oa.feign.portal.sysorganization.OrgVo;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.anrui.oa.feign.portal.sysstafforg.OrgVo;
import com.yxt.anrui.oa.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.oa.feign.sysuser.SysUserFeign;
import com.yxt.anrui.oa.feign.sysuser.SysUserVo;
import com.yxt.anrui.oa.feign.sysuser.UserQuery;
import com.yxt.anrui.oa.feign.sysuser.UserRoleQuery;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
@ -76,7 +78,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
BeanUtil.copyProperties(dto, oaForm, "billNo", "orgSidPath");
try {
// 获取组织信息,根据orgSidPath字段调用外部服务
OrgVo orgVo = sysStaffOrgFeign.getOrgByPath(dto.getOrgSidPath()).getData();
OrgVo orgVo = sysOrganizationFeign.getOrgByPath(dto.getOrgSidPath()).getData();
// 如果组织信息为空,返回失败信息
if (orgVo == null) {
return rb.setMsg("未找到对应的组织信息");
@ -118,6 +120,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
}
/**
* 详情初始化
*
* @param sid
* @return
*/
public ResultBean<OaFormDetailsVo> fetchDetailsBySid(String sid) {
ResultBean<OaFormDetailsVo> rb = ResultBean.fireFail();
OaFormDetailsVo detailsVo = baseMapper.fetchDetailsBySid(sid);
@ -127,6 +135,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.success().setData(detailsVo);
}
/**
* 分页列表
*
* @param pq
* @return
*/
public PagerVo<OaFormVo> listPageVo(PagerQuery<OaFormQuery> pq) {
OaFormQuery query = pq.getParams();
QueryWrapper<OaForm> qw = new QueryWrapper<>();
@ -136,6 +150,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return p;
}
/**
* 删除
*
* @param sids
* @return
*/
public ResultBean delAll(String[] sids) {
ResultBean rb = ResultBean.fireFail();
delBySids(sids);
@ -159,15 +179,27 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return baseMapper.updateFlowFiled(map);
}
/**
* 办理同意
*
* @param dto
* @return
*/
public ResultBean complete(BusinessVariablesDto dto) {
ResultBean rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
String businessSid = bv.getBusinessSid();
OaForm oaForm = fetchBySid(businessSid);
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
bv.setModelId(oaForm.getProcDefId());
SubmitDto submitDto = new SubmitDto();
BeanUtil.copyProperties(dto, submitDto);
//构造参数
ResultBean<BusinessVariables> businessVariablesResultBean = getGatewayParameter(submitDto);
if (!businessVariablesResultBean.getSuccess()) {
return rb.setMsg(businessVariablesResultBean.getMsg());
}
BeanUtil.copyProperties(businessVariablesResultBean.getData(), bv, "taskDefKey", "taskId");
bv.setInstanceId(oaForm.getProcInstId());
if (bv.getTaskId().equals(oaForm.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
@ -216,36 +248,38 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
}
/**
* 获取上一环节
*
* @param query
* @return
*/
public ResultBean<List<NodeVo>> getPreviousNodesForReject(NodeQuery query) {
ResultBean<List<NodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//查询业务信息
OaForm oaForm = fetchBySid(query.getBusinessSid());
//网关
bv.setModelId(oaForm.getProcDefId());
bv.setFormVariables(variables);
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<NodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), NodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
/**
* 获取下一环节
*
* @param query
* @return
*/
public ResultBean<List<NodeVo>> getNextNodesForSubmit(NodeQuery query) {
ResultBean<List<NodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//查询业务信息
OaForm oaForm = fetchBySid(query.getBusinessSid());
//网关
bv.setModelId(oaForm.getProcDefId());
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
@ -253,7 +287,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.success().setData(voList);
}
/**
* 驳回
*
* @param dto
* @return
*/
public ResultBean reject(TaskDto dto) {
ResultBean rb = ResultBean.fireFail();
String businessSid = dto.getBusinessSid();
@ -324,6 +363,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败!提交的数据不一致!");
}
/**
* 撤回
*
* @param dto
* @return
*/
public ResultBean revokeProcess(TaskDto dto) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(dto.getUserSid())) {
@ -348,10 +393,16 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败,提交的数据不一致!");
}
/**
* 终止
*
* @param dto
* @return
*/
public ResultBean breakProcess(TaskDto dto) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
if (StringUtils.isBlank(dto.getProcInsId())) {
return rb.setMsg("参数错误:procInsId");
}
if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid");
@ -391,63 +442,52 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败!提交的数据不一致!");
}
/**
* 加签
*
* @param dto
* @return
*/
public ResultBean delegate(DelegateDto dto) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(dto, delegateQuery);
delegateQuery.setInstanceId(dto.getProcInsId());
flowFeign.delegate(delegateQuery);
return rb.success();
}
/**
* 转办
*
* @param dto
* @return
*/
public ResultBean assignTask(DelegateDto dto) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(dto, delegateQuery);
delegateQuery.setInstanceId(dto.getProcInsId());
flowFeign.assignTask(delegateQuery);
return rb.success();
}
/**
* 更新流程名称和标题
*
* @param oaForm
* @return
*/
public int updateFormType(OaForm oaForm) {
return baseMapper.updateById(oaForm);
}
public ResultBean submit1(BusinessVariables bv) {
String businessSid = bv.getBusinessSid();
//启动流程
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid");
oaFormFlowDto.setSid(businessSid);
updateFlow(oaFormFlowDto);
OaForm oaForm = fetchBySid(businessSid);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) bv.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName(oaForm.getFormType());
messageFlowableQuery.setMsgContent(oaForm.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle(oaForm.getFormType());
messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
return voResultBean;
}
/**
* 提交
*
* @param dto
* @return
*/
public ResultBean submit(SubmitDto dto) {
ResultBean rb = ResultBean.fireFail();
ResultBean<BusinessVariables> businessVariablesResultBean = getGatewayParameter(dto);
@ -462,7 +502,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid");
BeanUtil.copyProperties(ufVo, oaFormFlowDto);
updateFlow(oaFormFlowDto);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
@ -488,18 +528,24 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
return voResultBean;
} else if (r == 2) {
bv.setTaskId(oaForm.getTaskId());
bv.setTaskDefKey(oaForm.getNodeId());
bv.setComment("重新提交");
bv.setInstanceId(oaForm.getProcInstId());
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto();
BeanUtil.copyProperties(bv, businessVariablesDto);
businessVariablesDto.setProcInsId(oaForm.getProcInstId());
businessVariablesDto.setTaskId(oaForm.getTaskId());
businessVariablesDto.setTaskDefKey(oaForm.getNodeId());
businessVariablesDto.setComment("重新提交");
return complete(businessVariablesDto);
}
return rb;
}
/**
* 提交锁
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitDto dto) {
int r = 0;
OaForm oaForm = fetchBySid(dto.getBusinessSid());
@ -529,7 +575,11 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
//流程定义id
bv.setModelId(dto.getProcDefId());
if (StringUtils.isBlank(oaForm.getProcDefId())) {
bv.setModelId(dto.getProcDefId());
} else {
bv.setModelId(oaForm.getProcDefId());
}
int rule = dto.getRule();
if (rule == OaFormRuleEnum.DIRECTLY_UNDER.getRule()) {
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
@ -540,10 +590,55 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
} else if (rule == OaFormRuleEnum.INSTITUTION.getRule()) {
//获取本机构链(含集团、事业部、分公司部门)中角色的用户(角色sid,发起人orgsidPath)
NodeQuery query = new NodeQuery();
query.setBusinessSid(dto.getBusinessSid());
query.setTaskDefKey(oaForm.getNodeId());
ResultBean<List<NodeVo>> resultBean = getNextNodesForSubmit(query);
List<NodeVo> voList = resultBean.getData();
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(candidateGroups.get(0));
userQuery.setOrgSidPath(bv.getOrgSidPath());
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRole(userQuery).getData();
StringBuilder nextNodeUserSids = new StringBuilder();
if (sysUserVos.size() > 0) {
for (SysUserVo sysUserVo : sysUserVos) {
String sid = sysUserVo.getSid();
nextNodeUserSids.append(sid).append(",");
}
}
if (StringUtils.isBlank(nextNodeUserSids)) {
bv.setNextNodeUserSids("");
} else {
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
}
} else if (rule == OaFormRuleEnum.OTHER_INSTITUTION.getRule()) {
//获取其他机构链角色的用户(角色sid,机构sid])
NodeQuery query = new NodeQuery();
query.setBusinessSid(dto.getBusinessSid());
query.setTaskDefKey(oaForm.getNodeId());
ResultBean<List<NodeVo>> resultBean = getNextNodesForSubmit(query);
List<NodeVo> voList = resultBean.getData();
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserRoleQuery userRoleQuery = new UserRoleQuery();
userRoleQuery.setRoleSid(candidateGroups.get(0));
userRoleQuery.setOrgSid(dto.getOrgSid());
List<SysUserVo> sysUserVos = sysUserFeign.getOtherOrgRoleUser(userRoleQuery).getData();
StringBuilder nextNodeUserSids = new StringBuilder();
if (sysUserVos.size() > 0) {
for (SysUserVo sysUserVo : sysUserVos) {
String sid = sysUserVo.getSid();
nextNodeUserSids.append(sid).append(",");
}
}
if (StringUtils.isBlank(nextNodeUserSids)) {
bv.setNextNodeUserSids("");
} else {
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
}
} else {
bv.setNextNodeUserSids("");
}

11
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/BusinessVariablesDto.java

@ -1,5 +1,6 @@
package com.yxt.anrui.oa.biz.oaform.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -31,10 +32,8 @@ public class BusinessVariablesDto {
* 审批意见
*/
private String comment;
/**
* 流程实例的id
*/
private String instanceId;
@ApiModelProperty("实例id")
private String procInsId;
/**
* taskId
*/
@ -63,4 +62,8 @@ public class BusinessVariablesDto {
* 业务参数按需传递
*/
private Map<String, Object> formVariables = new HashMap<>();
/**
* 规则请查看OaFormRuleEnum
*/
private int rule;
}

4
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/DelegateDto.java

@ -13,8 +13,8 @@ public class DelegateDto {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("实例id")
private String procInsId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")

2
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/OaFormFlowDto.java

@ -16,7 +16,7 @@ public class OaFormFlowDto {
private String procDefId;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("流程实例id")
@ApiModelProperty("实例id")
private String procInsId;
@ApiModelProperty("环节id")
private String taskDefKey;

4
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/SubmitDto.java

@ -26,8 +26,8 @@ public class SubmitDto {
private String nextNodeUserSids;
@ApiModelProperty("下一处理人获取规则")
private int rule;
// @ApiModelProperty("是否是首次提交")
// private boolean isNew;
@ApiModelProperty("任务id")
private String nextNodeSid;
@ApiModelProperty("若含有其他机构的sid,则传")
private String orgSid;
}

6
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskDto.java

@ -40,10 +40,10 @@ public class TaskDto {
/**
* 终止
*/
@ApiModelProperty("流程实例Id(PC)")
private String instanceId;
/* @ApiModelProperty("流程实例Id(PC)")
private String instanceId;*/
@ApiModelProperty("流程实例Id(移动)")
@ApiModelProperty("实例id")
private String procInsId;
private Map<String, Object> formVariables = new HashMap<>();

2
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/OrgVo.java → yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/OrgVo.java

@ -1,4 +1,4 @@
package com.yxt.anrui.oa.feign.portal.sysstafforg;
package com.yxt.anrui.oa.feign.portal.sysorganization;
import lombok.Data;

6
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
@ -32,4 +33,9 @@ public interface SysOrganizationFeign {
@ResponseBody
@GetMapping("/fetchBySid/{sid}")
public ResultBean<SysOrganizationVo> fetchBySid(@PathVariable("sid") String sid);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据用户组织全路径组织")
public ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

5
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java

@ -23,9 +23,4 @@ public interface SysStaffOrgFeign {
@ApiOperation("根据用户组织全路径获取用户的分公司sid")
ResultBean<String> getOrgSidByPath(@RequestParam("orgPath") String orgPath);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据用户组织全路径组织")
public ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

12
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java

@ -5,11 +5,14 @@ import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@Api(tags = "用户表")
@FeignClient(
contextId = "anrui-portal-SysUser",
@ -24,4 +27,13 @@ public interface SysUserFeign {
@ApiOperation("根据sid获取一条记录")
@GetMapping("/fetchBySid/{sid}")
public ResultBean<SysUserVo> fetchBySid(@PathVariable("sid") String sid);
@ApiOperation(value = "获取其他机构链角色的用户")
@GetMapping(value = "getOtherOrgRoleUser")
ResultBean<List<SysUserVo>> getOtherOrgRoleUser(@SpringQueryMap UserRoleQuery query);
@ApiOperation(value = "获取本机构链角色的用户")
@GetMapping(value = "getUserByRole")
ResultBean<List<SysUserVo>> getUserByRole(@SpringQueryMap UserQuery query);
}

21
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.oa.feign.sysuser;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/21 8:47
* @Description
*/
@Data
public class UserQuery implements Query {
private static final long serialVersionUID = -3979717077029562761L;
@ApiModelProperty(value = "角色sid必传项")
private String roleSid;
@ApiModelProperty(value = "用户部门sid路径是必传项")
private String orgSidPath;
}

19
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserRoleQuery.java

@ -0,0 +1,19 @@
package com.yxt.anrui.oa.feign.sysuser;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/8/25 8:38
* @Description
*/
@Data
public class UserRoleQuery implements Query {
private static final long serialVersionUID = 1913450300189800653L;
@ApiModelProperty("角色sid")
private String roleSid;
private String orgSid;
}
Loading…
Cancel
Save