From a53b42f1866fc22adcf99720ba8f76eb3ab658b2 Mon Sep 17 00:00:00 2001 From: renfan <2206580733@qq.com> Date: Fri, 30 Aug 2024 20:40:37 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90admin&front=E3=80=91=E6=96=B0=E5=A2=9E?= =?UTF-8?q?&=E4=BF=AE=E5=A4=8D#=201=E3=80=81=E6=96=B0=E5=A2=9E=E7=BB=B4?= =?UTF-8?q?=E4=BF=AE=E5=8D=95=E3=80=81=E5=B7=A1=E6=A3=80=E5=8D=95=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E8=AE=B0=E5=BD=95=202=E3=80=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F=E8=AE=BE=E5=A4=87=E6=80=BB?= =?UTF-8?q?=E6=95=B0=E3=80=81=E5=B7=A5=E5=8D=95=E6=80=BB=E6=95=B0=E3=80=81?= =?UTF-8?q?=E4=BB=8A=E6=97=A5=E5=B7=A5=E5=8D=95=E6=80=BB=E6=95=B0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E7=94=A8=E6=88=B7id=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LargeDataScreenController.java | 4 +- .../order/RepairOrderController.java | 13 -- .../ILargeDataScreenService.java | 2 +- .../impl/LargeDataScreenServiceImpl.java | 46 ++--- .../order/IOrderOperateRecordService.java | 17 ++ .../service/order/IRepairOrderService.java | 8 - .../impl/OrderOperateRecordServiceImpl.java | 21 +++ .../order/impl/RepairOrderServiceImpl.java | 86 +++++----- .../RoutingInspectionOrderServiceImpl.java | 37 ++++ .../impl/SparePartStockAuditServiceImpl.java | 4 +- .../admin/vo/order/RepairOrderDetailVo.java | 2 + .../order/RoutingInspectionOrderDetailVo.java | 3 + .../admin/vo/system/SystemAuthAdminVo.java | 1 - .../common/enums/SparePartStockAuditEnum.java | 1 + .../enums/order/OrderOperateRecordEnum.java | 6 + .../order/IOrderOperateRecordService.java | 37 ++++ .../impl/OrderOperateRecordServiceImpl.java | 42 +++++ .../order/impl/RepairOrderServiceImpl.java | 160 ++++++++++++++---- .../RoutingInspectionOrderServiceImpl.java | 90 ++++++++-- 19 files changed, 445 insertions(+), 135 deletions(-) diff --git a/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java b/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java index 2657b6b..92cf487 100644 --- a/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java +++ b/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java @@ -112,8 +112,8 @@ public class LargeDataScreenController { * @return Object */ @GetMapping("/allNumber") - public Object allNumber() { - LargeDataVo largeDataVo = iLargeDataScreenService.allNumber(); + public Object allNumber(Integer clientId) { + LargeDataVo largeDataVo = iLargeDataScreenService.allNumber(clientId); return AjaxResult.success(largeDataVo); } diff --git a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java index 2eee082..e769e60 100644 --- a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java +++ b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java @@ -55,19 +55,6 @@ public class RepairOrderController { return AjaxResult.success(detail); } - /** - * 维修订单新增 - * - * @author hcy - * @param repairOrderParam 参数 - * @return Object - */ - @Log(title = "维修订单新增") - @PostMapping("/add") - public Object add(@Validated(value = RepairOrderParam.create.class) @RequestBody RepairOrderParam repairOrderParam) { - iRepairOrderService.add(repairOrderParam); - return AjaxResult.success(); - } /** * 维修订单编辑 diff --git a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java index 3c455d2..f8eeaed 100644 --- a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java +++ b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java @@ -42,7 +42,7 @@ public interface ILargeDataScreenService { * 获取客户总数、设备总数、工单总数、今日工单总数 * @return */ - LargeDataVo allNumber(); + LargeDataVo allNumber(Integer clientId); /** * 获取检修员列表 diff --git a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java index 0f2b3ef..37bd51e 100644 --- a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java @@ -152,7 +152,7 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService { * @return */ @Override - public LargeDataVo allNumber() { + public LargeDataVo allNumber(Integer clientId) { LargeDataVo vo = new LargeDataVo(); //客户总数 Integer clientCount = clientMapper.selectCount( @@ -160,43 +160,51 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService { .eq("is_delete", GlobalConstant.NOT_DELETE)); //设备总数 Integer equipmentCount = equipmentMapper.selectCount( - new QueryWrapper() - .eq("is_delete", GlobalConstant.NOT_DELETE)); + new LambdaQueryWrapper() + .eq(Equipment::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(clientId != null, Equipment::getClientId, clientId)); + //工单总数=检修单总数+维修单总数+巡检单总数 //巡检单总数 Integer routingInspectionOrderCount = routingInspectionOrderMapper.selectCount( - new QueryWrapper() - .eq("is_delete", GlobalConstant.NOT_DELETE)); + new LambdaQueryWrapper() + .eq(RoutingInspectionOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(clientId != null, RoutingInspectionOrder::getClientId, clientId)); //检修单总数 Integer maintenanceOrderCount = maintenanceOrderMapper.selectCount( - new QueryWrapper() - .eq("is_delete", GlobalConstant.NOT_DELETE)); + new LambdaQueryWrapper() + .eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(clientId != null, MaintenanceOrder::getClientId, clientId)); //维修单总数 Integer repairOrderCount = repairOrderMapper.selectCount( new LambdaQueryWrapper() - .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)); + .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(clientId != null, RepairOrder::getClientId, clientId)); //今日工单总数=今日检修单总数+今日维修单总数+今日巡检单总数 - LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN); - LocalDateTime endTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MAX); + LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN);// 开始时间 + LocalDateTime endTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MAX);// 结束时间 //今日检修单总数 Integer todayRoutingInspectionOrderCount = routingInspectionOrderMapper.selectCount( - new QueryWrapper() - .eq("is_delete", GlobalConstant.NOT_DELETE) - .ge("create_time", Timestamp.valueOf(startTime)) // 开始时间 - .le("create_time", Timestamp.valueOf(endTime))); // 结束时间 + new LambdaQueryWrapper() + .eq(RoutingInspectionOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .ge(RoutingInspectionOrder::getCreateTime, Timestamp.valueOf(startTime)) + .le(RoutingInspectionOrder::getCreateTime, Timestamp.valueOf(endTime)) + .eq(clientId != null, RoutingInspectionOrder::getClientId, clientId)); //今日检修单总数 Integer todayMaintenanceOrderCount = maintenanceOrderMapper.selectCount( - new QueryWrapper() - .eq("is_delete", GlobalConstant.NOT_DELETE) - .ge("create_time", Timestamp.valueOf(startTime)) // 开始时间 - .le("create_time", Timestamp.valueOf(endTime))); // 结束时间 + new LambdaQueryWrapper() + .eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .ge(MaintenanceOrder::getCreateTime, Timestamp.valueOf(startTime)) + .le(MaintenanceOrder::getCreateTime, Timestamp.valueOf(endTime)) + .eq(clientId != null, MaintenanceOrder::getClientId, clientId)); //今日维修单总数 Integer todayRepairOrderCount = repairOrderMapper.selectCount( new LambdaQueryWrapper() .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) .ge(RepairOrder::getCreateTime, Timestamp.valueOf(startTime)) - .le(RepairOrder::getCreateTime, Timestamp.valueOf(endTime))); + .le(RepairOrder::getCreateTime, Timestamp.valueOf(endTime)) + .eq(clientId != null, RepairOrder::getClientId, clientId)); vo.setClientSum(clientCount); // 客户总数 vo.setEquipmentSum(equipmentCount); // 设备总数 diff --git a/admin/src/main/java/com/hcy/admin/service/order/IOrderOperateRecordService.java b/admin/src/main/java/com/hcy/admin/service/order/IOrderOperateRecordService.java index a259f50..3896bb9 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/IOrderOperateRecordService.java +++ b/admin/src/main/java/com/hcy/admin/service/order/IOrderOperateRecordService.java @@ -40,4 +40,21 @@ public interface IOrderOperateRecordService { * @param description 内容 */ void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description); + + /** + * 新增操作巡检单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param description 内容 + */ + void addRoutingInspectionOrder(Long orderId,String titleDsc,String description); + + /** + * 新增操作巡检单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param dscType 内容类型 + * @param description 内容 + */ + void addRoutingInspectionOrder(Long orderId,String titleDsc,Integer dscType,String description); } diff --git a/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java b/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java index 2fc1a89..52ae367 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java +++ b/admin/src/main/java/com/hcy/admin/service/order/IRepairOrderService.java @@ -32,14 +32,6 @@ public interface IRepairOrderService { */ RepairOrderDetailVo detail(Integer id); - /** - * 维修订单新增 - * - * @author hcy - * @param repairOrderParam 参数 - */ - void add(RepairOrderParam repairOrderParam); - /** * 维修订单编辑 * diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/OrderOperateRecordServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/OrderOperateRecordServiceImpl.java index acce273..c54bb8f 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/OrderOperateRecordServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/OrderOperateRecordServiceImpl.java @@ -60,4 +60,25 @@ public class OrderOperateRecordServiceImpl implements IOrderOperateRecordService orderOperateRecord.setDescription(description); orderOperateRecordMapper.insert(orderOperateRecord); } + + @Override + public void addRoutingInspectionOrder(Long orderId,String titleDsc,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.ADDROUTING_INSPECTION_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } + + @Override + public void addRoutingInspectionOrder(Long orderId,String titleDsc,Integer dscType,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.ADDROUTING_INSPECTION_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDscType(dscType); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } } diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java index 5d91832..e3740f3 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderServiceImpl.java @@ -26,6 +26,7 @@ import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.order.MaintenanceOrder; +import com.hcy.common.entity.order.OrderOperateRecord; import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.order.RoutingInspectionOrder; import com.hcy.common.entity.plant.Plant; @@ -35,6 +36,7 @@ import com.hcy.common.entity.user.User; import com.hcy.common.entity.warehouse.Warehouse; import com.hcy.common.enums.SparePartStockAuditEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; +import com.hcy.common.enums.order.OrderOperateRecordEnum; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.enums.order.RepairOrderStatusEnum; import com.hcy.common.exception.OperateException; @@ -42,6 +44,7 @@ import com.hcy.common.mapper.address.UserAddressMapper; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; import com.hcy.common.mapper.fault.FaultMapper; +import com.hcy.common.mapper.order.OrderOperateRecordMapper; import com.hcy.common.mapper.order.OrderSparePartMapper; import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.plant.PlantMapper; @@ -55,6 +58,7 @@ import com.hcy.common.utils.UrlUtil; import com.hcy.common.config.GlobalConfig; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; @@ -104,6 +108,12 @@ public class RepairOrderServiceImpl implements IRepairOrderService { @Resource SparePartStockAuditMapper sparePartStockAuditMapper; + @Resource + OrderOperateRecordServiceImpl orderOperateRecordService; + + @Resource + OrderOperateRecordMapper orderOperateRecordMapper; + /** * 维修订单列表 * @@ -323,48 +333,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(familiarFaultName != null){ vo.setFamiliarFaultName(familiarFaultName.getName()); } + + //设置订单操作记录 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(OrderOperateRecord::getOrderType, OrderOperateRecordEnum.REPAIR.getStatus()) + .eq(OrderOperateRecord::getOrderId, model.getId()); + vo.setOrderOperateRecords(orderOperateRecordMapper.selectList(queryWrapper));; return vo; } - /** - * 维修订单新增 - * - * @author hcy - * @param repairOrderParam 参数 - */ - @Override - public void add(RepairOrderParam repairOrderParam) { - RepairOrder model = new RepairOrder(); - model.setOrderNo(getOrderNo()); //工单编号 - - model.setOrderStatus(RepairOrderStatusEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单;1-待接单;2-接单超时;3-检测中;4-待客户确认;5-维修中;6-已完成;7-已退单;8-已关闭 - model.setOrderSource(OrderStateEnum.MAINTENANCE_SUPERVISOR_CREATION.getStatus()); //订单来源 5-维修主管创建 - model.setRepairWorkOrderFlow(OrderStateEnum.WORK_ORDER_TANK.getStatus()); // 工单去向 0=工单池 1=检修员 - model.setReceiverType(OrderStateEnum.REGIONAL_DISPATCH.getStatus()); // 接单类型 0-区域派单;1-距离派单 - - model.setClientId(repairOrderParam.getClientId()); // 客户id - model.setEquipmentId(repairOrderParam.getEquipmentId()); // 设备id - model.setFaultDescription(repairOrderParam.getFaultDescription()); // 故障描述 - model.setModuleNumber(repairOrderParam.getModuleNumber()); // 模块号 - model.setBrand(repairOrderParam.getBrand()); // 品牌 - model.setRemark(repairOrderParam.getRemark()); // 备注 - - model.setMaintenanceOrderId(repairOrderParam.getMaintenanceOrderId()); // 检修单id - model.setPriorityId(repairOrderParam.getPriorityId()); // 优先级 0-普通 1-加急 - model.setLogisticsMode(repairOrderParam.getLogisticsMode()); // 物流方式 0-物流快递 1=自领带回 - model.setExpressName(repairOrderParam.getExpressName()); // 快递名称 - model.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄(0=是 1=否) - model.setAddressId(repairOrderParam.getAddressId()); // 回寄地址 - model.setSiteImg(repairOrderParam.getSiteImg()); // 现场照片 - - // 获取当前的用户 - String adminId = AdminThreadLocal.get("adminId").toString(); - model.setCreatorId(Long.valueOf(adminId)); // 创建人id - model.setCreateTime(new Date()); //创建时间 - - repairOrderMapper.insert(model); - } - /** * 维修订单编辑 * @@ -372,6 +349,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { * @param repairOrderParam 参数 */ @Override + @Transactional public void edit(RepairOrderParam repairOrderParam) { RepairOrder model = repairOrderMapper.selectOne( new QueryWrapper() @@ -383,20 +361,31 @@ public class RepairOrderServiceImpl implements IRepairOrderService { model.setClientId(repairOrderParam.getClientId()); // 客户id model.setEquipmentId(repairOrderParam.getEquipmentId()); // 设备id - model.setModuleNumber(repairOrderParam.getModuleNumber()); // 模块号 model.setBrand(repairOrderParam.getBrand()); // 品牌 - model.setPriorityId(repairOrderParam.getPriorityId()); // 优先级 0-普通 1-加急 model.setLogisticsMode(repairOrderParam.getLogisticsMode()); // 物流方式 0-物流快递 1=自领带回 model.setExpressName(repairOrderParam.getExpressName()); // 快递名称 model.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄(0=是 1=否) model.setRepairWorkOrderFlow(repairOrderParam.getRepairWorkOrderFlow()); // 工单去向 0=工单池 1=检修员 model.setReceiverType(repairOrderParam.getReceiverType()); // 接单类型 0-区域派单;1-距离派单 + model.setReceiverId(repairOrderParam.getReceiverId()); // 接单人id model.setOrderDistance(repairOrderParam.getOrderDistance()); // 自动抢单最大距离 model.setFaultDescription(repairOrderParam.getFaultDescription()); // 故障描述 model.setRemark(repairOrderParam.getRemark()); // 备注 model.setAddressId(repairOrderParam.getAddressId()); // 回寄地址 + //重新指派员工 + if(repairOrderParam.getReceiverId() != null && repairOrderParam.getId() != null){ + model.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); + + User user = userMapper.selectById(repairOrderParam.getReceiverId()); + if(user != null){ + //新增订单操作记录 + orderOperateRecordService.addRepairOrder(model.getId() + , OrderOperateRecordEnum.APPOINT.getDesc() + ,"【"+AdminThreadLocal.get("username")+"】重新分配工单给检修员【"+user.getUsername()+"】"); + } + } repairOrderMapper.updateById(model); } @@ -505,6 +494,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { * @param repairOrderParam */ @Override + @Transactional public void reassignment(RepairOrderParam repairOrderParam) { RepairOrder model = repairOrderMapper.selectOne( new QueryWrapper() @@ -514,11 +504,25 @@ public class RepairOrderServiceImpl implements IRepairOrderService { Assert.notNull(model, "数据不存在!"); model.setReceiverId(repairOrderParam.getReceiverId()); + //如果是退单状态,重新派工后状态改为待接单 if(model.getOrderStatus() == OrderStateEnum.RETURNED_ORDER.getStatus()){ model.setOrderStatus(OrderStateEnum.PENDING_ORDER.getStatus()); } repairOrderMapper.updateById(model); + + //重新指派员工 + if(repairOrderParam.getReceiverId() != null && repairOrderParam.getId() != null){ + model.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); + + User user = userMapper.selectById(repairOrderParam.getReceiverId()); + if(user != null){ + //新增订单操作记录 + orderOperateRecordService.addRepairOrder(model.getId() + ,OrderOperateRecordEnum.APPOINT.getDesc() + ,"【"+AdminThreadLocal.get("username")+"】重新分配工单给检修员【"+user.getUsername()+"】"); + } + } } /** diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java index 8b0a3eb..2724b43 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java @@ -19,13 +19,17 @@ import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.order.MaintenanceOrder; +import com.hcy.common.entity.order.OrderOperateRecord; import com.hcy.common.entity.order.RoutingInspectionOrder; import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; +import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; +import com.hcy.common.enums.order.OrderOperateRecordEnum; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; import com.hcy.common.mapper.fault.FaultMapper; +import com.hcy.common.mapper.order.OrderOperateRecordMapper; import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; @@ -33,6 +37,7 @@ import com.hcy.common.utils.TimeUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; @@ -66,6 +71,12 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde @Resource private IDevRegionService regionService; + @Resource + OrderOperateRecordServiceImpl orderOperateRecordService; + + @Resource + OrderOperateRecordMapper orderOperateRecordMapper; + /** * 巡检订单列表 * @@ -165,6 +176,12 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde if(authAdmin != null){ vo.setCreatorName(authAdmin.getUsername()); } + + //设置订单操作记录 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(OrderOperateRecord::getOrderType, OrderOperateRecordEnum.ROUTING_INSPECTION.getStatus()) + .eq(OrderOperateRecord::getOrderId, model.getId()); + vo.setOrderOperateRecords(orderOperateRecordMapper.selectList(queryWrapper));; return vo; } @@ -175,6 +192,7 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde * @param routingInspectionOrderParam 参数 */ @Override + @Transactional public void add(RoutingInspectionOrderParam routingInspectionOrderParam) { RoutingInspectionOrder model = new RoutingInspectionOrder(); @@ -209,6 +227,11 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde if(client != null && systemAuthAdmin != null && equipment != null){ WebsocketHandler.sendMessageToClient("【"+systemAuthAdmin.getUsername()+"】于【"+TimeUtil.dateTransitionString(currentTime)+"】为客户【"+client.getClientName()+"】新建巡检工单,报修设备【"+equipment.getName()+"】;"); } + + //新增巡检单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getId() + , OrderOperateRecordEnum.NEW_CREATE.getDesc() + ,"客户【"+AdminThreadLocal.get("username")+"】创建了巡检工单。"); } /** @@ -316,11 +339,25 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde Assert.notNull(model, "数据不存在!"); model.setReceiverId(routingInspectionOrderParam.getReceiverId()); + //如果是退单状态,重新派工后状态改为待接单 if(model.getOrderStatus() == OrderStateEnum.RETURNED_ORDER.getStatus()){ model.setOrderStatus(OrderStateEnum.PENDING_ORDER.getStatus()); } routingInspectionOrderMapper.updateById(model); + + //重新指派员工 + if(routingInspectionOrderParam.getReceiverId() != null && routingInspectionOrderParam.getId() != null){ + model.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); + + User user = userMapper.selectById(routingInspectionOrderParam.getReceiverId()); + if(user != null){ + //新增订单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + ,OrderOperateRecordEnum.APPOINT.getDesc() + ,"【"+AdminThreadLocal.get("username")+"】重新分配工单给检修员【"+user.getUsername()+"】"); + } + } } /** diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java index ebfeb33..fdb7f9f 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java @@ -721,8 +721,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi User user = userMapper.selectById(repairOrder.getReceiverId()); if(user != null){ - //新增检修单操作记录 - orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(model.getOrderId() , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() ,OrderOperateRecordEnum.AUDIT.getStatus() ,"仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。"); diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderDetailVo.java index c3fd6cc..23c15ed 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderDetailVo.java @@ -8,6 +8,7 @@ import com.hcy.admin.vo.client.EquipmentModelDetailVo; import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.order.OrderOperateRecord; import lombok.Data; import java.io.Serializable; @@ -111,6 +112,7 @@ public class RepairOrderDetailVo implements Serializable { private Long userId; // 送修人 private Integer maintainType; // 客户维修类型 模块维修类型 0-全包 1-半包 + private List orderOperateRecords; //订单操作记录 } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java index c7ae7d2..654177c 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.hcy.admin.validate.order.RoutingInspectionOrderParam; import com.hcy.admin.vo.client.EquipmentListVo; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.order.OrderOperateRecord; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -13,6 +14,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * RoutingInspectionOrderVo @@ -53,5 +55,6 @@ public class RoutingInspectionOrderDetailVo implements Serializable { private Integer inspectionResult; //巡检结果(0=正常 1=异常) private String inspectionPhoto; //巡检照片 private String inspectionResultRemark; //巡检结果备注 + private List orderOperateRecords; //订单操作记录 } diff --git a/admin/src/main/java/com/hcy/admin/vo/system/SystemAuthAdminVo.java b/admin/src/main/java/com/hcy/admin/vo/system/SystemAuthAdminVo.java index 365f418..7bd4527 100644 --- a/admin/src/main/java/com/hcy/admin/vo/system/SystemAuthAdminVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/system/SystemAuthAdminVo.java @@ -42,5 +42,4 @@ public class SystemAuthAdminVo implements Serializable { private String email; // 邮箱 private String technicalGrade; // 技术等级 private Integer receiveOrderStatus; //接单状态(0=休假/停止接单中 1=作业中 2=可接单) - } diff --git a/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java b/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java index 69f7d8b..07266a9 100644 --- a/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java +++ b/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java @@ -8,6 +8,7 @@ public enum SparePartStockAuditEnum { MAINTENANCE_ORDER(0, "检修工单"), REPAIR_ORDER(1, "维修工单"), + ADDROUTING_INSPECTION_ORDER(2, "巡检工单"), EXPRESSAGE(1,"物流快递"), SELF_TAKE(2,"自行取件"), diff --git a/common/src/main/java/com/hcy/common/enums/order/OrderOperateRecordEnum.java b/common/src/main/java/com/hcy/common/enums/order/OrderOperateRecordEnum.java index 5fc3d91..8f75512 100644 --- a/common/src/main/java/com/hcy/common/enums/order/OrderOperateRecordEnum.java +++ b/common/src/main/java/com/hcy/common/enums/order/OrderOperateRecordEnum.java @@ -15,14 +15,20 @@ public enum OrderOperateRecordEnum { APPOINT(1,"分配"), ORDER_RECEIVING(2,"接单"), START_SERVICE(3,"开始服务"), + START_ROUTING_INSPECTION(3,"开始巡检"), CUSTOMER_QUOTATION(4,"客户报价"), + FAULT_DETECT(4,"故障检测"), CUSTOMER_CONFIRM(5,"客户确认"), + INSPECTION_COMPLETED(5,"巡检完成"), SPARE_PARTS_RECEIVE(9,"配件领用"), + UPLOADING_IN_MAINTENANCE(6, "上传维修中照片"), + UPLOADING_AFTER_REPAIR(7, "上传维修后照片"), SPARE_PARTS_AUDIT_ONE(5,"备件领用一级审核"), SPARE_PARTS_AUDIT_TWO(6,"备件领用二级审核"), DELIVER_GOODS(7,"发货"), RECEIVE_GOODS(8,"收货"), FILL_IN_RECEIPT(10,"填写回单"), + FILL_IN_SCRAP_FORM(10, "填写报废单"), FINISH(11,"完成"), REFUND(11,"退单"), diff --git a/front/src/main/java/com/hcy/front/service/order/IOrderOperateRecordService.java b/front/src/main/java/com/hcy/front/service/order/IOrderOperateRecordService.java index 27eea61..b9a6cbc 100644 --- a/front/src/main/java/com/hcy/front/service/order/IOrderOperateRecordService.java +++ b/front/src/main/java/com/hcy/front/service/order/IOrderOperateRecordService.java @@ -1,5 +1,7 @@ package com.hcy.front.service.order; +import com.hcy.common.entity.order.RepairOrder; + /** * 订单操作记录服务接口类 */ @@ -21,4 +23,39 @@ public interface IOrderOperateRecordService { * @param description 内容 */ void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description); + + /** + * 新增操作维修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param description 内容 + */ + void addRepairOrder(Long orderId,String titleDsc,String description); + + /** + * 新增操作维修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param dscType 内容类型 + * @param description 内容 + */ + void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description); + + /** + * 新增操作巡检单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param description 内容 + */ + void addRoutingInspectionOrder(Long orderId,String titleDsc,String description); + + /** + * 新增操作巡检单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param dscType 内容类型 + * @param description 内容 + */ + void addRoutingInspectionOrder(Long orderId,String titleDsc,Integer dscType,String description); + } diff --git a/front/src/main/java/com/hcy/front/service/order/impl/OrderOperateRecordServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/OrderOperateRecordServiceImpl.java index 667473d..f432b87 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/OrderOperateRecordServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/OrderOperateRecordServiceImpl.java @@ -37,4 +37,46 @@ public class OrderOperateRecordServiceImpl implements IOrderOperateRecordService orderOperateRecord.setDescription(description); orderOperateRecordMapper.insert(orderOperateRecord); } + + @Override + public void addRepairOrder(Long orderId,String titleDsc,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } + + @Override + public void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDscType(dscType); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } + + @Override + public void addRoutingInspectionOrder(Long orderId,String titleDsc,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.ADDROUTING_INSPECTION_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } + + @Override + public void addRoutingInspectionOrder(Long orderId,String titleDsc,Integer dscType,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.ADDROUTING_INSPECTION_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDscType(dscType); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } } diff --git a/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java index 5e1ff9c..948c994 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/RepairOrderServiceImpl.java @@ -6,14 +6,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; -import com.hcy.common.dto.order.MaintenanceOrderDto; import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.dto.order.RepairOrderDto; import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.fault.Fault; -import com.hcy.common.entity.order.MaintenanceOrder; import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.plant.Plant; import com.hcy.common.entity.sparePart.SparePart; @@ -24,6 +22,7 @@ import com.hcy.common.entity.warehouse.Warehouse; import com.hcy.common.enums.ClientStatusEnum; import com.hcy.common.enums.SparePartStockAuditEnum; import com.hcy.common.enums.audit.AuditStateEnum; +import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; import com.hcy.common.enums.order.OrderOperateRecordEnum; import com.hcy.common.enums.order.OrderStateEnum; @@ -48,14 +47,12 @@ import com.hcy.front.FrontThreadLocal; import com.hcy.front.service.order.IRepairOrderService; import com.hcy.front.service.region.IDevRegionService; import com.hcy.front.validate.PageParam; -import com.hcy.front.validate.order.MaintenanceOrderParam; import com.hcy.front.validate.order.RepairOrderParam; import com.hcy.front.validate.warehouse.SparePartParam; import com.hcy.front.vo.address.UserAddressListVo; import com.hcy.front.vo.client.EquipmentListVo; import com.hcy.front.vo.order.*; import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; -import com.sun.xml.internal.ws.resources.AddressingMessages; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -121,9 +118,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 工单池 - * - * @param repairOrderParam - * @return */ @Override public List list(RepairOrderParam repairOrderParam) { @@ -200,8 +194,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 统计工单状态数量 - * - * @return */ @Override public OrderStatusCountVo orderStatusCount(RepairOrderParam repairOrderParam) { @@ -265,10 +257,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 确认服务报价 - * - * @param repairOrderParam */ @Override + @Transactional public void confirmServiceOfferPrice(RepairOrderParam repairOrderParam) { RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); @@ -277,11 +268,42 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(repairOrderParam.getIsMaintain() == MaintenanceOrderStatusEnum.MAINTAIN.getStatus()){ repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); + + Client client = clientMapper.findClientById(repairOrder.getClientId()); + if(client != null){ + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc() + ,"客户【"+client.getClientName()+"】已确认报价。"); + } }else{ repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.NOT_MAINTAIN.getStatus()); repairOrder.setRefuseMaintenanceCause(repairOrderParam.getRefuseMaintenanceCause()); // 拒绝维修原因 repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus()); repairOrder.setOrderAccomplishTime(new Date()); // 订单完成时间 + + Client client = clientMapper.findClientById(repairOrder.getClientId()); + if(client != null){ + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc() + ,"客户【"+client.getClientName()+"】确定不维修;结束工单原因:"+repairOrder.getRefuseMaintenanceCause()+"。工单处理结束"); + } + + User user = userMapper.selectById(repairOrder.getReceiverId()); + if(user != null){ + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.FINISH.getDesc() + ,"【"+user.getUsername()+"】已经完成任务"); + } + + //将设备状态修改成正常 + Equipment equipment = equipmentMapper.findEquipmentById(repairOrder.getEquipmentId()); + if(equipment != null){ + equipment.setDeviceStatus(EquipmentStateEnum.NORMAL.getStatus()); + equipmentMapper.updateById(equipment); + } } repairOrderMapper.updateById(repairOrder); @@ -289,10 +311,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 确认报废 - * - * @param repairOrderParam */ @Override + @Transactional public void confirmedScrap(RepairOrderParam repairOrderParam) { RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); @@ -306,31 +327,47 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus()); repairOrder.setOrderAccomplishTime(new Date()); //订单完成时间 repairOrderMapper.updateById(repairOrder); + + User user = userMapper.selectById(repairOrder.getReceiverId()); + if(user != null){ + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.FINISH.getDesc() + ,"【"+user.getUsername()+"】已经完成任务"); + } } /** * 上传维修中、维修后照片 - * - * @param repairOrderParam */ @Override + @Transactional public void uploadPictures(RepairOrderParam repairOrderParam) { RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); if(repairOrderParam.getInMaintenanceImg() != null){ repairOrder.setInMaintenanceImg(repairOrderParam.getInMaintenanceImg()); // 维修中照片 + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.UPLOADING_IN_MAINTENANCE.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已上传维修中照片。"); }else{ repairOrder.setAfterRepairImg(repairOrderParam.getAfterRepairImg()); // 维修后照片 + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.UPLOADING_AFTER_REPAIR.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已上传维修后照片。"); } repairOrderMapper.updateById(repairOrder); } /** * 填写报废单 - * - * @param repairOrderParam */ @Override + @Transactional public void scrapForm(RepairOrderParam repairOrderParam) { RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); @@ -338,12 +375,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setExpressName(repairOrderParam.getExpressName()); // 快递名称 repairOrder.setExpressNo(repairOrderParam.getExpressNo()); // 快递单号 repairOrderMapper.updateById(repairOrder); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.FILL_IN_SCRAP_FORM.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已填写报废单。"); } /** * 填写回单 - * - * @param repairOrderParam */ @Override public void fillInReceipt(RepairOrderParam repairOrderParam) { @@ -362,8 +402,19 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setOrderAccomplishTime(new Date()); // 订单完成时间 repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); repairOrder.setCompleteImg(repairOrderParam.getCompleteImg()); // 完工照片 - repairOrderMapper.updateById(repairOrder); + + //将设备状态修改成正常 + Equipment equipment = equipmentMapper.findEquipmentById(repairOrder.getEquipmentId()); + if(equipment != null){ + equipment.setDeviceStatus(EquipmentStateEnum.NORMAL.getStatus()); + equipmentMapper.updateById(equipment); + } + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.FILL_IN_RECEIPT.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已经完成任务"); }else{ throw new OperateException("当前订单状态无法进行填写回单操作"); } @@ -371,8 +422,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 备件领用申请 - * - * @param repairOrderParam */ @Override @Transactional @@ -399,6 +448,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); repairOrderMapper.updateById(repairOrder); + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE_TYPE.getStatus() + ,"【"+FrontThreadLocal.get("username")+"】创建了【配件领用】单。选择仓库:自身仓库。"); //我的仓库也要新增配件领用记录 并且状态是已完成 /*SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); @@ -416,14 +470,18 @@ public class RepairOrderServiceImpl implements IRepairOrderService { SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(repairOrderParam); sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); sparePartStockAuditMapper.insert(sparePartStockAudit); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE_TYPE.getStatus() + ,"【"+FrontThreadLocal.get("username")+"】创建了配件领用申请单。"); } } } /** * 确认收货 - * - * @param repairOrderParam */ @Override @Transactional @@ -443,11 +501,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService { resultSps.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); sparePartStockAuditMapper.updateById(resultSps); - //新增检修单操作记录 - orderOperateRecordService.addMaintenanceOrder(repairOrder.getId() + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() , OrderOperateRecordEnum.RECEIVE_GOODS.getDesc() - ,"检修员【"+FrontThreadLocal.get("username")+"】已确认收货"); - orderOperateRecordService.addMaintenanceOrder(repairOrder.getId() + ,"维修员【"+FrontThreadLocal.get("username")+"】已确认收货"); + orderOperateRecordService.addRepairOrder(repairOrder.getId() ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() ,"【"+FrontThreadLocal.get("username")+"】已完成配件领用"); }else{ @@ -717,6 +775,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { * @param repairOrderParam 参数 */ @Override + @Transactional public void add(RepairOrderParam repairOrderParam) { RepairOrder model = new RepairOrder(); model.setOrderNo(getOrderNo()); //工单编号 @@ -746,13 +805,18 @@ public class RepairOrderServiceImpl implements IRepairOrderService { model.setCreateTime(new Date()); //创建时间 repairOrderMapper.insert(model); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(model.getId() + , OrderOperateRecordEnum.NEW_CREATE.getDesc() + ,"维修主管【"+FrontThreadLocal.get("username")+"】创建了维修工单。"); } /** * 抢单 - * @param repairOrderParam */ @Override + @Transactional public void grabTheOrder(RepairOrderParam repairOrderParam) { RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); @@ -763,6 +827,12 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus()); repairOrder.setReceiverTime(new Date()); repairOrderMapper.updateById(repairOrder); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() + ,"维修人员【"+FrontThreadLocal.get("username")+"】已自主抢单。联系人:" + + FrontThreadLocal.get("username") + ",联系电话:"+FrontThreadLocal.get("mobile")); }else{ throw new OperateException("订单已被其他人抢走"); } @@ -770,7 +840,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 接单 - * @param repairOrderParam */ @Override public void receivingOrder(RepairOrderParam repairOrderParam) { @@ -781,6 +850,12 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus()); repairOrder.setReceiverTime(new Date()); repairOrderMapper.updateById(repairOrder); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已自主接单。联系人:" + + FrontThreadLocal.get("username") + ",联系电话:"+FrontThreadLocal.get("mobile")); }else{ throw new OperateException("订单状态不正确"); } @@ -788,7 +863,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 退单 - * @param repairOrderParam */ @Override @Transactional @@ -805,6 +879,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){ repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CLOSED.getStatus()); repairOrderMapper.updateById(repairOrder); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.REFUND.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已退单。退单原因:"+repairOrder.getCancelCause()); }else{ throw new OperateException("当前订单状态不可退单"); } @@ -821,6 +900,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService { } repairOrderMapper.updateById(repairOrder); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.REFUND.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已退单。退单原因:"+repairOrder.getCancelCause()); }else{ throw new OperateException("当前订单状态不可退单"); } @@ -830,7 +914,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 故障检测 * - * @param repairOrderParam */ @Override @Transactional @@ -841,12 +924,23 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setWarehouseType(repairOrderParam.getWarehouseType()); // 仓库类型 0-我的仓库 1-公共仓库 repairOrder.setQuotationTime(new Date()); // 报价时间 + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_QUOTATION.getDesc() + ,OrderOperateRecordEnum.QUOTATION.getStatus() + ,"【"+FrontThreadLocal.get("username")+"】已经为客户发送服务报价。"); + Client client = clientMapper.findClientById(repairOrder.getClientId()); //判断当前客户是全包还是半包 if(client.getMaintainType() == ClientStatusEnum.MODULE_MAINTENANCE_ALL_WRAPPED.getStatus()){ //全包直接变成维修中状态,需要更改是否维修状态为是 repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); + + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(repairOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc() + ,"客户【"+client.getClientName()+"】已确认报价。"); }else{ repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()); } @@ -903,7 +997,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { /** * 工单编号 - * @return + * @return OrderNo */ private String getOrderNo() { //获取当前日期并将其进行格式化 diff --git a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java index bbfcf76..34f8ca0 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java @@ -16,6 +16,7 @@ import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; +import com.hcy.common.enums.order.OrderOperateRecordEnum; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.client.ClientMapper; @@ -37,8 +38,10 @@ import com.hcy.front.vo.order.OrderStatusCountVo; import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; import com.hcy.front.vo.order.RoutingInspectionOrderListVo; import org.apache.commons.lang3.StringUtils; +import org.aspectj.weaver.ast.Or; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; @@ -75,6 +78,9 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde @Resource FaultMapper faultMapper; + @Resource + OrderOperateRecordServiceImpl orderOperateRecordService; + @Resource IDevRegionService regionService; @@ -190,20 +196,28 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde * @param routingInspectionOrderParam */ @Override + @Transactional public void orderReceiving(RoutingInspectionOrderParam routingInspectionOrderParam) { RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( new QueryWrapper() .eq("id", routingInspectionOrderParam.getId()) .eq("is_delete", 0) .last("limit 1")); - Assert.notNull(model, "数据不存在!"); - model.setReceiverId(FrontThreadLocal.getUserId().longValue()); //接单人 - model.setReceiverTime(new Date()); //接单时间 - model.setOrderStatus(OrderStateEnum.TO_BE_INSPECTED.getStatus()); //用户接单后工单状态为待巡检 + if(model.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){ + model.setReceiverId(FrontThreadLocal.getUserId().longValue()); //接单人 + model.setReceiverTime(new Date()); //接单时间 + model.setOrderStatus(OrderStateEnum.TO_BE_INSPECTED.getStatus()); //用户接单后工单状态为待巡检 + routingInspectionOrderMapper.updateById(model); - routingInspectionOrderMapper.updateById(model); + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已自主接单。联系人:" + FrontThreadLocal.get("username") + ",联系电话:"+FrontThreadLocal.get("mobile")); + }else{ + throw new OperateException("订单状态不正确"); + } } /** @@ -212,17 +226,22 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde * @param routingInspectionOrderParam */ @Override + @Transactional public void startInspection(RoutingInspectionOrderParam routingInspectionOrderParam) { RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( new QueryWrapper() .eq("id", routingInspectionOrderParam.getId()) .eq("is_delete", 0) .last("limit 1")); - Assert.notNull(model, "数据不存在!"); model.setOrderStatus(OrderStateEnum.DURING_INSPECTION.getStatus()); //用户开始巡检后工单状态为巡检中 routingInspectionOrderMapper.updateById(model); + + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + , OrderOperateRecordEnum.START_ROUTING_INSPECTION.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已经开始巡检。"); } /** @@ -231,6 +250,7 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde * @param routingInspectionOrderParam */ @Override + @Transactional public void faultDetect(RoutingInspectionOrderParam routingInspectionOrderParam) { RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( new QueryWrapper() @@ -269,12 +289,29 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde maintenanceOrder.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单 maintenanceOrderMapper.insert(maintenanceOrder); + + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + , OrderOperateRecordEnum.FAULT_DETECT.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已提交故障检测结果,检测结果: " + + OrderStateEnum.ABNORMAL.getDesc() + ";系统会自动创建检修单且流入到工单池。"); + }else{ + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + , OrderOperateRecordEnum.FAULT_DETECT.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已提交故障检测结果,检测结果: " + + OrderStateEnum.NORMAL.getDesc() + ";"); } model.setInspectionResultRemark(routingInspectionOrderParam.getInspectionResultRemark());//巡检结果备注 model.setInspectionPhoto(routingInspectionOrderParam.getInspectionPhoto()); // 巡检照片 model.setOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成 model.setOrderAccomplishTime(new Date()); //订单完成时间 routingInspectionOrderMapper.updateById(model); + + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + , OrderOperateRecordEnum.INSPECTION_COMPLETED.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已完成巡检。"); } /** @@ -283,6 +320,7 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde * @param routingInspectionOrderParam */ @Override + @Transactional public void grabTheOrder(RoutingInspectionOrderParam routingInspectionOrderParam) { RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( new QueryWrapper() @@ -296,9 +334,15 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde model.setOrderStatus(OrderStateEnum.TO_BE_INSPECTED.getStatus()); model.setReceiverTime(new Date()); routingInspectionOrderMapper.updateById(model); + + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() + ,"检修人员【"+FrontThreadLocal.get("username")+"】已自主抢单。联系人:" + FrontThreadLocal.get("username") + ",联系电话:"+FrontThreadLocal.get("mobile")); }else{ throw new OperateException("订单已被其他人抢走"); } + } /** @@ -384,6 +428,7 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde * @param routingInspectionOrderParam */ @Override + @Transactional public void checking(RoutingInspectionOrderParam routingInspectionOrderParam) { RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( new QueryWrapper() @@ -392,16 +437,31 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde .last("limit 1")); Assert.notNull(model, "数据不存在!"); - model.setCancelOrderTime(new Date()); //退单时间 - model.setCancelCause(routingInspectionOrderParam.getCancelCause()); //取消原因 - //如果工单去向是工单池的话,退单后工单状态为待抢单,如果是检修员,工单状态是 5=已退单 - if(model.getRepairWorkOrderFlow() == OrderStateEnum.WORK_ORDER_TANK.getStatus()){ - model.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); //用户退单后工单状态为待抢单 - }else{ - model.setOrderStatus(OrderStateEnum.RETURNED_ORDER.getStatus()); //用户退单后工单状态为已退单 - } - routingInspectionOrderMapper.updateById(model); + if(routingInspectionOrderParam.getIsClient() == MaintenanceOrderStatusEnum.REPAIRER.getStatus()){ + if(model.getOrderStatus() == OrderStateEnum.PENDING_ORDER.getStatus() || + model.getOrderStatus() == OrderStateEnum.TO_BE_INSPECTED.getStatus()){ + + model.setCancelOrderTime(new Date()); //退单时间 + model.setCancelCause(routingInspectionOrderParam.getCancelCause()); //取消原因 + //如果工单去向是工单池的话,退单后工单状态为待抢单,如果是检修员,工单状态是 5=已退单 + if(model.getRepairWorkOrderFlow() == OrderStateEnum.WORK_ORDER_TANK.getStatus()){ + model.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); //用户退单后工单状态为待抢单 + }else{ + model.setOrderStatus(OrderStateEnum.RETURNED_ORDER.getStatus()); //用户退单后工单状态为已退单 + } + routingInspectionOrderMapper.updateById(model); + + //新增巡检单操作记录 + orderOperateRecordService.addRoutingInspectionOrder(model.getId() + ,OrderOperateRecordEnum.REFUND.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已退单。退单原因:"+model.getCancelCause()); + }else{ + throw new OperateException("当前订单状态不可退单"); + } + }else{ + throw new OperateException("当前用户不可退单,只有检修员可以退巡检单"); + } } /**