From b5589499fb41a6fb57346080404762998d45c209 Mon Sep 17 00:00:00 2001 From: zhouxinyu <121470181@qq.com> Date: Wed, 12 Feb 2025 16:40:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/contraller/DeviceController.java | 30 +++++++++- .../business/excel/DeviceImportExcel.java | 2 +- .../pojo/entity/workorder/WorkOrder.java | 4 ++ .../pojo/vo/workorder/WorkOrderVO.java | 5 ++ .../service/impl/DeviceServiceImpl.java | 55 ++++++++++++++++++- .../service/impl/WorkOrderServiceImpl.java | 1 + 6 files changed, 92 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java index 91667e7..fc7158a 100644 --- a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java @@ -1,5 +1,7 @@ package org.springblade.modules.business.contraller; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.metadata.style.WriteFont; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -12,9 +14,10 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.IndexedColors; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; -import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -31,8 +34,6 @@ import org.springblade.modules.business.pojo.dto.DeviceDTO; import org.springblade.modules.business.pojo.entity.Device; import org.springblade.modules.business.pojo.entity.DeviceAttach; import org.springblade.modules.business.pojo.entity.DeviceMaintenance; -import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; -import org.springblade.modules.business.pojo.entity.supplies.Apply; import org.springblade.modules.business.pojo.vo.DeviceVO; import org.springblade.modules.business.service.IDeviceAttachService; import org.springblade.modules.business.service.IDeviceMaintenanceService; @@ -268,6 +269,29 @@ public class DeviceController extends BladeController { // deviceExcel.setFloorName("三层"); // deviceExcel.setRoomName("301"); // list.add(deviceExcel); + // 示例数据 1 + DeviceImportExcel device1 = new DeviceImportExcel(); + device1.setCode("NT-MAU-401"); + device1.setName("测试设备"); + device1.setTypeName("一级分类/二级分类/三级分类"); + device1.setCheckContent("1、巡检内容;\n2、巡检内容;\n(请使用分号分割每条巡检内容)"); + device1.setCraft("1、工艺要求一;\n2、工艺要求;\n(请使用分号分割每条工艺要求)"); + device1.setDescription("上传格式以此条为准,导入时请将此条示例数据删除"); + list.add(device1); + + // 配置样式 + WriteCellStyle yellowFillStyle = new WriteCellStyle(); + yellowFillStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); + yellowFillStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + yellowFillStyle.setWrapped(true); + + WriteFont yellowFont = new WriteFont(); + yellowFont.setColor(IndexedColors.BLACK.getIndex()); + yellowFont.setBold(true); + yellowFillStyle.setWriteFont(yellowFont); + + + ExcelUtil.export(response, "设备模板", "设备表", list, DeviceImportExcel.class); } diff --git a/src/main/java/org/springblade/modules/business/excel/DeviceImportExcel.java b/src/main/java/org/springblade/modules/business/excel/DeviceImportExcel.java index 21a1c24..91924a6 100644 --- a/src/main/java/org/springblade/modules/business/excel/DeviceImportExcel.java +++ b/src/main/java/org/springblade/modules/business/excel/DeviceImportExcel.java @@ -29,7 +29,7 @@ public class DeviceImportExcel implements Serializable { private String name; @ExcelProperty("设备类型") - private String type; + private String typeName; @ExcelProperty({"巡检相关","巡检内容"}) private String checkContent; diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java index 2bcfe6a..9bbaa6f 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java @@ -186,6 +186,10 @@ public class WorkOrder extends BaseEntity { * 评价时效是否满意(0否 1是) */ private Integer isOkValidity; + /** + * 评价意见 + */ + private String evaluationRemarks; /** * 签名图片地址 diff --git a/src/main/java/org/springblade/modules/business/pojo/vo/workorder/WorkOrderVO.java b/src/main/java/org/springblade/modules/business/pojo/vo/workorder/WorkOrderVO.java index 3eb9b61..eb1cc81 100644 --- a/src/main/java/org/springblade/modules/business/pojo/vo/workorder/WorkOrderVO.java +++ b/src/main/java/org/springblade/modules/business/pojo/vo/workorder/WorkOrderVO.java @@ -57,4 +57,9 @@ public class WorkOrderVO extends WorkOrder { * 提交用户地址 */ private String address; + + /** + * 评价意见 + */ + private String evaluationRemarks; } diff --git a/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java index 05e25e5..b154a67 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java @@ -26,11 +26,13 @@ import org.springblade.modules.business.pojo.dto.DeviceDTO; import org.springblade.modules.business.pojo.entity.Device; import org.springblade.modules.business.pojo.entity.DeviceAttach; import org.springblade.modules.business.pojo.entity.DeviceMaintenance; +import org.springblade.modules.business.pojo.entity.DeviceType; import org.springblade.modules.business.pojo.vo.DeviceVO; import org.springblade.modules.business.pojo.vo.PieStatVO; import org.springblade.modules.business.service.IDeviceAttachService; import org.springblade.modules.business.service.IDeviceMaintenanceService; import org.springblade.modules.business.service.IDeviceService; +import org.springblade.modules.business.service.IDeviceTypeService; import org.springblade.modules.system.pojo.entity.Dept; import org.springblade.modules.system.pojo.vo.DeptVO; import org.springblade.modules.system.service.IDeptService; @@ -38,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -53,6 +56,7 @@ public class DeviceServiceImpl extends BaseServiceImpl imp private final IDeviceAttachService deviceAttachService; private final IDeviceMaintenanceService maintenanceService; + private final IDeviceTypeService typeService; private final IDeptService deptService; @Override @@ -73,7 +77,10 @@ public class DeviceServiceImpl extends BaseServiceImpl imp @Override @Transactional(rollbackFor = Exception.class) public boolean add(DeviceDTO device) { - device.setCode("编码格式待定"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String timestamp = sdf.format(new Date()); + String typeName = device.getTypeName().replace("/", "-"); + device.setCode(typeName + "-" + timestamp); device.setRunStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING); boolean save = this.save(device); // 附件保存 @@ -219,9 +226,32 @@ public class DeviceServiceImpl extends BaseServiceImpl imp if(StringUtils.isEmpty(deviceExcel.getCode())){ throw new ServiceException("设备" + deviceExcel.getName() + "未填写设备编码,请修改后再上传!"); } + if(StringUtils.isEmpty(deviceExcel.getTypeName())){ + throw new ServiceException("设备" + deviceExcel.getName() + "未填写设备类型,请修改后再上传!"); + } Device device = BeanUtil.copyProperties(deviceExcel, Device.class); DeviceMaintenance deviceMaintenance = BeanUtil.copyProperties(deviceExcel, DeviceMaintenance.class); if (device != null) { + // 根据传入的typeName查询设备id + String fullTypeName = device.getTypeName(); + String[] typeParts = fullTypeName.split("/"); + String name = typeParts[typeParts.length - 1].trim(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(DeviceType.class) + .eq(DeviceType::getTypeName, name); + DeviceType deviceType = typeService.getOne(wrapper); + if (deviceType != null) { + StringBuilder parentIds = new StringBuilder(); + getAllParentIdsRecursive(deviceType.getId(), parentIds); + // 移除最后一个逗号 + if (parentIds.length() > 0) { + parentIds.setLength(parentIds.length() - 1); + } else { + parentIds.append(deviceType.getId()); + } + device.setType(parentIds.toString()); + } else { + throw new ServiceException("设备" + deviceExcel.getName() + "的设备类型不存在,请填写正确的设备类型"); + } //根据编码查询设备 Device oldDevice = this.getOne(Wrappers.lambdaQuery(Device.class).eq(Device::getCode,device.getCode()).eq(BaseEntity::getIsDeleted,0)); if (oldDevice != null) { @@ -242,6 +272,29 @@ public class DeviceServiceImpl extends BaseServiceImpl imp }); } + /** + * 递归方法获取所有上级的 ID 并拼接到 StringBuilder 中 + * + * @param currentId 当前父级 ID + * @param parentIds 拼接结果 + */ + private void getAllParentIdsRecursive(Long currentId, StringBuilder parentIds) { + if (currentId == null) { + return; + } + + // 查询当前设备类型 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(DeviceType.class) + .eq(DeviceType::getId, currentId); + DeviceType currentType = typeService.getOne(wrapper); + + if (currentType != null) { + // 先递归查询父级,再添加当前 ID + getAllParentIdsRecursive(currentType.getParentId(), parentIds); + parentIds.append(currentType.getId()).append(","); + } + } + @Override public List limsList(Device device) { diff --git a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java index b861767..bb49e5c 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java @@ -477,6 +477,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl