From c444ee35aaf8bb3bca4d7cbbed11c9eefcb82d4f Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Wed, 8 Jan 2025 09:34:14 +0800 Subject: [PATCH 1/4] =?UTF-8?q?oaMendApply=E7=94=B3=E8=AF=B7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BF=AE=E6=94=B9=E4=B8=BA=E4=B8=8Eoaform=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E5=85=B3=E8=81=94=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=96=B9?= =?UTF-8?q?=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 From 71c48a21430674faf659d5525d6cc4236d25c645 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Wed, 8 Jan 2025 13:54:47 +0800 Subject: [PATCH 2/4] =?UTF-8?q?oaMendApply=E7=94=B3=E8=AF=B7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BF=AE=E6=94=B9=E4=B8=BA=E4=B8=8Eoaform=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E5=85=B3=E8=81=94=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/biz/oaappendix/OaAppendixMapper.java | 2 + .../oa/biz/oaappendix/OaAppendixMapper.xml | 10 +- .../oa/biz/oaappendix/OaAppendixService.java | 4 + .../com/yxt/anrui/oa/biz/oaform/OaForm.java | 4 - .../yxt/anrui/oa/biz/oaform/OaFormDto.java | 1 + .../oahiredetails/OaHireDetailsMapper.java | 20 +- .../biz/oahiredetails/OaHireDetailsMapper.xml | 4 +- .../oahiredetails/OaHireDetailsService.java | 90 ++++---- .../anrui/oa/biz/oamendapply/OaMendApply.java | 7 +- .../oa/biz/oamendapply/OaMendApplyDto.java | 42 ++-- .../biz/oamendapply/OaMendApplyService.java | 194 ++++++++---------- 11 files changed, 187 insertions(+), 191 deletions(-) diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java index 7407dcf7cb..84cbede976 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java @@ -36,4 +36,6 @@ public interface OaAppendixMapper extends BaseMapper { @Select("select * from oa_appendix where linkSid = #{linkSid}") List fetchByLinkSid(String linkSid); + + int deleteByLinkSid(String sid); } \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml index 1c2b097be2..d46f360e2b 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml @@ -1,6 +1,12 @@ - - + + + + + delete + from oa_appendix + where linkSid = #{sid} + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java index 4ab4677d0f..ecc44bc7fe 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java @@ -36,4 +36,8 @@ public class OaAppendixService extends MybatisBaseService fetchByLinkSid(String linkSid) { return baseMapper.fetchByLinkSid(linkSid); } + + public int deleteByLinkSid(String sid) { + return baseMapper.deleteByLinkSid(sid); + } } \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaForm.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaForm.java index b155a0f9da..d28fd76849 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaForm.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaForm.java @@ -44,10 +44,6 @@ public class OaForm extends BaseEntity { private String createOrgSid; @ApiModelProperty("创建组织") private String createOrgName; - @ApiModelProperty("图片,冗余字段") - private String imgs; - @ApiModelProperty("附件,冗余字段") - private String appendixs; @ApiModelProperty("关联审批单") private String linkFormSids; 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 cd04d6381c..cb9a00d565 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 @@ -18,6 +18,7 @@ public class OaFormDto { private String createBySid; @ApiModelProperty("创建人") private String createByName; + private String billNo; @ApiModelProperty("公司sid") private String useOrgSid; @ApiModelProperty("公司名称") diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.java index 2f6f2bd612..13c86ec2a6 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.java @@ -32,8 +32,6 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetails; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetailsVo; import java.util.List; @@ -53,13 +51,13 @@ import java.util.List; @Mapper public interface OaHireDetailsMapper extends BaseMapper { - //@Update("update oa_hire_details set name=#{msg} where id=#{id}") - //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); - - IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); - - List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); - - @Select("select * from oa_hire_details") - List selectListVo(); + //@Update("update oa_hire_details set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from oa_hire_details") + List selectListVo(); } \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.xml index cfad334c0e..3e9fe844a9 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.xml +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsMapper.xml @@ -3,11 +3,11 @@ - SELECT * FROM oa_hire_details ${ew.sqlSegment} - SELECT * FROM oa_hire_details ${ew.sqlSegment} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsService.java index 5eabaa3835..171c298ea2 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsService.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oahiredetails/OaHireDetailsService.java @@ -34,12 +34,6 @@ import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetails; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetailsQuery; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetailsVo; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetailsDetailsVo; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetailsDto; -import com.yxt.anrui.oa.api.oahiredetails.OaHireDetailsFeign; import org.springframework.stereotype.Service; @@ -60,51 +54,51 @@ import java.util.List; */ @Service public class OaHireDetailsService extends MybatisBaseService { - private QueryWrapper createQueryWrapper(OaHireDetailsQuery query) { - // todo: 这里根据具体业务调整查询条件 - // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); - QueryWrapper qw = new QueryWrapper<>(); - return qw; - } - - public PagerVo listPageVo(PagerQuery pq) { - OaHireDetailsQuery query = pq.getParams(); - QueryWrapper qw = createQueryWrapper(query); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - - public void saveOrUpdateDto(OaHireDetailsDto dto){ + private QueryWrapper createQueryWrapper(OaHireDetailsQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + OaHireDetailsQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(OaHireDetailsDto dto) { String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { this.insertByDto(dto); - return; - } - this.updateByDto(dto); - } - - public void insertByDto(OaHireDetailsDto dto){ - OaHireDetails entity = new OaHireDetails(); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.insert(entity); - } - - public void updateByDto(OaHireDetailsDto dto){ - String dtoSid = dto.getSid(); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(OaHireDetailsDto dto) { + OaHireDetails entity = new OaHireDetails(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(OaHireDetailsDto dto) { + String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { return; - } - OaHireDetails entity = fetchBySid(dtoSid); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.updateById(entity); - } - - public OaHireDetailsDetailsVo fetchDetailsVoBySid(String sid){ - OaHireDetails entity = fetchBySid(sid); - OaHireDetailsDetailsVo vo = new OaHireDetailsDetailsVo(); - BeanUtil.copyProperties(entity, vo); - return vo; - } + } + OaHireDetails entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public OaHireDetailsDetailsVo fetchDetailsVoBySid(String sid) { + OaHireDetails entity = fetchBySid(sid); + OaHireDetailsDetailsVo vo = new OaHireDetailsDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } } \ No newline at end of file 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 6be7cf024c..38268dc706 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 @@ -25,6 +25,7 @@ *********************************************************/ package com.yxt.anrui.oa.biz.oamendapply; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.yxt.anrui.oa.biz.oaform.OaForm; import com.yxt.common.core.domain.BaseEntity; @@ -35,6 +36,7 @@ import java.util.Date; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.data.annotation.Transient; /** * Project: yxt-oa(补卡申请)
@@ -52,12 +54,15 @@ import lombok.Data; @Data @ApiModel(value = "补卡申请", description = "补卡申请") @TableName("oa_mend_apply") -public class OaMendApply extends OaForm { +public class OaMendApply extends BaseEntity { private static final long serialVersionUID = 1L; private String formSid; @ApiModelProperty("补卡时间") private String time; + @TableField(exist = false) + private OaForm oaForm = new OaForm(); + /* @ApiModelProperty("单据编号") private String billNo; 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 5f16c7e973..f37536be18 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 @@ -55,39 +55,41 @@ import lombok.Data; @ApiModel(value = "补卡申请 数据传输对象", description = "补卡申请 数据传输对象") public class OaMendApplyDto implements Dto { - private String sid; // sid - private String userSid; + private static final long serialVersionUID = -4536006302677264298L; + private String sid; + private String createBySid; private String orgPath; - @ApiModelProperty("补卡原因") private String remarks; - @ApiModelProperty("单据编号") + @ApiModelProperty("补卡时间") + private String time; + @ApiModelProperty("图片") + private List files = new ArrayList<>(); + + /* @ApiModelProperty("单据编号") private String billNo; // 单据编号 - @ApiModelProperty("申请人") + @ApiModelProperty("申请人") private String createByName; - @ApiModelProperty("申请部门sid") + @ApiModelProperty("申请部门sid") private String deptSid; - @ApiModelProperty("申请部门名称") + @ApiModelProperty("申请部门名称") private String deptName; - @ApiModelProperty("补卡时间") - private String time; - @ApiModelProperty("分公司sid") + + @ApiModelProperty("分公司sid") private String useOrgSid; - @ApiModelProperty("分公司名称") + @ApiModelProperty("分公司名称") private String useOrgName; - @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @ApiModelProperty("办结日期") private Date finishTime; - @ApiModelProperty("实例id") + @ApiModelProperty("实例id") private String procInstId; - @ApiModelProperty("流程定义id") + @ApiModelProperty("流程定义id") private String procDefId; - @ApiModelProperty("任务id") + @ApiModelProperty("任务id") private String taskId; - @ApiModelProperty("环节id") + @ApiModelProperty("环节id") private String nodeId; - @ApiModelProperty("流程状态") - private String nodeState; - @ApiModelProperty("图片") - private List files = new ArrayList<>(); + @ApiModelProperty("流程状态") + private String nodeState;*/ } \ 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 5e2d8d7bec..594c0ddaa8 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 @@ -66,6 +66,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.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -106,7 +107,7 @@ public class OaMendApplyService extends MybatisBaseService files = dto.getFiles(); String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); @@ -156,7 +157,7 @@ public class OaMendApplyService extends MybatisBaseService saveOrUpdateDto(OaMendApplyDto dto) { @@ -167,24 +168,46 @@ public class OaMendApplyService extends MybatisBaseService 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(); + } // 生成单据编号 - String billNo = generateBillNo(dto); - dto.setBillNo(billNo); + String billNo = "QJSQ" + useOrgSid + DateUtil.format(DateUtil.date(), "yyyyMM"); + String i = baseMapper.selectNum(billNo); + if (StringUtils.isNotBlank(i)) { + billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); + } else { + billNo = Rule.getBillNo(billNo, 0); + } - // 复制 DTO 数据到实体 - BeanUtil.copyProperties(dto, entity, "sid"); - entity.setCreateBySid(dto.getUserSid()); + OaForm oaForm = entity.getOaForm(); + BeanUtil.copyProperties(dto, oaForm, "sid", "remarks"); + oaForm.setUseOrgSid(useOrgSid); + oaForm.setUseOrgName(organizationVo.getName()); + oaForm.setDeptSid(deptSid); + oaForm.setDeptName(deptName); + oaForm.setBillNo(billNo); // 获取用户信息 - SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); - entity.setCreateByName(sysUserVo.getName()); + SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getCreateBySid()).getData(); + oaForm.setCreateByName(sysUserVo.getName()); - // 创建 OA 表单 - OaFormDto oaFormDto = createOaForm(dto, sysUserVo); + OaFormDto oaFormDto = new OaFormDto(); + BeanUtil.copyProperties(oaForm, oaFormDto, "sid"); ResultBean resultBean = oaFormService.saveOrUpdateForm(oaFormDto); if (!resultBean.getSuccess()) { @@ -196,6 +219,7 @@ public class OaMendApplyService extends MybatisBaseService 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) { + if (files == null || files.isEmpty()) { + return; // 如果没有文件,不做任何操作 + } + oaAppendixService.deleteByLinkSid(sid); + for (String file : files) { String filePath = file.replace(fileUploadComponent.getUrlPrefix(), ""); OaAppendix oaAppendix = new OaAppendix(); @@ -264,28 +247,6 @@ public class OaMendApplyService extends MybatisBaseService variables = new HashMap<>(); //用户的部门全路径sid - SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getDeptSid()).getData(); + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getOaForm().getDeptSid()).getData(); bv.setOrgSidPath(deptVo.getOrgSidPath()); //业务sid bv.setBusinessSid(businessSid); @@ -333,7 +296,10 @@ public class OaMendApplyService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); OaMendApply mendApply = oaMendApply; + oaForm = oaFormService.fetchBySid(mendApply.getFormSid()); + mendApply.setOaForm(oaForm); Future future1 = pool.submit(() -> { //极光推送 MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); @@ -363,7 +333,7 @@ public class OaMendApplyService extends MybatisBaseService variables = new HashMap<>(); //网关 @@ -425,10 +399,10 @@ public class OaMendApplyService extends MybatisBaseService resultBean = flowFeign.handleProsess(bv); if (!resultBean.getSuccess()) { return rb.setMsg(resultBean.getMsg()); @@ -451,18 +425,20 @@ public class OaMendApplyService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); OaMendApply mendApply = oaMendApply; + oaForm = oaFormService.fetchBySid(mendApply.getFormSid()); + mendApply.setOaForm(oaForm); Future future1 = pool.submit(() -> { //极光推送 MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); MessageFlowVo messageFlowVo = new MessageFlowVo(); BeanUtil.copyProperties(ufVo, messageFlowVo); - ufVo.setProcDefId(mendApply.getProcDefId()); - ufVo.setProcInsId(mendApply.getProcInstId()); + ufVo.setProcDefId(mendApply.getOaForm().getProcDefId()); + ufVo.setProcInsId(mendApply.getOaForm().getProcInstId()); messageFlowableQuery.setUfVo(messageFlowVo); messageFlowableQuery.setAppMap(appMap); messageFlowableQuery.setBusinessSid(businessSid); messageFlowableQuery.setModuleName("补卡申请"); - messageFlowableQuery.setMsgContent(mendApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgContent(mendApply.getOaForm().getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); messageFlowableQuery.setMsgTitle("补卡申请"); messageFeign.pushMessage(messageFlowableQuery); }); @@ -485,9 +461,11 @@ public class OaMendApplyService extends MybatisBaseService variables = new HashMap<>(); //查询业务信息 OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); + OaForm oaForm = oaFormService.fetchBySid(oaMendApply.getFormSid()); + oaMendApply.setOaForm(oaForm); //网关 - bv.setModelId(oaMendApply.getProcDefId()); + bv.setModelId(oaMendApply.getOaForm().getProcDefId()); bv.setFormVariables(variables); //======================================= ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); @@ -504,9 +482,11 @@ public class OaMendApplyService extends MybatisBaseService variables = new HashMap<>(); //查询业务信息 OaMendApply oaMendApply = fetchBySid(query.getBusinessSid()); + OaForm oaForm = oaFormService.fetchBySid(oaMendApply.getFormSid()); + oaMendApply.setOaForm(oaForm); //网关 - bv.setModelId(oaMendApply.getProcDefId()); + bv.setModelId(oaMendApply.getOaForm().getProcDefId()); bv.setFormVariables(variables); //======================================= ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); @@ -522,7 +502,9 @@ public class OaMendApplyService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); OaMendApply mendApply = oaMendApply; + oaForm = oaFormService.fetchBySid(oaMendApply.getFormSid()); + mendApply.setOaForm(oaForm); Future future1 = pool.submit(() -> { //极光推送 MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); MessageFlowVo messageFlowVo = new MessageFlowVo(); BeanUtil.copyProperties(ufVo, messageFlowVo); - String procId = mendApply.getProcInstId(); + String procId = mendApply.getOaForm().getProcInstId(); ufVo.setProcInsId(procId); - ufVo.setProcDefId(mendApply.getProcDefId()); + ufVo.setProcDefId(mendApply.getOaForm().getProcDefId()); messageFlowableQuery.setUfVo(messageFlowVo); messageFlowableQuery.setAppMap(appMap); messageFlowableQuery.setBusinessSid(businessSid); @@ -579,7 +563,7 @@ public class OaMendApplyService extends MybatisBaseService Date: Wed, 8 Jan 2025 13:59:42 +0800 Subject: [PATCH 3/4] =?UTF-8?q?oaMendApply=E7=94=B3=E8=AF=B7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BF=AE=E6=94=B9=E4=B8=BA=E4=B8=8Eoaform=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E5=85=B3=E8=81=94=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anrui/oa/biz/oamendapply/flowable/SubmitOaMendApplyDto.java | 1 + 1 file changed, 1 insertion(+) diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/flowable/SubmitOaMendApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/flowable/SubmitOaMendApplyDto.java index e382c8ccd9..91cea0e7db 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/flowable/SubmitOaMendApplyDto.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/flowable/SubmitOaMendApplyDto.java @@ -16,6 +16,7 @@ import lombok.Data; @Data public class SubmitOaMendApplyDto extends OaMendApplyDto { + private static final long serialVersionUID = 8607710587497609779L; @ApiModelProperty("意见") private String comment; @ApiModelProperty("流程实例id") From 671b723ea81f20724adc8120cecd82630c8ec21a Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Wed, 8 Jan 2025 14:09:53 +0800 Subject: [PATCH 4/4] =?UTF-8?q?oaMendApply=E7=94=B3=E8=AF=B7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BF=AE=E6=94=B9=E4=B8=BA=E4=B8=8Eoaform=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E5=85=B3=E8=81=94=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anrui/oa/biz/oamendapply/OaMendApplyService.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 594c0ddaa8..aa9c11f405 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 @@ -305,7 +305,7 @@ public class OaMendApplyService extends MybatisBaseService voResultBean = flowFeign.startProcess(bv); UpdateFlowFieldVo ufVo = voResultBean.getData(); - updateFlowFiled(BeanUtil.beanToMap(ufVo)); +// updateFlowFiled(BeanUtil.beanToMap(ufVo)); //更新oaform中的流程数据 ufVo.setSid(oaMendApply.getFormSid()); oaFormService.updateFlow(BeanUtil.beanToMap(ufVo)); @@ -408,7 +408,7 @@ public class OaMendApplyService extends MybatisBaseService map = BeanUtil.beanToMap(ufVo); //更新业务中的流程相关的参数 - updateFlowFiled(map); +// updateFlowFiled(map); //更新oaform中的流程数据 ufVo.setSid(oaMendApply.getFormSid()); oaFormService.updateFlow(BeanUtil.beanToMap(ufVo)); @@ -595,7 +595,7 @@ public class OaMendApplyService extends MybatisBaseService map = BeanUtil.beanToMap(resultBean.getData()); - updateFlowFiled(map); +// updateFlowFiled(map); //更新oaform中的流程数据 resultBean.getData().setSid(oaMendApply.getFormSid()); oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData())); @@ -643,7 +643,7 @@ public class OaMendApplyService extends MybatisBaseService map = BeanUtil.beanToMap(resultBean.getData()); - updateFlowFiled(map); +// updateFlowFiled(map); //更新oaform中的流程数据 resultBean.getData().setSid(oaMendApply.getFormSid()); oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));