diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java index f277fb8a..0c2fb4a4 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java @@ -45,9 +45,9 @@ public class BpmProcessDefinitionController { return success(respVOS); } - @PostMapping ("/list-simple") + @GetMapping ("/list-simple") @Operation(summary = "获得流程定义列表-前端下拉框使用") - public CommonResult> getProcessDefinitionSimpleList(@RequestBody BpmProcessDefinitionListReqVO reqVO) { + public CommonResult> getProcessDefinitionSimpleList(BpmProcessDefinitionListReqVO reqVO) { List respVOS = bpmDefinitionService.getProcessDefinitionSimpleList(reqVO); return success(respVOS); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAPetitionController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAPetitionController.java new file mode 100644 index 00000000..eac5272b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAPetitionController.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition.BpmOAPetitionCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition.BpmOAPetitionRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAPetitionDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAPetitionServiceImpl; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * OA 签呈申请 Controller + * + * @author 符溶馨 + */ +@Tag(name = "管理后台 - OA 签呈申请") +@RestController +@RequestMapping("/bpm/oa/petition") +@Validated +public class BpmOAPetitionController { + + @Resource + private BpmOAPetitionServiceImpl petitionService; + + @PostMapping("/create") + @Operation(summary = "创建签呈申请") + public CommonResult createPetition(@Valid @RequestBody BpmOAPetitionCreateReqVO createReqVO) { + + return success(petitionService.createPetition(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得签呈申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getPetition(@RequestParam("id") Long id) { + + BpmOAPetitionDO petitionDO = petitionService.getPetition(id); + + return success(BeanUtils.toBean(petitionDO, BpmOAPetitionRespVO.class)); + } + + @GetMapping("/getByProcessInstanceId") + @Operation(summary = "获得签呈申请") + @Parameter(name = "processInstanceId", description = "流程实例编号", required = true, example = "1024") + public CommonResult getByProcessInstanceId(@RequestParam("processInstanceId") String processInstanceId) { + + BpmOAPetitionDO petitionDO = petitionService.getByProcessInstanceId(processInstanceId); + + return success(BeanUtils.toBean(petitionDO, BpmOAPetitionRespVO.class)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/AssociationVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/AssociationVO.java new file mode 100644 index 00000000..ea9e379b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/AssociationVO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "关联流程 VO") +@Data +public class AssociationVO { + + @Schema(description = "流程名称") + private String name; + + @Schema(description = "流程实例编号") + private String processInstanceId; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/BpmOAPetitionCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/BpmOAPetitionCreateReqVO.java new file mode 100644 index 00000000..48210f4e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/BpmOAPetitionCreateReqVO.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 签呈申请 创建 Request VO + * + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 签呈申请创建 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOAPetitionCreateReqVO { + + @Schema(description = "签呈标题", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "签呈标题不能为空") + private String title; + + @Schema(description = "申请内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请内容不能为空") + private String content; + + @Schema(description = "所关联的流程") + private List businessInstanceIds; + + @Schema(description = "流程实例编号") + private String processInstanceId; + + @Schema(description = "状态-参见 bpm_process_instance_result 枚举", example = "1") + private Integer result; + + @Schema(description = "上传文件") + private List fileItems; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/BpmOAPetitionRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/BpmOAPetitionRespVO.java new file mode 100644 index 00000000..caa50734 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/petition/BpmOAPetitionRespVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 签呈申请 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOAPetitionRespVO extends BpmOABaseRespVO { + + @Schema(description = "签呈标题", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "签呈标题不能为空") + private String title; + + @Schema(description = "申请内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请内容不能为空") + private String content; + + @Schema(description = "所关联的流程") + private List businessInstanceIds; + + @Schema(description = "上传文件") + private List fileItems; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPetitionDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPetitionDO.java new file mode 100644 index 00000000..65da66aa --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPetitionDO.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition.AssociationVO; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.util.List; + +@TableName(value ="bpm_oa_petition", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOAPetitionDO extends BaseDO { + + /** + * 出差表单主键 + */ + @TableId + private Long id; + + /** + * 申请人的用户编号 + * 关联 AdminUserDO 的 id 属性 + */ + private Long userId; + + /** + * 签呈标题 + */ + private String title; + + /** + * 申请内容 + */ + private String content; + + /** + * 所关联的流程 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List businessInstanceIds; + + /** + * 申请的结果 + * 枚举 {@link BpmProcessInstanceResultEnum} + * 考虑到简单,所以直接复用了 BpmProcessInstanceResultEnum 枚举,也可以自己定义一个枚举哈 + */ + private Integer result; + + /** + * 对应的流程编号 + * 关联 ProcessInstance 的 id 属性 + */ + private String processInstanceId; + + /** + * 附件基本信息 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fileItems ; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmProcessDefinitionExtMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmProcessDefinitionExtMapper.java index a04c7338..ed837721 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmProcessDefinitionExtMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmProcessDefinitionExtMapper.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.bpm.dal.mysql.definition; +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionSimpleVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; @@ -21,8 +22,8 @@ public interface BpmProcessDefinitionExtMapper extends BaseMapperX selectSimpleList(@Param("definitionIds") List definitionIds, - @Param("deptIds") List deptIds, + @DataPermission(enable = false) + List selectSimpleList(@Param("deptIds") List deptIds, @Param("createTime") LocalDateTime[] createTime, @Param("userId") Long userId); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAPetitionMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAPetitionMapper.java new file mode 100644 index 00000000..287de2dd --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAPetitionMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.oa; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAPetitionDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BpmOAPetitionMapper extends BaseMapperX { +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java index 74aed4d2..78276b56 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java @@ -146,12 +146,9 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ deptIds = deptApi.getChildDeptList(reqVO.getDeptId()).getCheckedData(); } - // 获取流程定义编号集合 - List definitionIds = convertList(processDefinitions, ProcessDefinition::getId); - // 获取各流程待审核得数量 - List definitionCounts = processDefinitionMapper.selectSimpleList(definitionIds, deptIds, reqVO.getCreateTime(), getLoginUserId()); - Map mapCount = convertMap(definitionCounts, BpmProcessDefinitionSimpleVO::getProcessDefinitionId); + List definitionCounts = processDefinitionMapper.selectSimpleList(deptIds, reqVO.getCreateTime(), getLoginUserId()); + Map mapCount = convertMap(definitionCounts, BpmProcessDefinitionSimpleVO::getName); // 整合数据 return processDefinitions.stream() @@ -159,7 +156,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ .map(item -> new BpmProcessDefinitionSimpleVO() .setName(item.getName()) .setProcessDefinitionId(item.getId()) - .setTodoCount(Optional.ofNullable(mapCount.get(item.getId()).getTodoCount()).orElse(0))) + .setTodoCount(mapCount.get(item.getName()) == null ? 0 : mapCount.get(item.getName()).getTodoCount())) .collect(Collectors.toList()); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java index 3cf0daa5..df505ff1 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java @@ -195,7 +195,7 @@ public class BpmOACashServiceImpl extends BpmOABaseService implements BpmOACashS } //判断是否为备用金报销 - boolean isImprest = false; + int isImprest = 0; BigDecimal amount = null; if (cash.getImprestId() != null) { @@ -214,15 +214,14 @@ public class BpmOACashServiceImpl extends BpmOABaseService implements BpmOACashS bpmOAImprestMapper.updateById(updateVO.setStatus(BpmOAImprestDO.FLAG_TRUE)); if (amount.compareTo(BigDecimal.ZERO) < 0) { - isImprest = true; + isImprest = 1; }else { - return; + isImprest = 2; } }else { //将相应备用金申请状态改为 未报销完毕 bpmOAImprestMapper.updateById(updateVO.setStatus(BpmOAImprestDO.NOT_COMPLETED)); - - return; + isImprest = 2; } } @@ -239,8 +238,8 @@ public class BpmOACashServiceImpl extends BpmOABaseService implements BpmOACashS .setReason(reason) .setObjectId(id) .setType(1) - .setStatus(0) - .setAmountPayable(isImprest ? amount.abs() : cash.getTotalMoney()) + .setStatus(isImprest == 2 ? 4 : 0) + .setAmountPayable(isImprest == 1 ? amount.abs() : cash.getTotalMoney()) .setBeginTime(processInstance.getCreateTime()) .setEndTime(processInstance.getEndTime()) ); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPetitionService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPetitionService.java new file mode 100644 index 00000000..e4ba6c7b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPetitionService.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition.BpmOAPetitionCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAPetitionDO; + +/** + * 签呈申请 Service 接口 + * + * @author 符溶馨 + */ +public interface BpmOAPetitionService { + + /** + * 创建签呈申请 + * @param userId 用户编号 + * @param createReqVO 创建信息 + * @return 签呈申请编号 + */ + Long createPetition(Long userId, BpmOAPetitionCreateReqVO createReqVO); + + /** + * 更新签呈申请审批结果 + * @param id 编号 + * @param result 审批结果 + */ + void updatePetitionServiceResult(Long id, Integer result); + + /** + * 获得签呈申请 + * @param id 编号 + * @return 签呈详情 + */ + BpmOAPetitionDO getPetition(Long id); + + /** + * 获得签呈申请 + * @param processInstanceId 流程实例编号 + * @return 签呈详情 + */ + BpmOAPetitionDO getByProcessInstanceId(String processInstanceId); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPetitionServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPetitionServiceImpl.java new file mode 100644 index 00000000..c363fea9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPetitionServiceImpl.java @@ -0,0 +1,101 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.petition.BpmOAPetitionCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAPetitionDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAPetitionMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService; +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_PETITION_NOT_EXISTS; + +/** + * OA 签呈申请 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class BpmOAPetitionServiceImpl extends BpmOABaseService implements BpmOAPetitionService{ + + /** + * OA 签呈对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_petition_2"; + + @Resource + private BpmOAPetitionMapper petitionMapper; + + @Resource + private BpmProcessInstanceService processInstanceService; + + @Resource + private BpmHistoryProcessInstanceService historyProcessInstanceService; + + @Override + public Long createPetition(Long userId, BpmOAPetitionCreateReqVO createReqVO) { + + //插入OA 签呈申请 + BpmOAPetitionDO petitionDO = BeanUtils.toBean(createReqVO, BpmOAPetitionDO.class).setUserId(userId) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + petitionMapper.insert(petitionDO); + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceService.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(petitionDO.getId()))); + + // 将工作流的编号,更新到 OA 加班单中 + petitionMapper.updateById(new BpmOAPetitionDO().setId(petitionDO.getId()).setProcessInstanceId(processInstanceId)); + + // 判断是否为重新发起的流程 + if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) { + + historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId()); + } + + List fileItems = createReqVO.getFileItems() ; + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + } + return petitionDO.getId(); + } + + @Override + public void updatePetitionServiceResult(Long id, Integer result) { + + validateLeaveExists(id); + petitionMapper.updateById(new BpmOAPetitionDO().setId(id).setResult(result)); + } + + @Override + public BpmOAPetitionDO getPetition(Long id) { + + return petitionMapper.selectById(id); + } + + @Override + public BpmOAPetitionDO getByProcessInstanceId(String processInstanceId) { + + return petitionMapper.selectOne(BpmOAPetitionDO::getProcessInstanceId, processInstanceId); + } + + private void validateLeaveExists(Long id) { + if (petitionMapper.selectById(id) == null) { + throw exception(OA_PETITION_NOT_EXISTS); + } + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java index 870690a0..23df388d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java @@ -193,7 +193,7 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B } //判断是否为备用金报销 - boolean isImprest = false; + int isImprest = 0; if (bpmOAReimbursementDO.getImprestId() != null) { // 获取备用金详情 @@ -208,15 +208,14 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B bpmOAImprestMapper.updateById(updateVO.setStatus(BpmOAImprestDO.FLAG_TRUE)); if (bpmOAReimbursementDO.getDifference().compareTo(BigDecimal.ZERO) < 0) { - isImprest = true; + isImprest = 1; }else { - return; + isImprest = 2; } }else { //将相应备用金申请状态改为 未报销完毕 bpmOAImprestMapper.updateById(updateVO.setStatus(BpmOAImprestDO.NOT_COMPLETED)); - - return; + isImprest = 2; } } @@ -234,8 +233,8 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B .setReason(reason) .setObjectId(id) .setType(4) - .setStatus(0) - .setAmountPayable(isImprest ? bpmOAReimbursementDO.getDifference().abs() : bpmOAReimbursementDO.getTotalMoney()) + .setStatus(isImprest == 2 ? 4 : 0) + .setAmountPayable(isImprest == 1 ? bpmOAReimbursementDO.getDifference().abs() : bpmOAReimbursementDO.getTotalMoney()) .setProcessInstanceName(processInstance.getName()) .setBeginTime(processInstance.getCreateTime()) .setEndTime(processInstance.getEndTime()) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAPetitionResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAPetitionResultListener.java new file mode 100644 index 00000000..1565852a --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAPetitionResultListener.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAPetitionService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAPetitionServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 签呈的结果的监听器实现类 + * + * @author 符溶馨 + */ +@Component +public class BpmOAPetitionResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOAPetitionService petitionService; + + @Override + protected String getProcessDefinitionKey() { + return BpmOAPetitionServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + petitionService.updatePetitionServiceResult(Long.parseLong(event.getBusinessKey()), event.getResult()); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml index a0a26050..8c06870d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml @@ -93,6 +93,12 @@ spring: instance: service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME] +# 日志文件配置 +logging: + level: + # 配置自己写的 MyBatis Mapper 打印日志 + cn.iocoder.yudao.module.bpm.dal.mysql: debug + --- #################### 芋道相关配置 #################### # 芋道配置项,设置当前项目所有自定义的配置 diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/definition/BpmProcessDefinitionMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/definition/BpmProcessDefinitionMapper.xml index 104372c2..e6dccd64 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/definition/BpmProcessDefinitionMapper.xml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/definition/BpmProcessDefinitionMapper.xml @@ -11,7 +11,7 @@