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 47d40e2..a259f50 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 @@ -23,4 +23,21 @@ public interface IOrderOperateRecordService { * @param description 内容 */ void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description); + + /** + * 新增操作维修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param description 内容 + */ + void addRepairOrder(Long orderId,String titleDsc,String description); + + /** + * 新增操作维修单记录 + * @param orderId 订单id + * @param titleDsc 标题内容 + * @param dscType 内容类型 + * @param description 内容 + */ + void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description); } 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 7cdcc04..acce273 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 @@ -39,4 +39,25 @@ public class OrderOperateRecordServiceImpl implements IOrderOperateRecordService orderOperateRecord.setDescription(description); orderOperateRecordMapper.insert(orderOperateRecord); } + + @Override + public void addRepairOrder(Long orderId,String titleDsc,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } + + @Override + public void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description) { + OrderOperateRecord orderOperateRecord = new OrderOperateRecord(); + orderOperateRecord.setOrderId(orderId); + orderOperateRecord.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + orderOperateRecord.setTitle(titleDsc); + orderOperateRecord.setDscType(dscType); + orderOperateRecord.setDescription(description); + orderOperateRecordMapper.insert(orderOperateRecord); + } } 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 27cd88a..5d91832 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 @@ -13,20 +13,27 @@ import com.hcy.admin.validate.order.RepairOrderParam; import com.hcy.admin.validate.order.RoutingInspectionOrderParam; import com.hcy.admin.vo.address.UserAddressListVo; 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.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; +import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.dto.order.RepairOrderDto; import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.order.MaintenanceOrder; import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.order.RoutingInspectionOrder; import com.hcy.common.entity.plant.Plant; +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.SparePartStockAuditEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.enums.order.RepairOrderStatusEnum; @@ -34,10 +41,14 @@ import com.hcy.common.exception.OperateException; 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.OrderSparePartMapper; import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.plant.PlantMapper; +import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; +import com.hcy.common.mapper.warehouse.WarehouseMapper; import com.hcy.common.utils.ArrayUtil; import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.UrlUtil; @@ -75,12 +86,24 @@ public class RepairOrderServiceImpl implements IRepairOrderService { @Resource UserAddressMapper userAddressMapper; + @Resource + WarehouseMapper warehouseMapper; + + @Resource + FaultMapper faultMapper; + @Resource EquipmentMapper equipmentMapper; @Resource private IDevRegionService regionService; + @Resource + OrderSparePartMapper orderSparePartMapper; + + @Resource + SparePartStockAuditMapper sparePartStockAuditMapper; + /** * 维修订单列表 * @@ -129,6 +152,22 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(equipment != null){ vo.setEquipmentName(equipment.getName()); } + //故障类型名称 + Fault faultName = faultMapper.selectOne( + new LambdaQueryWrapper() + .eq(Fault::getId, vo.getFaultId())); + if(faultName != null){ + vo.setFaultName(faultName.getName()); + } + + //设置备件领用信息 + SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(item.getId() + , SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + if(sparePartStockAudit != null){ + SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo(); + BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo); + vo.setSparePartStockAudit(sparePartStockAuditDetailVo); + } vo.setCreateTime(item.getCreateTime()); vo.setUpdateTime(item.getUpdateTime()); @@ -158,12 +197,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService { RepairOrderDetailVo vo = new RepairOrderDetailVo(); BeanUtils.copyProperties(model, vo); vo.setUpdateTime(model.getUpdateTime()); - //客户名称 + //客户名称 负责人 联系电话 Client clientName = clientMapper.selectOne( new QueryWrapper() .eq("id", model.getClientId())); if(clientName != null){ vo.setClientName(clientName.getClientName()); + vo.setDirector(clientName.getDirector()); + vo.setPhone(clientName.getPhone()); + vo.setMaintainType(clientName.getMaintainType()); } //创建人名称 User creatorName = userMapper.selectOne( @@ -172,12 +214,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(creatorName != null){ vo.setCreatorName(creatorName.getUsername()); } - //接单人名称 + //接单人名称 接单人联系电话 User user = userMapper.selectOne( new QueryWrapper() .eq("id", model.getReceiverId())); if(user != null){ vo.setReceiverName(user.getUsername()); + vo.setReceiverPhone(user.getMobile()); } //管辖工厂 SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( @@ -196,39 +239,90 @@ public class RepairOrderServiceImpl implements IRepairOrderService { UserAddress userAddress = userAddressMapper.selectOne( new QueryWrapper() .eq("id", model.getAddressId())); - UserAddressListVo userAddressListVo = new UserAddressListVo(); - BeanUtils.copyProperties(userAddress, userAddressListVo); Map regionMap = regionService.getRegionMap(); - userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId())); - userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId())); - userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId())); if(userAddress != null){ + UserAddressListVo userAddressListVo = new UserAddressListVo(); + BeanUtils.copyProperties(userAddress, userAddressListVo); + userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId())); + userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId())); + userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId())); vo.setAddress(userAddressListVo); } //报废地址 UserAddress scrapAddress = userAddressMapper.selectOne( new QueryWrapper() .eq("id", model.getScrapAddressId())); - UserAddressListVo scrapAddressListVo = new UserAddressListVo(); - BeanUtils.copyProperties(scrapAddress, scrapAddressListVo); - scrapAddressListVo.setProvince(regionMap.get(scrapAddressListVo.getProvinceId())); - scrapAddressListVo.setCity(regionMap.get(scrapAddressListVo.getCityId())); - scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId())); if(scrapAddress != null){ + UserAddressListVo scrapAddressListVo = new UserAddressListVo(); + BeanUtils.copyProperties(scrapAddress, scrapAddressListVo); + scrapAddressListVo.setProvince(regionMap.get(scrapAddressListVo.getProvinceId())); + scrapAddressListVo.setCity(regionMap.get(scrapAddressListVo.getCityId())); + scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId())); vo.setScrapAddress(scrapAddressListVo); } //设备信息 Equipment equipment = equipmentMapper.selectOne( new QueryWrapper() .eq("id", model.getEquipmentId())); - EquipmentListVo equipmentListVo = new EquipmentListVo(); - equipmentListVo.setProvince(regionMap.get(equipment.getProvinceId())); - equipmentListVo.setCity(regionMap.get(equipment.getCityId())); - equipmentListVo.setDistrict(regionMap.get(equipment.getDistrictId())); - BeanUtils.copyProperties(equipment, equipmentListVo); if(equipment != null){ + EquipmentListVo equipmentListVo = new EquipmentListVo(); + equipmentListVo.setProvince(regionMap.get(equipment.getProvinceId())); + equipmentListVo.setCity(regionMap.get(equipment.getCityId())); + equipmentListVo.setDistrict(regionMap.get(equipment.getDistrictId())); + BeanUtils.copyProperties(equipment, equipmentListVo); vo.setEquipment(equipmentListVo); } + + //故障类型名称 + Fault faultName = faultMapper.selectOne( + new LambdaQueryWrapper() + .eq(Fault::getId, vo.getFaultId())); + if(faultName != null){ + vo.setFaultName(faultName.getName()); + } + //设置配件清单 + List orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper() + .eq(OrderSparePart::getRepairOrderId, model.getId())); + List orderSparePartListVos = new ArrayList<>(); + for (OrderSparePart item : orderSpareParts) { + OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo(); + BeanUtils.copyProperties(item, orderSparePartListVo); + //仓库名称 + Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper() + .eq(Warehouse::getId, item.getWarehouseId())); + orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName()); + orderSparePartListVos.add(orderSparePartListVo); + } + vo.setSparePartList(orderSparePartListVos); + //确认报废 收件地址 + UserAddress clientScrapAddress = userAddressMapper.selectOne( + new QueryWrapper() + .eq("id", model.getClientScrapAddressId())); + if(clientScrapAddress != null){ + UserAddressListVo clientScrapAddressVo = new UserAddressListVo(); + BeanUtils.copyProperties(clientScrapAddress, clientScrapAddressVo); + clientScrapAddressVo.setProvince(regionMap.get(clientScrapAddressVo.getProvinceId())); + clientScrapAddressVo.setCity(regionMap.get(clientScrapAddressVo.getCityId())); + clientScrapAddressVo.setDistrict(regionMap.get(clientScrapAddressVo.getDistrictId())); + vo.setClientScrapAddress(clientScrapAddressVo); + } + + //设置备件领用信息 + SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(model.getId() + , SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + if(sparePartStockAudit != null){ + SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo(); + BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo); + vo.setSparePartStockAudit(sparePartStockAuditDetailVo); + } + + //常见维修结论名称 + Fault familiarFaultName = faultMapper.selectOne( + new LambdaQueryWrapper() + .eq(Fault::getId, vo.getFamiliarFaultId())); + if(familiarFaultName != null){ + vo.setFamiliarFaultName(familiarFaultName.getName()); + } return vo; } @@ -434,7 +528,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void updateServiceOfferPrice(RepairOrderParam repairOrderParam) { - RepairOrder model = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder model = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(model, "数据不存在!"); Assert.notNull(repairOrderParam.getActualAmount(),"服务报价不能为空"); @@ -455,7 +549,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void returnRepair(RepairOrderParam repairOrderParam) { - RepairOrder model = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder model = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(model, "数据不存在!"); Assert.notNull(repairOrderParam.getReturnCause(),"退回原因不可为空"); diff --git a/admin/src/main/java/com/hcy/admin/service/plant/impl/PlantServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/plant/impl/PlantServiceImpl.java index 0e443cc..31e8532 100644 --- a/admin/src/main/java/com/hcy/admin/service/plant/impl/PlantServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/plant/impl/PlantServiceImpl.java @@ -1,5 +1,6 @@ package com.hcy.admin.service.plant.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -27,6 +28,7 @@ import com.hcy.common.utils.UrlUtil; import com.hcy.common.config.GlobalConfig; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; @@ -75,23 +77,22 @@ public class PlantServiceImpl implements IPlantService { PlantListVo vo = new PlantListVo(); BeanUtils.copyProperties(item, vo); vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); - if(item.getAuthAdminId() != null){ - //字符串拆分获取用户id - String[] userid = item.getAuthAdminId().split(","); - List authAdminList = new ArrayList<>(); - for (String uid : userid) { - SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( - new QueryWrapper() - .eq("id", uid) - .eq("is_delete", 0) - .last("limit 1")); - if(authAdmin != null){ - authAdmin.setAvatar(UrlUtil.toAbsoluteUrl(authAdmin.getAvatar())); - authAdminList.add(authAdmin); - } + //获取当前工厂的管理员 + List systemAuthAdmins = systemAuthAdminMapper.selectList(new LambdaQueryWrapper() + .eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(SystemAuthAdmin::getPlantId, item.getId())); + if(systemAuthAdmins != null){ + //转换头像路径 + for (SystemAuthAdmin systemAuthAdmin : systemAuthAdmins) { + systemAuthAdmin.setAvatar(UrlUtil.toAbsoluteUrl(systemAuthAdmin.getAvatar())); } - vo.setAuthAdminList(authAdminList); + vo.setAuthAdminList(systemAuthAdmins); } + //获取当前工厂管理员数量 + Integer numberUsers = systemAuthAdminMapper.selectCount(new LambdaQueryWrapper() + .eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(SystemAuthAdmin::getPlantId, item.getId())); + vo.setNumberUsers(numberUsers);// 管理员人数 list.add(vo); } @@ -124,21 +125,25 @@ public class PlantServiceImpl implements IPlantService { vo.setProvince(regionMap.get(model.getProvinceId())); vo.setCity(regionMap.get(model.getCityId())); vo.setDistrict(regionMap.get(model.getDistrictId())); - if(model.getAuthAdminId() != null){ - //字符串拆分获取用户id - String[] userid = model.getAuthAdminId().split(","); - List authAdminList = new ArrayList<>(); - for (String uid : userid) { - SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( - new QueryWrapper() - .eq("id", uid) - .eq("is_delete", 0) - .last("limit 1")); - authAdmin.setAvatar(UrlUtil.toAbsoluteUrl(authAdmin.getAvatar())); - authAdminList.add(authAdmin); + + //获取当前工厂的管理员 + List systemAuthAdmins = systemAuthAdminMapper.selectList( + new LambdaQueryWrapper() + .eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(SystemAuthAdmin::getPlantId, model.getId())); + if(systemAuthAdmins != null){ + //转换头像路径 + for (SystemAuthAdmin systemAuthAdmin : systemAuthAdmins) { + systemAuthAdmin.setAvatar(UrlUtil.toAbsoluteUrl(systemAuthAdmin.getAvatar())); } - vo.setAuthAdminList(authAdminList); + vo.setAuthAdminList(systemAuthAdmins); } + //获取当前工厂管理员数量 + Integer numberUsers = systemAuthAdminMapper.selectCount( + new LambdaQueryWrapper() + .eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(SystemAuthAdmin::getPlantId, model.getId())); + vo.setNumberUsers(numberUsers);// 管理员人数 return vo; } @@ -227,6 +232,7 @@ public class PlantServiceImpl implements IPlantService { * @param plantParam */ @Override + @Transactional public void boundUser(PlantParam plantParam) { Plant model = plantMapper.selectOne( new QueryWrapper() @@ -238,19 +244,10 @@ public class PlantServiceImpl implements IPlantService { List authAdminList = plantParam.getAuthAdminList(); if(authAdminList != null){ - int userNumber = 0; - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); for (SystemAuthAdmin authAdmin : authAdminList) { - sb.append(authAdmin.getId()).append(","); - userNumber = userNumber + 1; + authAdmin.setPlantId(Math.toIntExact(model.getId())); + systemAuthAdminMapper.updateById(authAdmin); } - model.setNumberUsers((long) userNumber); - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setAuthAdminId(String.valueOf(sb));// 备件审核id - }else{ - model.setNumberUsers(null); - model.setAuthAdminId(null);// 备件审核id } model.setUpdateTime(System.currentTimeMillis() / 1000); @@ -263,6 +260,7 @@ public class PlantServiceImpl implements IPlantService { * @param plantParam */ @Override + @Transactional public void plantUnbound(PlantParam plantParam) { Plant model = plantMapper.selectOne( new QueryWrapper() @@ -274,18 +272,10 @@ public class PlantServiceImpl implements IPlantService { List authAdminList = plantParam.getAuthAdminList(); if(authAdminList != null){ - int userNumber = 0; - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); for (SystemAuthAdmin authAdmin : authAdminList) { - sb.append(authAdmin.getId()).append(","); - userNumber = userNumber + 1; + authAdmin.setPlantId(null); + systemAuthAdminMapper.updateById(authAdmin); } - model.setNumberUsers((long) userNumber); - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setAuthAdminId(String.valueOf(sb));// 备件审核id - - } model.setUpdateTime(System.currentTimeMillis() / 1000); 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 26a3c8c..ebfeb33 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 @@ -18,6 +18,7 @@ import com.hcy.common.core.PageResult; import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.entity.SparePartAudit.SparePartAudit; import com.hcy.common.entity.order.MaintenanceOrder; +import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.sparePart.SparePart; import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit; import com.hcy.common.entity.system.SystemAuthAdmin; @@ -32,6 +33,7 @@ import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper; import com.hcy.common.mapper.order.MaintenanceOrderMapper; import com.hcy.common.mapper.order.OrderSparePartMapper; +import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.sparePart.SparePartMapper; import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; @@ -69,6 +71,9 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi @Resource MaintenanceOrderMapper maintenanceOrderMapper; + @Resource + RepairOrderMapper repairOrderMapper; + @Resource UserMapper userMapper; @@ -180,6 +185,29 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi vo.setRecipient(user.getUsername()); vo.setRecipientPhone(user.getMobile()); } + } else if (item.getOrderType() != null && item.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { + RepairOrder repairOrder = maintenanceOrderMapper.findRepairOrderById(item.getOrderId()); + + List orderSparePartListVoList = new ArrayList<>(); + List orderSparePartList = orderSparePartMapper.findOrderSparePartByRepairOrderId(item.getOrderId()); + for (OrderSparePart orderSparePart : orderSparePartList) { + OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo(); + BeanUtils.copyProperties(orderSparePart, orderSparePartListVo); + orderSparePartListVoList.add(orderSparePartListVo); + + number += orderSparePart.getQuantity(); + } + + vo.setOrderSparePartListVoList(orderSparePartListVoList); + vo.setWorkOrderNo(repairOrder.getOrderNo()); + vo.setOrderId(repairOrder.getId()); + vo.setRecipientNumber(number); + + User user = userMapper.selectById(repairOrder.getReceiverId()); + if(user != null){ + vo.setRecipient(user.getUsername()); + vo.setRecipientPhone(user.getMobile()); + } } else { //获取待审核备件信息 List stockAuditId = sparePartAuditMapper.selectList( @@ -267,12 +295,35 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi for (OrderSparePart orderSparePart : orderSparePartList) { OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo(); BeanUtils.copyProperties(orderSparePart, orderSparePartListVo); + //配件清单仓库名称 + Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper() + .eq(Warehouse::getId, orderSparePartListVo.getWarehouseId())); + orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName()); orderSparePartListVoList.add(orderSparePartListVo); } vo.setOrderSparePartListVoList(orderSparePartListVoList); vo.setWorkOrderNo(maintenanceOrder.getOrderNo()); vo.setRecipient(user.getUsername()); vo.setRecipientPhone(user.getMobile()); + } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { + RepairOrder repairOrder = maintenanceOrderMapper.findRepairOrderById(model.getOrderId()); + User user = userMapper.selectById(repairOrder.getReceiverId()); + + List orderSparePartListVoList = new ArrayList<>(); + List orderSparePartList = orderSparePartMapper.findOrderSparePartByRepairOrderId(model.getOrderId()); + for (OrderSparePart orderSparePart : orderSparePartList) { + OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo(); + BeanUtils.copyProperties(orderSparePart, orderSparePartListVo); + //配件清单仓库名称 + Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper() + .eq(Warehouse::getId, orderSparePartListVo.getWarehouseId())); + orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName()); + orderSparePartListVoList.add(orderSparePartListVo); + } + vo.setOrderSparePartListVoList(orderSparePartListVoList); + vo.setWorkOrderNo(repairOrder.getOrderNo()); + vo.setRecipient(user.getUsername()); + vo.setRecipientPhone(user.getMobile()); } else { //获取待审核备件信息 List sparePartAuditList = sparePartAuditMapper.findSparePartAuditByStockAuditId(model.getId()); @@ -503,6 +554,12 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_TWO.getDesc() ,OrderOperateRecordEnum.AUDIT.getStatus() ,"管理员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过。"); + } else if (model.getOrderId() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(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()) { @@ -570,6 +627,26 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi } model.setAuditResult(null); // 审核结果(0=已通过,1=未通过) model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); + } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus() && + sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()) { + //管理员维修单审核不通过 + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(model.getOrderId()); + if(repairOrder != null){ + repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); + repairOrder.setReturnCause(sparePartStockAuditParam.getAuditIdea()); + repairOrderMapper.updateById(repairOrder); + + User user = userMapper.selectById(repairOrder.getReceiverId()); + if(user != null){ + //新增检修单操作记录 + orderOperateRecordService.addRepairOrder(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()); } sparePartStockAuditMapper.updateById(model); @@ -633,6 +710,24 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi ,"仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。"); } } + } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus() && + sparePartStockAuditParam.getPurchaseStatus() == AuditStateEnum.NOT_PASS_STATE.getStatus()) { + //仓管员维修单审核不通过 + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(model.getOrderId()); + if(repairOrder != null){ + repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); + repairOrder.setReturnCause(sparePartStockAuditParam.getPurchaseIdea()); + repairOrderMapper.updateById(repairOrder); + + User user = userMapper.selectById(repairOrder.getReceiverId()); + if(user != null){ + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() + ,OrderOperateRecordEnum.AUDIT.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。"); + } + } } // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 @@ -667,6 +762,12 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() ,OrderOperateRecordEnum.AUDIT.getStatus() ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核。"); + } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { + //新增维修单操作记录 + orderOperateRecordService.addRepairOrder(model.getOrderId() + , OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc() + ,OrderOperateRecordEnum.AUDIT.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核"); } } @@ -808,6 +909,13 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi , OrderOperateRecordEnum.DELIVER_GOODS.getDesc() ,OrderOperateRecordEnum.DELIVER_GOODS_TYPE.getStatus() ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+ LogisticsModeEnum.getMsgByStatus(model.getDeliveryMethod())+"。"); + + } else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) { + //新增维修单操作记录 + orderOperateRecordService.addMaintenanceOrder(model.getOrderId() + , OrderOperateRecordEnum.DELIVER_GOODS.getDesc() + ,OrderOperateRecordEnum.DELIVER_GOODS_TYPE.getStatus() + ,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+ LogisticsModeEnum.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 bbad6e0..7d0bb14 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 @@ -166,41 +166,9 @@ public class SystemAuthAdminServiceImpl implements ISystemAuthAdminService { vo.setReceiveOrderStatus(user.getReceiveOrderStatus()); } - //只查询没有被该工厂绑定的用户 - if(param.getPlantId() != null){ - Plant model = plantMapper.selectOne( - new QueryWrapper() - .eq("id", param.getPlantId()) - .eq("is_delete", 0) - .last("limit 1")); - Assert.notNull(model, "数据不存在!"); - if(model.getAuthAdminId() != null){ - //字符串拆分获取用户id - String[] userid = model.getAuthAdminId().split(","); - // 查询没有被任何工厂绑定的用户 - QueryWrapper userQueryWrapper = new QueryWrapper<>(); - userQueryWrapper.notIn("id", userid); - List systemAuthAdmins = systemAuthAdminMapper.selectList(userQueryWrapper); - for (SystemAuthAdmin systemAuthAdmin : systemAuthAdmins) { - if(item.getId() == systemAuthAdmin.getId()){ - list.add(vo); - total = total + 1; - } - } - }else{ - list.add(vo); - total = total + 1; - } - - }else { - list.add(vo); - total = total + 1; - } - - } - return PageResult.iPageHandle(total, iPage.getCurrent(), iPage.getSize(), list); + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); } /** 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 860f18f..0a22dd0 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 @@ -18,7 +18,7 @@ public class OrderSparePartListVo implements Serializable { private Long sparePartsId; // 备件id private String sparePartsCode; // 备件编码 private String sparePartsName; // 备件名称 - private Long warehouseId; // 所属仓库名称 + private Long warehouseId; // 所属仓库id private String specificationsModel; // 规格型号 private String unit; // 单位 private BigDecimal unitPrice; // 价格 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 4f9ed4a..c3fd6cc 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 @@ -1,7 +1,11 @@ package com.hcy.admin.vo.order; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.hcy.admin.vo.address.UserAddressListVo; import com.hcy.admin.vo.client.EquipmentListVo; +import com.hcy.admin.vo.client.EquipmentModelDetailVo; +import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Equipment; import lombok.Data; @@ -9,6 +13,7 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * RepairOrderVo @@ -28,6 +33,7 @@ public class RepairOrderDetailVo implements Serializable { private String clientContacts; // 客户联系人 private String clientPhone; // 客户联系电话 private Long faultId; // 故障id + private String faultCode; // 故障代码 private String faultDescription; // 故障描述 private String moduleNumber; // 模块号 private String brand; // 品牌 @@ -43,22 +49,68 @@ public class RepairOrderDetailVo implements Serializable { private Integer priorityId; // 优先级 0-普通 1-加急 private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回 private String expressName; // 快递名称 + private String expressNo; // 快递单号 private Integer returnOrNot; // 是否回寄(0=是 1=否) private Long addressId; // 回寄地址 private String siteImg; // 现场照片 - private Long plantId; // 管辖工厂 + private Long plantId; // 管辖工厂 private String plantName; //管辖工厂名 private Integer receiverType; // 接单类型 0-区域派单;1-距离派单 private BigDecimal orderDistance; // 订单距离 private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员 private UserAddressListVo address; //地址信息 private EquipmentListVo equipment; //设备信息 - private Integer scrapAddressId; // 报废地址 + private Long scrapAddressId; // 报废地址 private UserAddressListVo scrapAddress; //报废地址信息 private String returnCause; //退回原因 private Integer deliveryMethod; // 收件方式(0=物流快递 1-上门取件 2-送货上门) private Long consigneeAddressId; // 收件地址 + private UserAddressListVo consigneeAddress; //收件地址 + private String clientScrapRemark; // 客户报废备注 private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String completeImg; // 完工照片 + + private String faultName; //故障名称 + private Integer scrapOrNot; // 是否报废(0=是,1=否) + private String preMaintenanceImg; // 维修前照片 + private String faultPointImg; // 故障点照片 + private String inMaintenanceImg; // 维修中照片 + private String afterRepairImg; // 维修后照片 + private Date orderAccomplishTime; // 订单完成时间 + private Date quotationTime; // 报价时间 + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 + private String refuseMaintenanceCause; // 拒绝维修原因 + + private BigDecimal totalAmount; // 总金额 + private BigDecimal actualAmount; // 实际金额 + + private List sparePartList; // 备件清单 + private EquipmentModelDetailVo equipmentModel; //设备模块信息 + private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息 + + private String director; // 负责人 + private String phone; // 联系电话 + private String receiverPhone; // 接单人联系电话 + + private Long scrapFaultId; // 报废类型id + private String scrapExplain; // 报废说明 + + private Long clientScrapAddressId; // 客户报废收货地址id + private UserAddressListVo clientScrapAddress; //客户报废收货地址 + + private Long scrapConfirmation; // 报废确认(0=是,1=否) + private Integer warehouseType; // 仓库类型 0-我的仓库 1-公共仓库 + + private Long repairId; // 返修id + private Long familiarFaultId; // 常见维修结论id + private String familiarFaultName; // 常见维修结论名称 + private String familiarFaultDescription; // 常见维修结论描述 + private Integer isMaintain; // 是否维修 0-维修 1-不维修 + private Long userId; // 送修人 + + private Integer maintainType; // 客户维修类型 模块维修类型 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 220a690..f39b27a 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,5 +1,6 @@ package com.hcy.admin.vo.order; +import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import lombok.Data; import java.io.Serializable; @@ -50,4 +51,28 @@ public class RepairOrderListVo implements Serializable { private Integer scrapAddressId; // 报废地址 private String returnCause; //退回原因 + private String faultName; //故障名称 + private String equipmentNo; //设备编号 + private String detailedAddress; //设备详情地址 + private Integer deliveryMethod; // 收件方式(0=物流快递 1-上门取件 2-送货上门) + private Long consigneeAddressId; // 收件地址 + private String clientScrapRemark; // 客户报废备注 + private String completeImg; // 完工照片 + private Integer scrapOrNot; // 是否报废(0=是,1=否) + private String preMaintenanceImg; // 维修前照片 + private String faultPointImg; // 故障点照片 + private String inMaintenanceImg; // 维修中照片 + private String afterRepairImg; // 维修后照片 + private Date orderAccomplishTime; // 订单完成时间 + + private Date quotationTime; // 报价时间 + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 + private String refuseMaintenanceCause; // 拒绝维修原因 + + private Long clientScrapAddressId; // 客户报废收货地址id + private Long scrapConfirmation; // 报废确认(0=是,1=否) + + private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息 + } diff --git a/admin/src/main/java/com/hcy/admin/vo/plant/PlantDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/plant/PlantDetailVo.java index 737b3d5..dc73724 100644 --- a/admin/src/main/java/com/hcy/admin/vo/plant/PlantDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/plant/PlantDetailVo.java @@ -2,6 +2,7 @@ package com.hcy.admin.vo.plant; import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; +import io.swagger.models.auth.In; import lombok.Data; import java.io.Serializable; @@ -16,9 +17,8 @@ public class PlantDetailVo implements Serializable { private static final long serialVersionUID = 1L; private Long id; // 主键id - private String authAdminId; // 用户id private String name; // 工厂名称 - private Long numberUsers; // 管理员人数 + private Integer numberUsers; // 管理员人数 private Long sort; // 排序 private String remark; // 备注 private String longitude; // 经度 diff --git a/admin/src/main/java/com/hcy/admin/vo/plant/PlantListVo.java b/admin/src/main/java/com/hcy/admin/vo/plant/PlantListVo.java index aea6a00..1e7661f 100644 --- a/admin/src/main/java/com/hcy/admin/vo/plant/PlantListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/plant/PlantListVo.java @@ -16,9 +16,8 @@ public class PlantListVo implements Serializable { private static final long serialVersionUID = 1L; private Long id; // 主键id - private String authAdminId; // 用户id private String name; // 工厂名称 - private Long numberUsers; // 管理员人数 + private Integer numberUsers; // 管理员人数 private Long sort; // 排序 private String remark; // 备注 private String createTime; // 创建时间 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 75c7b42..afc3d3f 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 @@ -67,5 +67,20 @@ public class RepairOrderDto implements Serializable { private String returnCause; //退回原因 private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String completeImg; // 完工照片 + private Integer scrapOrNot; // 是否报废(0=是,1=否) + private String inMaintenanceImg; // 维修中照片 + private String afterRepairImg; // 维修后照片 + private String preMaintenanceImg; // 维修前照片 + private String faultPointImg; // 故障点照片 + private Date orderAccomplishTime; // 订单完成时间 + private Date quotationTime; // 报价时间 + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 + private String refuseMaintenanceCause; // 拒绝维修原因 + private BigDecimal totalAmount; // 总金额 + private BigDecimal actualAmount; // 实际金额 + + private Long clientScrapAddressId; // 客户报废收货地址 + private Long scrapConfirmation; // 报废确认(0=是,1=否) } 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 45a94db..e8b8c72 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 @@ -81,4 +81,6 @@ public class RepairOrder implements Serializable { private String clientScrapRemark; // 客户报废备注 private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String completeImg; // 完工照片 + private Long clientScrapAddressId; // 客户报废收货地址 + private Long scrapConfirmation; // 报废确认(0=是,1=否) } \ No newline at end of file diff --git a/common/src/main/java/com/hcy/common/entity/plant/Plant.java b/common/src/main/java/com/hcy/common/entity/plant/Plant.java index 4627f4b..ef16ccd 100644 --- a/common/src/main/java/com/hcy/common/entity/plant/Plant.java +++ b/common/src/main/java/com/hcy/common/entity/plant/Plant.java @@ -19,11 +19,7 @@ public class Plant implements Serializable { @TableId(value="id", type= IdType.AUTO) private Long id; // 主键id - @TableField(updateStrategy = FieldStrategy.IGNORED) - private String authAdminId; // 管理员id private String name; // 工厂名称 - @TableField(updateStrategy = FieldStrategy.IGNORED) - private Long numberUsers; // 管理员人数 private Long sort; // 排序 private String remark; // 备注 private String longitude; // 经度 diff --git a/common/src/main/java/com/hcy/common/entity/system/SystemAuthAdmin.java b/common/src/main/java/com/hcy/common/entity/system/SystemAuthAdmin.java index cf7b990..d9f99cf 100644 --- a/common/src/main/java/com/hcy/common/entity/system/SystemAuthAdmin.java +++ b/common/src/main/java/com/hcy/common/entity/system/SystemAuthAdmin.java @@ -28,6 +28,7 @@ public class SystemAuthAdmin implements Serializable { private String role; // 角色主键 private Integer sort; // 排序编号 private String phone; // 联系电话 + @TableField(updateStrategy = FieldStrategy.IGNORED) private Integer plantId; // 管辖工厂 private Long provinceId; //省id private Long cityId; //市id diff --git a/common/src/main/java/com/hcy/common/enums/ClientStatusEnum.java b/common/src/main/java/com/hcy/common/enums/ClientStatusEnum.java index 773233f..1800b08 100644 --- a/common/src/main/java/com/hcy/common/enums/ClientStatusEnum.java +++ b/common/src/main/java/com/hcy/common/enums/ClientStatusEnum.java @@ -6,8 +6,11 @@ public enum ClientStatusEnum { * 桩点维修类型 0-全包 1-半包 */ PLIE_POINT_ALL_WRAPPED(0, "桩点全包"), - PLIE_POINT_HALF_BALE(1,"桩点半包"); + PLIE_POINT_HALF_BALE(1,"桩点半包"), + // 模块维修类型 0-全包 1-半包 + MODULE_MAINTENANCE_ALL_WRAPPED(0, "模块维修全包"), + MODULE_MAINTENANCE_HALF_BALE(1, "模块维修半包"); /** * 构造方法 */ diff --git a/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java b/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java index 38be043..42dbdb0 100644 --- a/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java +++ b/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java @@ -31,7 +31,11 @@ public enum RepairOrderStatusEnum { NOT_MAINTAIN(1,"不维修"), MY_WAREHOUSE(0,"我的仓库"), - PUBLIC_WAREHOUSE(1,"全部仓库"),; + PUBLIC_WAREHOUSE(1,"全部仓库"), + + // 是否报废(0=是,1=否) + YES(0,"是"), + NO(1, "否"); private final int status; private final String desc; 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 4ab1621..21dd5c0 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.dto.order.MaintenanceOrderDto; import com.hcy.common.entity.order.MaintenanceOrder; +import com.hcy.common.entity.order.RepairOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -30,6 +31,16 @@ 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 d863030..a7085cb 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 @@ -41,7 +41,7 @@ public interface RepairOrderMapper extends IBaseMapper { * @return MaintenanceOrder */ @Select("select * from la_repair_order where is_delete = 0 and id = #{id}") - RepairOrder findMaintenanceOrderById(@Param("id") Long id); + RepairOrder findRepairOrderById(@Param("id") Long id); /** * 获取待接单工单状态数量 diff --git a/common/src/main/java/com/hcy/common/mapper/plant/PlantMapper.java b/common/src/main/java/com/hcy/common/mapper/plant/PlantMapper.java index ae67d06..7ff5512 100644 --- a/common/src/main/java/com/hcy/common/mapper/plant/PlantMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/plant/PlantMapper.java @@ -3,11 +3,17 @@ package com.hcy.common.mapper.plant; import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.entity.plant.Plant; +import com.hcy.common.entity.system.SystemAuthAdmin; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * 工厂管理Mapper */ @Mapper public interface PlantMapper extends IBaseMapper { + + @Select("select * from la_plant where is_delete = 0 and id = #{adminId}") + Plant findPlantByAdminId(@Param("adminId") Integer adminId); } diff --git a/common/src/main/resources/mapper/SystemAuthAdminMapper.xml b/common/src/main/resources/mapper/SystemAuthAdminMapper.xml index 83b7d7a..351cfd3 100644 --- a/common/src/main/resources/mapper/SystemAuthAdminMapper.xml +++ b/common/src/main/resources/mapper/SystemAuthAdminMapper.xml @@ -23,6 +23,9 @@ and t.nickname like concat('%',#{param.nickname},'%') + + and t.plant_id IS NULL + ORDER BY t.id DESC, diff --git a/front/src/main/java/com/hcy/front/controller/order/RepairOrderController.java b/front/src/main/java/com/hcy/front/controller/order/RepairOrderController.java index 14f3028..84a9c8c 100644 --- a/front/src/main/java/com/hcy/front/controller/order/RepairOrderController.java +++ b/front/src/main/java/com/hcy/front/controller/order/RepairOrderController.java @@ -186,4 +186,26 @@ public class RepairOrderController { iRepairOrderService.fillInReceipt(repairOrderParam); return AjaxResult.success(); } + + /** + * 备件领用申请 + * @param repairOrderParam 参数 + * @return Object + */ + @PostMapping("/sparePartsRequisition") + public Object sparePartsRequisition(@RequestBody RepairOrderParam repairOrderParam) { + iRepairOrderService.sparePartsRequisition(repairOrderParam); + return AjaxResult.success(); + } + + /** + * 确认收货 + * @param repairOrderParam 参数 + * @return Object + */ + @PostMapping("/confirmReceipt") + public Object confirmReceipt(@RequestBody RepairOrderParam repairOrderParam) { + iRepairOrderService.confirmReceipt(repairOrderParam); + return AjaxResult.success(); + } } 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 7610ae2..d5baedd 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 @@ -109,4 +109,16 @@ public interface IRepairOrderService { * @param repairOrderParam */ void fillInReceipt(RepairOrderParam repairOrderParam); + + /** + * 备件领用申请 + * @param repairOrderParam + */ + void sparePartsRequisition(RepairOrderParam repairOrderParam); + + /** + * 确认收货 + * @param repairOrderParam + */ + void confirmReceipt(RepairOrderParam repairOrderParam); } 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 2c17205..805363d 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 @@ -12,26 +12,37 @@ import com.hcy.common.dto.order.RepairOrderDto; import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.order.MaintenanceOrder; import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.plant.Plant; import com.hcy.common.entity.sparePart.SparePart; +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.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.enums.order.RepairOrderStatusEnum; import com.hcy.common.exception.OperateException; 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.OrderSparePartMapper; import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.plant.PlantMapper; import com.hcy.common.mapper.sparePart.SparePartMapper; +import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; +import com.hcy.common.mapper.warehouse.WarehouseMapper; +import com.hcy.common.utils.OrderUtil; +import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.ToolsUtil; import com.hcy.front.FrontThreadLocal; import com.hcy.front.service.order.IRepairOrderService; @@ -42,14 +53,13 @@ import com.hcy.front.validate.order.RepairOrderParam; import com.hcy.front.validate.warehouse.SparePartParam; import com.hcy.front.vo.address.UserAddressListVo; import com.hcy.front.vo.client.EquipmentListVo; -import com.hcy.front.vo.order.MaintenanceOrderListVo; -import com.hcy.front.vo.order.OrderStatusCountVo; -import com.hcy.front.vo.order.RepairOrderDetailVo; -import com.hcy.front.vo.order.RepairOrderListVo; +import com.hcy.front.vo.order.*; +import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.sun.xml.internal.ws.resources.AddressingMessages; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; @@ -80,6 +90,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService { @Resource ClientMapper clientMapper; + @Resource + FaultMapper faultMapper; + @Resource private IDevRegionService regionService; @@ -95,6 +108,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService { @Resource OrderSparePartMapper orderSparePartMapper; + @Resource + SparePartStockAuditMapper sparePartStockAuditMapper; + + @Resource + WarehouseMapper warehouseMapper; + + @Resource + OrderOperateRecordServiceImpl orderOperateRecordService; + private final DecimalFormat df = new DecimalFormat ("#.#"); /** @@ -111,6 +133,8 @@ public class RepairOrderServiceImpl implements IRepairOrderService { List repairOrderDtoList = repairOrderMapper.list(repairOrderDto); SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(FrontThreadLocal.getUserId()); + //获取工厂 + Plant plant = plantMapper.findPlantByAdminId(systemAuthAdmin.getPlantId()); List returnData = new LinkedList<>(); for (RepairOrderDto item : repairOrderDtoList) { @@ -121,10 +145,20 @@ public class RepairOrderServiceImpl implements IRepairOrderService { , repairOrderParam.getLongitude(), repairOrderParam.getLatitude()); if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){ - if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) && + /*if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) && item.getEquipmentCityId().equals(systemAuthAdmin.getCityId()) && item.getEquipmentDistrictId().equals(systemAuthAdmin.getDistrictId()) ){ + // 计算距离 + RepairOrderListVo vo = new RepairOrderListVo(); + BeanUtils.copyProperties(item, vo); + vo.setDistance(distance); + returnData.add(vo); + }*/ + if(item.getEquipmentProvinceId().equals(plant.getProvinceId()) && + item.getEquipmentCityId().equals(plant.getCityId()) && + item.getEquipmentDistrictId().equals(plant.getDistrictId()) ){ + // 计算距离 RepairOrderListVo vo = new RepairOrderListVo(); BeanUtils.copyProperties(item, vo); @@ -242,7 +276,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void confirmServiceOfferPrice(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); Assert.isTrue(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus(), "订单状态错误"); @@ -266,15 +300,17 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void confirmedScrap(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废(0=是,1=否) + repairOrder.setScrapConfirmation(repairOrderParam.getScrapConfirmation()); // 报废确认(0=是,1=否) repairOrder.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄(0=是 1=否) repairOrder.setDeliveryMethod(repairOrderParam.getDeliveryMethod()); // 收件方式(0=物流快递 1-上门取件 2-送货上门) - repairOrder.setConsigneeAddressId(repairOrderParam.getConsigneeAddressId()); // 收件地址 + repairOrder.setClientScrapAddressId(repairOrderParam.getClientScrapAddressId()); // 客户报废收件地址 repairOrder.setClientScrapRemark(repairOrderParam.getClientScrapRemark()); // 客户报废备注 repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus()); + repairOrder.setOrderAccomplishTime(new Date()); //订单完成时间 repairOrderMapper.updateById(repairOrder); } @@ -285,7 +321,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void uploadPictures(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); if(repairOrderParam.getInMaintenanceImg() != null){ repairOrder.setInMaintenanceImg(repairOrderParam.getInMaintenanceImg()); // 维修中照片 @@ -302,11 +338,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void scrapForm(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); - repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废(0=是,1=否) - repairOrder.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄(0=是 1=否) repairOrder.setExpressName(repairOrderParam.getExpressName()); // 快递名称 repairOrder.setExpressNo(repairOrderParam.getExpressNo()); // 快递单号 repairOrderMapper.updateById(repairOrder); @@ -319,7 +353,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void fillInReceipt(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); Assert.notNull(repairOrderParam.getFamiliarFaultId(), "结论类型不可为空"); Assert.notNull(repairOrderParam.getFamiliarFaultDescription(), "结论描述不可为空"); @@ -341,6 +375,128 @@ public class RepairOrderServiceImpl implements IRepairOrderService { } } + /** + * 备件领用申请 + * + * @param repairOrderParam + */ + @Override + @Transactional + public void sparePartsRequisition(RepairOrderParam repairOrderParam) { + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); + Assert.notNull(repairOrder, "数据不存在"); + + //我的仓库领用 + if(repairOrder.getWarehouseType() == MaintenanceOrderStatusEnum.MY_WAREHOUSE.getStatus()){ + //获取领用备件列表 + List orderSpareParts = orderSparePartMapper.findOrderSparePartByRepairOrderId(repairOrder.getId()); + for (OrderSparePart item : orderSpareParts) { + //获取备件信息 + SparePart sparePart = sparePartMapper.findSparePartById(item.getSparePartsId()); + if(sparePart.getQuantity() >= item.getQuantity()){ + //扣除对应的数量 + sparePart.setQuantity(sparePart.getQuantity() - item.getQuantity()); + sparePartMapper.updateById(sparePart); + }else{ + throw new OperateException("仓库中【" + sparePart.getSparePartsName() + "】备件数量不足" + item.getQuantity() + sparePart.getUnit() + ",配件领用失败"); + } + } + repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); + repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); + repairOrderMapper.updateById(repairOrder); + + //我的仓库也要新增配件领用记录 并且状态是已完成 + /*SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam); + sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); + sparePartStockAuditMapper.insert(sparePartStockAudit);*/ + }else{ + SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(repairOrder.getId() + , SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + if(resultSps != null){ + //已有领取记录但被拒绝则重新审核 + resultSps.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + resultSps.setCreateTime(new Date()); + sparePartStockAuditMapper.updateById(resultSps); + }else{ + //没领过配件则创建新的领用单 + SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(repairOrderParam); + sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + sparePartStockAuditMapper.insert(sparePartStockAudit); + } + } + } + + /** + * 确认收货 + * + * @param repairOrderParam + */ + @Override + @Transactional + public void confirmReceipt(RepairOrderParam repairOrderParam) { + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); + Assert.notNull(repairOrder, "数据不存在"); + + SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(repairOrder.getId() + ,SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + if(resultSps != null){ + if(resultSps.getPurchaseStatus() == AuditStateEnum.WAIT_FOR_RECEIVING.getStatus()){ + //确认收货后可进行填写回单操作 + repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); + repairOrderMapper.updateById(repairOrder); + + //将对应的配件领用订单改成已完成 + resultSps.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); + sparePartStockAuditMapper.updateById(resultSps); + + //新增检修单操作记录 + orderOperateRecordService.addMaintenanceOrder(repairOrder.getId() + , OrderOperateRecordEnum.RECEIVE_GOODS.getDesc() + ,"检修员【"+FrontThreadLocal.get("username")+"】已确认收货"); + orderOperateRecordService.addMaintenanceOrder(repairOrder.getId() + ,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc() + ,"【"+FrontThreadLocal.get("username")+"】已完成配件领用"); + }else{ + throw new OperateException("当前订单状态无法进行确认收货"); + } + }else{ + throw new OperateException("配件领用订单未生成,不可进行确认收货"); + } + } + + /** + * 新增配件领用记录 + * @param repairOrderParam 参数 + * @return SparePartStockAudit + */ + private SparePartStockAudit getSparePartStockAudit(RepairOrderParam repairOrderParam) { + User user = userMapper.selectById(FrontThreadLocal.getUserId()); + //没领过配件则创建新的领用单 + SparePartStockAudit lastSparePartStockAudit = sparePartStockAuditMapper.findLastSparePartStockAuditByTime(TimeUtil.getCurrentTimeYYYYMMDD()); + SparePartStockAudit sparePartStockAudit = new SparePartStockAudit(); + sparePartStockAudit.setReceiptNumber(OrderUtil.getOrderNo(lastSparePartStockAudit == null ? "" :lastSparePartStockAudit.getReceiptNumber())); + sparePartStockAudit.setOrderId(repairOrderParam.getId()); + sparePartStockAudit.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + sparePartStockAudit.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); + sparePartStockAudit.setOutInWarehouseType(AuditStateEnum.STAFF_MATERIALS.getStatus()); + sparePartStockAudit.setConsignee(user.getUsername()); + sparePartStockAudit.setPhone(user.getMobile()); + sparePartStockAudit.setCreatorId(FrontThreadLocal.getUserId()); + + //获取维修员选择地址 + if(repairOrderParam.getAddressId() != null){ + UserAddress userAddress = userAddressMapper.findUserAddressById(Math.toIntExact(repairOrderParam.getAddressId())); + Map regionMap = regionService.getRegionMap(); + sparePartStockAudit.setShippingAddress(regionMap.get(userAddress.getProvinceId()) + + regionMap.get(userAddress.getCityId()) + + regionMap.get(userAddress.getDistrictId()) + + userAddress.getAddress()); + } + sparePartStockAudit.setDeliveryMethod(repairOrderParam.getDeliveryMethod()); + sparePartStockAudit.setRemark(repairOrderParam.getRemark()); + return sparePartStockAudit; + } + /** * 维修订单列表 * @@ -388,7 +544,22 @@ public class RepairOrderServiceImpl implements IRepairOrderService { vo.setPlantName(plant.getName()); } } + //故障类型名称 + Fault faultName = faultMapper.selectOne( + new LambdaQueryWrapper() + .eq(Fault::getId, vo.getFaultId())); + if(faultName != null){ + vo.setFaultName(faultName.getName()); + } + //设置备件领用信息 + SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(item.getId() + ,SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + if(sparePartStockAudit != null){ + SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo(); + BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo); + vo.setSparePartStockAudit(sparePartStockAuditDetailVo); + } vo.setCreateTime(item.getCreateTime()); vo.setUpdateTime(item.getUpdateTime()); list.add(vo); @@ -417,13 +588,16 @@ public class RepairOrderServiceImpl implements IRepairOrderService { RepairOrderDetailVo vo = new RepairOrderDetailVo(); BeanUtils.copyProperties(model, vo); vo.setUpdateTime(model.getUpdateTime()); - //客户名称 + //客户名称 负责人 联系电话 Client clientName = clientMapper.selectOne( new QueryWrapper() .eq("id", model.getClientId())); if(clientName != null){ vo.setClientName(clientName.getClientName()); + vo.setDirector(clientName.getDirector()); + vo.setPhone(clientName.getPhone()); } + //创建人名称 User creatorName = userMapper.selectOne( new QueryWrapper() @@ -431,13 +605,16 @@ public class RepairOrderServiceImpl implements IRepairOrderService { if(creatorName != null){ vo.setCreatorName(creatorName.getUsername()); } - //接单人名称 + + //接单人名称 接单人联系电话 User user = userMapper.selectOne( new QueryWrapper() .eq("id", model.getReceiverId())); if(user != null){ vo.setReceiverName(user.getUsername()); + vo.setReceiverPhone(user.getMobile()); } + //管辖工厂 SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( new QueryWrapper() @@ -451,6 +628,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { vo.setPlantName(plant.getName()); } } + //回寄地址 UserAddress userAddress = userAddressMapper.selectOne( new QueryWrapper() @@ -464,6 +642,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId())); vo.setAddress(userAddressListVo); } + //报废地址 UserAddress scrapAddress = userAddressMapper.selectOne( new QueryWrapper() @@ -476,6 +655,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId())); vo.setScrapAddress(scrapAddressListVo); } + //设备信息 Equipment equipment = equipmentMapper.selectOne( new QueryWrapper() @@ -488,6 +668,51 @@ public class RepairOrderServiceImpl implements IRepairOrderService { BeanUtils.copyProperties(equipment, equipmentListVo); vo.setEquipment(equipmentListVo); } + + //故障类型名称 + Fault faultName = faultMapper.selectOne( + new LambdaQueryWrapper() + .eq(Fault::getId, vo.getFaultId())); + if(faultName != null){ + vo.setFaultName(faultName.getName()); + } + + //设置配件清单 + List orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper() + .eq(OrderSparePart::getRepairOrderId, model.getId())); + List orderSparePartListVos = new ArrayList<>(); + for (OrderSparePart item : orderSpareParts) { + OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo(); + BeanUtils.copyProperties(item, orderSparePartListVo); + //仓库名称 + Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper() + .eq(Warehouse::getId, item.getWarehouseId())); + orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName()); + orderSparePartListVos.add(orderSparePartListVo); + } + vo.setSparePartList(orderSparePartListVos); + + //确认报废 收件地址 + UserAddress clientScrapAddress = userAddressMapper.selectOne( + new QueryWrapper() + .eq("id", model.getClientScrapAddressId())); + if(clientScrapAddress != null){ + UserAddressListVo clientScrapAddressVo = new UserAddressListVo(); + BeanUtils.copyProperties(clientScrapAddress, clientScrapAddressVo); + clientScrapAddressVo.setProvince(regionMap.get(clientScrapAddressVo.getProvinceId())); + clientScrapAddressVo.setCity(regionMap.get(clientScrapAddressVo.getCityId())); + clientScrapAddressVo.setDistrict(regionMap.get(clientScrapAddressVo.getDistrictId())); + vo.setClientScrapAddress(clientScrapAddressVo); + } + + //设置备件领用信息 + SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(model.getId() + ,SparePartStockAuditEnum.REPAIR_ORDER.getStatus()); + if(sparePartStockAudit != null){ + SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo(); + BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo); + vo.setSparePartStockAudit(sparePartStockAuditDetailVo); + } return vo; } @@ -535,7 +760,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void grabTheOrder(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus() @@ -555,7 +780,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService { */ @Override public void receivingOrder(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){ @@ -572,8 +797,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService { * @param repairOrderParam */ @Override + @Transactional public void refundOrder(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); Assert.notNull(repairOrderParam.getCancelCause(), "退单原因不可为空"); @@ -613,8 +839,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService { * @param repairOrderParam */ @Override + @Transactional public void faultDetect(RepairOrderParam repairOrderParam) { - RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId()); + RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId()); Assert.notNull(repairOrder, "数据不存在"); repairOrder.setWarehouseType(repairOrderParam.getWarehouseType()); // 仓库类型 0-我的仓库 1-公共仓库 @@ -622,8 +849,10 @@ public class RepairOrderServiceImpl implements IRepairOrderService { Client client = clientMapper.findClientById(repairOrder.getClientId()); //判断当前客户是全包还是半包 - if(client.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus()){ + if(client.getMaintainType() == ClientStatusEnum.MODULE_MAINTENANCE_ALL_WRAPPED.getStatus()){ + //全包直接变成维修中状态,需要更改是否维修状态为是 repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); + repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); }else{ repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()); } @@ -637,33 +866,36 @@ public class RepairOrderServiceImpl implements IRepairOrderService { orderSparePartMapper.deleteById(orderSparePart); } - for (SparePartParam item : repairOrderParam.getSparePartParams()) { - SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); + //确认报废不用填配件数据 + if(repairOrderParam.getScrapOrNot() == RepairOrderStatusEnum.NO.getStatus()){ + for (SparePartParam item : repairOrderParam.getSparePartParams()) { + SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); + Assert.notNull(sparePart, "配件数据不存在"); - OrderSparePart orderSparePart = new OrderSparePart(); - BeanUtils.copyProperties(sparePart, orderSparePart); + OrderSparePart orderSparePart = new OrderSparePart(); + BeanUtils.copyProperties(sparePart, orderSparePart); - orderSparePart.setId(null); - orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id - orderSparePart.setSparePartsId(item.getId()); // 备件id - orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id - orderSparePart.setQuantity(item.getQuantity()); // 数量 + orderSparePart.setId(null); + orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id + orderSparePart.setSparePartsId(item.getId()); // 备件id + orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id + orderSparePart.setQuantity(item.getQuantity()); // 数量 - //设置订单实际价格 - BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPurchaseDivisor()); - orderSparePart.setUnitPrice(practicalPrice); // 价格 + //设置订单实际价格 = 单价 * 配件维修价格因子 + BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPartMaintainDivisor()); + orderSparePart.setUnitPrice(practicalPrice); // 价格 + // 总价 = 订单实际价格 * 数量 + BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity())); + actualAmount = actualAmount.add(totalPrice); - BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity())); - actualAmount = actualAmount.add(totalPrice); + orderSparePart.setTotalPrice(totalPrice); // 总价 - orderSparePart.setTotalPrice(totalPrice); // 总价 - - orderSparePartMapper.insert(orderSparePart); + orderSparePartMapper.insert(orderSparePart); + } + repairOrder.setTotalAmount(actualAmount); // 总金额 + repairOrder.setActualAmount(actualAmount); // 实际金额 } - repairOrder.setTotalAmount(actualAmount); // 总金额 - repairOrder.setActualAmount(actualAmount); // 实际金额 - repairOrder.setFaultId(repairOrderParam.getFaultId()); //故障原因id repairOrder.setFaultCode(repairOrderParam.getFaultCode()); //故障代码 repairOrder.setPreMaintenanceImg(repairOrderParam.getPreMaintenanceImg()); // 维修前图片 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 f5e43e8..8978c2d 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 @@ -101,7 +101,7 @@ public class SparePartServiceImpl implements ISparePartService { if(param.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ practicalPrice = item.getUnitPrice().multiply(client.getPointMaintainDivisor()); }else{ - practicalPrice = item.getUnitPrice().multiply(client.getPurchaseDivisor()); + practicalPrice = item.getUnitPrice().multiply(client.getPartMaintainDivisor()); } sparePartListVo.setUnitPrice(practicalPrice); 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 b98a944..4dae7bb 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 @@ -133,6 +133,7 @@ public class RepairOrderParam implements Serializable { private String familiarFaultDescription; // 常见维修结论描述 private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String completeImg; // 完工照片 - + private Long clientScrapAddressId; // 客户报废收货地址 + private Long scrapConfirmation; // 报废确认(0=是,1=否) } 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 02a04dd..95555aa 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 @@ -19,7 +19,8 @@ public class OrderSparePartListVo implements Serializable { private Long sparePartsId; // 备件id private String sparePartsCode; // 备件编码 private String sparePartsName; // 备件名称 - private Long warehouseId; // 所属仓库名称 + private Long warehouseId; // 所属仓库名id + private String warehouseName; // 所属仓库名称 private String specificationsModel; // 规格型号 private String unit; // 单位 private BigDecimal unitPrice; // 价格 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 648b9ae..223cc76 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 @@ -4,11 +4,14 @@ import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Equipment; import com.hcy.front.vo.address.UserAddressListVo; import com.hcy.front.vo.client.EquipmentListVo; +import com.hcy.front.vo.client.EquipmentModelDetailVo; +import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * RepairOrderVo @@ -44,6 +47,7 @@ public class RepairOrderDetailVo implements Serializable { private Integer priorityId; // 优先级 0-普通 1-加急 private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回 private String expressName; // 快递名称 + private String expressNo; // 快递单号 private Integer returnOrNot; // 是否回寄(0=是 1=否) private Long addressId; // 回寄地址 private String siteImg; // 现场照片 @@ -54,13 +58,47 @@ public class RepairOrderDetailVo implements Serializable { private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员 private UserAddressListVo address; //地址信息 private EquipmentListVo equipment; //设备信息 - private Integer scrapAddressId; // 报废地址 + private Long scrapAddressId; // 报废地址 private UserAddressListVo scrapAddress; //报废地址信息 private String returnCause; //退回原因 private Integer deliveryMethod; // 收件方式(0=物流快递 1-上门取件 2-送货上门) private Long consigneeAddressId; // 收件地址 + private UserAddressListVo consigneeAddress; //收件地址 + private String clientScrapRemark; // 客户报废备注 private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String completeImg; // 完工照片 + private String faultName; //故障名称 + private Integer scrapOrNot; // 是否报废(0=是,1=否) + private String preMaintenanceImg; // 维修前照片 + private String faultPointImg; // 故障点照片 + private String inMaintenanceImg; // 维修中照片 + private String afterRepairImg; // 维修后照片 + private Date orderAccomplishTime; // 订单完成时间 + private Date quotationTime; // 报价时间 + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 + private String refuseMaintenanceCause; // 拒绝维修原因 + + private BigDecimal totalAmount; // 总金额 + private BigDecimal actualAmount; // 实际金额 + + private List sparePartList; // 备件清单 + private EquipmentModelDetailVo equipmentModel; //设备模块信息 + private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息 + + private String director; // 负责人 + private String phone; // 联系电话 + private String receiverPhone; // 接单人联系电话 + + private Long scrapFaultId; // 报废类型id + private String scrapExplain; // 报废说明 + + private Long clientScrapAddressId; // 客户报废收货地址id + private UserAddressListVo clientScrapAddress; //客户报废收货地址 + + private Long scrapConfirmation; // 报废确认(0=是,1=否) + private Integer warehouseType; // 仓库类型 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 78cb55b..8c8bd52 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 @@ -1,8 +1,10 @@ package com.hcy.front.vo.order; +import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; /** @@ -36,7 +38,7 @@ public class RepairOrderListVo implements Serializable { private Date createTime; // 创建时间 private Date updateTime; // 更新时间 private Long maintenanceOrderId; // 检修单id - private Long priorityId; // 优先级 0-普通 1-加急 + private Integer priorityId; // 优先级 0-普通 1-加急 private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回 private String expressName; // 快递名称 private Integer returnOrNot; // 是否回寄(0=是 1=否) @@ -53,6 +55,12 @@ public class RepairOrderListVo implements Serializable { private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 + private Date quotationTime; // 报价时间 + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 + private String refuseMaintenanceCause; // 拒绝维修原因 + private String returnCause; //退回原因 + private String faultName; //故障名称 private String equipmentNo; //设备编号 private String equipmentName; //设备名称 @@ -62,5 +70,15 @@ public class RepairOrderListVo implements Serializable { private Long consigneeAddressId; // 收件地址 private String clientScrapRemark; // 客户报废备注 private String completeImg; // 完工照片 + private Integer scrapOrNot; // 是否报废(0=是,1=否) + private String inMaintenanceImg; // 维修中照片 + private String afterRepairImg; // 维修后照片 + private Date orderAccomplishTime; // 订单完成时间 + private BigDecimal totalAmount; // 总金额 + private BigDecimal actualAmount; // 实际金额 + private Long clientScrapAddressId; // 客户报废收货地址 + private Long scrapConfirmation; // 报废确认(0=是,1=否) + + private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息 }