From 8f9dba748594660d3b4512ebfb07bddf9f61c9f8 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 28 二月 2025 13:44:50 +0800 Subject: [PATCH] 审批流定时任务 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java | 85 +++++++++++++++++++++++++++--------------- 1 files changed, 54 insertions(+), 31 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java index 0de8a23..6f4ac09 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java @@ -3,33 +3,39 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.hutool.core.util.ObjectUtil; +import com.aizuda.bpm.engine.entity.FlwTask; +import com.aizuda.bpm.mybatisplus.mapper.FlwTaskMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.collect.ImmutableMap; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.DictConstants; -import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.ProcessCategoryEnum; -import com.ruoyi.common.utils.*; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.DictUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.WebUtils; import com.ruoyi.system.bo.ProcessStartBO; -import com.ruoyi.system.dto.*; +import com.ruoyi.system.dto.RevokeDTO; +import com.ruoyi.system.dto.SetContractDto; +import com.ruoyi.system.dto.TContractDTO; +import com.ruoyi.system.dto.TerminateContractDTO; import com.ruoyi.system.export.ContractExport; -import com.ruoyi.system.export.OpticalInspectionExport; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TContractBillQuery; import com.ruoyi.system.query.TContractQuery; -import com.ruoyi.system.query.THouseQuery; -import com.ruoyi.system.query.TUserHistoryQuery; import com.ruoyi.system.service.*; +import com.ruoyi.system.task.base.QuartzManager; +import com.ruoyi.system.task.base.TimeJobType; +import com.ruoyi.system.task.jobs.StateProcessJob; import com.ruoyi.system.vo.BillVO; import com.ruoyi.system.vo.CheckAcceptRecordVO; -import com.ruoyi.system.vo.HouseVO; +import com.ruoyi.system.vo.TContractVO; import com.ruoyi.web.controller.tool.NumberToChineseUtils; import com.ruoyi.web.controller.tool.WordUtil; -import io.swagger.annotations.Api; -import com.ruoyi.system.vo.TContractVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; @@ -44,7 +50,6 @@ import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.*; @@ -73,7 +78,8 @@ private TCheckAcceptRecordService checkAcceptRecordService; @Autowired private StateProcessTemplateService stateProcessTemplateService; - + @Autowired + private FlwTaskMapper flwTaskMapper; @ApiOperation(value = "测试生成账单") @PostMapping(value = "/testBill") public R testBill(String id) { @@ -179,7 +185,6 @@ @ApiOperation(value = "获取合同分页列表") @PostMapping(value = "/contractList") @PreAuthorize("@ss.hasPermi('system:contract:list')") - public R<PageInfo<TContract>> contractList(@RequestBody TContractQuery query) { return R.ok(contractService.contractList(query)); } @@ -188,18 +193,13 @@ @PostMapping(value = "/addContract") @PreAuthorize("@ss.hasPermi('system:contract:add')") public R<Boolean> addContract(@Validated @RequestBody TContractDTO dto) { + long count = contractService.count(new LambdaQueryWrapper<TContract>().eq(TContract::getContractNumber, dto.getContractNumber())); + if (count!=0){ + return R.fail("合同编号不可重复"); + } dto.setChangeRent(dto.getMonthRent()); contractService.save(dto); - if (dto.getIsIncreasing()){ - TContractRentType tContractRentType = new TContractRentType(); - tContractRentType.setContractId(dto.getId()); - tContractRentType.setIncreasingDecreasing(dto.getIncreasingDecreasing()); - tContractRentType.setIncreasingDecreasingType(dto.getIncreasingDecreasingType()); - tContractRentType.setNumericalValue(dto.getNumericalValue()); - tContractRentType.setChangeTime(dto.getChangeTime()); - tContractRentType.setCycleTime(dto.getCycleTime()); - contractRentTypeService.save(tContractRentType); - + if (dto.getStatus().equals("2")){ //发起合同新增审批 ProcessStartBO processStartBO = new ProcessStartBO(); processStartBO.setCategory(ProcessCategoryEnum.CATEGORY1.getValue().toString()); @@ -213,7 +213,31 @@ variable.put("projectId", dto.getId()); processStartBO.setVariable(variable); //开启工作流程 - stateProcessTemplateService.start(processStartBO); + Boolean start = stateProcessTemplateService.start(processStartBO); + if(start){ + FlwTask flwTask = flwTaskMapper.selectOne(Wrappers.lambdaQuery(FlwTask.class) + .like(FlwTask::getVariable, dto.getId()) + .orderByDesc(FlwTask::getCreateTime) + .last("LIMIT 1")); + if(Objects.nonNull(flwTask)){ + // 添加定时任务 + Map<String, ? extends Object> maps = + new ImmutableMap.Builder<String, Long>(). + put("id", flwTask.getId()) + .build(); + QuartzManager.addJob(StateProcessJob.class, (StateProcessJob.name+flwTask.getId()).toUpperCase(), TimeJobType.AUTO_AUDIT,new Date(new Date().getTime()+3*60*1000L), maps); + } + } + } + if (dto.getIsIncreasing()){ + TContractRentType tContractRentType = new TContractRentType(); + tContractRentType.setContractId(dto.getId()); + tContractRentType.setIncreasingDecreasing(dto.getIncreasingDecreasing()); + tContractRentType.setIncreasingDecreasingType(dto.getIncreasingDecreasingType()); + tContractRentType.setNumericalValue(dto.getNumericalValue()); + tContractRentType.setChangeTime(dto.getChangeTime()); + tContractRentType.setCycleTime(dto.getCycleTime()); + contractRentTypeService.save(tContractRentType); } return R.ok(); } @@ -252,7 +276,6 @@ @ApiOperation(value = "查询合同信息信息") @GetMapping(value = "/getContractById") @PreAuthorize("@ss.hasPermi('system:contract:detail')") - public R<TContractVO> getContractById(@RequestParam String id) { TContractVO res = new TContractVO(); TContract contract = contractService.getById(id); @@ -290,16 +313,17 @@ @Log(title = "合同管理-撤销审批", businessType = BusinessType.UPDATE) @ApiOperation(value = "撤销审批") @PreAuthorize("@ss.hasPermi('system:contract:revoke')") - - @GetMapping(value = "/updateContractStatus") - public R<Boolean> updateContractStatus(String id) { - TContract contract = contractService.getById(id); + @PostMapping(value = "/updateContractStatus") + public R<Boolean> updateContractStatus(@RequestBody RevokeDTO dto) { + TContract contract = contractService.getById(dto.getContractId()); contract.setStatus("1"); contractService.updateById(contract); + // 撤销审批实例 + stateProcessTemplateService.revoke(dto.getInstanceId()); + return R.ok(); } @PreAuthorize("@ss.hasPermi('system:contract:confirm')") - @Log(title = "合同管理-确认结算", businessType = BusinessType.UPDATE) @ApiOperation(value = "确认结算") @PostMapping(value = "/confirmSettlement") @@ -321,7 +345,6 @@ @PreAuthorize("@ss.hasPermi('system:contract:terminate')") public R terminateContract(@RequestBody TerminateContractDTO dto) { contractService.terminateContract(dto); - // 生成房屋验收记录 待验收 return R.ok(); } @ApiOperation(value = "根据合同id查看验收记录") -- Gitblit v1.7.1