From 4861591848e5db2811c7651564793a1483d88922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E8=BF=AA?= <2596750866@qq.com> Date: Tue, 22 Oct 2024 09:29:58 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=9F=BA=E7=A1=80=E8=B5=84=E6=96=99=20?= =?UTF-8?q?=E5=87=BA=E5=B7=AE=E5=8D=95=20=E4=BF=AE=E6=94=B9=E5=87=BA?= =?UTF-8?q?=E5=B7=AE=E5=8D=95=E5=AE=9E=E4=BD=93=E7=B1=BB=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=90=84=E5=87=BA=E5=B7=AE=E6=97=B6=E9=97=B4=E4=B8=BA?= =?UTF-8?q?String=E7=B1=BB=E5=9E=8B=EF=BC=9B=20=E6=96=B0=E5=A2=9E=E5=87=BA?= =?UTF-8?q?=E5=B7=AE=E5=8D=95=E4=BA=BA=E4=BA=8B=E5=BD=95=E5=85=A5=E5=87=BA?= =?UTF-8?q?=E8=A1=8C=E8=B4=B9=E7=94=A8=E3=80=81=E4=BA=BA=E4=BA=8B=E6=A0=B8?= =?UTF-8?q?=E5=87=86=E3=80=81=E4=BD=9C=E5=BA=9F=E5=92=8C=E6=81=A2=E5=A4=8D?= =?UTF-8?q?controller=E6=8E=A5=E5=8F=A3=EF=BC=9B=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=87=BA=E5=B7=AE=E5=8D=95mapper=E4=BD=9C=E5=BA=9F=E7=90=86?= =?UTF-8?q?=E7=94=B1=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=9B=B8?= =?UTF-8?q?=E5=BA=94=E6=96=B9=E6=B3=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseEvectionFormController.java | 74 +++++++++++++++++-- .../ruoyi/system/domain/BaseEvectionForm.java | 26 ++++--- .../service/IBaseEvectionFormService.java | 4 +- .../impl/BaseEvectionFormServiceImpl.java | 48 +++++++++++- .../mapper/system/BaseEvectionFormMapper.xml | 10 ++- 5 files changed, 136 insertions(+), 26 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseEvectionFormController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseEvectionFormController.java index 851249a7..08ec56c3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseEvectionFormController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseEvectionFormController.java @@ -3,9 +3,11 @@ package com.ruoyi.system.controller; import java.util.HashMap; import java.util.List; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.system.domain.Vo.BaseEvectionFormVo; import com.ruoyi.system.domain.Vo.BaseExpenseAccountVo; +import com.ruoyi.system.domain.Vo.OutsourceOrderVO; import com.ruoyi.system.service.ISysUserService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; @@ -148,9 +150,18 @@ public class BaseEvectionFormController extends BaseController String instanceId = baseEvectionFormVo.getInstanceId(); String instanceType = baseEvectionFormVo.getInstanceType(); + // 判断任务节点 + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); boolean approvedFlag = processService.complete(taskId, instanceId, baseEvectionFormVo.getApplyTitle(), baseEvectionFormVo.getEvectionCode(), "evection", new HashMap(), request); + + if(verifyName.equals("ModifyApply")){ + //驳回调整,设置为待审核 + baseEvectionFormVo.setAuditStatus("0"); + baseEvectionFormVo.setApplyTime(DateUtils.getNowDate()); + } if(!approvedFlag){ // 审核状态-审核拒绝 baseEvectionFormVo.setAuditStatus("2"); @@ -195,6 +206,50 @@ public class BaseEvectionFormController extends BaseController mmap.put("baseEvectionForm", baseEvectionForm); return prefix + "/edit"; } + /** + * 人事录入出差单费用等 + */ + @GetMapping("/hrRecord/{evectionId}") + public String hrRecord(@PathVariable("evectionId") Long evectionId, ModelMap mmap) + { + BaseEvectionForm baseEvectionForm = baseEvectionFormService.selectBaseEvectionFormById(evectionId); + mmap.put("baseEvectionForm", baseEvectionForm); + return prefix + "/hrRecord"; + } + + //人事录入出行费用 + @RequiresPermissions("system:baseEvectionForm:hrRecord") + @PostMapping("/hrRecord") + @ResponseBody + public AjaxResult hrRecordSave(BaseEvectionForm baseEvectionForm) + { + baseEvectionForm.setPersonnelAdministration("1");//已录入 + baseEvectionFormService.updateBaseEvectionForm(baseEvectionForm); + return AjaxResult.success(); + } + + /** + * 人事核准 + */ + @GetMapping("/hrApprove/{evectionId}") + public String hrApprove(@PathVariable("evectionId") Long evectionId, ModelMap mmap) + { + BaseEvectionForm baseEvectionForm = baseEvectionFormService.selectBaseEvectionFormById(evectionId); + mmap.put("baseEvectionForm", baseEvectionForm); + return prefix + "/hrApprove"; + } + + //人事录入出行费用 + @RequiresPermissions("system:baseEvectionForm:hrApprove") + @PostMapping("/hrApprove") + @ResponseBody + public AjaxResult hrApproveSave(BaseEvectionForm baseEvectionForm) + { + baseEvectionForm.setPersonnelAdministration("2");//已核准 + baseEvectionFormService.updateBaseEvectionForm(baseEvectionForm); + return AjaxResult.success(); + } + @GetMapping("/detail/{id}") public String detail(@PathVariable("id") Long id, ModelMap mmap) { @@ -226,17 +281,26 @@ public class BaseEvectionFormController extends BaseController return toAjax(baseEvectionFormService.deleteBaseEvectionFormByIds(ids)); } + /** + * 加载作废出差单信息弹窗 + */ + @GetMapping("/cancel/{id}") + public String cancel(@PathVariable("id") Long id, ModelMap mmap) { + BaseEvectionForm baseEvectionForm = baseEvectionFormService.selectBaseEvectionFormById(id); + mmap.put("baseEvectionForm", baseEvectionForm); + return prefix + "/cancel"; + } + /** * 作废出差单 */ @RequiresPermissions("system:baseEvectionForm:cancel") @Log(title = "出差单", businessType = BusinessType.CANCEL) - @GetMapping( "/cancel/{id}") + @PostMapping( "/cancel") @ResponseBody - public AjaxResult cancel(@PathVariable("id") Long id){ - return toAjax(baseEvectionFormService.cancelBaseEvectionFormById(id)); + public AjaxResult cancel(BaseEvectionForm baseEvectionForm){ + return toAjax(baseEvectionFormService.cancelBaseEvectionFormByObject(baseEvectionForm)); } - /** * 恢复出差单 */ @@ -253,6 +317,6 @@ public class BaseEvectionFormController extends BaseController @ResponseBody public AjaxResult getId() { - return AjaxResult.success(baseEvectionFormService.getId()); + return AjaxResult.success(baseEvectionFormService.getId()); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BaseEvectionForm.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BaseEvectionForm.java index bab1e184..f7f6370f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BaseEvectionForm.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/BaseEvectionForm.java @@ -1,5 +1,6 @@ package com.ruoyi.system.domain; +import com.alibaba.excel.annotation.format.DateTimeFormat; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -67,11 +68,12 @@ public class BaseEvectionForm extends BaseEntity /** 出差时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") @Excel(name = "预计出差开始时间") - private Date evectionBeginTime; + private String evectionBeginTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "预计出差结束时间") - private Date evectionEndTime; + private String evectionEndTime; /** 派工单号 */ @Excel(name = "派工单号") @@ -104,11 +106,11 @@ public class BaseEvectionForm extends BaseEntity /** 实际出差时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "实际出差时间") - private Date realityEvenctionBeginTime; + private String realityEvenctionBeginTime; /** 实际出差时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "实际出差时间") - private Date realityEvenctionEndTime; + private String realityEvenctionEndTime; /** 申请人 */ @Excel(name = "申请人") @@ -303,19 +305,19 @@ public class BaseEvectionForm extends BaseEntity return evectionCauses; } - public Date getEvectionBeginTime() { + public String getEvectionBeginTime() { return evectionBeginTime; } - public void setEvectionBeginTime(Date evectionBeginTime) { + public void setEvectionBeginTime(String evectionBeginTime) { this.evectionBeginTime = evectionBeginTime; } - public Date getEvectionEndTime() { + public String getEvectionEndTime() { return evectionEndTime; } - public void setEvectionEndTime(Date evectionEndTime) { + public void setEvectionEndTime(String evectionEndTime) { this.evectionEndTime = evectionEndTime; } @@ -383,19 +385,19 @@ public class BaseEvectionForm extends BaseEntity return otherExpensesBudget; } - public Date getRealityEvenctionBeginTime() { + public String getRealityEvenctionBeginTime() { return realityEvenctionBeginTime; } - public void setRealityEvenctionBeginTime(Date realityEvenctionBeginTime) { + public void setRealityEvenctionBeginTime(String realityEvenctionBeginTime) { this.realityEvenctionBeginTime = realityEvenctionBeginTime; } - public Date getRealityEvenctionEndTime() { + public String getRealityEvenctionEndTime() { return realityEvenctionEndTime; } - public void setRealityEvenctionEndTime(Date realityEvenctionEndTime) { + public void setRealityEvenctionEndTime(String realityEvenctionEndTime) { this.realityEvenctionEndTime = realityEvenctionEndTime; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseEvectionFormService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseEvectionFormService.java index bcaf1e50..7b90c3fa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseEvectionFormService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseEvectionFormService.java @@ -65,10 +65,10 @@ public interface IBaseEvectionFormService /** * 作废出差单 - * @param evectionId 出差单ID + * @param baseEvectionForm 出差单 * @return */ - int cancelBaseEvectionFormById(Long evectionId); + int cancelBaseEvectionFormByObject(BaseEvectionForm baseEvectionForm); /** * 恢复出差单 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseEvectionFormServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseEvectionFormServiceImpl.java index 12a57568..ede4a013 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseEvectionFormServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseEvectionFormServiceImpl.java @@ -21,6 +21,7 @@ import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.system.domain.BaseExpenseAccount; import com.ruoyi.system.domain.Vo.BaseEvectionFormVo; import com.ruoyi.system.domain.Vo.BaseExpenseAccountVo; +import com.ruoyi.system.domain.Vo.OutsourceOrderVO; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.IBaseExpenseAccountService; import com.ruoyi.system.service.ISysRoleService; @@ -220,13 +221,33 @@ public class BaseEvectionFormServiceImpl implements IBaseEvectionFormService /** * 作废出差单 * - * @param evectionId 出差单ID + * @param baseEvectionForm 出差单 * @return 结果 */ @Override - public int cancelBaseEvectionFormById(Long evectionId) + public int cancelBaseEvectionFormByObject(BaseEvectionForm baseEvectionForm) { - return baseEvectionFormMapper.cancelBaseEvectionFormById(evectionId); + BaseEvectionForm baseEvectionFormVo = baseEvectionFormMapper.selectBaseEvectionFormById(baseEvectionForm.getEvectionId()); + // 审核状态-待审核 + baseEvectionFormVo.setAuditStatus("0"); + SysUser user = ShiroUtils.getSysUser(); + // 启动流程 + String applyTitle = user.getUserName()+"发起了出差单作废审批-"+DateUtils.dateTimeNow(); + String instanceType = "cancel"; + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,baseEvectionFormVo, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 作废实例id + baseEvectionFormVo.setCancelInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + baseEvectionFormVo.setAuditStatus("1"); + // 使用状态-已作废 + baseEvectionFormVo.setUseStatus("2"); + } + baseEvectionFormVo.setCancelRemark(baseEvectionForm.getCancelRemark()); + return baseEvectionFormMapper.updateBaseEvectionForm(baseEvectionFormVo); } /** @@ -238,7 +259,26 @@ public class BaseEvectionFormServiceImpl implements IBaseEvectionFormService @Override public int restoreBaseEvectionFormById(Long evectionId) { - return baseEvectionFormMapper.restoreBaseEvectionFormById(evectionId); + BaseEvectionForm baseEvectionForm = baseEvectionFormMapper.selectBaseEvectionFormById(evectionId); + // 审核状态-待审核 + baseEvectionForm.setAuditStatus("0"); + SysUser user = ShiroUtils.getSysUser(); + // 启动流程 + String applyTitle = user.getUserName()+"发起了出差单恢复审批-"+DateUtils.dateTimeNow(); + String instanceType = "restore"; + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,baseEvectionForm, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 恢复实例id + baseEvectionForm.setRestoreInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + baseEvectionForm.setAuditStatus("1"); + // 使用状态-是 + baseEvectionForm.setUseStatus("1"); + } + return baseEvectionFormMapper.updateBaseEvectionForm(baseEvectionForm); } @Override public Object getId() { diff --git a/ruoyi-admin/src/main/resources/mapper/system/BaseEvectionFormMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/BaseEvectionFormMapper.xml index 1bb79e92..1b473717 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/BaseEvectionFormMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/BaseEvectionFormMapper.xml @@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -51,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" travel_mode,hotel,transportation_cost_budget,accommodation_budget,other_expenses_budget, reality_evenction_begin_time,reality_evenction_end_time,create_by,create_time,update_by, update_time,remark,instance_id,instance_type,submit_instance_id,cancel_instance_id, - restore_instance_id,apply_title,apply_user,apply_time + restore_instance_id,apply_title,apply_user,apply_time,cancel_remark from base_evection_form @@ -60,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and audit_status = #{auditStatus} and use_status = #{useStatus} - and evection_code = #{evectionCode} + and evection_code like concat('%', #{evectionCode}, '%') and evection_addr = #{evectionAddr} and evection_detail_addr = #{evectionDetailAddr} and evection_causes = #{evectionCauses} @@ -75,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and apply_title = #{applyTitle} and apply_user = #{applyUser} and apply_time = #{applyTime} - and create_time between #{params.beginCreateTime} and #{params.endCreateTime} + and Date(apply_time) between #{params.beginApplyTime} and #{params.endApplyTime} order by audit_status asc, create_time desc @@ -182,12 +183,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" transportation_cost_budget = #{transportationCostBudget}, accommodation_budget = #{accommodationBudget}, other_expenses_budget = #{otherExpensesBudget}, + reality_evenction_begin_time = #{realityEvenctionBeginTime}, + reality_evenction_end_time = #{realityEvenctionEndTime}, apply_user = #{applyUser}, create_by = #{createBy}, create_time = #{createTime}, update_by = #{updateBy}, update_time = #{updateTime}, remark = #{remark}, + cancel_remark = #{cancelRemark}, instance_id = #{instanceId}, instance_type = #{instanceType}, submit_instance_id = #{submitInstanceId},