From c2ca0db5572b90d3ab8ff05dd8a82a308dd8bc42 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期二, 16 四月 2024 17:51:05 +0800 Subject: [PATCH] 工单下发:选择下发、全部下发 --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 187 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 179 insertions(+), 8 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index b0ef736..992da03 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java @@ -1,27 +1,41 @@ package com.ycl.platform.service.impl; -import com.ycl.platform.domain.entity.WorkOrder; -import com.ycl.platform.mapper.WorkOrderMapper; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; +import com.ycl.exception.ServiceException; +import com.ycl.platform.domain.entity.*; +import com.ycl.platform.domain.form.*; +import com.ycl.platform.domain.query.DistributeWorkOrderQuery; +import com.ycl.platform.domain.vo.DistributeWorkOrderVO; +import com.ycl.platform.mapper.*; +import com.ycl.platform.service.NotifyService; import com.ycl.platform.service.WorkOrderService; import com.ycl.system.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ycl.platform.domain.form.WorkOrderForm; import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.domain.query.WorkOrderQuery; + +import java.util.Arrays; import java.util.List; -import org.apache.commons.lang3.StringUtils; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.system.page.PageUtil; +import com.ycl.utils.DateUtils; +import com.ycl.utils.SecurityUtils; +import enumeration.general.FastDistributeTypeEnum; +import enumeration.general.NotifyTypeEnum; +import enumeration.general.WorkOrderStatusEnum; +import org.apache.commons.lang3.ArrayUtils; import org.springframework.stereotype.Service; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.beans.BeanUtils; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.util.ArrayList; +import java.util.Objects; import java.util.stream.Collectors; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.RequiredArgsConstructor; +import org.springframework.util.StringUtils; /** * 宸ュ崟 鏈嶅姟瀹炵幇绫� @@ -34,6 +48,12 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService { private final WorkOrderMapper workOrderMapper; + private final YwUnitMapper ywUnitMapper; + private final YwPeopleMapper ywPeopleMapper; + private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper; + private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper; + private final NotifyService notifyService; + /** * 娣诲姞 @@ -43,6 +63,10 @@ @Override public Result add(WorkOrderForm form) { WorkOrder entity = WorkOrderForm.getEntityByForm(form, null); + entity.setWorkOrderNo(DateUtils.dateTimeNow()); + entity.setCreateTime(DateUtils.getNowDate()); + entity.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE); + entity.setDeleted("0"); if(baseMapper.insert(entity) > 0) { return Result.ok("娣诲姞鎴愬姛"); } @@ -66,6 +90,84 @@ return Result.ok("淇敼鎴愬姛"); } return Result.error("淇敼澶辫触"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result auditing(WorkOrderAuditingForm form) { + WorkOrder workOrder = baseMapper.selectById(form.getId()); + // 宸ュ崟鐘舵�� + workOrder.setStatus(form.getAuditingResult()); + baseMapper.updateById(workOrder); + // 娣诲姞涓�鏉″鏍歌褰� + WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord(); + workOrderAuditingRecord.setWorkOrderId(workOrder.getId()); + workOrderAuditingRecord.setAuditingUser(SecurityUtils.getLoginUser().getUserId().intValue()); + workOrderAuditingRecord.setResult(form.getAuditingResult().getDesc()); + workOrderAuditingRecord.setRemark(form.getAuditingRemark()); + workOrderAuditingRecordMapper.insert(workOrderAuditingRecord); + // 娣诲姞鏂伴�氱煡 + Notify notify = new Notify(NotifyTypeEnum.WORK_ORDER, form.getAuditingResult().getDesc(), workOrder.getYwPeopleId(), "0", "0", workOrder.getId()); + notifyService.save(notify); + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result ywCondition(WorkOrderYWConditionForm form) { + WorkOrder workOrder = baseMapper.selectById(form.getId()); + if (Objects.isNull(workOrder)) { + throw new ServiceException("宸ュ崟涓嶅瓨鍦�"); + } + // 宸ュ崟鐘舵�� + workOrder.setStatus(WorkOrderStatusEnum.YW_HANDLE); + baseMapper.updateById(workOrder); + // 娣诲姞涓�鏉¤繍缁存儏鍐佃褰� + WorkOrderYwConditionRecord workOrderYwConditionRecord = new WorkOrderYwConditionRecord(); + workOrderYwConditionRecord.setWorkOrderId(workOrder.getId()); + workOrderYwConditionRecord.setCommitUser(SecurityUtils.getLoginUser().getUserId().intValue()); + workOrderYwConditionRecord.setYwCondition(form.getYwCondition()); + workOrderYwConditionRecord.setYwProofMaterials(form.getYwProofMaterials()); + workOrderYwConditionRecordMapper.insert(workOrderYwConditionRecord); + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @Override + public Result selectYwConditionByYwId(String id) { + return Result.ok().data( + new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper) + .eq(WorkOrderYwConditionRecord::getWorkOrderId, id) + .orderByAsc(WorkOrderYwConditionRecord::getCreateTime) + .last("limit 1") + .one()); + } + + @Override + public Result selectYwConditionListByYwId(String id) { + return Result.ok().data( + new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper) + .eq(WorkOrderYwConditionRecord::getWorkOrderId, id) + .orderByAsc(WorkOrderYwConditionRecord::getCreateTime) + .list()); + } + + @Override + public Result selectYwAuditingListByYwId(String id) { + return Result.ok().data( + new LambdaQueryChainWrapper<>(workOrderAuditingRecordMapper) + .eq(WorkOrderAuditingRecord::getWorkOrderId, id) + .orderByDesc(WorkOrderAuditingRecord::getCreateTime) + .list()); + } + + @Override + public Result ywResult(WorkOrderYWResultForm form) { + return null; + } + + @Override + public Result checkResult(WorkOrderCheckResultForm form) { + return null; } /** @@ -101,19 +203,88 @@ */ @Override public Result page(WorkOrderQuery query) { - IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper) + .eq(StringUtils.hasText(query.getWorkOrderNo()), WorkOrder::getWorkOrderNo, query.getWorkOrderNo()) + .eq(StringUtils.hasText(query.getStatus().getValue()), WorkOrder::getStatus, query.getStatus()) + .eq(StringUtils.hasText(query.getErrorType()), WorkOrder::getErrorType, query.getErrorType()) + .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()), + WorkOrder::getYwHandleTime, + DateUtils.getDayStart(query.getStart()), + DateUtils.getDayEnd(query.getEnd())) .orderByDesc(WorkOrder::getCreateTime) .page(PageUtil.getPage(query, WorkOrder.class)); List<WorkOrderVO> vos = page.getRecords().stream() .map( - entity -> WorkOrderVO.getVoByEntity(entity, null) + entity -> { + WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null); + YwUnit unit = ywUnitMapper.selectById(vo.getUnitId()); + if (Objects.nonNull(unit)) { + vo.setUnitName(unit.getUnitName()); + } + YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId()); + if (Objects.nonNull(ywPeople)) { + vo.setYwPeopleName(ywPeople.getYwPersonName()); + } + return vo; + } ) .collect(Collectors.toList()); return Result.ok().data(vos).total(page.getTotal()); } + @Override + public Result distributePage(DistributeWorkOrderQuery query) { + IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper) + .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId()) + .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) + .orderByDesc(WorkOrder::getCreateTime) + .page(PageUtil.getPage(query, WorkOrder.class)); + List<WorkOrderVO> vos = page.getRecords().stream() + .map( + entity -> { + WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null); + YwUnit unit = ywUnitMapper.selectById(vo.getUnitId()); + if (Objects.nonNull(unit)) { + vo.setUnitName(unit.getUnitName()); + } + YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId()); + if (Objects.nonNull(ywPeople)) { + vo.setYwPeopleName(ywPeople.getYwPersonName()); + } + return vo; + } + ) + .collect(Collectors.toList()); + return Result.ok().data(vos).total(page.getTotal()); + } + + @Override + public Result distributeFast(DistributeWorkOrderVO data) { + List<WorkOrder> willDistributeList = new ArrayList<>(32); + // 濡傛灉鏄嚜瀹氫箟鏃堕棿鑼冨洿 + if (FastDistributeTypeEnum.CUSTOM == data.getFastWay()) { + + } + + new LambdaUpdateChainWrapper<>(baseMapper) + .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) + .update(); + + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @Override + public Result selectedIdsDistribute(List<Integer> ids) { + new LambdaUpdateChainWrapper<>(baseMapper) + .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) + .in(ArrayUtils.isNotEmpty(ids.toArray()), WorkOrder::getId, ids) + .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) + // .eq(WorkOrder::getDeleted, 0) + .update(); + return Result.ok("鎿嶄綔鎴愬姛"); + } + /** * 鏍规嵁id鏌ユ壘 * @param id -- Gitblit v1.8.0