From 7b6f5238711fbc665017e1c2a0a38bacc2a56552 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Fri, 10 Jan 2025 16:08:54 +0800 Subject: [PATCH] =?UTF-8?q?oaform=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/anrui/oa/api/OaMendApplyRest.java | 9 ++- .../oa/biz/oaappendix/OaAppendixService.java | 31 +++++++ .../yxt/anrui/oa/biz/oaform/OaFormDto.java | 6 +- .../anrui/oa/biz/oaform/OaFormService.java | 35 +++++--- .../oa/biz/oaform/flowable/CompleteDto.java | 4 + .../oa/biz/oaform/flowable/NodeQuery.java | 4 + .../oa/biz/oaform/flowable/TaskQuery.java | 4 + .../biz/oamendapply/OaMendApplyDetailsVo.java | 80 ------------------- .../oa/biz/oamendapply/OaMendApplyInitVo.java | 80 ------------------- .../biz/oamendapply/OaMendApplyService.java | 58 ++++---------- 10 files changed, 99 insertions(+), 212 deletions(-) delete mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDetailsVo.java delete mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyInitVo.java 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 01b2c08ca4..579a450cdd 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 @@ -25,16 +25,24 @@ *********************************************************/ package com.yxt.anrui.oa.api; +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto; +import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery; +import com.yxt.anrui.oa.biz.oaform.flowable.NodeVo; +import com.yxt.anrui.oa.biz.oaform.flowable.TaskQuery; import com.yxt.anrui.oa.biz.oamendapply.*; +import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** * Project: yxt-oa(补卡申请)
@@ -93,5 +101,4 @@ public class OaMendApplyRest { return oaMendApplyService.submit(dto); } - } 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 2ca5b6300b..a54dffbfec 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 @@ -25,14 +25,20 @@ *********************************************************/ package com.yxt.anrui.oa.biz.oaappendix; +import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service public class OaAppendixService extends MybatisBaseService { + @Autowired + private FileUploadComponent fileUploadComponent; + public List fetchByLinkSid(String linkSid) { return baseMapper.fetchByLinkSid(linkSid); } @@ -46,4 +52,29 @@ public class OaAppendixService extends MybatisBaseService files, String attachType) { + List oaAppendixList = new ArrayList<>(); + if (!files.isEmpty()) { + for (String file : files) { + String filePath = file.replace(fileUploadComponent.getUrlPrefix(), ""); + OaAppendix oaAppendix = new OaAppendix(); + oaAppendix.setLinkSid(sid); + oaAppendix.setAttachType(attachType); + oaAppendix.setFilePath(filePath); + oaAppendixList.add(oaAppendix); + } + } + saveOrUpdateFile(sid, oaAppendixList); + } + + public List selectByLinkSid(String sid) { + List fileList = fetchByLinkSid(sid); + List files = new ArrayList<>(); + for (OaAppendix oaAppendix : fileList) { + String url = fileUploadComponent.getUrlPrefix() + oaAppendix.getFilePath(); + files.add(url); + } + return files; + } } \ No newline at end of file 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 001cbbf4f4..949d3a7894 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 @@ -13,8 +13,12 @@ import java.util.Date; **/ @Data public class OaFormDto { - + @ApiModelProperty("创建人sid") private String createBySid; + @ApiModelProperty("组织机构全路径") private String orgSidPath; + @ApiModelProperty("申请单编号的字母") private String billNo; + @ApiModelProperty("sid") + private String sid; } 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 1246c23206..a5e867da8e 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 @@ -79,9 +79,16 @@ public class OaFormService extends MybatisBaseService { return rb.success().setData(sid); }*/ + /** + * 保存oaform表单 + * + * @param dto + * @return + */ public ResultBean saveOaForm(OaFormDto dto) { ResultBean rb = ResultBean.fireFail(); OaForm oaForm = new OaForm(); + BeanUtil.copyProperties(dto, oaForm, "billNo", "orgSidPath"); OrgVo orgVo = sysStaffOrgFeign.getOrgByPath(dto.getOrgSidPath()).getData(); BeanUtil.copyProperties(orgVo, oaForm); // 生成单据编号 @@ -92,7 +99,6 @@ public class OaFormService extends MybatisBaseService { int i = baseMapper.selectNum(bill); String billNo = Rule.getBillNo(bill, i); oaForm.setBillNo(billNo); - oaForm.setCreateBySid(dto.getCreateBySid()); oaForm.setCreateOrgSid(oaForm.getUseOrgSid()); oaForm.setCreateOrgName(oaForm.getUseOrgName()); @@ -127,6 +133,12 @@ public class OaFormService extends MybatisBaseService { return rb.success(); } + /** + * 更新oaform表单的流程相关字段 + * + * @param oaFormFlowDto + * @return + */ public int updateFlow(OaFormFlowDto oaFormFlowDto) { OaForm oaForm = fetchBySid(oaFormFlowDto.getSid()); if (StringUtils.isBlank(oaForm.getFormType())) { @@ -140,11 +152,11 @@ public class OaFormService extends MybatisBaseService { public ResultBean complete(BusinessVariables bv) { ResultBean rb = ResultBean.fireFail(); + String formSid = bv.getFormVariables().get("formSid").toString(); String businessSid = bv.getBusinessSid(); - OaForm oaForm = fetchBySid(businessSid); - Map variables = new HashMap<>(); - //网关 - + OaForm oaForm = fetchBySid(formSid); + //添加网关 + Map variables = bv.getFormVariables(); Map appMap = new HashMap<>(); appMap.put("sid", businessSid); variables.put("app", appMap); @@ -159,7 +171,8 @@ public class OaFormService extends MybatisBaseService { } UpdateFlowFieldVo ufVo = resultBean.getData(); OaFormFlowDto oaFormFlowDto = new OaFormFlowDto(); - BeanUtil.copyProperties(ufVo, oaFormFlowDto); + BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid"); + oaFormFlowDto.setSid(formSid); updateFlow(oaFormFlowDto); if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { @@ -403,12 +416,16 @@ public class OaFormService extends MybatisBaseService { public ResultBean submit(BusinessVariables bv) { + String businessSid = bv.getBusinessSid(); + String formSid = bv.getFormVariables().get("formSid").toString(); + //启动流程 ResultBean voResultBean = flowFeign.startProcess(bv); UpdateFlowFieldVo ufVo = voResultBean.getData(); OaFormFlowDto oaFormFlowDto = new OaFormFlowDto(); - BeanUtil.copyProperties(ufVo, oaFormFlowDto); + BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid"); + oaFormFlowDto.setSid(formSid); updateFlow(oaFormFlowDto); - OaForm oaForm = fetchBySid(bv.getBusinessSid()); + OaForm oaForm = fetchBySid(bv.getFormVariables().get("formSid").toString()); try { ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() .setNameFormat("demo-pool-%d").build(); @@ -422,7 +439,7 @@ public class OaFormService extends MybatisBaseService { BeanUtil.copyProperties(ufVo, messageFlowVo); messageFlowableQuery.setUfVo(messageFlowVo); messageFlowableQuery.setAppMap((Map) bv.getFormVariables().get("app")); - messageFlowableQuery.setBusinessSid(bv.getBusinessSid()); + messageFlowableQuery.setBusinessSid(businessSid); messageFlowableQuery.setModuleName(oaForm.getFormType()); messageFlowableQuery.setMsgContent(oaForm.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); messageFlowableQuery.setMsgTitle(oaForm.getFormType()); diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java index 5726e04ab5..3ed42f4ba2 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.HashMap; +import java.util.Map; /** * @description: @@ -34,4 +36,6 @@ public class CompleteDto implements Dto { private String businessSid; private String orgPath; + + private Map formVariables = new HashMap<>(); } diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/NodeQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/NodeQuery.java index 462e1d91ae..8d3c397140 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/NodeQuery.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/NodeQuery.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.HashMap; +import java.util.Map; /** * @description: @@ -18,4 +20,6 @@ public class NodeQuery { private String taskDefKey; @ApiModelProperty(value = "业务sid") private String businessSid; + + private Map formVariables = new HashMap<>(); } diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskQuery.java index 009df0cccc..04890e7e14 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskQuery.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskQuery.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.HashMap; +import java.util.Map; /** * @description: @@ -43,4 +45,6 @@ public class TaskQuery { @ApiModelProperty("流程实例Id(移动)") private String procInsId; + + private Map formVariables = new HashMap<>(); } diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDetailsVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDetailsVo.java deleted file mode 100644 index a9d79ffbfc..0000000000 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDetailsVo.java +++ /dev/null @@ -1,80 +0,0 @@ -/********************************************************* - ********************************************************* - ******************** ******************* - ************* ************ - ******* _oo0oo_ ******* - *** o8888888o *** - * 88" . "88 * - * (| -_- |) * - * 0\ = /0 * - * ___/`---'\___ * - * .' \\| |// '. * - * / \\||| : |||// \ * - * / _||||| -:- |||||- \ * - * | | \\\ - /// | | * - * | \_| ''\---/'' |_/ | * - * \ .-\__ '-' ___/-. / * - * ___'. .' /--.--\ `. .'___ * - * ."" '< `.___\_<|>_/___.' >' "". * - * | | : `- \`.;`\ _ /`;.`/ - ` : | | * - * \ \ `_. \_ __\ /__ _/ .-` / / * - * =====`-.____`.___ \_____/___.-`___.-'===== * - * `=---=' * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * - *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* - *********************************************************/ -package com.yxt.anrui.oa.biz.oamendapply; - - -import com.yxt.common.core.vo.Vo; - -import com.fasterxml.jackson.annotation.JsonFormat; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * Project: yxt-oa(补卡申请)
- * File: OaMendApplyVo.java
- * Class: com.yxt.anrui.oa.api.oamendapply.OaMendApplyVo
- * Description: 补卡申请 视图数据对象.
- * Copyright: Copyright (c) 2011
- * Company: https://gitee.com/liuzp315
- * Makedate: 2024-12-04 14:14:34
- * - * @author liupopo - * @version 1.0 - * @since 1.0 - */ -@Data -@ApiModel(value = "补卡申请 视图数据详情", description = "补卡申请 视图数据详情") -public class OaMendApplyDetailsVo implements Vo { - - private static final long serialVersionUID = -8377279007782913681L; - private String sid; - - @ApiModelProperty("补卡原因") - private String remarks; - @ApiModelProperty("单据编号") - private String billNo; - @ApiModelProperty("申请人") - private String createByName; - private String createBySid; - @ApiModelProperty("申请部门sid") - private String deptSid; - @ApiModelProperty("申请部门名称") - private String deptName; - @ApiModelProperty("补卡时间") - private String time; - @ApiModelProperty("分公司sid") - private String useOrgSid; - @ApiModelProperty("分公司名称") - private String useOrgName; - @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/OaMendApplyInitVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyInitVo.java deleted file mode 100644 index 2ad8b34396..0000000000 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyInitVo.java +++ /dev/null @@ -1,80 +0,0 @@ -/********************************************************* - ********************************************************* - ******************** ******************* - ************* ************ - ******* _oo0oo_ ******* - *** o8888888o *** - * 88" . "88 * - * (| -_- |) * - * 0\ = /0 * - * ___/`---'\___ * - * .' \\| |// '. * - * / \\||| : |||// \ * - * / _||||| -:- |||||- \ * - * | | \\\ - /// | | * - * | \_| ''\---/'' |_/ | * - * \ .-\__ '-' ___/-. / * - * ___'. .' /--.--\ `. .'___ * - * ."" '< `.___\_<|>_/___.' >' "". * - * | | : `- \`.;`\ _ /`;.`/ - ` : | | * - * \ \ `_. \_ __\ /__ _/ .-` / / * - * =====`-.____`.___ \_____/___.-`___.-'===== * - * `=---=' * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * - *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* - *********************************************************/ -package com.yxt.anrui.oa.biz.oamendapply; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.yxt.common.core.vo.Vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * Project: yxt-oa(补卡申请)
- * File: OaMendApplyVo.java
- * Class: com.yxt.anrui.oa.api.oamendapply.OaMendApplyVo
- * Description: 补卡申请 视图数据对象.
- * Copyright: Copyright (c) 2011
- * Company: https://gitee.com/liuzp315
- * Makedate: 2024-12-04 14:14:34
- * - * @author liupopo - * @version 1.0 - * @since 1.0 - */ -@Data -@ApiModel(value = "补卡申请 视图数据对象", description = "补卡申请 视图数据对象") -public class OaMendApplyInitVo implements Vo { - - private static final long serialVersionUID = -2109900644174208483L; - private String sid; // sid - private String createBySid; - private String orgPath; - - @ApiModelProperty("单据编号") - private String billNo; - @ApiModelProperty("申请人") - private String createByName; - @ApiModelProperty("申请部门sid") - private String deptSid; - @ApiModelProperty("申请部门名称") - private String deptName; - @ApiModelProperty("补卡时间") - private String time; - @ApiModelProperty("分公司sid") - private String useOrgSid; - @ApiModelProperty("分公司名称") - private String useOrgName; - @ApiModelProperty("实例id") - private String procInstId; - @ApiModelProperty("流程定义id") - private String procDefId; - @ApiModelProperty("任务id") - private String taskId; - -} 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 36c6a4de66..b2c9b4931a 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 @@ -41,12 +41,8 @@ import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign; import com.yxt.anrui.oa.feign.message.MessageFeign; -import com.yxt.anrui.oa.feign.message.MessageFlowVo; -import com.yxt.anrui.oa.feign.message.MessageFlowableQuery; import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; -import com.yxt.anrui.oa.feign.portal.sysstafforg.SysStaffOrgFeign; -import com.yxt.anrui.oa.feign.sysuser.SysUserFeign; import com.yxt.common.base.config.component.FileUploadComponent; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; @@ -69,12 +65,6 @@ public class OaMendApplyService extends MybatisBaseService saveOrUpdateDto(OaMendApplyDto dto) { ResultBean rb = ResultBean.fireFail(); @@ -157,7 +153,7 @@ public class OaMendApplyService extends MybatisBaseService resultBean = oaFormService.saveOaForm(oaFormDto); @@ -169,7 +165,7 @@ public class OaMendApplyService extends MybatisBaseService files) { + private void saveFiles(String sid, List files, String attachType) { files.removeAll(Collections.singleton(null)); - List oaAppendixList = new ArrayList<>(); - if(!files.isEmpty()){ - 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); - oaAppendixList.add(oaAppendix); - } - } - - oaAppendixService.saveOrUpdateFile(sid, oaAppendixList); - + oaAppendixService.saveFile(sid, files, attachType); } public OaMendApplyVo fetchDetailsVoBySid(String sid) { OaMendApplyVo vo = baseMapper.fetchDetailsVoBySid(sid); - List oaAppendices = oaAppendixService.fetchByLinkSid(sid); - List files = new ArrayList<>(); - for (OaAppendix oaAppendix : oaAppendices) { - String url = fileUploadComponent.getUrlPrefix() + oaAppendix.getFilePath(); - files.add(url); - } + List files = oaAppendixService.selectByLinkSid(sid); vo.setFiles(files); return vo; } @@ -233,25 +211,22 @@ public class OaMendApplyService extends MybatisBaseService variables = new HashMap<>(); + variables.put("formSid", oaMendApply.getFormSid()); //用户的部门全路径sid SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaMendApply.getOaForm().getDeptSid()).getData(); bv.setOrgSidPath(deptVo.getOrgSidPath()); - //业务sid -// bv.setBusinessSid(businessSid); - bv.setBusinessSid(oaMendApply.getFormSid()); - //用户sid + bv.setBusinessSid(businessSid); bv.setUserSid(oaMendApply.getCreateBySid()); //若app移动端有此功能,则传递appMap参数 Map appMap = new HashMap<>(); -// appMap.put("sid", businessSid); - appMap.put("sid", oaMendApply.getFormSid()); + appMap.put("sid", businessSid); //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 variables.put("app", appMap); //网关 //流程定义id bv.setModelId(ProcDefEnum.OAMENDAPPLY.getProDefId()); - SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaMendApply.getOaForm().getDeptSid()).getData(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); if (StringUtils.isBlank(organizationVo.getManagerSid())) { return rb.setMsg("请先设置该部门的主管人员"); } @@ -269,6 +244,7 @@ public class OaMendApplyService extends MybatisBaseService