Browse Source

工单信息导出:延期,扣款等多个字段

ops-management-platform-backend-dev
gjh 2 weeks ago
parent
commit
7e4f7e7168
  1. 15
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java
  2. 4
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java
  3. 5
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkReviewInfoBo.java
  4. 41
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java
  5. 15
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderProcessMapper.java
  6. 11
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkReviewInfoMapper.java
  7. 82
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

15
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; private String repairer;
/** /**
* 修人员ID * 修人员ID
*/ */
private String repairerId; private String repairerId;
/** /**
* *报修时间
*/ */
private Date repairTime; private Date repairTime;
@ -133,11 +133,20 @@ public class WorkOrderInfo extends TenantEntity {
*/ */
private String longitude; private String longitude;
/**
* 处理人
*/
private String handler;
/** /**
* 处理时间 * 处理时间
*/ */
private Long handleTime; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date handleTime;
/**
* 处理结果
*/
private String handleResult;
/** /**
* 当前状态 * 当前状态
* 0 待派遣 * 0 待派遣

4
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java

@ -65,7 +65,7 @@ public class WorkOrderInfoBo extends BaseEntity {
/** /**
* 保修人员ID * 保修人员ID
*/ */
//@NotBlank(message = "修人员ID不能为空", groups = { AddGroup.class, EditGroup.class }) //@NotBlank(message = "修人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
private String repairerId; private String repairerId;
/** /**
@ -162,7 +162,7 @@ public class WorkOrderInfoBo extends BaseEntity {
* 处理时间 * 处理时间
*/ */
//@NotNull(message = "处理时间不能为空", groups = { AddGroup.class, EditGroup.class }) //@NotNull(message = "处理时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Long handleTime; private Date handleTime;
/** /**
* 当前状态 * 当前状态

5
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 }) @NotBlank(message = "处理结果:通过,退回不能为空", groups = { AddGroup.class, EditGroup.class })
private String handleResult; private String handleResult;
//审核结果
private String auditResult;
/** /**
* 接单是否超期 * 接单是否超期
*/ */
@ -131,4 +135,5 @@ public class WorkReviewInfoBo extends BaseEntity {
private Long status; private Long status;
} }

41
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java

@ -40,7 +40,7 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 工单ID * 工单ID
*/ */
@ExcelProperty(value = "工单ID") @ExcelProperty(value = "工单")
private String id; private String id;
/** /**
@ -77,7 +77,7 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* *
*/ */
@ExcelProperty(value = "修时间") @ExcelProperty(value = "修时间")
private Date repairTime; private Date repairTime;
/** /**
@ -171,12 +171,6 @@ public class WorkOrderInfoVo implements Serializable {
@ExcelIgnore @ExcelIgnore
private String longitude; private String longitude;
/**
* 处理时间
*/
@ExcelProperty(value = "处理时间")
private Long handleTime;
/** /**
* 当前状态 * 当前状态
* 0 待派遣 * 0 待派遣
@ -212,8 +206,24 @@ public class WorkOrderInfoVo implements Serializable {
/** /**
* 待处理人 * 待处理人
*/ */
@ExcelProperty(value = "处理人")
private String handler; 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; private String orderAcceptDeadline;
@ExcelProperty(value = "是否延期")
private String isDelay;
@ExcelProperty(value = "延期理由") @ExcelProperty(value = "延期理由")
private String delayReason; private String delayReason;
/** /**
* 延期时间 * 延期时间
*/ */
@ExcelProperty(value = "延期时间") @ExcelProperty(value = "延期后的处理截至时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date delayTime; private Date delayTime;
@ExcelProperty(value = "是否延期") @ExcelProperty(value = "初审建议")
private String isDelay; private String initAdvice;
@ExcelProperty(value = "终审建议")
private String lastAdvice;
// @ExcelProperty(value = "是否超期") // @ExcelProperty(value = "是否超期")
// private String isTimeOut; // private String isTimeOut;

15
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderProcessMapper.java

@ -1,9 +1,12 @@
package org.dromara.platform.mapper; package org.dromara.platform.mapper;
import org.apache.ibatis.annotations.Select;
import org.dromara.platform.domain.WorkOrderProcess; import org.dromara.platform.domain.WorkOrderProcess;
import org.dromara.platform.domain.vo.WorkOrderProcessVo; import org.dromara.platform.domain.vo.WorkOrderProcessVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.Date;
/** /**
* 工单流程信息Mapper接口 * 工单流程信息Mapper接口
* *
@ -12,4 +15,16 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/ */
public interface WorkOrderProcessMapper extends BaseMapperPlus<WorkOrderProcess, WorkOrderProcessVo> { public interface WorkOrderProcessMapper extends BaseMapperPlus<WorkOrderProcess, WorkOrderProcessVo> {
@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);
} }

11
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkReviewInfoMapper.java

@ -1,5 +1,6 @@
package org.dromara.platform.mapper; package org.dromara.platform.mapper;
import org.apache.ibatis.annotations.Select;
import org.dromara.platform.domain.WorkReviewInfo; import org.dromara.platform.domain.WorkReviewInfo;
import org.dromara.platform.domain.vo.WorkReviewInfoVo; import org.dromara.platform.domain.vo.WorkReviewInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; 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<WorkReviewInfo, WorkReviewInfoVo> { public interface WorkReviewInfoMapper extends BaseMapperPlus<WorkReviewInfo, WorkReviewInfoVo> {
@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);
} }

82
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

@ -61,6 +61,9 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Resource @Resource
private ProjectInfoMapper projectInfoMapper; private ProjectInfoMapper projectInfoMapper;
@Resource
private WorkReviewInfoMapper workReviewInfoMapper;
@Resource @Resource
private IProjectInfoService projectInfoService; private IProjectInfoService projectInfoService;
@ -722,19 +725,28 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
workOrderProcess.setDuration(formatDuration); workOrderProcess.setDuration(formatDuration);
Boolean flag = workOrderProcessService.insertByBo(workOrderProcess); Boolean flag = workOrderProcessService.insertByBo(workOrderProcess);
//reviewResult
if (flag){ if (flag){
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) 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); baseMapper.update(null, updateWrapper);
log.info("工单处理完毕,等待初审结果"); log.info("工单处理完毕,等待初审结果");
} }
} }
/**
* 工单初审
* @param bo
*/
@Override @Override
public void initReviewOrder(WorkReviewInfoBo bo) { public void initReviewOrder(WorkReviewInfoBo bo) {
String handleResult = bo.getHandleResult(); //String handleResult = bo.getHandleResult();
String auditResult = bo.getAuditResult();
String workOrderId = bo.getId(); String workOrderId = bo.getId();
bo.setId(null); bo.setId(null);
bo.setWorkOrderId(workOrderId); bo.setWorkOrderId(workOrderId);
@ -742,7 +754,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
// 1.插入审核信息表 // 1.插入审核信息表
workReviewInfoService.insertByBo(bo); workReviewInfoService.insertByBo(bo);
if (handleResult.equals("通过")){ if (auditResult.equals("通过")){
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
// 设置基础信息 // 设置基础信息
workOrderProcess.setWorkOrderId(workOrderId); workOrderProcess.setWorkOrderId(workOrderId);
@ -870,15 +882,18 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override @Override
public void lastReviewOrder(WorkReviewInfoBo bo) { public void lastReviewOrder(WorkReviewInfoBo bo) {
String handleResult = bo.getHandleResult(); //String handleResult = bo.getHandleResult();
String auditResult = bo.getAuditResult();
String workOrderId = bo.getId(); String workOrderId = bo.getId();
bo.setId(null); bo.setId(null);
bo.setWorkOrderId(workOrderId); bo.setWorkOrderId(workOrderId);
// 用于区分初审和终审 0:初审 1:终审
bo.setStatus(1L);
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
// 1.插入审核信息表 // 1.插入审核信息表
workReviewInfoService.insertByBo(bo); workReviewInfoService.insertByBo(bo);
// 2.根据处理结果判断 // 2.根据处理结果判断
if (handleResult.equals("通过")){ if (auditResult.equals("通过")){
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
// 设置基础信息 // 设置基础信息
workOrderProcess.setWorkOrderId(workOrderId); workOrderProcess.setWorkOrderId(workOrderId);
@ -923,7 +938,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
endBo.setOperator(loginUser.getNickname()); endBo.setOperator(loginUser.getNickname());
workOrderProcessService.insertByBo(endBo); workOrderProcessService.insertByBo(endBo);
} }
}else if ("退回".equals(handleResult)){ }else if ("退回".equals(auditResult)){
// 终审不通过需要重新处理工单 // 终审不通过需要重新处理工单
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
// 设置基础信息 // 设置基础信息
@ -1450,8 +1465,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
}else { }else {
dealQueryWrapper.orderByDesc(WorkOrderProcess::getCreateTime); dealQueryWrapper.orderByDesc(WorkOrderProcess::getCreateTime);
} }
dealQueryWrapper.last("LIMIT 1"); dealQueryWrapper.last("LIMIT 1");
WorkOrderProcess dealProcess = workOrderProcessMapper.selectOne(dealQueryWrapper); WorkOrderProcess dealProcess = workOrderProcessMapper.selectOne(dealQueryWrapper);
if (dealProcess != null && dealProcess.getOperationTime() != null) { if (dealProcess != null && dealProcess.getOperationTime() != null) {
handleTimeOutSituation = getTimeLeft(dealProcess.getOperationTime(),record.getResponseTime() ); 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 handleCost = record.getHandleCost() == null ? 0.0 : record.getHandleCost();
Double orderAcceptCost = record.getOrderTakingCost() == null ? 0.0 : record.getOrderTakingCost(); Double orderAcceptCost = record.getOrderTakingCost() == null ? 0.0 : record.getOrderTakingCost();
record.setTotalCost(handleCost + orderAcceptCost); 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<WorkOrderDelay> 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<WorkReviewInfo> 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; return orderInfoVoList;

Loading…
Cancel
Save