From c444ee35aaf8bb3bca4d7cbbed11c9eefcb82d4f Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Wed, 8 Jan 2025 09:34:14 +0800 Subject: [PATCH] =?UTF-8?q?oaMendApply=E7=94=B3=E8=AF=B7=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E4=B8=8Eoaform=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=85=B3=E8=81=94=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/anrui/oa/api/OaMendApplyRest.java | 6 +- .../yxt/anrui/oa/biz/oaform/OaFormDto.java | 2 +- .../yxt/anrui/oa/biz/oaform/OaFormMapper.java | 4 + .../yxt/anrui/oa/biz/oaform/OaFormMapper.xml | 16 + .../anrui/oa/biz/oaform/OaFormService.java | 7 + .../anrui/oa/biz/oamendapply/OaMendApply.java | 59 +- .../oa/biz/oamendapply/OaMendApplyDto.java | 22 +- .../biz/oamendapply/OaMendApplyService.java | 1120 +++++++++-------- 8 files changed, 699 insertions(+), 537 deletions(-) diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java index c2349fadca..7edcb71f1a 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java @@ -74,10 +74,8 @@ public class OaMendApplyRest { @ApiOperation("新增或修改") @PostMapping("/save") - public ResultBean save(@RequestBody OaMendApplyDto dto){ - ResultBean rb = ResultBean.fireFail(); - oaMendApplyService.saveOrUpdateDto(dto); - return rb.success(); + public ResultBean save(@RequestBody OaMendApplyDto dto){ + return oaMendApplyService.saveOrUpdateDto(dto); } @ApiOperation("根据sid批量删除") diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java index 23a749626b..cd04d6381c 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java @@ -15,7 +15,7 @@ import java.util.Date; public class OaFormDto { private String sid; - + private String createBySid; @ApiModelProperty("创建人") private String createByName; @ApiModelProperty("公司sid") diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.java index 16724ba480..ab50cfc7e6 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Map; + /** * @description: * @author: dimengzhe @@ -17,4 +19,6 @@ public interface OaFormMapper extends BaseMapper { OaFormDetailsVo fetchDetailsBySid(String sid); IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + int updateFlowFiled(Map map); } diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.xml index 7446778658..54e3470fa6 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.xml +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.xml @@ -15,4 +15,20 @@ ${ew.sqlSegment} + + + UPDATE oa_form + SET nodeState=#{nodeState} + , nodeId=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid = #{sid} + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java index cbca2f68ca..d756606afe 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java @@ -7,6 +7,7 @@ import com.yxt.anrui.oa.biz.oahireapply.OaHireApplyDetailsVo; import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApply; import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyQuery; import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyVo; +import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.base.utils.StringUtils; @@ -16,6 +17,8 @@ import com.yxt.common.core.vo.PagerVo; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; +import java.util.Map; + /** * @description: * @author: dimengzhe @@ -62,4 +65,8 @@ public class OaFormService extends MybatisBaseService { delBySids(sids); return rb.success(); } + + public int updateFlow(Map map) { + return baseMapper.updateFlowFiled(map); + } } diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApply.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApply.java index 2e840cf9a1..6be7cf024c 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApply.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApply.java @@ -29,7 +29,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.yxt.anrui.oa.biz.oaform.OaForm; import com.yxt.common.core.domain.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; + import java.util.Date; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -53,32 +55,35 @@ import lombok.Data; public class OaMendApply extends OaForm { private static final long serialVersionUID = 1L; private String formSid; - @ApiModelProperty("单据编号") - private String billNo; // 单据编号 - @ApiModelProperty("申请人") - private String createByName; // 申请人 - @ApiModelProperty("申请部门sid") - private String deptSid; // 申请部门sid - @ApiModelProperty("申请部门名称") - private String deptName; // 申请部门名称 - @ApiModelProperty("补卡时间") - private String time; // 补卡时间 - @ApiModelProperty("分公司sid") - private String useOrgSid; // 分公司sid - @ApiModelProperty("分公司名称") - private String useOrgName; // 分公司名称 - @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") - @ApiModelProperty("办结日期") - private Date finishTime; // 办结日期 - @ApiModelProperty("实例id") - private String procInstId; // 实例id - @ApiModelProperty("流程定义id") - private String procDefId; // 流程定义id - @ApiModelProperty("任务id") - private String taskId; // 任务id - @ApiModelProperty("环节id") - private String nodeId; // 环节id - @ApiModelProperty("流程状态") - private String nodeState; // 流程状态 + @ApiModelProperty("补卡时间") + private String time; + + + /* @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("申请人") + private String createByName; + @ApiModelProperty("申请部门sid") + private String deptSid; + @ApiModelProperty("申请部门名称") + private String deptName; + + @ApiModelProperty("分公司sid") + private String useOrgSid; + @ApiModelProperty("分公司名称") + private String useOrgName; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; + @ApiModelProperty("流程定义id") + private String procDefId; + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("环节id") + private String nodeId; + @ApiModelProperty("流程状态") + private String nodeState;*/ } diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDto.java index 6d8734fe16..5f16c7e973 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDto.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDto.java @@ -64,30 +64,30 @@ public class OaMendApplyDto implements Dto { @ApiModelProperty("单据编号") private String billNo; // 单据编号 @ApiModelProperty("申请人") - private String createByName; // 申请人 + private String createByName; @ApiModelProperty("申请部门sid") - private String deptSid; // 申请部门sid + private String deptSid; @ApiModelProperty("申请部门名称") - private String deptName; // 申请部门名称 + private String deptName; @ApiModelProperty("补卡时间") - private String time; // 补卡时间 + private String time; @ApiModelProperty("分公司sid") - private String useOrgSid; // 分公司sid + private String useOrgSid; @ApiModelProperty("分公司名称") - private String useOrgName; // 分公司名称 + private String useOrgName; @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @ApiModelProperty("办结日期") private Date finishTime; @ApiModelProperty("实例id") - private String procInstId; // 实例id + private String procInstId; @ApiModelProperty("流程定义id") - private String procDefId; // 流程定义id + private String procDefId; @ApiModelProperty("任务id") - private String taskId; // 任务id + private String taskId; @ApiModelProperty("环节id") - private String nodeId; // 环节id + private String nodeId; @ApiModelProperty("流程状态") - private String nodeState; // 流程状态 + private String nodeState; @ApiModelProperty("图片") private List files = new ArrayList<>(); } \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java index cb0d39cd6d..5e2d8d7bec 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java @@ -33,6 +33,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.yxt.anrui.oa.biz.oaappendix.OaAppendix; import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; +import com.yxt.anrui.oa.biz.oaform.OaForm; +import com.yxt.anrui.oa.biz.oaform.OaFormDto; +import com.yxt.anrui.oa.biz.oaform.OaFormService; import com.yxt.anrui.oa.biz.oamendapply.flowable.*; import com.yxt.anrui.oa.feign.base.Rule; import com.yxt.anrui.oa.feign.file.OaFileEnum; @@ -64,6 +67,7 @@ import com.yxt.common.core.vo.PagerVo; import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.concurrent.*; @@ -72,500 +76,628 @@ import java.util.stream.Collectors; @Service public class OaMendApplyService extends MybatisBaseService { - @Autowired - private SysOrganizationFeign sysOrganizationFeign; - @Autowired - private SysStaffOrgFeign sysStaffOrgFeign; - @Autowired - private FlowableFeign flowableFeign; - @Autowired - private FlowTaskFeign flowTaskFeign; - @Autowired - private FlowFeign flowFeign; - @Autowired - private MessageFeign messageFeign; - @Autowired - private SysUserFeign sysUserFeign; - @Autowired - private FileUploadComponent fileUploadComponent; - @Autowired - private OaAppendixService oaAppendixService; - - public PagerVo listPageVo(PagerQuery pq) { - OaMendApplyQuery query = pq.getParams(); - QueryWrapper qw = new QueryWrapper<>(); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - - public String saveOrUpdateDto(OaMendApplyDto dto){ - String dtoSid = dto.getSid(); - List files = dto.getFiles(); - String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); - SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); - dto.setUseOrgSid(useOrgSid); - dto.setUseOrgName(organizationVo.getName()); - String deptName = ""; - String deptSid = ""; - List split = Arrays.asList(dto.getOrgPath().split("/")); - if (split.size() > 1) { - //获取本级sid获取本级部门信息 - SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData(); - SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData(); - deptName = sysOrganization.getName() + "/" + sysOrganization1.getName(); - deptName = sysOrganization1.getName(); - deptSid = sysOrganization1.getSid(); - } else { - SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData(); - deptName = sysOrganization.getName(); - deptName = sysOrganization.getName(); - deptSid = sysOrganization.getSid(); - } - dto.setDeptSid(deptSid); - dto.setDeptName(deptName); - if (StringUtils.isBlank(dtoSid)) { - //生成单据编号 - String billNo = ""; - String date = DateUtil.format(DateUtil.date(), "yyyyMM"); - billNo = "QJSQ" + organizationVo.getOrgCode() + date; - String i = baseMapper.selectNum(billNo); - if (StringUtils.isNotBlank(i)) { - billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); - } else { - billNo = Rule.getBillNo(billNo, 0); - } - dto.setBillNo(billNo); - String sid = this.insertByDto(dto); - for (String file : files) { - String filePath = file.replace(fileUploadComponent.getUrlPrefix(), ""); - OaAppendix oaAppendix = new OaAppendix(); - oaAppendix.setLinkSid(sid); - oaAppendix.setAttachType(OaFileEnum.OAMENDAPPLY.getAttachType()); - oaAppendix.setFilePath(filePath); - oaAppendixService.save(oaAppendix); - } - return sid; - } - this.updateByDto(dto); - return dtoSid; - } - - public String insertByDto(OaMendApplyDto dto){ - OaMendApply entity = new OaMendApply(); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - entity.setNodeState("待提交"); - entity.setCreateBySid(dto.getUserSid()); - SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); - entity.setCreateByName(sysUserVo.getName()); - baseMapper.insert(entity); - return entity.getSid(); - } - - public void updateByDto(OaMendApplyDto dto){ - String dtoSid = dto.getSid(); + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private FlowFeign flowFeign; + @Autowired + private MessageFeign messageFeign; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private OaAppendixService oaAppendixService; + @Autowired + private OaFormService oaFormService; + + public PagerVo listPageVo(PagerQuery pq) { + OaMendApplyQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public String saveOrUpdateDtoOld(OaMendApplyDto dto) { + String dtoSid = dto.getSid(); + List files = dto.getFiles(); + String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + dto.setUseOrgSid(useOrgSid); + dto.setUseOrgName(organizationVo.getName()); + String deptName = ""; + String deptSid = ""; + List split = Arrays.asList(dto.getOrgPath().split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData(); + SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData(); + deptName = sysOrganization.getName() + "/" + sysOrganization1.getName(); + deptName = sysOrganization1.getName(); + deptSid = sysOrganization1.getSid(); + } else { + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData(); + deptName = sysOrganization.getName(); + deptName = sysOrganization.getName(); + deptSid = sysOrganization.getSid(); + } + dto.setDeptSid(deptSid); + dto.setDeptName(deptName); + if (StringUtils.isBlank(dtoSid)) { + //生成单据编号 + String billNo = ""; + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + billNo = "QJSQ" + organizationVo.getOrgCode() + date; + String i = baseMapper.selectNum(billNo); + if (StringUtils.isNotBlank(i)) { + billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); + } else { + billNo = Rule.getBillNo(billNo, 0); + } + dto.setBillNo(billNo); + String sid = this.insertByDto(dto); + for (String file : files) { + String filePath = file.replace(fileUploadComponent.getUrlPrefix(), ""); + OaAppendix oaAppendix = new OaAppendix(); + oaAppendix.setLinkSid(sid); + oaAppendix.setAttachType(OaFileEnum.OAMENDAPPLY.getAttachType()); + oaAppendix.setFilePath(filePath); + oaAppendixService.save(oaAppendix); + } + return sid; + } + this.updateByDto(dto); + return dtoSid; + } + + @Transactional + public ResultBean saveOrUpdateDto(OaMendApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + List files = dto.getFiles(); + + if (StringUtils.isBlank(sid)) { + // 新建操作 + OaMendApply entity = new OaMendApply(); + + // 获取组织和部门信息 + setOrgAndDeptInfo(dto); + + // 生成单据编号 + String billNo = generateBillNo(dto); + dto.setBillNo(billNo); + + // 复制 DTO 数据到实体 + BeanUtil.copyProperties(dto, entity, "sid"); + entity.setCreateBySid(dto.getUserSid()); + + // 获取用户信息 + SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); + entity.setCreateByName(sysUserVo.getName()); + + // 创建 OA 表单 + OaFormDto oaFormDto = createOaForm(dto, sysUserVo); + ResultBean resultBean = oaFormService.saveOrUpdateForm(oaFormDto); + + if (!resultBean.getSuccess()) { + return rb; + } + + entity.setFormSid(resultBean.getData()); + baseMapper.insert(entity); + + // 处理附件 + saveFiles(sid, files); + } else { + // 更新操作 + OaMendApply entity = fetchBySid(sid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + return rb.success().setData(sid); + } + + // 获取组织和部门信息 + private void setOrgAndDeptInfo(OaMendApplyDto dto) { + String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + dto.setUseOrgSid(useOrgSid); + dto.setUseOrgName(organizationVo.getName()); + + String deptName = ""; + String deptSid = ""; + List split = Arrays.asList(dto.getOrgPath().split("/")); + + if (split.size() > 1) { + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData(); + SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData(); + deptName = sysOrganization1.getName(); + deptSid = sysOrganization1.getSid(); + } else { + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData(); + deptName = sysOrganization.getName(); + deptSid = sysOrganization.getSid(); + } + + dto.setDeptSid(deptSid); + dto.setDeptName(deptName); + } + + // 生成单据编号 + private String generateBillNo(OaMendApplyDto dto) { + String billNo = "QJSQ" + dto.getUseOrgSid() + DateUtil.format(DateUtil.date(), "yyyyMM"); + String i = baseMapper.selectNum(billNo); + if (StringUtils.isNotBlank(i)) { + return Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); + } + return Rule.getBillNo(billNo, 0); + } + + // 创建 OA 表单 + private OaFormDto createOaForm(OaMendApplyDto dto, SysUserVo sysUserVo) { + OaFormDto oaFormDto = new OaFormDto(); + BeanUtil.copyProperties(dto, oaFormDto, "sid"); + oaFormDto.setNodeState("待提交"); + oaFormDto.setCreateBySid(dto.getUserSid()); + oaFormDto.setCreateByName(sysUserVo.getName()); + return oaFormDto; + } + + // 保存文件 + private void saveFiles(String sid, List files) { + for (String file : files) { + String filePath = file.replace(fileUploadComponent.getUrlPrefix(), ""); + OaAppendix oaAppendix = new OaAppendix(); + oaAppendix.setLinkSid(sid); + oaAppendix.setAttachType(OaFileEnum.OAMENDAPPLY.getAttachType()); + oaAppendix.setFilePath(filePath); + oaAppendixService.save(oaAppendix); + } + } + + + public String insertByDto(OaMendApplyDto dto) { + OaMendApply entity = new OaMendApply(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + entity.setNodeState("待提交"); + entity.setCreateBySid(dto.getUserSid()); + SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); + entity.setCreateByName(sysUserVo.getName()); + baseMapper.insert(entity); + return entity.getSid(); + } + + public void updateByDto(OaMendApplyDto dto) { + String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { return; - } - OaMendApply entity = fetchBySid(dtoSid); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.updateById(entity); - } - - public OaMendApplyDetailsVo fetchDetailsVoBySid(String sid){ - OaMendApply entity = fetchBySid(sid); - OaMendApplyDetailsVo vo = new OaMendApplyDetailsVo(); - BeanUtil.copyProperties(entity, vo); - List oaAppendices = oaAppendixService.fetchByLinkSid(sid); - List files = new ArrayList<>(); - for (OaAppendix oaAppendix : oaAppendices) { - String url = fileUploadComponent.getUrlPrefix() + oaAppendix.getFilePath(); - files.add(url); - } - vo.setFiles(files); - return vo; - } - - public ResultBean submit(SubmitOaMendApplyDto dto) { - ResultBean rb = ResultBean.fireFail(); - OaMendApply oaMendApply = fetchBySid(dto.getSid()); - int r = submitBusinessData(dto, oaMendApply); - if (r == 3) { - return rb.setMsg("该申请不存在"); - } - if (r == 0) { - return rb.setMsg("操作失败!提交的数据不一致"); - } - //新增修改保存 - String businessSid = saveOrUpdateDto(dto); - oaMendApply = fetchBySid(businessSid); - //创建BusinessVariables实体对象 - BusinessVariables bv = new BusinessVariables(); - //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 - Map variables = new HashMap<>(); - //用户的部门全路径sid - SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); - bv.setOrgSidPath(deptVo.getOrgSidPath()); - //业务sid - bv.setBusinessSid(businessSid); - //用户sid - bv.setUserSid(oaMendApply.getCreateBySid()); - //若app移动端有此功能,则传递appMap参数 - Map appMap = new HashMap<>(); - appMap.put("sid", businessSid); - //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 - variables.put("app", appMap); - //网关 - - //流程定义id - bv.setModelId(ProcDefEnum.OAMENDAPPLY.getProDefId()); - SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); - bv.setNextNodeUserSids(organizationVo.getManagerSid()); - bv.setFormVariables(variables); - if (r == 1) { - ResultBean voResultBean = flowFeign.startProcess(bv); - UpdateFlowFieldVo ufVo = voResultBean.getData(); - updateFlowFiled(BeanUtil.beanToMap(ufVo)); - //极光推送 - oaMendApply = fetchBySid(businessSid); - //==================================添加线程 - try { - ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() - .setNameFormat("demo-pool-%d").build(); - ExecutorService pool = new ThreadPoolExecutor(2, 100, - 0L, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); - OaMendApply mendApply = oaMendApply; - Future future1 = pool.submit(() -> { - //极光推送 - MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); - MessageFlowVo messageFlowVo = new MessageFlowVo(); - BeanUtil.copyProperties(ufVo, messageFlowVo); - messageFlowableQuery.setUfVo(messageFlowVo); - messageFlowableQuery.setAppMap(appMap); - messageFlowableQuery.setBusinessSid(businessSid); - messageFlowableQuery.setModuleName("补卡申请"); - messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); - messageFlowableQuery.setMsgTitle("补卡申请"); - messageFeign.pushMessage(messageFlowableQuery); - }); - } catch (Exception e) { - e.printStackTrace(); - } - //==================================添加线程 - return voResultBean; - } - if (r == 2) { - // ToDo:驳回到发起人后再次提交 - if (StringUtils.isBlank(dto.getInstanceId())) { - return rb.setMsg("参数错误:instanceId"); - } - bv.setTaskId(oaMendApply.getTaskId()); - bv.setTaskDefKey(oaMendApply.getNodeId()); - bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); - bv.setInstanceId(dto.getInstanceId()); - return complete(bv); - } - return rb; - } - - private synchronized int submitBusinessData(SubmitOaMendApplyDto dto, OaMendApply oaMendApply) { - int r = 0; - if (StringUtils.isBlank(dto.getSid())) { - r = 1; - } else { - if (oaMendApply != null) { - String businessTaskId = oaMendApply.getTaskId(); - if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { - //新提交 - r = 1; - } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { - //二次提交//只有数据一致的时候才能进行下一步 - r = 2; - } - } else { - r = 3; - } - - } - return r; - } - - private int updateFlowFiled(Map map) { - return baseMapper.updateFlowFiled(map); - } - - public ResultBean complete(BusinessVariables bv) { - ResultBean rb = ResultBean.fireFail(); - String businessSid = bv.getBusinessSid(); - OaMendApply oaMendApply = fetchBySid(businessSid); - Map variables = new HashMap<>(); - //网关 - - Map appMap = new HashMap<>(); - appMap.put("sid", businessSid); - variables.put("app", appMap); - //======================================= - bv.setFormVariables(variables); - SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); - bv.setOrgSidPath(deptVo.getOrgSidPath()); - bv.setModelId(oaMendApply.getProcDefId()); - if (bv.getTaskId().equals(oaMendApply.getTaskId())) { - ResultBean resultBean = flowFeign.handleProsess(bv); - if (!resultBean.getSuccess()) { - return rb.setMsg(resultBean.getMsg()); - } - UpdateFlowFieldVo ufVo = resultBean.getData(); - updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); - if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { - - } else { - //极光推送 - oaMendApply = fetchBySid(businessSid); - //==================================添加线程 - try { - ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() - .setNameFormat("demo-pool-%d").build(); - ExecutorService pool = new ThreadPoolExecutor(2, 100, - 0L, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); - OaMendApply mendApply = oaMendApply; - Future future1 = pool.submit(() -> { - //极光推送 - MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); - MessageFlowVo messageFlowVo = new MessageFlowVo(); - BeanUtil.copyProperties(ufVo, messageFlowVo); - ufVo.setProcDefId(mendApply.getProcDefId()); - ufVo.setProcInsId(mendApply.getProcInstId()); - messageFlowableQuery.setUfVo(messageFlowVo); - messageFlowableQuery.setAppMap(appMap); - messageFlowableQuery.setBusinessSid(businessSid); - messageFlowableQuery.setModuleName("补卡申请"); - messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); - messageFlowableQuery.setMsgTitle("补卡申请"); - messageFeign.pushMessage(messageFlowableQuery); - }); - } catch (Exception e) { - e.printStackTrace(); - } - //==================================添加线程 - } - return rb.success().setData(resultBean.getData()); - } else { - return rb.setMsg("操作失败!提交的数据不一致"); - } - } - - public ResultBean> getPreviousNodesForReject(OaMendApplyNodeQuery query) { - ResultBean> rb = ResultBean.fireFail(); - BusinessVariables bv = new BusinessVariables(); - BeanUtil.copyProperties(query, bv); - //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 - Map variables = new HashMap<>(); - //查询业务信息 - OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); - //网关 - - bv.setModelId(oaMendApply.getProcDefId()); - bv.setFormVariables(variables); - //======================================= - ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); - //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo - List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), OaMendApplyNodeVo.class)).collect(Collectors.toList()); - return rb.success().setData(voList); - } - - public ResultBean> getNextNodesForSubmit(OaMendApplyNodeQuery query) { - ResultBean> rb = ResultBean.fireFail(); - BusinessVariables bv = new BusinessVariables(); - BeanUtil.copyProperties(query, bv); - //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 - Map variables = new HashMap<>(); - //查询业务信息 - OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); - //网关 - - bv.setModelId(oaMendApply.getProcDefId()); - bv.setFormVariables(variables); - //======================================= - ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); - //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo - List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), OaMendApplyNodeVo.class)).collect(Collectors.toList()); - return rb.success().setData(voList); - } - - public ResultBean reject(OaMendApplyTaskQuery query) { - ResultBean rb = ResultBean.fireFail(); - String businessSid = query.getBusinessSid(); - OaMendApply oaMendApply = fetchBySid(businessSid); - if (oaMendApply == null) { - return rb.setMsg("该申请不存在"); - } - String businessTaskId = oaMendApply.getTaskId(); - if (StringUtils.isNotBlank(businessTaskId)) { - if (businessTaskId.equals(query.getTaskId())) { - if (StringUtils.isBlank(query.getComment())) { - return rb.setMsg("请填写意见"); - } - if (StringUtils.isBlank(query.getUserSid())) { - return rb.setMsg("参数错误:userSid"); - } - FlowTaskVo flowTaskVo = new FlowTaskVo(); - BeanUtil.copyProperties(query, flowTaskVo); - Map variables = new HashMap<>(); - Map appMap = new HashMap<>(); - appMap.put("sid", businessSid); - variables.put("app", appMap); - //网关 - - flowTaskVo.setValues(variables); - ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); - if (!resultBean.getSuccess()) { - return rb.setMsg(resultBean.getMsg()); - } - UpdateFlowFieldVo ufVo = resultBean.getData(); - Map map = BeanUtil.beanToMap(ufVo); - //更新业务中的流程相关的参数 - updateFlowFiled(map); - //极光推送 - oaMendApply = fetchBySid(businessSid); - //==================================添加线程 - try { - ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() - .setNameFormat("demo-pool-%d").build(); - ExecutorService pool = new ThreadPoolExecutor(2, 100, - 0L, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); - OaMendApply mendApply = oaMendApply; - Future future1 = pool.submit(() -> { - //极光推送 - MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); - MessageFlowVo messageFlowVo = new MessageFlowVo(); - BeanUtil.copyProperties(ufVo, messageFlowVo); - String procId = mendApply.getProcInstId(); - ufVo.setProcInsId(procId); - ufVo.setProcDefId(mendApply.getProcDefId()); - messageFlowableQuery.setUfVo(messageFlowVo); - messageFlowableQuery.setAppMap(appMap); - messageFlowableQuery.setBusinessSid(businessSid); - messageFlowableQuery.setModuleName("补卡申请"); - ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); - String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); - List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); - if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(mendApply.getCreateBySid())) { - messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); - } else { - messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); - } - messageFlowableQuery.setMsgTitle("补卡申请"); - messageFeign.pushMessage(messageFlowableQuery); - }); - } catch (Exception e) { - e.printStackTrace(); - } - //==================================添加线程 - return rb.success(); - } - } - return rb.setMsg("操作失败!提交的数据不一致!"); - } - - public ResultBean revokeProcess(OaMendApplyTaskQuery query) { - ResultBean rb = ResultBean.fireFail(); - if (StringUtils.isBlank(query.getUserSid())) { - return rb.setMsg("参数错误:userSid"); - } - OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); - String businessTaskId = oaMendApply.getTaskId(); - if (StringUtils.isNotBlank(businessTaskId)) { - if (businessTaskId.equals(query.getTaskId())) { - FlowTaskVo flowTaskVo = new FlowTaskVo(); - BeanUtil.copyProperties(query, flowTaskVo); - ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); - if (!resultBean.getSuccess()) { - return rb.setMsg(resultBean.getMsg()); - } - updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); - return rb.success().setData(resultBean.getData()); - } - } - return rb.setMsg("操作失败,提交的数据不一致!"); - } - - public ResultBean breakProcess(OaMendApplyTaskQuery query) { - ResultBean rb = ResultBean.fireFail(); - if (StringUtils.isBlank(query.getInstanceId())) { - return rb.setMsg("参数错误:instanceId"); - } - if (StringUtils.isBlank(query.getUserSid())) { - return rb.setMsg("参数错误:userSid"); - } - if (StringUtils.isBlank(query.getComment())) { - return rb.setMsg("请填写意见"); - } - OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); - String businessTaskId = oaMendApply.getTaskId(); - if (StringUtils.isNotBlank(businessTaskId)) { - if (query.getUserSid().equals(oaMendApply.getCreateBySid())) { - FlowTaskVo flowTaskVo = new FlowTaskVo(); - BeanUtil.copyProperties(query, flowTaskVo); - ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); - if (!resultBean.getSuccess()) { - return rb.setMsg(resultBean.getMsg()); - } - Map map = BeanUtil.beanToMap(resultBean.getData()); - updateFlowFiled(map); - return rb.success().setData(resultBean.getData()); - } else { - if (businessTaskId.equals(query.getTaskId())) { - FlowTaskVo flowTaskVo = new FlowTaskVo(); - BeanUtil.copyProperties(query, flowTaskVo); - ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); - if (!resultBean.getSuccess()) { - return rb.setMsg(resultBean.getMsg()); - } - Map map = BeanUtil.beanToMap(resultBean.getData()); - updateFlowFiled(map); - return rb.success().setData(resultBean.getData()); - } - } - - } - return rb.setMsg("操作失败!提交的数据不一致!"); - } - - public ResultBean delegate(OaMendApplyDelegateQuery query) { - ResultBean rb = ResultBean.fireFail(); - FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); - BeanUtil.copyProperties(query, delegateQuery); - flowFeign.delegate(delegateQuery); - return rb.success(); - } - - public ResultBean assignTask(OaMendApplyDelegateQuery query) { - ResultBean rb = ResultBean.fireFail(); - FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); - BeanUtil.copyProperties(query, delegateQuery); - flowFeign.assignTask(delegateQuery); - return rb.success(); - } - - public ResultBean delAll(String[] sids) { - ResultBean rb = ResultBean.fireFail(); - //查询该sid中是否有流程不是待提交的 - int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); - if (count > 0) { - return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); - } - delBySids(sids); - return rb.success(); - } - - public OaMendApplyInitVo init(String sid, String userSid, String orgPath) { - OaMendApplyInitVo oaMendApplyInitVo = new OaMendApplyInitVo(); - oaMendApplyInitVo.setUserSid(userSid); - oaMendApplyInitVo.setOrgPath(orgPath); - return oaMendApplyInitVo; - } + } + OaMendApply entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public OaMendApplyDetailsVo fetchDetailsVoBySid(String sid) { + OaMendApply entity = fetchBySid(sid); + OaMendApplyDetailsVo vo = new OaMendApplyDetailsVo(); + BeanUtil.copyProperties(entity, vo); + List oaAppendices = oaAppendixService.fetchByLinkSid(sid); + List files = new ArrayList<>(); + for (OaAppendix oaAppendix : oaAppendices) { + String url = fileUploadComponent.getUrlPrefix() + oaAppendix.getFilePath(); + files.add(url); + } + vo.setFiles(files); + return vo; + } + + public ResultBean submit(SubmitOaMendApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + OaMendApply oaMendApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, oaMendApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + //新增修改保存 + String businessSid = saveOrUpdateDto(dto).getData(); + oaMendApply = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //用户的部门全路径sid + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(oaMendApply.getCreateBySid()); + //若app移动端有此功能,则传递appMap参数 + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 + variables.put("app", appMap); + //网关 + + //流程定义id + bv.setModelId(ProcDefEnum.OAMENDAPPLY.getProDefId()); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); + bv.setNextNodeUserSids(organizationVo.getManagerSid()); + bv.setFormVariables(variables); + if (r == 1) { + ResultBean voResultBean = flowFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //更新oaform中的流程数据 + ufVo.setSid(oaMendApply.getFormSid()); + oaFormService.updateFlow(BeanUtil.beanToMap(ufVo)); + //极光推送 + oaMendApply = fetchBySid(businessSid); + + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + OaMendApply mendApply = oaMendApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("补卡申请"); + messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("补卡申请"); + messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(oaMendApply.getTaskId()); + bv.setTaskDefKey(oaMendApply.getNodeId()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private synchronized int submitBusinessData(SubmitOaMendApplyDto dto, OaMendApply oaMendApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (oaMendApply != null) { + String businessTaskId = oaMendApply.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + + } + return r; + } + + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + OaMendApply oaMendApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + //网关 + + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //======================================= + bv.setFormVariables(variables); + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + bv.setModelId(oaMendApply.getProcDefId()); + if (bv.getTaskId().equals(oaMendApply.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + //更新oaform中的流程数据 + ufVo.setSid(oaMendApply.getFormSid()); + oaFormService.updateFlow(BeanUtil.beanToMap(ufVo)); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } else { + //极光推送 + oaMendApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + OaMendApply mendApply = oaMendApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + ufVo.setProcDefId(mendApply.getProcDefId()); + ufVo.setProcInsId(mendApply.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("补卡申请"); + messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("补卡申请"); + messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(OaMendApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //查询业务信息 + OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); + //网关 + + bv.setModelId(oaMendApply.getProcDefId()); + bv.setFormVariables(variables); + //======================================= + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), OaMendApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(OaMendApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //查询业务信息 + OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); + //网关 + + bv.setModelId(oaMendApply.getProcDefId()); + bv.setFormVariables(variables); + //======================================= + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), OaMendApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean reject(OaMendApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + OaMendApply oaMendApply = fetchBySid(businessSid); + if (oaMendApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = oaMendApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //网关 + + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //更新oaform中的流程数据 + ufVo.setSid(oaMendApply.getFormSid()); + oaFormService.updateFlow(BeanUtil.beanToMap(ufVo)); + //极光推送 + oaMendApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + OaMendApply mendApply = oaMendApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = mendApply.getProcInstId(); + ufVo.setProcInsId(procId); + ufVo.setProcDefId(mendApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("补卡申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(mendApply.getCreateBySid())) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + messageFlowableQuery.setMsgTitle("补卡申请"); + messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(OaMendApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = oaMendApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + //更新oaform中的流程数据 + resultBean.getData().setSid(oaMendApply.getFormSid()); + oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(OaMendApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = oaMendApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(oaMendApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + //更新oaform中的流程数据 + resultBean.getData().setSid(oaMendApply.getFormSid()); + oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + //更新oaform中的流程数据 + resultBean.getData().setSid(oaMendApply.getFormSid()); + oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegate(OaMendApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + public ResultBean assignTask(OaMendApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.assignTask(delegateQuery); + return rb.success(); + } + + public ResultBean delAll(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + //查询该sid中是否有流程不是待提交的 + int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); + if (count > 0) { + return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); + } + delBySids(sids); + return rb.success(); + } + + public OaMendApplyInitVo init(String sid, String userSid, String orgPath) { + OaMendApplyInitVo oaMendApplyInitVo = new OaMendApplyInitVo(); + oaMendApplyInitVo.setUserSid(userSid); + oaMendApplyInitVo.setOrgPath(orgPath); + return oaMendApplyInitVo; + } } \ No newline at end of file