|
|
@@ -4,15 +4,20 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.zksy.base.domain.CaseInfo;
|
|
|
+import com.zksy.base.domain.EquipmentBase;
|
|
|
import com.zksy.base.domain.WorkOrder;
|
|
|
import com.zksy.base.domain.WorkOrderLog;
|
|
|
+import com.zksy.base.mapper.CaseInfoMapper;
|
|
|
+import com.zksy.base.mapper.EquipmentBaseMapper;
|
|
|
import com.zksy.base.mapper.WorkOrderLogMapper;
|
|
|
import com.zksy.base.mapper.WorkOrderMapper;
|
|
|
import com.zksy.base.service.WorkOrderService;
|
|
|
import com.zksy.common.core.domain.entity.SysUser;
|
|
|
+import com.zksy.common.core.domain.model.LoginUser;
|
|
|
import com.zksy.common.exception.ServiceException;
|
|
|
-import com.zksy.manhole.dto.in.WorkOrderOperInDTO;
|
|
|
-import com.zksy.manhole.dto.in.WorkOrderPageInDTO;
|
|
|
+import com.zksy.common.utils.SecurityUtils;
|
|
|
+import com.zksy.manhole.dto.in.*;
|
|
|
import com.zksy.manhole.dto.out.WorkOrderOutDTO;
|
|
|
import com.zksy.system.service.ISysUserService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -20,8 +25,12 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Random;
|
|
|
|
|
|
/**
|
|
|
* @author Administrator
|
|
|
@@ -39,6 +48,12 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
|
@Autowired
|
|
|
private WorkOrderLogMapper workOrderLogMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CaseInfoMapper caseInfoMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private EquipmentBaseMapper equipmentBaseMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 分页查询工单信息列表
|
|
|
* @param pageInDTO
|
|
|
@@ -59,6 +74,111 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
|
return outPage;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增工单
|
|
|
+ * @param inDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean addWorkOrder(WorkOrderAddInDTO inDTO) {
|
|
|
+ log.info("新增工单-入参:{}", inDTO);
|
|
|
+ WorkOrder workOrder = BeanUtil.copyProperties(inDTO, WorkOrder.class);
|
|
|
+ workOrder.setOrderNo(generateOrderNo());
|
|
|
+ // 初始状态:1-待派单
|
|
|
+ workOrder.setOrderStatus(1);
|
|
|
+ if(inDTO.getCaseId() != null){
|
|
|
+ CaseInfo caseInfo = caseInfoMapper.selectById(inDTO.getCaseId());
|
|
|
+ if(caseInfo != null){
|
|
|
+ workOrder.setCaseNo(caseInfo.getCaseNo());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(inDTO.getDeviceId() != null){
|
|
|
+ EquipmentBase equipmentBase = equipmentBaseMapper.selectById(inDTO.getDeviceId());
|
|
|
+ if(equipmentBase != null){
|
|
|
+ workOrder.setDeviceCode(equipmentBase.getEquipmentCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.save(workOrder);
|
|
|
+ WorkOrderLog workOrderLog = new WorkOrderLog();
|
|
|
+ workOrderLog.setOrderId(workOrder.getOrderId());
|
|
|
+ //1-创建工单
|
|
|
+ workOrderLog.setOperType(1);
|
|
|
+ workOrderLog.setOperDesc(inDTO.getOrderDesc() + ",创建工单");
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser != null) {
|
|
|
+ workOrderLog.setOperUserId(loginUser.getUserId());
|
|
|
+ workOrderLog.setOperUserName(loginUser.getUser().getNickName());
|
|
|
+ }
|
|
|
+ return workOrderLogMapper.insert(workOrderLog) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成工单编号
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String generateOrderNo() {
|
|
|
+ // 1. 获取当前时间,格式化为14位年月日时分秒
|
|
|
+ String currentDateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
|
+ // 2. 生成4位随机数,不足补0
|
|
|
+ String randomNum = String.format("%04d", new Random().nextInt(10000));
|
|
|
+ // 3. 拼接完整编号
|
|
|
+ return "WO" + currentDateTime + randomNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 经办工单分页查询(处理中:待接单、已接单、处理中、待验收)
|
|
|
+ * @param inDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Page<WorkOrderOutDTO> findProcessingPage(WorkOrderProcessingInDTO inDTO) {
|
|
|
+ log.info("经办工单分页查询-入参:{}", inDTO);
|
|
|
+ Page<WorkOrder> page = new Page<>(inDTO.getPageNum(), inDTO.getPageSize());
|
|
|
+ // 经办工单状态:2-待接单 3-已接单 4-处理中 5-待验收 8-延期审核
|
|
|
+ List<Integer> processingStatusList = Arrays.asList(2, 3, 4, 5, 8);
|
|
|
+ LambdaQueryWrapper<WorkOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(WorkOrder::getOrderStatus, processingStatusList)
|
|
|
+ .like(StringUtils.isNotEmpty(inDTO.getOrderNo()), WorkOrder::getOrderNo, inDTO.getOrderNo())
|
|
|
+ .like(StringUtils.isNotEmpty(inDTO.getCaseNo()), WorkOrder::getCaseNo, inDTO.getCaseNo())
|
|
|
+ .eq(inDTO.getOrderType() != null, WorkOrder::getOrderType, inDTO.getOrderType())
|
|
|
+ .eq(inDTO.getOrderLevel() != null, WorkOrder::getOrderLevel, inDTO.getOrderLevel())
|
|
|
+ .eq(inDTO.getReceiveUser() != null, WorkOrder::getReceiveUser, inDTO.getReceiveUser())
|
|
|
+ .orderByDesc(WorkOrder::getUpdateTime);
|
|
|
+ Page<WorkOrder> rs = this.page(page, queryWrapper);
|
|
|
+ List<WorkOrderOutDTO> outDTOList = BeanUtil.copyToList(rs.getRecords(), WorkOrderOutDTO.class);
|
|
|
+ Page<WorkOrderOutDTO> outPage = new Page<>(inDTO.getPageNum(), inDTO.getPageSize(), rs.getTotal());
|
|
|
+ outPage.setRecords(outDTOList);
|
|
|
+ return outPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 办结工单分页查询(已办结:已结案、已驳回)
|
|
|
+ * @param inDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Page<WorkOrderOutDTO> findFinishedPage(WorkOrderFinishedInDTO inDTO) {
|
|
|
+ log.info("办结工单分页查询-入参:{}", inDTO);
|
|
|
+ Page<WorkOrder> page = new Page<>(inDTO.getPageNum(), inDTO.getPageSize());
|
|
|
+ // 办结工单状态:6-已结案 7-已驳回 9-已延期
|
|
|
+ List<Integer> finishedStatusList = Arrays.asList(6, 7, 9);
|
|
|
+ LambdaQueryWrapper<WorkOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(WorkOrder::getOrderStatus, finishedStatusList)
|
|
|
+ .like(StringUtils.isNotEmpty(inDTO.getOrderNo()), WorkOrder::getOrderNo, inDTO.getOrderNo())
|
|
|
+ .like(StringUtils.isNotEmpty(inDTO.getCaseNo()), WorkOrder::getCaseNo, inDTO.getCaseNo())
|
|
|
+ .eq(inDTO.getOrderType() != null, WorkOrder::getOrderType, inDTO.getOrderType())
|
|
|
+ .eq(inDTO.getOrderLevel() != null, WorkOrder::getOrderLevel, inDTO.getOrderLevel())
|
|
|
+ .eq(inDTO.getVerifyUser() != null, WorkOrder::getVerifyUser, inDTO.getVerifyUser())
|
|
|
+ .ge(inDTO.getStartTime() != null, WorkOrder::getRealFinishTime, inDTO.getStartTime())
|
|
|
+ .le(inDTO.getEndTime() != null, WorkOrder::getRealFinishTime, inDTO.getEndTime())
|
|
|
+ .orderByDesc(WorkOrder::getUpdateTime);
|
|
|
+ Page<WorkOrder> rs = this.page(page, queryWrapper);
|
|
|
+ List<WorkOrderOutDTO> outDTOList = BeanUtil.copyToList(rs.getRecords(), WorkOrderOutDTO.class);
|
|
|
+ Page<WorkOrderOutDTO> outPage = new Page<>(inDTO.getPageNum(), inDTO.getPageSize(), rs.getTotal());
|
|
|
+ outPage.setRecords(outDTOList);
|
|
|
+ return outPage;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 操作工单
|
|
|
* @param inDTO
|