diff --git a/admin/src/main/java/com/hcy/admin/service/client/impl/ClientContactsServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/client/impl/ClientContactsServiceImpl.java index 6d3aac7..3823d9b 100644 --- a/admin/src/main/java/com/hcy/admin/service/client/impl/ClientContactsServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/client/impl/ClientContactsServiceImpl.java @@ -293,9 +293,9 @@ public class ClientContactsServiceImpl implements IClientContactsService { User user = userMapper.selectById(model.getUserId()); if(user != null){ user.setIsDisable(clientContactsParam.getStatus()); + userMapper.updateById(user); } - userMapper.updateById(user); systemAuthAdminMapper.updateById(systemAuthAdmin); clientContactsMapper.updateById(model); } diff --git a/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java index 12c10ca..4da6143 100644 --- a/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java @@ -105,7 +105,9 @@ public class EquipmentServiceImpl implements IEquipmentService { BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); User insetallUser = userMapper.selectById(equipmentModel.getUserId()); - equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + if(insetallUser != null){ + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } } //设置设备模块信息 vo.setEquipmentModel(equipmentModelDetailVo); 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 new file mode 100644 index 0000000..dce10c3 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/service/crontab/impl/OrderCrontab.java @@ -0,0 +1,128 @@ +package com.hcy.admin.service.crontab.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; +import com.hcy.common.constant.GlobalConstant; +import com.hcy.common.entity.configuration.SystemConfiguration; +import com.hcy.common.entity.order.MaintenanceOrder; +import com.hcy.common.entity.order.RepairOrder; +import com.hcy.common.entity.order.RoutingInspectionOrder; +import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit; +import com.hcy.common.enums.OrderStatusEnum; +import com.hcy.common.enums.audit.AuditStateEnum; +import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; +import com.hcy.common.enums.order.OrderStateEnum; +import com.hcy.common.mapper.configuration.SystemConfigurationMapper; +import com.hcy.common.mapper.order.MaintenanceOrderMapper; +import com.hcy.common.mapper.order.RepairOrderMapper; +import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; +import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 订单定时任务 + */ +@Slf4j +@Service(value = "order") +@Transactional(rollbackFor = Exception.class) +public class OrderCrontab { + + @Resource + MaintenanceOrderMapper maintenanceOrderMapper; + + @Resource + SystemConfigurationMapper systemConfigurationMapper; + + @Resource + RoutingInspectionOrderMapper routingInspectionOrderMapper; + + @Resource + RepairOrderMapper repairOrderMapper; + + @Resource + SparePartStockAuditMapper sparePartStockAuditMapper; + + private void orderTimeOut(){ + SystemConfiguration systemConfiguration = systemConfigurationMapper.selectById(1); + //检修单和巡检单超时时间 + Integer repairerAutoOrderTime = systemConfiguration.getRepairerAutoOrderTime(); + //维修单超时时间 + Integer maintenanceAutoOrderTime = systemConfiguration.getMaintenanceAutoOrderTime(); + //获取当前时间 + Calendar currentTime = Calendar.getInstance(); + + //检修单 + LambdaQueryWrapper maintenanceOrderQw = new LambdaQueryWrapper() + .eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(MaintenanceOrder::getOrderStatus, MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); + List maintenanceOrders = maintenanceOrderMapper.selectList(maintenanceOrderQw); + for (MaintenanceOrder item : maintenanceOrders) { + Calendar orderCreateTime = Calendar.getInstance(); + orderCreateTime.setTime(item.getCreateTime()); + orderCreateTime.add(Calendar.MINUTE, repairerAutoOrderTime); + + if(currentTime.compareTo(orderCreateTime) > 0){ + item.setOrderStatus(MaintenanceOrderStatusEnum.ORDER_TIMEOUT.getStatus()); + maintenanceOrderMapper.updateById(item); + } + } + + //巡检单 + LambdaQueryWrapper routingInspectionOrderQw = new LambdaQueryWrapper() + .eq(RoutingInspectionOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(RoutingInspectionOrder::getOrderStatus, OrderStateEnum.PENDING_ORDER.getStatus()); + List routingInspectionOrders = routingInspectionOrderMapper.selectList(routingInspectionOrderQw); + for (RoutingInspectionOrder item : routingInspectionOrders) { + Calendar orderCreateTime = Calendar.getInstance(); + orderCreateTime.setTime(item.getCreateTime()); + orderCreateTime.add(Calendar.MINUTE, repairerAutoOrderTime); + + if(currentTime.compareTo(orderCreateTime) > 0){ + item.setOrderStatus(OrderStateEnum.ORDER_TIMEOUT.getStatus()); + routingInspectionOrderMapper.updateById(item); + } + } + + //维修单 + LambdaQueryWrapper repairOrderQw = new LambdaQueryWrapper() + .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(RepairOrder::getOrderStatus, OrderStateEnum.PENDING_ORDER.getStatus()); + List repairOrders = repairOrderMapper.selectList(repairOrderQw); + for (RepairOrder item : repairOrders) { + Calendar orderCreateTime = Calendar.getInstance(); + orderCreateTime.setTime(item.getCreateTime()); + orderCreateTime.add(Calendar.MINUTE, maintenanceAutoOrderTime); + + if(currentTime.compareTo(orderCreateTime) > 0){ + item.setOrderStatus(OrderStateEnum.ORDER_TIMEOUT.getStatus()); + repairOrderMapper.updateById(item); + } + } + + //配件采购收货超时 + LambdaQueryWrapper sparePartStockAuditQw = new LambdaQueryWrapper() + .eq(SparePartStockAudit::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.WAIT_FOR_RECEIVING.getStatus()); + List sparePartStockAudits = sparePartStockAuditMapper.selectList(sparePartStockAuditQw); + for (SparePartStockAudit item : sparePartStockAudits) { + Calendar orderConsignerTime = Calendar.getInstance(); + orderConsignerTime.setTime(item.getConsignerTime()); + orderConsignerTime.add(Calendar.DAY_OF_YEAR, 7); + + if(currentTime.compareTo(orderConsignerTime) > 0){ + item.setPurchaseStatus(AuditStateEnum.OVERDUE.getStatus()); + sparePartStockAuditMapper.updateById(item); + } + } + + //巡检周期 + + } +} diff --git a/admin/src/main/java/com/hcy/admin/service/crontab/impl/distributor/DistributorCrontab.java b/admin/src/main/java/com/hcy/admin/service/crontab/impl/distributor/DistributorCrontab.java deleted file mode 100644 index 2f96e16..0000000 --- a/admin/src/main/java/com/hcy/admin/service/crontab/impl/distributor/DistributorCrontab.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.hcy.admin.service.crontab.impl.distributor; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.github.binarywang.wxpay.bean.merchanttransfer.DetailsQueryResult; -import com.github.binarywang.wxpay.bean.merchanttransfer.MerchantDetailsQueryRequest; -import com.github.binarywang.wxpay.exception.WxPayException; -import com.github.binarywang.wxpay.service.MerchantTransferService; -import com.hcy.common.constant.GlobalConstant; -import com.hcy.common.entity.distribution.Distributor; -import com.hcy.common.entity.distribution.DistributorCommission; -import com.hcy.common.entity.distribution.WithdrawCommission; -import com.hcy.common.entity.staff.Staff; -import com.hcy.common.enums.PayChannelEnum; -import com.hcy.common.enums.distributor.DistributorCommissionStatusEnum; -import com.hcy.common.enums.distributor.DistributorWithdrawResultEnum; -import com.hcy.common.enums.distributor.DistributorWithdrawStatusEnum; -import com.hcy.common.mapper.distribution.DistributorCommissionMapper; -import com.hcy.common.mapper.distribution.DistributorMapper; -import com.hcy.common.mapper.common.WithdrawCommissionMapper; -import com.hcy.common.mapper.staff.StaffMapper; -import com.hcy.common.utils.TimeUtil; -import com.hcy.common.utils.WxPayServiceUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.List; - -@Slf4j -@Service(value = "distributor") -@Transactional(rollbackFor = Exception.class) -public class DistributorCrontab { - - @Resource - DistributorCommissionMapper distributorCommissionMapper; - - @Resource - DistributorMapper distributorMapper; - - @Resource - WithdrawCommissionMapper distributorWithdrawMapper; - - @Resource - StaffMapper staffMapper; - - /** - * 解冻佣金 - */ - public void unfreezingCommission(){ - log.info("解冻分销商佣金"); - //获取所有待解冻的佣金 - QueryWrapper distributorCommissionQueryWrapper = new QueryWrapper<>(); - distributorCommissionQueryWrapper.eq("is_delete", GlobalConstant.NOT_DELETE); - distributorCommissionQueryWrapper.eq("status", DistributorCommissionStatusEnum.FREEZE.getCode()); - List distributorCommissions = distributorCommissionMapper.selectList(distributorCommissionQueryWrapper); - - for (DistributorCommission item : distributorCommissions) { - QueryWrapper distributorQueryWrapper = new QueryWrapper<>(); - distributorQueryWrapper.eq("id",item.getDistributorId()); - Distributor distributor = distributorMapper.selectOne(distributorQueryWrapper); - //解冻佣金相加 - distributor.setCanWithdrawCommission(distributor.getCanWithdrawCommission().add(item.getCommission())); - distributorMapper.updateById(distributor); - //修改解冻状态为已解冻 - item.setStatus(DistributorCommissionStatusEnum.MAY_WITHDRAW.getCode()); - distributorCommissionMapper.updateById(item); - } - } - - @Transactional - public void checkDistributorWithdraw(){ - List distributorWithdraws = distributorWithdrawMapper.selectList(new LambdaQueryWrapper() - .eq(WithdrawCommission::getStatus, DistributorWithdrawStatusEnum.WITHDRAW.getStatus())); - if(distributorWithdraws.isEmpty()){ - return; - } - log.info("处理佣金提现结果"); - MerchantTransferService merchantTransferService = WxPayServiceUtils.wxPayService(PayChannelEnum.MP_CHANNEL.getCode()).getMerchantTransferService(); - for (WithdrawCommission item : distributorWithdraws) { - MerchantDetailsQueryRequest merchantDetailsQueryRequest = new MerchantDetailsQueryRequest(); - merchantDetailsQueryRequest.setOutBatchNo(item.getSn()); - merchantDetailsQueryRequest.setOutDetailNo(item.getDetailSn()); - try { - DetailsQueryResult detailsQueryResult = merchantTransferService.queryMerchantDetails(merchantDetailsQueryRequest); - if(DistributorWithdrawResultEnum.FAIL.getStatus().equals(detailsQueryResult.getDetailStatus())){ - //判断当前提现记录是分销商还师傅的 - if(item.getDistributorId() != null){ - Distributor distributor = distributorMapper.queryDistributorById(item.getDistributorId()); - distributor.setCanWithdrawCommission(distributor.getCanWithdrawCommission().add(item.getWithdrawMoney())); - distributorMapper.updateById(distributor); - }else{ - Staff staff = staffMapper.findStaffById(item.getStaffId()); - staff.setCanWithdrawCommission(staff.getCanWithdrawCommission().add(item.getWithdrawMoney())); - staffMapper.updateById(staff); - } - item.setStatus(DistributorWithdrawStatusEnum.WITHDRAW_FAIL.getStatus()); - item.setFailReason(detailsQueryResult.getFailReason()); - distributorWithdrawMapper.updateById(item); - }else{ - item.setUpdateTime(TimeUtil.parseStrToDate(detailsQueryResult.getUpdateTime())); - item.setStatus(DistributorWithdrawStatusEnum.WITHDRAW_SUCCESS.getStatus()); - distributorWithdrawMapper.updateById(item); - } - }catch (WxPayException e){ - log.info(e.getErrCodeDes()); - } - } - } -} diff --git a/admin/src/main/java/com/hcy/admin/service/crontab/impl/staff/StaffCrontab.java b/admin/src/main/java/com/hcy/admin/service/crontab/impl/staff/StaffCrontab.java deleted file mode 100644 index dad403f..0000000 --- a/admin/src/main/java/com/hcy/admin/service/crontab/impl/staff/StaffCrontab.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.hcy.admin.service.crontab.impl.staff; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.hcy.admin.service.comment.IGoodsCommentService; -import com.hcy.admin.service.log.IOrderLogService; -import com.hcy.common.constant.GlobalConstant; -import com.hcy.common.dto.OrderDto; -import com.hcy.common.entity.comment.GoodsComment; -import com.hcy.common.entity.log.OrderLog; -import com.hcy.common.entity.order.Order; -import com.hcy.common.entity.staff.Staff; -import com.hcy.common.entity.staff.StaffCommission; -import com.hcy.common.enums.*; -import com.hcy.common.enums.distributor.DistributorCommissionStatusEnum; -import com.hcy.common.enums.staff.StaffCommissionStatusEnum; -import com.hcy.common.enums.staff.StaffEnum; -import com.hcy.common.enums.staff.StaffStatusEnum; -import com.hcy.common.mapper.comment.GoodsCommentMapper; -import com.hcy.common.mapper.order.OrderMapper; -import com.hcy.common.mapper.staff.StaffCommissionMapper; -import com.hcy.common.mapper.staff.StaffMapper; -import com.hcy.common.utils.SnUtils; -import com.hcy.common.utils.TimeUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.List; -import java.util.Random; - -@Slf4j -@Service(value = "staff") -@Transactional(rollbackFor = Exception.class) -public class StaffCrontab { - - @Resource - OrderMapper orderMapper; - - @Resource - GoodsCommentMapper goodsCommentMapper; - - @Resource - StaffMapper staffMapper; - - @Resource - StaffCommissionMapper staffCommissionMapper; - - @Resource - IGoodsCommentService goodsCommentService; - - @Resource - IOrderLogService orderLogService; - - /** - * 系统自动评分和师傅计算平均分 - */ - public void systemAutoScoreAndCalculateScore(){ - log.info("系统自动评分"); - List noCommentOrder = orderMapper.getNoCommentOrder(); - for (OrderDto item : noCommentOrder) { - //新增评分 默认五星好评 - GoodsComment goodsComment = new GoodsComment(); - goodsComment.setGoodsId(item.getGoodsId()); - goodsComment.setUserId(item.getUserId()); - goodsComment.setOrderGoodsId(item.getOrderGoodsId()); - goodsComment.setStaffId(item.getStaffId()); - goodsComment.setCustomerServiceAppraise(5); - goodsComment.setCommentLevel(GoodsCommentLevelEnum.GOOD_COMMENT.getCode()); - goodsComment.setCreateTime(TimeUtil.timestamp()); - goodsCommentMapper.insert(goodsComment); - } - - log.info("计算师傅平均分"); - //计算师傅平均分 - List staffList = staffMapper.selectList(new QueryWrapper() - .eq("is_delete", GlobalConstant.NOT_DELETE)); - for (Staff staff : staffList) { - if(staff != null){ - goodsCommentService.calculateStaffScore(staff); - } - } - } - - /** - * 解冻师傅佣金 - */ - @Transactional - public void unfreezingCommission(){ - log.info("解冻师傅佣金"); - //获取所有待解冻的佣金 - QueryWrapper staffCommissionQueryWrapper = new QueryWrapper<>(); - staffCommissionQueryWrapper.eq("is_delete", GlobalConstant.NOT_DELETE); - staffCommissionQueryWrapper.eq("status", StaffCommissionStatusEnum.FREEZE.getCode()); - List staffCommissions = staffCommissionMapper.selectList(staffCommissionQueryWrapper); - - for (StaffCommission item : staffCommissions) { - QueryWrapper staffQueryWrapper = new QueryWrapper<>(); - staffQueryWrapper.eq("id",item.getStaffId()); - Staff staff = staffMapper.selectOne(staffQueryWrapper); - if(staff != null){ - //解冻佣金相加 - staff.setCanWithdrawCommission(staff.getCanWithdrawCommission().add(item.getCommission())); - staffMapper.updateById(staff); - //修改解冻状态为已解冻 - item.setStatus(DistributorCommissionStatusEnum.MAY_WITHDRAW.getCode()); - staffCommissionMapper.updateById(item); - } - } - } - - /** - * 师傅自动确认服务 - */ - public void staffAutoConfirmService(){ - List orderList = orderMapper.selectList(new LambdaQueryWrapper() - .eq(Order::getIsDelete, GlobalConstant.NOT_DELETE) - .eq(Order::getOrderStatus, OrderStatusEnum.RESERVE.getStatus())); - for (Order item : orderList) { - //当前时间大于等于服务时间就自动开始服务 - if(TimeUtil.timestamp() >= item.getAppointTimeStart()){ - item.setOrderStatus(OrderStatusEnum.SERVICING.getStatus()); - item.setVerificationStatus(OrderVerificationStatusEnum.WAIT_VERIFICATION.getStatus()); - item.setVerificationCode(SnUtils.get6RandomCode()); - item.setUpdateTime(TimeUtil.timestamp()); - orderMapper.updateById(item); - orderLogService.saveOrderLog(item.getId(), item.getStaffId(), OrderLogEnum.STAFF_AUTO_CONFIRM_ORDER.getDesc()); - } - } - } - - /** - * 自动派单 - */ - public void autoSendOrders(){ - //查询出15分钟前未指派师傅的订单 - List orderList = orderMapper.selectList(new LambdaQueryWrapper() - .eq(Order::getIsDispatch, OrderDispatchEnum.NOT_DISPATCH.getStatus()) - .eq(Order::getOrderStatus, OrderStatusEnum.RESERVE.getStatus()) - .eq(Order::getIsDelete, GlobalConstant.NOT_DELETE) - .apply("create_time <= UNIX_TIMESTAMP() - 15 * 60")); - - //查询正在上班中的营运师傅 - List staffList = staffMapper.selectList(new LambdaQueryWrapper() - .eq(Staff::getIsOperational, StaffStatusEnum.OPERATIONAL_STAFF.getCode()) - .eq(Staff::getIsReceiveOrder, StaffStatusEnum.ORDER_AVAILABLE.getCode()) - .eq(Staff::getIsDelete, GlobalConstant.NOT_DELETE) - .apply("DATE_FORMAT(NOW(), '%H:%i') BETWEEN work_start_time AND work_end_time") - .orderByDesc(Staff::getId)); - - if (!staffList.isEmpty()) { //检查列表是否为空,以避免异常 - log.info("系统自动派单"); - // 生成 Random 随机数对象 - Random random = new Random(); - for (Order order : orderList) { - // 根据师傅的数量生成随机整数 - int number = random.nextInt(staffList.size()); - // 随机指派师傅 - Staff staff = staffList.get(number); - //指派师傅 - order.setStaffId(staff.getId()); //指派师傅 - order.setIsDispatch(OrderDispatchEnum.IS_DISPATCH.getStatus()); //修改订单状态为已派单 - order.setUpdateTime(TimeUtil.timestamp()); //更新时间 - orderMapper.updateById(order); //执行 - //记录操作日志 - orderLogService.saveOrderLog(order.getId(), order.getUserId(), OrderLogEnum.SYSTEM_AUTO_SENDORDERS.getDesc()); - } - } - } - -} 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 1dc45a9..47d40e2 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 @@ -15,4 +15,12 @@ public interface IOrderOperateRecordService { */ void addMaintenanceOrder(Long orderId,String titleDsc,String description); + /** + * 新增操作检修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param dscType 内容类型 + * @param description 内容 + */ + void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description); } 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 1875716..33656f4 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 @@ -115,6 +115,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { @Resource OrderOperateRecordServiceImpl orderOperateRecordService; + @Resource + OrderOperateRecordMapper orderOperateRecordMapper; + /** * 检修订单列表 * @@ -163,7 +166,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); User insetallUser = userMapper.selectById(equipmentModel.getUserId()); - equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + if(insetallUser != null){ + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } } //设置设备模块信息 vo.setEquipmentModel(equipmentModelDetailVo); @@ -283,6 +288,12 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setMaintenanceRepair(maintenanceRepairDetailVo); } + //设置订单操作记录 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(OrderOperateRecord::getOrderType, OrderOperateRecordEnum.MAINTENANCE.getStatus()) + .eq(OrderOperateRecord::getOrderId, model.getId()); + vo.setOrderOperateRecords(orderOperateRecordMapper.selectList(queryWrapper));; + return vo; } @@ -322,7 +333,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //新增订单操作记录 orderOperateRecordService.addMaintenanceOrder(model.getId() ,OrderOperateRecordEnum.NEW_CREATE.getDesc() - ,"【"+AdminThreadLocal.get("name")+"】创建了检修工单。"); + ,"【"+AdminThreadLocal.get("username")+"】创建了检修工单。"); } /** @@ -349,8 +360,13 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { if(param.getReceiverId() != null && param.getId() != null){ model.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()); - //新增订单操作记录 - //orderOperateRecordService.addMaintenanceOrder(model.getId(),OrderOperateRecordEnum.); + User user = userMapper.selectById(param.getReceiverId()); + if(user != null){ + //新增订单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getId() + ,OrderOperateRecordEnum.APPOINT.getDesc() + ,"【"+AdminThreadLocal.get("username")+"】指派检修单给检修员【"+user.getUsername()+"】"); + } } model.setReceiverId(param.getReceiverId()); model.setReceiverType(param.getReceiverType()); diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceRepairServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceRepairServiceImpl.java index c00a3ad..eb1f201 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceRepairServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceRepairServiceImpl.java @@ -67,7 +67,9 @@ public class MaintenanceRepairServiceImpl implements IMaintenanceRepairService { BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); User insetallUser = userMapper.selectById(equipmentModel.getUserId()); - equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + if(insetallUser != null){ + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } } //设置设备模块信息 vo.setEquipmentModel(equipmentModelDetailVo); 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 77ade80..7cdcc04 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 @@ -28,4 +28,15 @@ public class OrderOperateRecordServiceImpl implements IOrderOperateRecordService orderOperateRecord.setDescription(description); orderOperateRecordMapper.insert(orderOperateRecord); } + + @Override + public void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.MAINTENANCE_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/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java index cdf5e20..340f466 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.admin.AdminThreadLocal; +import com.hcy.admin.service.order.impl.OrderOperateRecordServiceImpl; import com.hcy.admin.service.sparePartStockAudit.ISparePartStockAuditService; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam; @@ -25,6 +26,7 @@ import com.hcy.common.entity.warehouse.Warehouse; 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.exception.OperateException; import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper; import com.hcy.common.mapper.order.MaintenanceOrderMapper; @@ -75,6 +77,9 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi @Resource SystemAuthAdminMapper systemAuthAdminMapper; + @Resource + OrderOperateRecordServiceImpl orderOperateRecordService; + /** * 备件出入库审核列表 * @@ -134,10 +139,12 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi if (item.getOrderType() != null) { User user = userMapper.selectById(item.getCreatorId()); - vo.setCreator(user.getUsername()); - item.setConsignee(user.getUsername()); - vo.setConsignerPhone(user.getUsername() + "/" + item.getPhone()); - vo.setRecipientAndPhone(user.getUsername() + "/" + item.getPhone()); //领料员工/联系电话 + if(user != null){ + vo.setCreator(user.getUsername()); + item.setConsignee(user.getUsername()); + vo.setConsignerPhone(user.getUsername() + "/" + item.getPhone()); + vo.setRecipientAndPhone(user.getUsername() + "/" + item.getPhone()); //领料员工/联系电话 + } } else { SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminById(item.getCreatorId()); if (systemAuthAdmin != null) { @@ -152,7 +159,6 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi if (item.getOrderType() != null && item.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()) { MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(item.getOrderId()); - User user = userMapper.selectById(maintenanceOrder.getReceiverId()); List orderSparePartListVoList = new ArrayList<>(); List orderSparePartList = orderSparePartMapper.findOrderSparePartByMaintenanceOrderId(item.getOrderId()); @@ -163,14 +169,16 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi number += orderSparePart.getQuantity(); } - vo.setOrderSparePartListVoList(orderSparePartListVoList); - vo.setWorkOrderNo(maintenanceOrder.getOrderNo()); vo.setOrderId(maintenanceOrder.getId()); - vo.setRecipient(user.getUsername()); - vo.setRecipientPhone(user.getMobile()); vo.setRecipientNumber(number); + + User user = userMapper.selectById(maintenanceOrder.getReceiverId()); + if(user != null){ + vo.setRecipient(user.getUsername()); + vo.setRecipientPhone(user.getMobile()); + } } else { //获取待审核备件信息 List stockAuditId = sparePartAuditMapper.selectList( @@ -488,6 +496,13 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi if (model.getPurchaseStatus() != null && model.getPurchaseStatus() == AuditStateEnum.CHECK_PENDING.getStatus()) { model.setPurchaseStatus(AuditStateEnum.WAITDELIVER.getStatus()); //审核通过改成待发货 } + if(model.getOrderId() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_TWO.getDesc() + ,OrderOperateRecordEnum.AUDIT.getStatus() + ,"管理员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过。"); + } } else if (model.getReceiptType() == AuditStateEnum.ALLOT.getStatus() && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()) { //通过审核的调拨单 @@ -542,6 +557,15 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); maintenanceOrder.setReturnCause(sparePartStockAuditParam.getAuditIdea()); maintenanceOrderMapper.updateById(maintenanceOrder); + + User user = userMapper.selectById(maintenanceOrder.getReceiverId()); + if(user != null){ + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_TWO.getDesc() + ,OrderOperateRecordEnum.AUDIT.getStatus() + ,"管理员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getAuditIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。"); + } } model.setAuditResult(null); // 审核结果(0=已通过,1=未通过) model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); @@ -598,6 +622,15 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); maintenanceOrder.setReturnCause(sparePartStockAuditParam.getPurchaseIdea()); maintenanceOrderMapper.updateById(maintenanceOrder); + + User user = userMapper.selectById(maintenanceOrder.getReceiverId()); + if(user != null){ + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() + ,OrderOperateRecordEnum.AUDIT.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。"); + } } } @@ -626,6 +659,14 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi } sparePartMapper.updateById(sparePart); } + + if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() + ,OrderOperateRecordEnum.AUDIT.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核"); + } } sparePartStockAuditMapper.updateById(model); @@ -741,6 +782,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi * @param sparePartStockAuditParam */ @Override + @Transactional public void logisticsSending(SparePartStockAuditParam sparePartStockAuditParam) { SparePartStockAudit model = sparePartStockAuditMapper.selectOne( new QueryWrapper() @@ -755,9 +797,17 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi model.setShipAddress(sparePartStockAuditParam.getShipAddress()); //发货地址 model.setLogisticsCompany(sparePartStockAuditParam.getLogisticsCompany()); //物流公司 model.setTrackingNumber(sparePartStockAuditParam.getTrackingNumber()); //物流编号 - model.setPurchaseStatus(AuditStateEnum.WAITFORRECEIVING.getStatus()); // 采购状态 4=待收货 + model.setPurchaseStatus(AuditStateEnum.WAIT_FOR_RECEIVING.getStatus()); // 采购状态 4=待收货 sparePartStockAuditMapper.updateById(model); + + if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.DELIVER_GOODS.getDesc() + ,OrderOperateRecordEnum.DELIVER_GOODS_TYPE.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+SparePartStockAuditEnum.getMsgByStatus(model.getDeliveryMethod())); + } } /** diff --git a/admin/src/main/java/com/hcy/admin/service/system/impl/SystemAuthAdminServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/system/impl/SystemAuthAdminServiceImpl.java index e9c09a3..bbad6e0 100644 --- a/admin/src/main/java/com/hcy/admin/service/system/impl/SystemAuthAdminServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/system/impl/SystemAuthAdminServiceImpl.java @@ -624,7 +624,11 @@ public class SystemAuthAdminServiceImpl implements ISystemAuthAdminService { systemAuthAdminMapper.updateById(systemAuthAdmin); if(systemAuthAdmin.getUserId() != null){ - userMapper.deleteById(systemAuthAdmin.getUserId()); + User user = userMapper.findUserById(systemAuthAdmin.getUserId()); + if(user != null){ + user.setIsDelete(GlobalConstant.DELETE); + userMapper.updateById(user); + } userAuthMapper.delete(new LambdaQueryWrapper().eq(UserAuth::getUserId, systemAuthAdmin.getUserId())); } 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 674321c..688343e 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 @@ -4,6 +4,7 @@ import com.hcy.admin.vo.client.EquipmentDetailVo; import com.hcy.admin.vo.order.repair.MaintenanceRepairDetailVo; import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.order.OrderOperateRecord; import lombok.Data; import java.io.Serializable; @@ -66,4 +67,5 @@ public class MaintenanceOrderDetailVo implements Serializable { private List sparePartList; // 备件清单 private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息 private SparePartStockAuditDetailVo sparePartStockAuditDetailVo; //备件领用申请 + private List orderOperateRecords; //订单操作记录 } 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 c7a1a06..501e447 100644 --- a/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java +++ b/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java @@ -40,4 +40,14 @@ public enum SparePartStockAuditEnum { public String getDesc() { return this.desc; } + + + public static String getMsgByStatus(Integer status){ + for(SparePartStockAuditEnum typeEnum: SparePartStockAuditEnum.values()) { + if (typeEnum.getStatus() == status) { + return typeEnum.getDesc(); + } + } + return null; + } } diff --git a/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java b/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java index a352d66..1b39de4 100644 --- a/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java +++ b/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java @@ -19,7 +19,7 @@ public enum AuditStateEnum { NOT_PASS_STATE(1, "未通过"), CHECK_PENDING(2, "待管理员审核"), WAITDELIVER(3, "待发货"), - WAITFORRECEIVING(4, "待收货"), + WAIT_FOR_RECEIVING(4, "待收货"), DONE(5, "已完成"), FILLING_OUT(6, "填写中"), OVERDUE(7, "收货超期"), 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 0bbc8c2..e39231e 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 @@ -12,21 +12,27 @@ import java.util.Map; public enum OrderOperateRecordEnum { // 标题 NEW_CREATE(0,"新建"), - ORDER_RECEIVING(1,"接单"), - START_SERVICE(2,"开始服务"), - CUSTOMER_QUOTATION(3,"客户报价"), - SPARE_PARTS_APPLY_FOR(4,"备件领用申请"), - SPARE_PARTS_AUDIT(5,"备件领用审核"), - DELIVER_GOODS(6,"发货"), - RECEIVE_GOODS(7,"收货"), - SPARE_PARTS_RECEIVE(8,"配件领用"), - FILL_IN_RECEIPT(9,"填写回单"), + APPOINT(1,"分配"), + ORDER_RECEIVING(2,"接单"), + START_SERVICE(3,"开始服务"), + CUSTOMER_QUOTATION(4,"客户报价"), + CUSTOMER_CONFIRM(5,"客户确认"), + SPARE_PARTS_RECEIVE(9,"配件领用"), + SPARE_PARTS_AUDIT_ONE(5,"备件领用一级审核"), + SPARE_PARTS_AUDIT_TWO(6,"备件领用二级审核"), + DELIVER_GOODS(7,"发货"), + RECEIVE_GOODS(8,"收货"), + FILL_IN_RECEIPT(10,"填写回单"), // 描述类型 QUOTATION(0,"报价"), SPARE_PARTS_RECEIVE_TYPE(1,"配件领用"), AUDIT(2,"审核"), - DELIVER_GOODS_TYPE(3,"发货"); + DELIVER_GOODS_TYPE(3,"发货"), + + MAINTENANCE(0,"检修单"), + REPAIR(1,"维修单"), + ROUTING_INSPECTION(2,"巡检单"); private final int status; private final String desc; diff --git a/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java b/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java index 6e595ee..fbc4e46 100644 --- a/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java @@ -38,6 +38,9 @@ public interface UserMapper extends IBaseMapper { @Select("select * from la_user where mobile = #{phone}") User getUserByPhone(@Param("phone") String phone); + @Select("select * from la_user where is_delete = 0 and id = #{id}") + User findUserById(@Param("id") Long id); + /** * 获取检修员列表 * @return diff --git a/front/src/main/java/com/hcy/front/FrontInterceptor.java b/front/src/main/java/com/hcy/front/FrontInterceptor.java index 45cf05d..64f58f0 100644 --- a/front/src/main/java/com/hcy/front/FrontInterceptor.java +++ b/front/src/main/java/com/hcy/front/FrontInterceptor.java @@ -88,6 +88,12 @@ public class FrontInterceptor implements HandlerInterceptor { .eq("id", userId) .last("limit 1")); + if(user == null){ + AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_INVALID.getCode(), HttpEnum.TOKEN_INVALID.getMsg()); + response.getWriter().print(JSON.toJSONString(result)); + return false; + } + // 校验用户被删除 if (user.getIsDelete() == 1) { AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_INVALID.getCode(), HttpEnum.TOKEN_INVALID.getMsg()); 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 new file mode 100644 index 0000000..27eea61 --- /dev/null +++ b/front/src/main/java/com/hcy/front/service/order/IOrderOperateRecordService.java @@ -0,0 +1,24 @@ +package com.hcy.front.service.order; + +/** + * 订单操作记录服务接口类 + */ +public interface IOrderOperateRecordService { + + /** + * 新增操作检修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param description 内容 + */ + void addMaintenanceOrder(Long orderId,String titleDsc,String description); + + /** + * 新增操作检修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param dscType 内容类型 + * @param description 内容 + */ + void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description); +} 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 304ce46..cc0a7c9 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 @@ -1,7 +1,6 @@ package com.hcy.front.service.order.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; @@ -23,6 +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.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.address.UserAddressMapper; @@ -47,7 +47,6 @@ 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.warehouse.SparePartParam; -import com.hcy.front.vo.client.EquipmentDetailVo; import com.hcy.front.vo.client.EquipmentModelDetailVo; import com.hcy.front.vo.order.*; import com.hcy.front.vo.order.MaintenanceOrderDetailVo; @@ -60,12 +59,10 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.DecimalFormat; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -117,6 +114,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { @Resource MaintenanceRepairMapper maintenanceRepairMapper; + @Resource + OrderOperateRecordServiceImpl orderOperateRecordService; + private final DecimalFormat df = new DecimalFormat ("#.#"); @Override @@ -136,6 +136,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { model.setCreatorId(FrontThreadLocal.getUserId().longValue()); maintenanceOrderMapper.insert(model); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getId() + , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() + ,"客户【"+FrontThreadLocal.get("username")+"】创建了检修工单"); } /** @@ -263,6 +268,15 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setSparePartStockAudit(sparePartStockAuditDetailVo); } + //设置设备信息 + Equipment equipment = equipmentMapper.selectById(item.getEquipmentId()); + if(equipment != null){ + vo.setDetailedAddress(regionMap.get(equipment.getProvinceId()) + + regionMap.get(equipment.getCityId()) + + regionMap.get(equipment.getDistrictId()) + + equipment.getDetailedAddress()); + } + returnData.add(vo); } @@ -270,6 +284,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { } @Override + @Transactional public void grabTheOrder(MaintenanceOrderParam maintenanceOrderParam) { MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); Assert.notNull(maintenanceOrder, "数据不存在"); @@ -280,6 +295,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus()); maintenanceOrder.setReceiverTime(new Date()); maintenanceOrderMapper.updateById(maintenanceOrder); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() + ,"检修人员【"+FrontThreadLocal.get("username")+"】已自主抢单。联系人电话:"+FrontThreadLocal.get("mobile")); }else{ throw new OperateException("订单已被其他人抢走"); } @@ -295,6 +315,8 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus()); maintenanceOrder.setReceiverTime(new Date()); maintenanceOrderMapper.updateById(maintenanceOrder); + + }else{ throw new OperateException("订单状态不正确"); } @@ -343,6 +365,8 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { MaintenanceOrderDetailVo vo = new MaintenanceOrderDetailVo(); BeanUtils.copyProperties(maintenanceOrder, vo); + Map regionMap = regionService.getRegionMap(); + //设置客户信息 Client client = clientMapper.selectById(maintenanceOrder.getClientId()); if(client != null){ @@ -352,6 +376,10 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //设置设备信息 Equipment equipment = equipmentMapper.selectById(maintenanceOrder.getEquipmentId()); if(equipment != null){ + equipment.setDetailedAddress(regionMap.get(equipment.getProvinceId()) + + regionMap.get(equipment.getCityId()) + + regionMap.get(equipment.getDistrictId()) + + equipment.getDetailedAddress()); vo.setEquipment(equipment); } @@ -402,7 +430,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); User insetallUser = userMapper.selectById(equipmentModel.getUserId()); - equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + if(insetallUser != null){ + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } } //设置设备模块信息 vo.setEquipmentModel(equipmentModelDetailVo); @@ -410,7 +440,6 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //设置返修信息 MaintenanceRepair maintenanceRepair = maintenanceRepairMapper.findMaintenanceRepairByOrderId(maintenanceOrder.getId()); if(maintenanceRepair != null){ - Map regionMap = regionService.getRegionMap(); MaintenanceRepairDetailVo maintenanceRepairDetailVo = new MaintenanceRepairDetailVo(); BeanUtils.copyProperties(maintenanceRepair,maintenanceRepairDetailVo); @@ -460,11 +489,22 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrder.setWarehouseType(maintenanceOrderParam.getWarehouseType()); maintenanceOrder.setQuotationTime(new Date()); + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_QUOTATION.getDesc() + ,OrderOperateRecordEnum.QUOTATION.getStatus() + ,"【"+FrontThreadLocal.get("username")+"】已经为客户发送服务报价。"); + Client client = clientMapper.findClientById(maintenanceOrder.getClientId()); //判断当前客户是全包还是半包 if(client.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus()){ maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc() + ,"客户【"+client.getClientName()+"】已确认报价。"); }else{ maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()); } @@ -490,7 +530,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { orderSparePart.setWarehouseId(sparePart.getWarehouseId()); orderSparePart.setQuantity(item.getQuantity()); //设置订单实际价格 - BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPurchaseDivisor()); + BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPointMaintainDivisor()); orderSparePart.setUnitPrice(practicalPrice); BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity())); @@ -516,6 +556,13 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { if(maintenanceOrderParam.getIsMaintain() == MaintenanceOrderStatusEnum.MAINTAIN.getStatus()){ maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); + + Client client = clientMapper.findClientById(maintenanceOrder.getClientId()); + if(client != null){ + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc() + ,"客户【"+client.getClientName()+"】已确认报价。"); + } }else{ maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.NOT_MAINTAIN.getStatus()); maintenanceOrder.setRefuseMaintenanceCause(maintenanceOrderParam.getRefuseMaintenanceCause()); @@ -551,6 +598,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); maintenanceOrderMapper.updateById(maintenanceOrder); + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE_TYPE.getStatus() + ,"【"+FrontThreadLocal.get("username")+"】创建了【配件领用】单。选择仓库:自身仓库"); //我的仓库也要新增配件领用记录 并且状态是已完成 /*SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); @@ -568,6 +620,12 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); sparePartStockAuditMapper.insert(sparePartStockAudit); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE_TYPE.getStatus() + ,"【"+FrontThreadLocal.get("username")+"】创建了配件领用申请单。"); } } } @@ -623,6 +681,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); maintenanceOrder.setCompleteImg(maintenanceOrderParam.getCompleteImg()); // 完工照片 maintenanceOrderMapper.updateById(maintenanceOrder); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.FILL_IN_RECEIPT.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已经完成任务"); }else{ throw new OperateException("当前订单状态无法进行填写回单操作"); } @@ -685,7 +748,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(maintenanceOrder.getId() ,SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()); if(resultSps != null){ - if(resultSps.getPurchaseStatus() == AuditStateEnum.WAITFORRECEIVING.getStatus()){ + if(resultSps.getPurchaseStatus() == AuditStateEnum.WAIT_FOR_RECEIVING.getStatus()){ //确认收货后可进行填写回单操作 maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); maintenanceOrderMapper.updateById(maintenanceOrder); @@ -693,6 +756,14 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //将对应的配件领用订单改成已完成 resultSps.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); sparePartStockAuditMapper.updateById(resultSps); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.RECEIVE_GOODS.getDesc() + ,"检修员【"+FrontThreadLocal.get("username")+"】已确认收货"); + orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已完成配件领用"); }else{ throw new OperateException("当前订单状态无法进行确认收货"); } 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 new file mode 100644 index 0000000..667473d --- /dev/null +++ b/front/src/main/java/com/hcy/front/service/order/impl/OrderOperateRecordServiceImpl.java @@ -0,0 +1,40 @@ +package com.hcy.front.service.order.impl; + +import com.hcy.common.entity.order.OrderOperateRecord; +import com.hcy.common.enums.SparePartStockAuditEnum; +import com.hcy.common.mapper.order.OrderOperateRecordMapper; +import com.hcy.front.service.order.IOrderOperateRecordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 订单操作记录实现类 + */ +@Service +public class OrderOperateRecordServiceImpl implements IOrderOperateRecordService { + + @Resource + private OrderOperateRecordMapper orderOperateRecordMapper; + + @Override + public void addMaintenanceOrder(Long orderId,String titleDsc,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } + + @Override + public void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDscType(dscType); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } +}