From 7e4f7e7168e40c1f9be10ca98a04003502a575c7 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Tue, 17 Jun 2025 17:48:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=87=BA:=E5=BB=B6=E6=9C=9F,=E6=89=A3=E6=AC=BE=E7=AD=89?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/domain/WorkOrderInfo.java | 15 +++- .../platform/domain/bo/WorkOrderInfoBo.java | 4 +- .../platform/domain/bo/WorkReviewInfoBo.java | 5 ++ .../platform/domain/vo/WorkOrderInfoVo.java | 41 +++++++--- .../mapper/WorkOrderProcessMapper.java | 15 ++++ .../platform/mapper/WorkReviewInfoMapper.java | 11 +++ .../impl/WorkOrderInfoServiceImpl.java | 82 +++++++++++++++++-- 7 files changed, 149 insertions(+), 24 deletions(-) diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java index 481a8e3..2b11df7 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java @@ -54,12 +54,12 @@ public class WorkOrderInfo extends TenantEntity { private String repairer; /** - * 保修人员ID + * 报修人员ID */ private String repairerId; /** - * + *报修时间 */ private Date repairTime; @@ -133,11 +133,20 @@ public class WorkOrderInfo extends TenantEntity { */ private String longitude; + /** + * 处理人 + */ + private String handler; /** * 处理时间 */ - private Long handleTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date handleTime; + /** + * 处理结果 + */ + private String handleResult; /** * 当前状态 * 0 待派遣 diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java index fb428f3..e4216e3 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java @@ -65,7 +65,7 @@ public class WorkOrderInfoBo extends BaseEntity { /** * 保修人员ID */ - //@NotBlank(message = "保修人员ID不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "报修人员ID不能为空", groups = { AddGroup.class, EditGroup.class }) private String repairerId; /** @@ -162,7 +162,7 @@ public class WorkOrderInfoBo extends BaseEntity { * 处理时间 */ //@NotNull(message = "处理时间不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long handleTime; + private Date handleTime; /** * 当前状态 diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkReviewInfoBo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkReviewInfoBo.java index f23cdcc..fc4d9bf 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkReviewInfoBo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkReviewInfoBo.java @@ -64,6 +64,10 @@ public class WorkReviewInfoBo extends BaseEntity { @NotBlank(message = "处理结果:通过,退回不能为空", groups = { AddGroup.class, EditGroup.class }) private String handleResult; + + //审核结果 + private String auditResult; + /** * 接单是否超期 */ @@ -131,4 +135,5 @@ public class WorkReviewInfoBo extends BaseEntity { private Long status; + } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java index ac55f38..055d395 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java @@ -40,7 +40,7 @@ public class WorkOrderInfoVo implements Serializable { /** * 工单ID */ - @ExcelProperty(value = "工单ID") + @ExcelProperty(value = "工单号") private String id; /** @@ -77,7 +77,7 @@ public class WorkOrderInfoVo implements Serializable { /** * */ - @ExcelProperty(value = "维修时间") + @ExcelProperty(value = "报修时间") private Date repairTime; /** @@ -171,12 +171,6 @@ public class WorkOrderInfoVo implements Serializable { @ExcelIgnore private String longitude; - /** - * 处理时间 - */ - @ExcelProperty(value = "处理时间") - private Long handleTime; - /** * 当前状态 * 0 待派遣 @@ -212,8 +206,24 @@ public class WorkOrderInfoVo implements Serializable { /** * 待处理人 */ + @ExcelProperty(value = "处理人") private String handler; + + @ExcelProperty(value = "接单时间") + private Date orderAcceptTime; + + + /** + * 处理时间 + */ + @ExcelProperty(value = "处理时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date handleTime; + + + @ExcelProperty(value = "处理结果") + private String handleResult; /** * 剩余处理时间 */ @@ -224,19 +234,28 @@ public class WorkOrderInfoVo implements Serializable { */ private String orderAcceptDeadline; + @ExcelProperty(value = "是否延期") + private String isDelay; + @ExcelProperty(value = "延期理由") private String delayReason; /** * 延期时间 */ - @ExcelProperty(value = "延期时间") + @ExcelProperty(value = "延期后的处理截至时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date delayTime; - @ExcelProperty(value = "是否延期") - private String isDelay; + @ExcelProperty(value = "初审建议") + private String initAdvice; + + + @ExcelProperty(value = "终审建议") + private String lastAdvice; + + // @ExcelProperty(value = "是否超期") // private String isTimeOut; diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderProcessMapper.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderProcessMapper.java index 0683f95..14eddf0 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderProcessMapper.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderProcessMapper.java @@ -1,9 +1,12 @@ package org.dromara.platform.mapper; +import org.apache.ibatis.annotations.Select; import org.dromara.platform.domain.WorkOrderProcess; import org.dromara.platform.domain.vo.WorkOrderProcessVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.Date; + /** * 工单流程信息Mapper接口 * @@ -12,4 +15,16 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface WorkOrderProcessMapper extends BaseMapperPlus { + + @Select(" SELECT operator FROM work_order_process WHERE work_order_id = #{workOrderId} " + + "AND operation_name = '故障接单' " + + "ORDER BY operation_time DESC LIMIT 1") + String getHandlerByWorkOrderId(String workOrderId); + + @Select(" SELECT operation_time FROM work_order_process WHERE work_order_id = #{workOrderId} " + + "AND operation_name = '故障接单' " + + "ORDER BY operation_time DESC LIMIT 1") + Date getOrderAcceptTimeByWorkOrderId(String workOrderId); + + } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkReviewInfoMapper.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkReviewInfoMapper.java index e71205c..b11e89d 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkReviewInfoMapper.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkReviewInfoMapper.java @@ -1,5 +1,6 @@ package org.dromara.platform.mapper; +import org.apache.ibatis.annotations.Select; import org.dromara.platform.domain.WorkReviewInfo; import org.dromara.platform.domain.vo.WorkReviewInfoVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -12,4 +13,14 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface WorkReviewInfoMapper extends BaseMapperPlus { + @Select(" SELECT audit_opinion FROM work_review_info WHERE work_order_id = #{workOrderId} " + + "AND status = 1 " + + "ORDER BY operation_time DESC LIMIT 1") + String getLastAdvice(String workOrderId); + + + @Select(" SELECT audit_opinion FROM work_review_info WHERE work_order_id = #{workOrderId} " + + "AND status = 0 " + + "ORDER BY operation_time DESC LIMIT 1") + String getInitAdvice(String workOrderId); } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java index 9cc3a2e..06dec47 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java @@ -61,6 +61,9 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { @Resource private ProjectInfoMapper projectInfoMapper; + @Resource + private WorkReviewInfoMapper workReviewInfoMapper; + @Resource private IProjectInfoService projectInfoService; @@ -722,19 +725,28 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { workOrderProcess.setDuration(formatDuration); Boolean flag = workOrderProcessService.insertByBo(workOrderProcess); - + //reviewResult if (flag){ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(WorkOrderInfo::getId, workOrderId) - .set(WorkOrderInfo::getStatus, 4); + // 设置处理人信息 + .set(WorkOrderInfo::getStatus, 4) + .set(WorkOrderInfo::getHandleTime,date2) + .set(WorkOrderInfo::getHandler,loginUser.getNickname()) + .set(WorkOrderInfo::getHandleResult,bo.getFixResult()); baseMapper.update(null, updateWrapper); log.info("工单处理完毕,等待初审结果"); } } + /** + * 工单初审 + * @param bo + */ @Override public void initReviewOrder(WorkReviewInfoBo bo) { - String handleResult = bo.getHandleResult(); + //String handleResult = bo.getHandleResult(); + String auditResult = bo.getAuditResult(); String workOrderId = bo.getId(); bo.setId(null); bo.setWorkOrderId(workOrderId); @@ -742,7 +754,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { // 1.插入审核信息表 workReviewInfoService.insertByBo(bo); - if (handleResult.equals("通过")){ + if (auditResult.equals("通过")){ WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); // 设置基础信息 workOrderProcess.setWorkOrderId(workOrderId); @@ -870,15 +882,18 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { @Override public void lastReviewOrder(WorkReviewInfoBo bo) { - String handleResult = bo.getHandleResult(); + //String handleResult = bo.getHandleResult(); + String auditResult = bo.getAuditResult(); String workOrderId = bo.getId(); bo.setId(null); bo.setWorkOrderId(workOrderId); + // 用于区分初审和终审 0:初审 1:终审 + bo.setStatus(1L); LoginUser loginUser = LoginHelper.getLoginUser(); // 1.插入审核信息表 workReviewInfoService.insertByBo(bo); // 2.根据处理结果判断 - if (handleResult.equals("通过")){ + if (auditResult.equals("通过")){ WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); // 设置基础信息 workOrderProcess.setWorkOrderId(workOrderId); @@ -923,7 +938,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { endBo.setOperator(loginUser.getNickname()); workOrderProcessService.insertByBo(endBo); } - }else if ("退回".equals(handleResult)){ + }else if ("退回".equals(auditResult)){ // 终审不通过需要重新处理工单 WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); // 设置基础信息 @@ -1450,8 +1465,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { }else { dealQueryWrapper.orderByDesc(WorkOrderProcess::getCreateTime); } - dealQueryWrapper.last("LIMIT 1"); + WorkOrderProcess dealProcess = workOrderProcessMapper.selectOne(dealQueryWrapper); if (dealProcess != null && dealProcess.getOperationTime() != null) { handleTimeOutSituation = getTimeLeft(dealProcess.getOperationTime(),record.getResponseTime() ); @@ -1482,6 +1497,57 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { Double handleCost = record.getHandleCost() == null ? 0.0 : record.getHandleCost(); Double orderAcceptCost = record.getOrderTakingCost() == null ? 0.0 : record.getOrderTakingCost(); record.setTotalCost(handleCost + orderAcceptCost); + + String handler = workOrderProcessMapper.getHandlerByWorkOrderId(workOrderId); + if (handler != null){ + record.setHandler(handler); + }else { + record.setHandler("无"); + } + // 接单时间 + Date orderAcceptTime = workOrderProcessMapper.getOrderAcceptTimeByWorkOrderId(workOrderId); + if (orderAcceptTime != null){ + record.setOrderAcceptTime(orderAcceptTime); + } + // 延期 + LambdaQueryWrapper queryDelayWrapper = new LambdaQueryWrapper<>(); + queryDelayWrapper.eq(WorkOrderDelay::getId, workOrderId); + queryDelayWrapper.eq(WorkOrderDelay::getHandleResult,"审核通过"); + queryDelayWrapper.orderByDesc(WorkOrderDelay::getCreateTime); + queryDelayWrapper.last("LIMIT 1"); + WorkOrderDelayVo workOrderDelayVo = workOrderDelayMapper.selectVoOne(queryDelayWrapper); + if (workOrderDelayVo != null){ + record.setIsDelay("是"); + record.setDelayTime(workOrderDelayVo.getAfterDelayTime()); + record.setDelayReason(workOrderDelayVo.getDelayReason()); + }else { + record.setIsDelay("否"); + } + // 审核 + // 默认 实际上要从审批情况中获取 + record.setOtherCost(0.0); + record.setOtherCostReason("无"); + + String initAdvice = workReviewInfoMapper.getInitAdvice(workOrderId); + if (StringUtils.isNotBlank(initAdvice)){ + record.setInitAdvice(initAdvice); + } + + String lastAdvice = workReviewInfoMapper.getLastAdvice(workOrderId); + if (StringUtils.isNotBlank(lastAdvice)){ + record.setLastAdvice(lastAdvice); + } + + LambdaQueryWrapper reviewInfoQueryWrapper = new LambdaQueryWrapper<>(); + reviewInfoQueryWrapper.eq(WorkReviewInfo::getWorkOrderId, workOrderId); + reviewInfoQueryWrapper.orderByDesc(WorkReviewInfo::getCreateTime); + reviewInfoQueryWrapper.last("LIMIT 1"); + WorkReviewInfo lastReviewInfo = workReviewInfoMapper.selectOne(reviewInfoQueryWrapper); + if (lastReviewInfo != null){ + record.setOtherCost(Double.valueOf(lastReviewInfo.getOtherCost())); + record.setOtherCostReason(lastReviewInfo.getOtherCostReason()); + } + } return orderInfoVoList;