From 6cf03520428955e599f8a45f05acee0abd57759e Mon Sep 17 00:00:00 2001 From: renfan <2206580733@qq.com> Date: Sat, 14 Sep 2024 21:07:15 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90admin&front=E3=80=91=E4=BC=98=E5=8C=96?= =?UTF-8?q?#=201=E3=80=81=E4=BC=98=E5=8C=96=E6=A3=80=E4=BF=AE=E5=8D=95?= =?UTF-8?q?=E9=85=8D=E4=BB=B6=E9=A2=86=E7=94=A8=202=E3=80=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=B7=A5=E5=8D=95=E5=85=A8=E5=8C=85=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E6=98=BE=E7=A4=BA0=EF=BC=8C=E5=8D=8A=E5=8C=85=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E6=98=BE=E7=A4=BA=203=E3=80=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=91=98=E9=85=8D=E4=BB=B6=E9=A2=86=E7=94=A8?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=85=AC=E5=85=B1=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/crontab/impl/OrderCrontab.java | 39 +++++ .../impl/MaintenanceOrderServiceImpl.java | 13 +- .../order/impl/RepairOrderServiceImpl.java | 82 +++++++--- .../RoutingInspectionOrderServiceImpl.java | 4 + .../sparePart/impl/SparePartServiceImpl.java | 2 +- .../impl/SparePartStockAuditServiceImpl.java | 40 +++-- .../validate/order/RepairOrderParam.java | 2 +- .../vo/order/MaintenanceOrderDetailVo.java | 2 + .../admin/vo/order/OrderSparePartListVo.java | 3 +- .../admin/vo/order/RepairOrderDetailVo.java | 9 +- .../hcy/admin/vo/order/RepairOrderListVo.java | 5 +- .../admin/vo/order/RepairOrderStepDataVo.java | 22 +++ .../hcy/common/dto/order/OrderSparePart.java | 3 +- .../hcy/common/dto/order/RepairOrderDto.java | 2 +- .../common/entity/order/MaintenanceOrder.java | 1 + .../hcy/common/entity/order/RepairOrder.java | 2 + .../enums/order/OrderOperateRecordEnum.java | 1 + .../mapper/order/MaintenanceOrderMapper.java | 10 -- .../mapper/order/RepairOrderMapper.java | 3 + .../mapper/warehouse/WarehouseMapper.java | 7 + .../mapper/RoutingInspectionOrderMapper.xml | 3 + .../resources/mapper/SparePartrMapper.xml | 2 +- .../front/service/impl/UserServiceImpl.java | 4 + .../order/IMaintenanceOrderService.java | 2 +- .../service/order/IRepairOrderService.java | 28 +--- .../impl/MaintenanceOrderServiceImpl.java | 72 +++++---- .../order/impl/RepairOrderServiceImpl.java | 145 ++++++++++++++---- .../RoutingInspectionOrderServiceImpl.java | 5 + .../warehouse/impl/SparePartServiceImpl.java | 26 +++- .../validate/order/MaintenanceOrderParam.java | 3 +- .../validate/order/RepairOrderParam.java | 4 +- .../validate/warehouse/SparePartParam.java | 3 +- .../vo/order/OrderSparePartDetailVo.java | 3 +- .../front/vo/order/OrderSparePartListVo.java | 3 +- .../hcy/front/vo/order/OrderSparePartVo.java | 31 ++++ .../front/vo/order/RepairOrderDetailVo.java | 3 + .../hcy/front/vo/order/RepairOrderListVo.java | 1 + .../front/vo/order/RepairOrderStepDataVo.java | 3 + .../com/hcy/front/vo/user/UserCenterVo.java | 2 +- 39 files changed, 442 insertions(+), 153 deletions(-) create mode 100644 admin/src/main/java/com/hcy/admin/vo/order/RepairOrderStepDataVo.java create mode 100644 front/src/main/java/com/hcy/front/vo/order/OrderSparePartVo.java diff --git a/admin/src/main/java/com/hcy/admin/service/crontab/impl/OrderCrontab.java b/admin/src/main/java/com/hcy/admin/service/crontab/impl/OrderCrontab.java index e1b6cf0..e9421c5 100644 --- a/admin/src/main/java/com/hcy/admin/service/crontab/impl/OrderCrontab.java +++ b/admin/src/main/java/com/hcy/admin/service/crontab/impl/OrderCrontab.java @@ -16,6 +16,7 @@ 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.OrderStateEnum; +import com.hcy.common.enums.order.RepairOrderStatusEnum; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; import com.hcy.common.mapper.configuration.SystemConfigurationMapper; @@ -189,4 +190,42 @@ public class OrderCrontab { // 获取当前的用户 routingInspectionOrderMapper.insert(model); } + + /** + * 维修单步骤停滞提醒 + */ + public void repairTimeOut(){ + log.info("repairTimeOut 被执行......"); + //获取当前时间 + Calendar currentTime = Calendar.getInstance(); + + //维修单 + LambdaQueryWrapper repairOrderQw = new LambdaQueryWrapper() + .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .ne(RepairOrder::getOrderStatus, RepairOrderStatusEnum.FINISHED.getStatus()); + List repairOrders = repairOrderMapper.selectList(repairOrderQw); + for (RepairOrder item : repairOrders) { + Calendar orderCreateTime = Calendar.getInstance(); + orderCreateTime.setTime(item.getUpdateTime()); + + //判断当前维修单是加急还是普通 priority; // 优先级(0=普通,1=加急) + if(item.getPriority() == RepairOrderStatusEnum.URGENT.getStatus()){ + //加急维修单状态停滞一天,需要提醒 + orderCreateTime.add(Calendar.MINUTE, 1); + if(currentTime.compareTo(orderCreateTime) > 0){ + item.setTimeoutOrNot(RepairOrderStatusEnum.YES.getStatus());// 是否超时(0=是,1=否) + repairOrderMapper.updateById(item); + } + + } else if (item.getPriority() == RepairOrderStatusEnum.COMMON.getStatus()) { + //普通维修单状态停滞三天,需要提醒 + orderCreateTime.add(Calendar.MINUTE, 3); + if(currentTime.compareTo(orderCreateTime) > 0){ + item.setTimeoutOrNot(RepairOrderStatusEnum.YES.getStatus());// 是否超时(0=是,1=否) + repairOrderMapper.updateById(item); + } + } + } + + } } diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java index 025428f..a817868 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java @@ -34,6 +34,7 @@ import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit; import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; import com.hcy.common.entity.warehouse.Warehouse; +import com.hcy.common.enums.ClientStatusEnum; import com.hcy.common.enums.SparePartStockAuditEnum; import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; @@ -245,6 +246,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { User user = userMapper.selectById(model.getReceiverId()); if(user != null){ vo.setReceiverName(user.getNickname()); + vo.setReceiverPhone(user.getMobile()); } //设置故障名称 @@ -307,6 +309,15 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { .eq(OrderOperateRecord::getOrderId, model.getId()); vo.setOrderOperateRecords(orderOperateRecordMapper.selectList(queryWrapper));; + //全包工单报价为0,半包正常显示 actualAmount; // 实际金额 clientType; // 桩点维修类型 0-全包 1-半包 + Client clientType = clientMapper.findClientById(vo.getClientId()); + if(clientType != null){ + if(clientType.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus()){ + vo.setTotalAmount(BigDecimal.valueOf(0)); + vo.setActualAmount(BigDecimal.valueOf(0)); + } + } + return vo; } @@ -440,7 +451,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { orderOperateRecordService.addMaintenanceOrder(model.getId() ,OrderOperateRecordEnum.ALTER_ORDER_DISTANCE.getDesc() ,"【"+AdminThreadLocal.get("username")+"】已修改抢单范围。原本抢单范围为:" + - model.getOrderDistance() + "公里,已修改抢单范围为:" + model.getOrderDistance() + "公里。"); + model.getOrderDistance() + "公里,已修改抢单范围为:" + model.getOrderDistance() + "公里。"); } }else{ 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 b6fc7cc..b08191b 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 @@ -16,6 +16,7 @@ import com.hcy.admin.vo.client.EquipmentListVo; import com.hcy.admin.vo.order.OrderSparePartListVo; import com.hcy.admin.vo.order.RepairOrderListVo; import com.hcy.admin.vo.order.RepairOrderDetailVo; +import com.hcy.admin.vo.order.RepairOrderStepDataVo; import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; @@ -25,10 +26,7 @@ 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.OrderOperateRecord; -import com.hcy.common.entity.order.RepairOrder; -import com.hcy.common.entity.order.RoutingInspectionOrder; +import com.hcy.common.entity.order.*; import com.hcy.common.entity.plant.Plant; import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit; import com.hcy.common.entity.system.SystemAuthAdmin; @@ -44,9 +42,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.order.*; import com.hcy.common.mapper.plant.PlantMapper; import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; @@ -114,6 +110,12 @@ public class RepairOrderServiceImpl implements IRepairOrderService { @Resource OrderOperateRecordMapper orderOperateRecordMapper; + @Resource + RepairOrderStepDataMapper repairOrderStepDataMapper; + + @Resource + OrderPartCodeMapper orderPartCodeMapper; + /** * 维修订单列表 * @@ -179,6 +181,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService { vo.setSparePartStockAudit(sparePartStockAuditDetailVo); } + //配件编码 + List orderPartCodes = orderPartCodeMapper.selectList(new LambdaQueryWrapper() + .eq(OrderPartCode::getRepairOrderId, vo.getId())); + vo.setOrderPartCodeList(orderPartCodes); + vo.setCreateTime(item.getCreateTime()); vo.setUpdateTime(item.getUpdateTime()); list.add(vo); @@ -334,11 +341,39 @@ public class RepairOrderServiceImpl implements IRepairOrderService { vo.setFamiliarFaultName(familiarFaultName.getName()); } - //设置订单操作记录 + /*//设置订单操作记录 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(OrderOperateRecord::getOrderType, OrderOperateRecordEnum.REPAIR.getStatus()) .eq(OrderOperateRecord::getOrderId, model.getId()); - vo.setOrderOperateRecords(orderOperateRecordMapper.selectList(queryWrapper));; + vo.setOrderOperateRecords(orderOperateRecordMapper.selectList(queryWrapper));;*/ + + //维修单步骤 + List repairOrderStepData = repairOrderStepDataMapper.selectList(new LambdaQueryWrapper() + .eq(RepairOrderStepData::getRepairOrderId, vo.getId()) + .orderByDesc(RepairOrderStepData::getId)); + if(repairOrderStepData != null){ + List stepDataVoList = new ArrayList<>(); + for (RepairOrderStepData repairOrderStepDatum : repairOrderStepData) { + RepairOrderStepDataVo repairOrderStepDataVo = new RepairOrderStepDataVo(); + BeanUtils.copyProperties(repairOrderStepDatum,repairOrderStepDataVo); + //创建人名称 + User user1 = userMapper.selectOne(new LambdaQueryWrapper() + .eq(User::getId, repairOrderStepDataVo.getCreatorId())); + if(user1 != null){ + repairOrderStepDataVo.setCreatorName(user1.getUsername()); + } + //当前维修员是否是学徒 + SystemAuthAdmin isApprentice = systemAuthAdminMapper.selectOne( + new QueryWrapper() + .eq("user_id", repairOrderStepDataVo.getCreatorId())); + if(isApprentice != null){ + repairOrderStepDataVo.setIsApprentice(isApprentice.getIsApprentice()); + } + stepDataVoList.add(repairOrderStepDataVo); + } + vo.setOrderOperateRecords(stepDataVoList); + } + return vo; } @@ -359,21 +394,18 @@ public class RepairOrderServiceImpl implements IRepairOrderService { Assert.notNull(model, "数据不存在!"); - model.setClientId(repairOrderParam.getClientId()); // 客户id - model.setEquipmentId(repairOrderParam.getEquipmentId()); // 设备id - model.setModuleNumber(repairOrderParam.getModuleNumber()); // 模块号 - model.setBrand(repairOrderParam.getBrand()); // 品牌 - model.setLogisticsMode(repairOrderParam.getLogisticsMode()); // 物流方式 0-物流快递 1=自领带回 - model.setExpressName(repairOrderParam.getExpressName()); // 快递名称 - model.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄(0=是 1=否) - model.setReceiverId(repairOrderParam.getReceiverId()); // 接单人id - model.setOrderDistance(repairOrderParam.getOrderDistance()); // 自动抢单最大距离 - model.setFaultDescription(repairOrderParam.getFaultDescription()); // 故障描述 - model.setRemark(repairOrderParam.getRemark()); // 备注 - model.setAddressId(repairOrderParam.getAddressId()); // 回寄地址 + if(model.getOrderStatus() != RepairOrderStatusEnum.PENDING_ORDER.getStatus()){ + throw new OperateException("当前工单状态,无法进行编辑!"); + } + + RepairOrder repairOrder = new RepairOrder(); + BeanUtils.copyProperties(model, repairOrder); + //priority; // 优先级(0=普通,1=加急) + repairOrder.setPriority(repairOrderParam.getPriority()); + //重新指派员工 - if(repairOrderParam.getReceiverId() != null && repairOrderParam.getId() != null){ - model.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); + /*if(repairOrderParam.getReceiverId() != null && repairOrderParam.getId() != null){ + repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); User user = userMapper.selectById(repairOrderParam.getReceiverId()); if(user != null){ @@ -382,8 +414,8 @@ public class RepairOrderServiceImpl implements IRepairOrderService { , OrderOperateRecordEnum.APPOINT.getDesc() ,"【"+AdminThreadLocal.get("username")+"】重新分配工单给检修员【"+user.getUsername()+"】"); } - } - repairOrderMapper.updateById(model); + }*/ + repairOrderMapper.updateById(repairOrder); } /** 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 61b1bca..d3357b2 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 @@ -95,12 +95,16 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde inspectionOrderDto.setClientName(StringUtils.isEmpty(params.get("clientName")) ? null : params.get("clientName")); inspectionOrderDto.setEquipmentName(StringUtils.isEmpty(params.get("equipmentName")) ? null : params.get("equipmentName")); inspectionOrderDto.setReceiverName(StringUtils.isEmpty(params.get("receiverName")) ? null : params.get("receiverName")); + if(StringUtils.isNotEmpty(params.get("orderSource"))){ inspectionOrderDto.setOrderSource(Long.valueOf(params.get("orderSource"))); } if(StringUtils.isNotEmpty(params.get("orderStatus"))){ inspectionOrderDto.setOrderStatus(Long.valueOf(params.get("orderStatus"))); } + if(StringUtils.isNotEmpty(params.get("clientId"))){ + inspectionOrderDto.setClientId(Long.valueOf(params.get("clientId"))); + } Page iPage = routingInspectionOrderMapper.pageList(page, inspectionOrderDto); diff --git a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java index a1e1188..0340717 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java @@ -223,7 +223,7 @@ public class SparePartServiceImpl implements ISparePartService { model.setWarehouseId(sparePartParam.getWarehouseId()); model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); model.setUnit(sparePartParam.getUnit()); - model.setQuantity(sparePartParam.getQuantity()); + /*model.setQuantity(sparePartParam.getQuantity());// 库存数量*/ model.setUnitPrice(sparePartParam.getUnitPrice()); model.setUpdateTime(System.currentTimeMillis() / 1000);//更新时间 sparePartMapper.updateById(model); 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 bcf3df0..40f3d66 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 @@ -32,6 +32,7 @@ import com.hcy.common.enums.SparePartStockAuditEnum; import com.hcy.common.enums.audit.AuditStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; import com.hcy.common.enums.order.OrderOperateRecordEnum; +import com.hcy.common.enums.order.RepairOrderStatusEnum; import com.hcy.common.enums.order.RepairOrderStopEnum; import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper; @@ -218,7 +219,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi BeanUtils.copyProperties(orderSparePart, orderSparePartListVo); orderSparePartListVoList.add(orderSparePartListVo); - number += orderSparePart.getQuantity(); + number += orderSparePart.getCount(); } vo.setOrderSparePartListVoList(orderSparePartListVoList); vo.setWorkOrderNo(maintenanceOrder.getOrderNo()); @@ -231,7 +232,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi vo.setRecipientPhone(user.getMobile()); } } else if (item.getOrderType() != null && item.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { - RepairOrder repairOrder = maintenanceOrderMapper.findRepairOrderById(item.getOrderId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(item.getOrderId()); List orderSparePartListVoList = new ArrayList<>(); List orderSparePartList = orderSparePartMapper.findOrderSparePartByRepairOrderId(item.getOrderId()); @@ -240,7 +241,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi BeanUtils.copyProperties(orderSparePart, orderSparePartListVo); orderSparePartListVoList.add(orderSparePartListVo); - number += orderSparePart.getQuantity(); + number += orderSparePart.getCount(); } vo.setOrderSparePartListVoList(orderSparePartListVoList); @@ -881,6 +882,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi if(repairOrder != null){ repairOrder.setReturnCause(sparePartStockAuditParam.getPurchaseIdea()); repairOrder.setRepairNextStep(RepairOrderStopEnum.RECOLLAR_FITTING.getStatus());//维修单审核不通过步骤为重领配件 + repairOrder.setUpdateTime(new Date()); // 更新时间 repairOrderMapper.updateById(repairOrder); } @@ -889,6 +891,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi repairOrderStepData.setRepairOrderId(model.getOrderId());// 维修单id repairOrderStepData.setRemark("仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea());// 备注 repairOrderStepData.setTitle("仓库员进行审核"); // 标题 + repairOrderStepData.setAuditStatus(AuditStateEnum.NOT_PASS_STATE.getStatus()); //审核不通过 repairOrderStepData.setCreatorId(Long.valueOf(AdminThreadLocal.getAdminId())); //创建人 repairOrderStepData.setCreateTime(new Date()); // 创建时间 repairOrderStepDataMapper.insert(repairOrderStepData); @@ -896,25 +899,25 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 //获取待审核备件信息 - List stockAuditId = sparePartAuditMapper.selectList( - new QueryWrapper() - .eq("stock_audit_id", model.getId()) + List orderSpareParts = orderSparePartMapper.selectList( + new QueryWrapper() + .eq("repair_order_id", model.getOrderId()) .eq("is_delete", 0) ); if (model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() && model.getReceiveStatus() == AuditStateEnum.UNCLAIMED.getStatus()) { // 通过审核的出库单 //获取备件信息 - for (SparePartAudit sparePartAudit : stockAuditId) { + for (OrderSparePart orderSparePart : orderSpareParts) { SparePart sparePart = sparePartMapper.selectOne( new QueryWrapper() - .eq("id", sparePartAudit.getSparePartsId()) + .eq("id", orderSparePart.getSparePartsId()) .eq("is_delete", 0) .last("limit 1")); // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 - if (sparePart.getQuantity() >= sparePartAudit.getCount()) { + if (sparePart.getQuantity() >= orderSparePart.getCount()) { /*model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());*/ - sparePart.setQuantity(sparePart.getQuantity() - sparePartAudit.getCount()); + sparePart.setQuantity(sparePart.getQuantity() - orderSparePart.getCount()); } else { throw new OperateException("备件库存数量不足,请联系客服人员!"); } @@ -924,7 +927,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ //新增检修单操作记录 orderOperateRecordService.addMaintenanceOrder(model.getOrderId() - , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT.getDesc() ,OrderOperateRecordEnum.AUDIT.getStatus() ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核。"); } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { @@ -933,11 +936,19 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() ,OrderOperateRecordEnum.AUDIT.getStatus() ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核");*/ + + //仓管员维修单审核通过 + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(model.getOrderId()); + if(repairOrder != null){ + repairOrder.setUpdateTime(new Date()); // 更新时间 + repairOrderMapper.updateById(repairOrder); + } //新增维修单操作记录 RepairOrderStepData repairOrderStepData = new RepairOrderStepData(); repairOrderStepData.setRepairOrderId(model.getOrderId());// 维修单id repairOrderStepData.setRemark("仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核通过");// 备注 repairOrderStepData.setTitle("仓管员进行审核"); // 标题 + repairOrderStepData.setAuditStatus(AuditStateEnum.ALREADY_PASSED.getStatus()); //审核通过 repairOrderStepData.setCreatorId(Long.valueOf(AdminThreadLocal.getAdminId())); //创建人 repairOrderStepData.setCreateTime(new Date()); // 创建时间 repairOrderStepDataMapper.insert(repairOrderStepData); @@ -1147,11 +1158,16 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi sparePartStockAuditMapper.updateById(model); if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ - + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , "仓管员上传确认照片" + ,OrderOperateRecordEnum.SPARE_PARTS_AUDIT.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】上传确认照片。"); } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { RepairOrder repairOrder = repairOrderMapper.selectOne(new LambdaQueryWrapper() .eq(RepairOrder::getId, model.getOrderId())); repairOrder.setOrderStatus(AuditStateEnum.TO_BE_CONFIRMED.getStatus());// 维修工单状态 3=待确认 + repairOrder.setUpdateTime(new Date()); // 更新时间 repairOrderMapper.updateById(repairOrder); //新增维修单操作记录 diff --git a/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java b/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java index ea4b9f9..7734e71 100644 --- a/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/order/RepairOrderParam.java @@ -104,5 +104,5 @@ public class RepairOrderParam implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) - + private Integer timeoutOrNot; // 是否超时(0=是,1=否) } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java index 688343e..375c098 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java @@ -68,4 +68,6 @@ public class MaintenanceOrderDetailVo implements Serializable { private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息 private SparePartStockAuditDetailVo sparePartStockAuditDetailVo; //备件领用申请 private List orderOperateRecords; //订单操作记录 + + private Date quotationTime; //报价时间 } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java index 0a22dd0..c9dd7f0 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java @@ -22,7 +22,8 @@ public class OrderSparePartListVo implements Serializable { private String specificationsModel; // 规格型号 private String unit; // 单位 private BigDecimal unitPrice; // 价格 - private Integer quantity; // 数量 + private Integer quantity; // 库存数量 + private Integer count; // 出入库数量 private BigDecimal totalPrice; // 总价 private String warehouseName; //仓库名称 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 e37b4c8..9213385 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 @@ -9,6 +9,7 @@ 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 com.hcy.common.entity.order.OrderPartCode; import lombok.Data; import java.io.Serializable; @@ -97,7 +98,7 @@ public class RepairOrderDetailVo implements Serializable { private Long clientScrapAddressId; // 客户报废收货地址id private UserAddressListVo clientScrapAddress; //客户报废收货地址 - private Long scrapConfirmation; // 报废确认(0=是,1=否) + private Integer scrapConfirmation; // 报废确认(0=是,1=否) private Integer warehouseType; // 仓库类型 0-我的仓库 1-公共仓库 private Long repairId; // 返修id @@ -108,7 +109,9 @@ public class RepairOrderDetailVo implements Serializable { private Long userId; // 送修人 private Integer maintainType; // 客户维修类型 模块维修类型 0-全包 1-半包 +/* private List orderOperateRecords; //订单操作记录 +*/ private Integer priority; // 优先级(0=加急,1=普通) private Integer isReassignment; // 是否在改派中(0=是,1=否) @@ -123,5 +126,7 @@ public class RepairOrderDetailVo implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) - + private List orderPartCodeList; // 配件编码列表 + private List orderOperateRecords; // 维修单步骤数据列表 //repairOrderStepDataList + private Integer timeoutOrNot; // 是否超时(0=是,1=否) } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderListVo.java index 2d8c400..f2dac04 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderListVo.java @@ -1,10 +1,12 @@ package com.hcy.admin.vo.order; import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; +import com.hcy.common.entity.order.OrderPartCode; import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * RepairOrderVo @@ -86,5 +88,6 @@ public class RepairOrderListVo implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) - + private List orderPartCodeList; // 配件编码列表 + private Integer timeoutOrNot; // 是否超时(0=是,1=否) } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderStepDataVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderStepDataVo.java new file mode 100644 index 0000000..3b01425 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/order/RepairOrderStepDataVo.java @@ -0,0 +1,22 @@ +package com.hcy.admin.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class RepairOrderStepDataVo implements Serializable { + private Long id; // 主键id + private Long repairOrderId; // 维修单id + private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) + private String remark; // 备注 + private String img; // 照片 + private String title; // 标题 + private Integer dscType; // 描述类型:0=配件领用 + private Integer auditStatus; // 审核状态(0=通过,1=不通过) + private Long creatorId; // 创建人id + private Date createTime; // 创建时间 + private String creatorName; // 创建人名称 + private Integer isApprentice; //是否学徒:0=否 1=是 +} diff --git a/common/src/main/java/com/hcy/common/dto/order/OrderSparePart.java b/common/src/main/java/com/hcy/common/dto/order/OrderSparePart.java index 892e2ee..2849496 100644 --- a/common/src/main/java/com/hcy/common/dto/order/OrderSparePart.java +++ b/common/src/main/java/com/hcy/common/dto/order/OrderSparePart.java @@ -26,7 +26,8 @@ public class OrderSparePart implements Serializable { private String specificationsModel; // 规格型号 private String unit; // 单位 private BigDecimal unitPrice; // 价格 - private Integer quantity; // 数量 + private Integer quantity; // 库存数量 + private Integer count; // 出入库数量 private BigDecimal totalPrice; // 总价 private Integer isDelete; // 是否删除 0-未删除 1-删除 diff --git a/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java b/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java index d3d5e46..9a2eef0 100644 --- a/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java +++ b/common/src/main/java/com/hcy/common/dto/order/RepairOrderDto.java @@ -87,5 +87,5 @@ public class RepairOrderDto implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) - + private Integer timeoutOrNot; // 是否超时(0=是,1=否) } diff --git a/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java b/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java index 5e02164..e094405 100644 --- a/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java +++ b/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java @@ -38,6 +38,7 @@ public class MaintenanceOrder implements Serializable { @TableField(value = "receiver_id",updateStrategy = FieldStrategy.IGNORED) private Long receiverId; // 接单人id private Long repairId; // 返修id + @TableField(value = "receiver_time",updateStrategy = FieldStrategy.IGNORED) private Date receiverTime; // 接单时间 private Date quotationTime; //报价时间 private Date cancelOrderTime; // 取消订单时间 diff --git a/common/src/main/java/com/hcy/common/entity/order/RepairOrder.java b/common/src/main/java/com/hcy/common/entity/order/RepairOrder.java index 7e0ac17..fb37b01 100644 --- a/common/src/main/java/com/hcy/common/entity/order/RepairOrder.java +++ b/common/src/main/java/com/hcy/common/entity/order/RepairOrder.java @@ -89,4 +89,6 @@ public class RepairOrder implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) + private Integer timeoutOrNot; // 是否超时(0=是,1=否) + } \ No newline at end of file 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 23f6b2d..21a8080 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 @@ -28,6 +28,7 @@ public enum OrderOperateRecordEnum { RETURN_TECHNICIAN(10, "退回检修员"), UPLOADING_IN_MAINTENANCE(6, "上传维修中照片"), UPLOADING_AFTER_REPAIR(7, "上传维修后照片"), + SPARE_PARTS_AUDIT(5,"备件领用审核"), SPARE_PARTS_AUDIT_ONE(5,"备件领用一级审核"), SPARE_PARTS_AUDIT_TWO(6,"备件领用二级审核"), DELIVER_GOODS(7,"发货"), diff --git a/common/src/main/java/com/hcy/common/mapper/order/MaintenanceOrderMapper.java b/common/src/main/java/com/hcy/common/mapper/order/MaintenanceOrderMapper.java index 21dd5c0..2711321 100644 --- a/common/src/main/java/com/hcy/common/mapper/order/MaintenanceOrderMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/order/MaintenanceOrderMapper.java @@ -31,16 +31,6 @@ public interface MaintenanceOrderMapper extends IBaseMapper { @Select("select * from la_maintenance_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1") MaintenanceOrder findLastMaintenanceOrderByTime(@Param("time") String time); - /** - * 通过订单id查询维修订单 - * @return MaintenanceOrder - */ - @Select("select * from la_repair_order where is_delete = 0 and id = #{id}") - RepairOrder findRepairOrderById(@Param("id") Long id); - - @Select("select * from la_repair_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1") - RepairOrder findRepairOrderByTime(@Param("time") String time); - /** * 获取待接单状态数量 * @return diff --git a/common/src/main/java/com/hcy/common/mapper/order/RepairOrderMapper.java b/common/src/main/java/com/hcy/common/mapper/order/RepairOrderMapper.java index 99c6df4..4cdc87e 100644 --- a/common/src/main/java/com/hcy/common/mapper/order/RepairOrderMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/order/RepairOrderMapper.java @@ -50,6 +50,9 @@ public interface RepairOrderMapper extends IBaseMapper { @Select("select * from la_repair_order where is_delete = 0 and module_code = #{moduleCode}") RepairOrder findRepairOrderByModuleCode(@Param("moduleCode") String moduleCode); + @Select("select * from la_repair_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1") + RepairOrder findRepairOrderByTime(@Param("time") String time); + /** * 获取待接单工单状态数量 * @return diff --git a/common/src/main/java/com/hcy/common/mapper/warehouse/WarehouseMapper.java b/common/src/main/java/com/hcy/common/mapper/warehouse/WarehouseMapper.java index 1b7a91c..f4b668e 100644 --- a/common/src/main/java/com/hcy/common/mapper/warehouse/WarehouseMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/warehouse/WarehouseMapper.java @@ -25,4 +25,11 @@ public interface WarehouseMapper extends IBaseMapper { */ @Select("select * from la_warehouse where is_delete = 0 and pid IN ( SELECT id FROM la_warehouse WHERE warehouse_coding = 'topWarehouse' OR warehouse_coding = 'areaWarehouse') or id = #{id}") List findPublicWarehouseList(@Param("id") Long id); + + /** + * 获取公共仓库 + * @return List + */ + @Select("select * from la_warehouse where is_delete = 0 and pid IN ( SELECT id FROM la_warehouse WHERE warehouse_coding = 'topWarehouse' OR warehouse_coding = 'areaWarehouse')") + List findPublicWarehouseList(); } diff --git a/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml b/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml index 4aff5d0..268cdb7 100644 --- a/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml +++ b/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml @@ -41,6 +41,9 @@ and i.order_status = #{form.orderStatus} + + and i.client_id = #{form.clientId} + ORDER BY create_time DESC diff --git a/common/src/main/resources/mapper/SparePartrMapper.xml b/common/src/main/resources/mapper/SparePartrMapper.xml index 7710936..27aa65d 100644 --- a/common/src/main/resources/mapper/SparePartrMapper.xml +++ b/common/src/main/resources/mapper/SparePartrMapper.xml @@ -8,7 +8,7 @@ lw.warehouse_name as warehouseName FROM la_spare_part AS lsp - LEFT JOIN la_warehouse AS lw ON lw.id = lsp.warehouse_id + LEFT JOIN la_warehouse AS lw ON lw.id = lsp.warehouse_id and lw.is_delete = 0 lsp.is_delete = 0 and lsp.quantity > 0 diff --git a/front/src/main/java/com/hcy/front/service/impl/UserServiceImpl.java b/front/src/main/java/com/hcy/front/service/impl/UserServiceImpl.java index 0f9a9fb..b7ab7d1 100644 --- a/front/src/main/java/com/hcy/front/service/impl/UserServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/impl/UserServiceImpl.java @@ -122,6 +122,10 @@ public class UserServiceImpl extends ServiceImpl implements IU vo.setProvince(regionMap.get(vo.getProvinceId())); vo.setCity(regionMap.get(vo.getCityId())); vo.setDistrict(regionMap.get(vo.getDistrictId())); + + //是否学徒 isApprentice; //是否学徒:0=否 1=是 + vo.setIsApprentice(authAdmin.getIsApprentice()); + //设置客户id ClientContacts clientContacts = clientContactsMapper.selectOne(new LambdaQueryWrapper() .eq(ClientContacts::getIsDelete, GlobalConstant.NOT_DELETE) diff --git a/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java b/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java index 660b07a..463484e 100644 --- a/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java +++ b/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java @@ -99,7 +99,7 @@ public interface IMaintenanceOrderService { void oldModuleRepair(MaintenanceOrderParam maintenanceOrderParam); /** - * 旧模块返修 + * 确认收货 * @param maintenanceOrderParam 参数 */ void confirmReceipt(MaintenanceOrderParam maintenanceOrderParam); diff --git a/front/src/main/java/com/hcy/front/service/order/IRepairOrderService.java b/front/src/main/java/com/hcy/front/service/order/IRepairOrderService.java index d297e6e..7774e52 100644 --- a/front/src/main/java/com/hcy/front/service/order/IRepairOrderService.java +++ b/front/src/main/java/com/hcy/front/service/order/IRepairOrderService.java @@ -4,7 +4,6 @@ package com.hcy.front.service.order; import com.hcy.common.core.PageResult; import com.hcy.front.validate.PageParam; import com.hcy.front.validate.order.RepairOrderParam; -import com.hcy.front.vo.order.MaintenanceOrderListVo; import com.hcy.front.vo.order.OrderStatusCountVo; import com.hcy.front.vo.order.RepairOrderDetailVo; import com.hcy.front.vo.order.RepairOrderListVo; @@ -30,7 +29,6 @@ public interface IRepairOrderService { * 维修订单详情 * * @author hcy - * @param repairOrderParam * @return RepairOrder */ RepairOrderDetailVo detail(RepairOrderParam repairOrderParam); @@ -45,98 +43,82 @@ public interface IRepairOrderService { /** * 抢单 - * @param repairOrderParam */ void grabTheOrder(RepairOrderParam repairOrderParam); /** * 接单 - * @param repairOrderParam */ void receivingOrder(RepairOrderParam repairOrderParam); - /** - * 扫一扫 - * @param repairOrderParam - */ - void sweep(RepairOrderParam repairOrderParam); /** * 故障检测 - * @param repairOrderParam */ void faultDetect(RepairOrderParam repairOrderParam); /** * 工单池 - * @param repairOrderParam - * @return */ List list(RepairOrderParam repairOrderParam); /** * 统计工单状态数量 - * @return */ OrderStatusCountVo orderStatusCount(RepairOrderParam repairOrderParam); /** * 确认服务报价 - * @param repairOrderParam */ void confirmServiceOfferPrice(RepairOrderParam repairOrderParam); /** * 确认报废 - * @param repairOrderParam */ void confirmedScrap(RepairOrderParam repairOrderParam); /** * 填写报废单 - * @param repairOrderParam */ void scrapForm(RepairOrderParam repairOrderParam); /** * 填写回单 - * @param repairOrderParam */ void fillInReceipt(RepairOrderParam repairOrderParam); /** * 备件领用申请 - * @param repairOrderParam */ void sparePartsRequisition(RepairOrderParam repairOrderParam); /** * 确认收货 - * @param repairOrderParam */ void confirmReceipt(RepairOrderParam repairOrderParam); + /** + * 扫一扫 + */ + void sweep(RepairOrderParam repairOrderParam); + /** * 拆机 - * @param repairOrderParam */ void dismantle(RepairOrderParam repairOrderParam); /** * 申请改派维修单 - * @param repairOrderParam */ void applyForReassignment(RepairOrderParam repairOrderParam); /** * 审核改派 - * @param repairOrderParam */ void auditReassignment(RepairOrderParam repairOrderParam); /** * 维修步骤 - * @param repairOrderParam */ void maintenanceProcedure(RepairOrderParam repairOrderParam); } diff --git a/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java index 85db76e..48192c9 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java @@ -22,9 +22,7 @@ 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; +import com.hcy.common.enums.order.*; import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.address.UserAddressMapper; import com.hcy.common.mapper.client.ClientContactsMapper; @@ -183,14 +181,14 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){ if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) && - item.getEquipmentCityId().equals(systemAuthAdmin.getCityId()) && - item.getEquipmentDistrictId().equals(systemAuthAdmin.getDistrictId()) ){ + item.getEquipmentCityId().equals(systemAuthAdmin.getCityId()) && + item.getEquipmentDistrictId().equals(systemAuthAdmin.getDistrictId()) ){ - // 计算距离 - MaintenanceOrderListVo vo = new MaintenanceOrderListVo(); - BeanUtils.copyProperties(item, vo); - vo.setDistance(distance); - returnData.add(vo); + // 计算距离 + MaintenanceOrderListVo vo = new MaintenanceOrderListVo(); + BeanUtils.copyProperties(item, vo); + vo.setDistance(distance); + returnData.add(vo); } }else{ if(item.getOrderDistance().compareTo(BigDecimal.valueOf((distance / 1000))) >= 0){ @@ -397,6 +395,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { if(maintenanceOrder.getRepairWorkOrderFlow() == OrderStateEnum.WORK_ORDER_TANK.getStatus()){ maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAITING_LIST.getStatus()); maintenanceOrder.setReceiverId(null); + maintenanceOrder.setReceiverTime(null); }else{ maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHARGEBACK.getStatus()); } @@ -457,7 +456,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setCreatorName(systemAuthAdmin.getNickname()); } }*/ - + //设置创建人姓名 User userName = userMapper.selectOne(new LambdaQueryWrapper() .eq(User::getId, maintenanceOrder.getCreatorId())); if(userName != null){ @@ -531,6 +530,15 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setSparePartStockAudit(sparePartStockAuditDetailVo); } + //全包工单报价为0,半包正常显示 actualAmount; // 实际金额 clientType; // 桩点维修类型 0-全包 1-半包 + Client clientType = clientMapper.findClientById(vo.getClientId()); + if(clientType != null){ + if(clientType.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus()){ + vo.setTotalAmount(BigDecimal.valueOf(0)); + vo.setActualAmount(BigDecimal.valueOf(0)); + } + } + return vo; } @@ -590,22 +598,22 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { orderSparePartMapper.deleteById(orderSparePart); } - for (SparePartParam item : maintenanceOrderParam.getSparePartParams()) { + for (OrderSparePartVo item : maintenanceOrderParam.getSparePartParams()) { SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); OrderSparePart orderSparePart = new OrderSparePart(); BeanUtils.copyProperties(sparePart, orderSparePart); orderSparePart.setId(null); - orderSparePart.setMaintenanceOrderId(maintenanceOrder.getId()); - orderSparePart.setSparePartsId(item.getId()); - orderSparePart.setWarehouseId(sparePart.getWarehouseId()); - orderSparePart.setQuantity(item.getQuantity()); + orderSparePart.setMaintenanceOrderId(maintenanceOrder.getId()); //检修单id + orderSparePart.setSparePartsId(item.getId()); // 备件id + orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id + orderSparePart.setCount(item.getCount()); // 出入库数量 //设置订单实际价格 BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPointMaintainDivisor()); orderSparePart.setUnitPrice(practicalPrice); - BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity())); + BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getCount())); actualAmount = actualAmount.add(totalPrice); orderSparePart.setTotalPrice(totalPrice); @@ -687,9 +695,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { for (OrderSparePart item : orderSpareParts) { //获取备件信息 SparePart sparePart = sparePartMapper.findSparePartById(item.getSparePartsId()); - if(sparePart.getQuantity() >= item.getQuantity()){ + if(sparePart.getQuantity() >= item.getCount()){ //扣除对应的数量 - sparePart.setQuantity(sparePart.getQuantity() - item.getQuantity()); + sparePart.setQuantity(sparePart.getQuantity() - item.getCount()); sparePartMapper.updateById(sparePart); }else{ throw new OperateException("仓库中【" + sparePart.getSparePartsName() + "】备件数量不足" + item.getQuantity() + sparePart.getUnit() + ",配件领用失败"); @@ -705,21 +713,24 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE_TYPE.getStatus() ,"【"+FrontThreadLocal.get("username")+"】创建了【配件领用】单。选择仓库:自身仓库。"); //我的仓库也要新增配件领用记录 并且状态是已完成 - /*SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); - sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); - sparePartStockAuditMapper.insert(sparePartStockAudit);*/ + SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); + /*sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus());*/ + sparePartStockAudit.setReceiveStatus(AuditStateEnum.FINISHED.getStatus()); + sparePartStockAuditMapper.insert(sparePartStockAudit); }else{ SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(maintenanceOrder.getId() ,SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()); if(resultSps != null){ //已有领取记录但被拒绝则重新审核 - resultSps.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + /*resultSps.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus());*/ + resultSps.setReceiveStatus(AuditStateEnum.UNREVIEWED.getStatus()); resultSps.setCreateTime(new Date()); sparePartStockAuditMapper.updateById(resultSps); }else{ //没领过配件则创建新的领用单 SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); - sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + /*sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus());*/ + sparePartStockAudit.setReceiveStatus(AuditStateEnum.UNREVIEWED.getStatus()); sparePartStockAuditMapper.insert(sparePartStockAudit); //新增检修单操作记录 @@ -729,6 +740,8 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { ,"【"+FrontThreadLocal.get("username")+"】创建了配件领用申请单。"); } } + + } /** @@ -772,9 +785,10 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { Assert.notNull(maintenanceOrderParam.getFamiliarFaultId(), "结论类型不可为空"); Assert.notNull(maintenanceOrderParam.getFamiliarFaultDescription(), "结论描述不可为空"); - //只有维修中和填写回单状态才可以填写回单 - if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus() && - maintenanceOrder.getIsConfirmReceipt() == MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()){ + //只有维修中和填写回单状态才可以填写回单 检测中的工单也支持填写回单 + if((maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus() && + maintenanceOrder.getIsConfirmReceipt() == MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()) || + maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.CHECKING.getStatus()){ maintenanceOrder.setFamiliarFaultId(maintenanceOrderParam.getFamiliarFaultId()); maintenanceOrder.setFamiliarFaultDescription(maintenanceOrderParam.getFamiliarFaultDescription()); @@ -862,13 +876,13 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(maintenanceOrder.getId() ,SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()); if(resultSps != null){ - if(resultSps.getPurchaseStatus() == AuditStateEnum.WAIT_FOR_RECEIVING.getStatus()){ + if(resultSps.getReceiveStatus() == AuditStateEnum.TO_BE_CONFIRMED.getStatus()){ //确认收货后可进行填写回单操作 maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); maintenanceOrderMapper.updateById(maintenanceOrder); //将对应的配件领用订单改成已完成 - resultSps.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); + resultSps.setReceiveStatus(AuditStateEnum.FINISHED.getStatus());// 已完成 sparePartStockAuditMapper.updateById(resultSps); //新增检修单操作记录 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 fc7d124..81bcffa 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 @@ -207,32 +207,64 @@ public class RepairOrderServiceImpl implements IRepairOrderService { RepairOrderDto repairOrderDto = new RepairOrderDto(); BeanUtils.copyProperties(repairOrderParam,repairOrderDto); - if(repairOrderParam.getIsClient() == MaintenanceOrderStatusEnum.REPAIRER.getStatus()){ + if(repairOrderParam.getIsClient() == RepairOrderStatusEnum.REPAIRER.getStatus()){ repairOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue()); //接单人 + }else if(repairOrderParam.getIsClient() == RepairOrderStatusEnum.CLIENT.getStatus()){ + repairOrderDto.setClientId(repairOrderDto.getClientId()); // 根据客户id进行查询 + } else if (repairOrderParam.getIsClient() == RepairOrderStatusEnum.MAINTENANCE_SUPERVISOR.getStatus()) { + repairOrderDto.setCreatorId(FrontThreadLocal.getUserId().longValue()); // 创建人id,只查维修主管自己创建的单 }else{ - repairOrderDto.setClientId(repairOrderDto.getClientId()); // 客户id + throw new OperateException("isClient不可为空!"); } // 待接单数量 - Integer pendingOrderCount = orderStatusCount(RepairOrderStatusEnum.PENDING_ORDER.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer pendingOrderCount = orderStatusCount( + RepairOrderStatusEnum.PENDING_ORDER.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); // 待维修数量 - Integer waitingRepairCount = orderStatusCount(RepairOrderStatusEnum.AWAITING_REPAIR.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer waitingRepairCount = orderStatusCount( + RepairOrderStatusEnum.AWAITING_REPAIR.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); // 排查中数量 - Integer underInvestigationCount = orderStatusCount(RepairOrderStatusEnum.UNDER_INVESTIGATION.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer underInvestigationCount = orderStatusCount( + RepairOrderStatusEnum.UNDER_INVESTIGATION.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); // 待确认数量 - Integer toBeConfirmedCount = orderStatusCount(RepairOrderStatusEnum.TO_BE_CONFIRMED.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer toBeConfirmedCount = orderStatusCount( + RepairOrderStatusEnum.TO_BE_CONFIRMED.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); // 维修中数量 - Integer inMaintenanceCount = orderStatusCount(RepairOrderStatusEnum.IN_MAINTENANCE.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer inMaintenanceCount = orderStatusCount( + RepairOrderStatusEnum.IN_MAINTENANCE.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); // 测试中数量 - Integer testInProcessCount = orderStatusCount(RepairOrderStatusEnum.TEST_IN_PROCESS.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer testInProcessCount = orderStatusCount( + RepairOrderStatusEnum.TEST_IN_PROCESS.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); // 已完成数量 - Integer completedCount = orderStatusCount(RepairOrderStatusEnum.FINISHED.getStatus(),repairOrderDto.getClientId(),repairOrderDto.getReceiverId()); + Integer completedCount = orderStatusCount( + RepairOrderStatusEnum.FINISHED.getStatus(), + repairOrderDto.getClientId(), + repairOrderDto.getReceiverId(), + repairOrderDto.getCreatorId()); OrderStatusCountVo orderStatusCountVo = new OrderStatusCountVo(); orderStatusCountVo.setPendingOrderCount(pendingOrderCount); @@ -252,13 +284,14 @@ public class RepairOrderServiceImpl implements IRepairOrderService { * @param receiverId * @return */ - public Integer orderStatusCount(Integer orderStatus,Long clientId,Long receiverId){ + public Integer orderStatusCount(Integer orderStatus,Long clientId,Long receiverId,Long creatorId){ Integer count = repairOrderMapper.selectCount( new LambdaQueryWrapper() .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) .eq(RepairOrder:: getOrderStatus, orderStatus) .eq(clientId != null, RepairOrder::getClientId, clientId) - .eq(receiverId != null, RepairOrder::getReceiverId, receiverId)); + .eq(receiverId != null, RepairOrder::getReceiverId, receiverId) + .eq(creatorId != null, RepairOrder::getCreatorId, creatorId)); return count; } @@ -549,6 +582,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { vo.setClientName(clientName.getClientName()); vo.setDirector(clientName.getDirector()); vo.setPhone(clientName.getPhone()); + vo.setMaintainType(clientName.getMaintainType()); } //创建人名称 @@ -615,6 +649,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService { Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper() .eq(Warehouse::getId, item.getWarehouseId())); orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName()); + + //配件库存数量 + SparePart sparePart = sparePartMapper.selectOne(new LambdaQueryWrapper() + .eq(SparePart::getId, item.getSparePartsId())); + orderSparePartListVo.setQuantity(sparePart.getQuantity()); orderSparePartListVos.add(orderSparePartListVo); } vo.setSparePartList(orderSparePartListVos); @@ -650,11 +689,21 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(user1 != null){ repairOrderStepDataVo.setCreatorName(user1.getUsername()); } + //当前维修员是否是学徒 返回角色 + SystemAuthAdmin isApprentice = systemAuthAdminMapper.selectOne( + new QueryWrapper() + .eq("user_id", repairOrderStepDataVo.getCreatorId())); + if(isApprentice != null){ + repairOrderStepDataVo.setIsApprentice(isApprentice.getIsApprentice()); + repairOrderStepDataVo.setRole(isApprentice.getRole()); + } stepDataVoList.add(repairOrderStepDataVo); } vo.setRepairOrderStepDataList(stepDataVoList); } + + return vo; } @@ -677,6 +726,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService { model.setModuleCode(repairOrderParam.getModuleCode()); // 模块代码 model.setPriority(repairOrderParam.getPriority()); // 优先级 + Integer count = repairOrderMapper.selectCount(new LambdaQueryWrapper() + .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(RepairOrder::getModuleCode, repairOrderParam.getModuleCode())); + if(count > 0){ + throw new OperateException("模块代码不可重复!"); + } + // 获取当前的用户 model.setCreatorId(FrontThreadLocal.getUserId().longValue()); // 创建人id Date currentTime = new Date(); @@ -770,6 +826,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(repairOrder.getRepairNextStep() == null){ repairOrder.setRepairNextStep(RepairOrderStopEnum.DISMANTLE.getStatus()); // 下个步骤 } + repairOrder.setUpdateTime(new Date()); // 更新时间 repairOrderMapper.updateById(repairOrder); //新增维修单操作记录 @@ -805,6 +862,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setCancelCause(repairOrderParam.getCancelCause()); // 申请改派原因 repairOrder.setIsReassignment(RepairOrderStatusEnum.YES.getStatus());// 是否在改派中(0=是,1=否) repairOrder.setReassignmentAgreeOrNot(null); // 再次申请改派时,reassignmentAgreeOrNot字段设为null + repairOrder.setUpdateTime(new Date()); // 更新时间 repairOrderMapper.updateById(repairOrder); //新增维修单操作记录 @@ -845,6 +903,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { } //审核改派时,不管同不同意,都把isReassignment字段设置回null repairOrder.setIsReassignment(null); + repairOrder.setUpdateTime(new Date()); // 更新时间 repairOrderMapper.updateById(repairOrder); //新增维修单操作记录 @@ -872,6 +931,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(repairOrderParam.getRepairStep() == RepairOrderStopEnum.DISMANTLE.getStatus()){ repairOrder.setRepairStep(repairOrderParam.getRepairStep());// 当前步骤 repairOrder.setRepairNextStep(RepairOrderStopEnum.RINSE.getStatus()); // 下个步骤 + repairOrder.setUpdateTime(new Date()); // 更新时间 //批量添加配件编码 List orderPartCodeList = repairOrderParam.getOrderPartCodeList(); @@ -912,6 +972,22 @@ public class RepairOrderServiceImpl implements IRepairOrderService { throw new OperateException("当前步骤不可为空!"); } repairOrder.setRepairStep(repairOrderParam.getRepairStep());// 当前步骤 + repairOrder.setUpdateTime(new Date()); // 更新时间 + + SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( + new QueryWrapper() + .eq("user_id", FrontThreadLocal.getUserId().longValue())); + //判断当前维修员是否是学徒,学徒不可操作以下步骤:配件领用、确认签名、上传维修前中后照片 + if(authAdmin.getIsApprentice() == StatusEnum.YES.getCode()){ + if(repairOrderParam.getRepairStep() == RepairOrderStopEnum.TROUBLESHOOTING.getStatus() + || repairOrderParam.getRepairStep() == RepairOrderStopEnum.CONFIRMATION_SIGNATURE.getStatus() + || repairOrderParam.getRepairStep() == RepairOrderStopEnum.RECOLLAR_FITTING.getStatus() + || repairOrderParam.getRepairStep() == RepairOrderStopEnum.PRE_MAINTENANCE_IMG.getStatus() + || repairOrderParam.getRepairStep() == RepairOrderStopEnum.IN_MAINTENANCE_IMG.getStatus() + || repairOrderParam.getRepairStep() == RepairOrderStopEnum.AFTER_REPAIR_IMG.getStatus()){ + throw new OperateException("学徒不可操作当前步骤!"); + } + } //查看当前步骤是否有记录 RepairOrderStepData repairOrderStepData1 = repairOrderStepDataMapper.selectOne( @@ -925,7 +1001,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrder.setOrderStatus(RepairOrderStatusEnum.UNDER_INVESTIGATION.getStatus()); //清洗完工单状态变为排查中 }else if(repairOrderParam.getRepairStep() == RepairOrderStopEnum.TROUBLESHOOTING.getStatus()){ //故障排查 - repairOrder.setRepairStep(repairOrderParam.getRepairStep());// 当前步骤 repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot());// 是否报废(0=是,1=否) //判断是否报废 if(repairOrderParam.getScrapOrNot() == RepairOrderStatusEnum.YES.getStatus()){ @@ -975,7 +1050,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { //故障排查完,如果有申请配件,变成待确认 repairOrder.setOrderStatus(RepairOrderStatusEnum.TO_BE_CONFIRMED.getStatus()); - for (SparePartParam item : repairOrderParam.getSparePartParams()) { + for (OrderSparePartVo item : repairOrderParam.getSparePartParams()) { SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); Assert.notNull(sparePart, "配件数据不存在"); @@ -986,7 +1061,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id orderSparePart.setSparePartsId(item.getId()); // 备件id orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id - orderSparePart.setQuantity(item.getQuantity()); // 数量 + orderSparePart.setCount(item.getCount()); // 出入库数量 orderSparePartMapper.insert(orderSparePart); } @@ -1074,7 +1149,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { //故障排查完,如果有申请配件,变成待确认 repairOrder.setOrderStatus(RepairOrderStatusEnum.TO_BE_CONFIRMED.getStatus()); - for (SparePartParam item : repairOrderParam.getSparePartParams()) { + for (OrderSparePartVo item : repairOrderParam.getSparePartParams()) { SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); Assert.notNull(sparePart, "配件数据不存在"); @@ -1085,7 +1160,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id orderSparePart.setSparePartsId(item.getId()); // 备件id orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id - orderSparePart.setQuantity(item.getQuantity()); // 数量 + orderSparePart.setCount(item.getCount()); // 出入库数量 orderSparePartMapper.insert(orderSparePart); } @@ -1200,6 +1275,14 @@ public class RepairOrderServiceImpl implements IRepairOrderService { }else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()) { // 功能测试 // 更新不更新步骤 + repairOrder.setFunctionalTestPassed(repairOrderParam.getFunctionalTestPassed()); // 功能测试是否通过(0=是,1=否) + if(repairOrderParam.getFunctionalTestPassed() == RepairOrderStatusEnum.YES.getStatus()){ + repairOrder.setRepairNextStep(RepairOrderStopEnum.AGING_TEST.getStatus()); // 下个步骤 + }else{ + repairOrder.setRepairNextStep(RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()); // 下个步骤 + } + repairOrderMapper.updateById(repairOrder); // 更新维修单 + if(repairOrderStepData1 != null){ //维修单步骤数据 repairOrderStepDataMapper.updateById(new RepairOrderStepData( @@ -1213,14 +1296,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { FrontThreadLocal.getUserId().longValue(), new Date())); }else{ - repairOrder.setRepairStep(repairOrderParam.getRepairStep());// 当前步骤 - repairOrder.setFunctionalTestPassed(repairOrderParam.getFunctionalTestPassed()); // 功能测试是否通过(0=是,1=否) - if(repairOrderParam.getFunctionalTestPassed() == RepairOrderStatusEnum.YES.getStatus()){ - repairOrder.setRepairNextStep(RepairOrderStopEnum.AGING_TEST.getStatus()); // 下个步骤 - }else{ - repairOrder.setRepairNextStep(RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()); // 下个步骤 - } - repairOrderMapper.updateById(repairOrder); // 更新维修单 //维修单步骤数据 repairOrderStepDataMapper.insert(new RepairOrderStepData(repairOrderParam.getId(), repairOrder.getRepairStep(), @@ -1230,10 +1305,19 @@ public class RepairOrderServiceImpl implements IRepairOrderService { repairOrderParam.getFunctionalTestPassed(), FrontThreadLocal.getUserId().longValue())); } + return; }else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.AGING_TEST.getStatus()) { // 老化测试 // 更新不更新步骤 + repairOrder.setAgingTestPassed(repairOrderParam.getAgingTestPassed()); // 老化测试是否通过(0=是,1=否) + if(repairOrderParam.getAgingTestPassed() == RepairOrderStatusEnum.YES.getStatus()){ + repairOrder.setRepairNextStep(RepairOrderStopEnum.PACKAGE_AND_SHIP.getStatus()); // 下个步骤 + }else{ + repairOrder.setRepairNextStep(RepairOrderStopEnum.AGING_TEST.getStatus()); // 下个步骤 + } + repairOrderMapper.updateById(repairOrder); // 更新维修单 + if(repairOrderStepData1 != null){ //维修单步骤数据 repairOrderStepDataMapper.updateById(new RepairOrderStepData( @@ -1247,14 +1331,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService { FrontThreadLocal.getUserId().longValue(), new Date())); }else{ - repairOrder.setRepairStep(repairOrderParam.getRepairStep());// 当前步骤 - repairOrder.setAgingTestPassed(repairOrderParam.getAgingTestPassed()); // 老化测试是否通过(0=是,1=否) - if(repairOrderParam.getAgingTestPassed() == RepairOrderStatusEnum.YES.getStatus()){ - repairOrder.setRepairNextStep(RepairOrderStopEnum.PACKAGE_AND_SHIP.getStatus()); // 下个步骤 - }else{ - repairOrder.setRepairNextStep(RepairOrderStopEnum.AGING_TEST.getStatus()); // 下个步骤 - } - repairOrderMapper.updateById(repairOrder); // 更新维修单 //维修单步骤数据 repairOrderStepDataMapper.insert(new RepairOrderStepData(repairOrderParam.getId(), repairOrder.getRepairStep(), @@ -1449,7 +1525,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { //确认报废不用填配件数据 if(repairOrderParam.getScrapOrNot() == RepairOrderStatusEnum.NO.getStatus()){ - for (SparePartParam item : repairOrderParam.getSparePartParams()) { + for (OrderSparePartVo item : repairOrderParam.getSparePartParams()) { SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); Assert.notNull(sparePart, "配件数据不存在"); @@ -1460,7 +1536,8 @@ public class RepairOrderServiceImpl implements IRepairOrderService { orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id orderSparePart.setSparePartsId(item.getId()); // 备件id orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id - orderSparePart.setQuantity(item.getQuantity()); // 数量 + orderSparePart.setQuantity(item.getQuantity()); // 库存数量 + orderSparePart.setCount(item.getCount()); // 出入库数量 //设置订单实际价格 = 单价 * 配件维修价格因子 BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPartMaintainDivisor()); 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 c9bab6f..4814237 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 @@ -292,6 +292,11 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde maintenanceOrder.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单 maintenanceOrderMapper.insert(maintenanceOrder); + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + , OrderOperateRecordEnum.NEW_CREATE.getDesc() + ,"检修员【"+FrontThreadLocal.get("username")+"】创建了检修工单"); + //新增巡检单操作记录 orderOperateRecordService.addRoutingInspectionOrder(model.getId() , OrderOperateRecordEnum.FAULT_DETECT.getDesc() diff --git a/front/src/main/java/com/hcy/front/service/warehouse/impl/SparePartServiceImpl.java b/front/src/main/java/com/hcy/front/service/warehouse/impl/SparePartServiceImpl.java index 8978c2d..f7a438f 100644 --- a/front/src/main/java/com/hcy/front/service/warehouse/impl/SparePartServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/warehouse/impl/SparePartServiceImpl.java @@ -12,8 +12,11 @@ import com.hcy.common.entity.client.ClientContacts; import com.hcy.common.entity.sparePart.SparePart; import com.hcy.common.entity.user.User; import com.hcy.common.entity.warehouse.Warehouse; +import com.hcy.common.enums.ClientStatusEnum; +import com.hcy.common.enums.OrderStatusEnum; import com.hcy.common.enums.SparePartStockAuditEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; +import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.client.ClientContactsMapper; import com.hcy.common.mapper.client.ClientMapper; @@ -79,18 +82,27 @@ public class SparePartServiceImpl implements ISparePartService { //判断仓库类型 User user = userMapper.selectById(FrontThreadLocal.getUserId().longValue()); + if(param.getWarehouseType() == MaintenanceOrderStatusEnum.MY_WAREHOUSE.getStatus()){ sparePartDto.setWarehouseIds(user.getWarehouseId().toString()); - }else{ + }else if(param.getWarehouseType() == MaintenanceOrderStatusEnum.PUBLIC_WAREHOUSE.getStatus() && + param.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ List warehouseList = warehouseMapper.findPublicWarehouseList(user.getWarehouseId()); String warehouseIds = warehouseList.stream().map(Warehouse::getId).map(String::valueOf).collect(Collectors.joining(",")); sparePartDto.setWarehouseIds(warehouseIds); + }else if(param.getWarehouseType() == MaintenanceOrderStatusEnum.PUBLIC_WAREHOUSE.getStatus() && + param.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()){ + //维修员只查公共仓库 + List warehouseList = warehouseMapper.findPublicWarehouseList(); + String warehouseIds = warehouseList.stream().map(Warehouse::getId).map(String::valueOf).collect(Collectors.joining(",")); + sparePartDto.setWarehouseIds(warehouseIds); } Client client = clientMapper.findClientById(param.getClientId()); Map warehouseMap = new HashMap<>(); List sparePartList = new ArrayList<>(); + IPage iPage = sparePartMapper.pageList(new Page<>(page, limit),sparePartDto); for (SparePartDto item : iPage.getRecords()) { SparePartListVo sparePartListVo = new SparePartListVo(); @@ -105,10 +117,18 @@ public class SparePartServiceImpl implements ISparePartService { } sparePartListVo.setUnitPrice(practicalPrice); + //如果该工单是全包工单,实际价格为0,半包正常显示 clientType; // 桩点维修类型 0-全包 1-半包 + if(client.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus() && + param.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ + sparePartListVo.setUnitPrice(BigDecimal.valueOf(0)); + } + if(warehouseMap.get(item.getWarehouseId()) == null){ Warehouse warehouse = warehouseMapper.findWarehouseById(item.getWarehouseId()); - sparePartListVo.setWarehouseName(warehouse.getWarehouseName()); - warehouseMap.put(warehouse.getId(),warehouse.getWarehouseName()); + if(warehouse != null){ + sparePartListVo.setWarehouseName(warehouse.getWarehouseName()); + warehouseMap.put(warehouse.getId(),warehouse.getWarehouseName()); + } }else{ sparePartListVo.setWarehouseName(warehouseMap.get(item.getWarehouseId())); } diff --git a/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java b/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java index 6dc8850..9f1860c 100644 --- a/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java +++ b/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java @@ -1,6 +1,7 @@ package com.hcy.front.validate.order; import com.hcy.front.validate.warehouse.SparePartParam; +import com.hcy.front.vo.order.OrderSparePartVo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -105,7 +106,7 @@ public class MaintenanceOrderParam implements Serializable { private String orderStatusIds; //订单状态ids //服务报价列表 - private List sparePartParams; + private List sparePartParams; private Integer isClient; //是否客户 0-客户端 1-检修员端 private Integer isMaintain; //是否维修 0-维修 1-不维修 private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 diff --git a/front/src/main/java/com/hcy/front/validate/order/RepairOrderParam.java b/front/src/main/java/com/hcy/front/validate/order/RepairOrderParam.java index b4d7cb4..d020f2c 100644 --- a/front/src/main/java/com/hcy/front/validate/order/RepairOrderParam.java +++ b/front/src/main/java/com/hcy/front/validate/order/RepairOrderParam.java @@ -1,7 +1,9 @@ package com.hcy.front.validate.order; +import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.entity.order.OrderPartCode; import com.hcy.front.validate.warehouse.SparePartParam; +import com.hcy.front.vo.order.OrderSparePartVo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -96,7 +98,7 @@ public class RepairOrderParam implements Serializable { private String cancelCause; // 改派原因 //配件领用列表 - private List sparePartParams; + private List sparePartParams; //配件领用列表 private Integer isClient; //是否客户 0-客户端 1-维修员端 2-维修主管端 private Integer isMaintain; //是否维修 0-维修 1-不维修 diff --git a/front/src/main/java/com/hcy/front/validate/warehouse/SparePartParam.java b/front/src/main/java/com/hcy/front/validate/warehouse/SparePartParam.java index 749d768..fe56d97 100644 --- a/front/src/main/java/com/hcy/front/validate/warehouse/SparePartParam.java +++ b/front/src/main/java/com/hcy/front/validate/warehouse/SparePartParam.java @@ -49,7 +49,7 @@ public class SparePartParam implements Serializable { @Length(max = 11, message = "unit参数不能超出11个字符", groups = {create.class, update.class}) private String unit; - private Integer quantity; + private Integer quantity; // 库存数量 private BigDecimal unitPrice; @@ -59,4 +59,5 @@ public class SparePartParam implements Serializable { private Long clientId; //客户id private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 private Integer orderType; //订单类型 0-检修单 1-维修单 + private Integer count; // 出入库数量 } diff --git a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartDetailVo.java b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartDetailVo.java index 1a1f7fd..ad030aa 100644 --- a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartDetailVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartDetailVo.java @@ -21,7 +21,8 @@ public class OrderSparePartDetailVo implements Serializable { private String specificationsModel; // 规格型号 private String unit; // 单位 private BigDecimal price; // 价格 - private Long quantity; // 数量 + private Long quantity; // 库存数量 + private Integer count; // 出入库数量 private BigDecimal totalPrice; // 总价 } diff --git a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java index 95555aa..bb936ed 100644 --- a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java @@ -24,7 +24,8 @@ public class OrderSparePartListVo implements Serializable { private String specificationsModel; // 规格型号 private String unit; // 单位 private BigDecimal unitPrice; // 价格 - private Integer quantity; // 数量 + private Integer quantity; // 库存数量 + private Integer count; // 出入库数量 private BigDecimal totalPrice; // 总价 } diff --git a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartVo.java b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartVo.java new file mode 100644 index 0000000..bdae7cb --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartVo.java @@ -0,0 +1,31 @@ +package com.hcy.front.vo.order; + + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 备件信息参数 + */ +@Data +public class OrderSparePartVo implements Serializable { + + + private Long id; + private String sparePartsCode; // 备件编码 + private String sparePartsName; // 备件名称 + private Long warehouseId; // 所属仓库id + private String specificationsModel; // 规格型号 + private String unit;// 单位 + private Integer quantity; // 库存数量 + private Integer count; // 出入库数量 + private BigDecimal unitPrice; // 价格 + private List ids; //批量删除 + private String keywords; //关键字 + private Long clientId; //客户id + private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 + private Integer orderType; //订单类型 0-检修单 1-维修单 +} diff --git a/front/src/main/java/com/hcy/front/vo/order/RepairOrderDetailVo.java b/front/src/main/java/com/hcy/front/vo/order/RepairOrderDetailVo.java index d8c152a..ae1c91f 100644 --- a/front/src/main/java/com/hcy/front/vo/order/RepairOrderDetailVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/RepairOrderDetailVo.java @@ -109,4 +109,7 @@ public class RepairOrderDetailVo implements Serializable { private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private List orderPartCodeList; // 配件编码列表 private List repairOrderStepDataList; // 维修单步骤数据列表 + private Integer timeoutOrNot; // 是否超时(0=是,1=否) + private Integer maintainType; // 模块维修类型 0-全包 1-半包 + } diff --git a/front/src/main/java/com/hcy/front/vo/order/RepairOrderListVo.java b/front/src/main/java/com/hcy/front/vo/order/RepairOrderListVo.java index 3f89f62..71675d9 100644 --- a/front/src/main/java/com/hcy/front/vo/order/RepairOrderListVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/RepairOrderListVo.java @@ -88,5 +88,6 @@ public class RepairOrderListVo implements Serializable { private Integer repairStep; // 当前步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private Integer repairNextStep; // 下个步骤(0=拆机,1=清洗,2=故障排查,3=确认签名,4=重领配件,5=上传维修前图片,6=上传维修中图片,7=上传维修后图片,8=补强三防漆,9=补强点胶,10=DC&PFC组装,11=补强三防漆和点胶,12=模块装配,13=功能测试,14=老化测试,15=包装出货,16=填写回单) private List orderPartCodeList; // 配件编码列表 + private Integer timeoutOrNot; // 是否超时(0=是,1=否) } diff --git a/front/src/main/java/com/hcy/front/vo/order/RepairOrderStepDataVo.java b/front/src/main/java/com/hcy/front/vo/order/RepairOrderStepDataVo.java index a5d0f58..6df4206 100644 --- a/front/src/main/java/com/hcy/front/vo/order/RepairOrderStepDataVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/RepairOrderStepDataVo.java @@ -18,4 +18,7 @@ public class RepairOrderStepDataVo implements Serializable { private Long creatorId; // 创建人id private Date createTime; // 创建时间 private String creatorName; // 创建人名称 + private Integer isApprentice; //是否学徒:0=否 1=是 + private String role; // 角色主键 + } diff --git a/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java b/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java index b91a13a..3062200 100644 --- a/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java +++ b/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java @@ -34,5 +34,5 @@ public class UserCenterVo implements Serializable { private Long warehouseId; // 仓库id private String clientName; // 客户名称 private String plantName; // 管辖工厂名称 - + private Integer isApprentice; //是否学徒:0=否 1=是 }