From e12fc742e6529b29c9358aea8b9a4e962fc018b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E5=AE=8F=E7=A5=A5?= <14281818+xue-hongxiang@user.noreply.gitee.com> Date: Tue, 14 Jan 2025 13:26:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/contraller/DeviceController.java | 7 + .../contraller/MaintenanceController.java | 6 + .../modules/business/pojo/dto/DeviceDTO.java | 3 +- .../business/pojo/dto/MaintenanceTaskDto.java | 30 ++ .../modules/business/pojo/entity/Device.java | 5 + .../entity/maintenance/MaintenanceTask.java | 357 ++++++++++-------- .../pojo/entity/workorder/WorkOrder.java | 7 +- .../modules/business/pojo/vo/DeviceVO.java | 6 +- .../impl/MaintenancePlanServiceImpl.java | 2 + .../service/impl/WorkOrderServiceImpl.java | 162 ++++---- .../excel/WorkOrderServiceSheet.xlsx | Bin 11681 -> 11734 bytes 11 files changed, 348 insertions(+), 237 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 6d200f0..292d600 100644 --- a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java @@ -31,6 +31,8 @@ import org.springblade.modules.business.pojo.vo.DeviceVO; 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.system.pojo.entity.User; +import org.springblade.modules.system.service.IUserService; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -51,6 +53,7 @@ public class DeviceController extends BladeController { private final IDeviceService deviceService; private final IDeviceAttachService deviceAttachService; private final IDeviceMaintenanceService maintenanceService; + private final IUserService userService; /** * 设备表 详情 @@ -89,6 +92,10 @@ public class DeviceController extends BladeController { wrapper.like(StringUtils.isNotBlank(device.getSupplier()), Device::getSupplier, device.getSupplier()); wrapper.eq(device.getLimsId() != null, Device::getLimsId, device.getLimsId()); wrapper.eq(device.getRunStatus() != null, Device::getRunStatus, device.getRunStatus()); + if (device.getCreateUser() != null) { + User user = userService.getById(device.getCreateUser()); + wrapper.eq(Device::getLimsId, user.getDeptId()); + } // wrapper.eq(Device::getCreateUser, AuthUtil.getUserId()); wrapper.orderByDesc(Device::getCreateTime); try { diff --git a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java index 222450d..e5acd1f 100644 --- a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java @@ -296,6 +296,12 @@ public class MaintenanceController extends BladeController { MaintenanceTask task = taskDto.getTask(); MaintenanceTask taskOld = taskService.getById(task.getId()); taskOld.setRepairStatus(MaintenanceStatusEnum.REPAIR_SERVICEMAN_CREATE.getValue()); + taskOld.setFaultCause(taskDto.getFaultCause()); + taskOld.setFaultDescribe(taskDto.getFaultDescribe()); + taskOld.setProcessingResult(taskDto.getProcessingResult()); + taskOld.setTravelExpense(taskDto.getTravelExpense()); + taskOld.setInspectionConclusion(taskDto.getInspectionConclusion()); + taskOld.setTotalPrice(taskDto.getTotalPrice()); taskService.updateById(taskOld); List detailList = taskDto.getDetailList(); for (MaintenanceTaskDetail maintenanceTaskDetail : detailList) { diff --git a/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java b/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java index 0a656aa..6440ba1 100644 --- a/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java +++ b/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java @@ -50,5 +50,6 @@ public class DeviceDTO extends Device { //单位 private String unit; - + //用户 + private Long createUser; } diff --git a/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java b/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java index 4b438f0..d1be3b4 100644 --- a/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java +++ b/src/main/java/org/springblade/modules/business/pojo/dto/MaintenanceTaskDto.java @@ -19,4 +19,34 @@ public class MaintenanceTaskDto { MaintenanceTask task; List detailList; + + /** + * 故障现象 + */ + private String faultDescribe; + + /** + * 故障产生原因 + */ + private String faultCause; + + /** + * 处理结果 + */ + private String processingResult; + + /** + * 差旅费 + */ + private Double travelExpense; + + /** + * 巡检结论 + */ + private String inspectionConclusion; + + /** + * 总价 + */ + private Double totalPrice; } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/Device.java b/src/main/java/org/springblade/modules/business/pojo/entity/Device.java index 7bbe787..c68e8f6 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/Device.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/Device.java @@ -116,4 +116,9 @@ public class Device extends BaseEntity { * 单位 */ private String unit; + + /** + * 描述 + */ + private String description; } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java index 2649701..646b84a 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenanceTask.java @@ -24,168 +24,197 @@ import java.util.List; @Schema(description = "维保任务") public class MaintenanceTask extends BaseEntity { - /** - * 业务状态, 0:正常, 1:异常 - */ - @Schema(description = "业务状态", hidden = true) - private Integer status; - - /** - * 计划ID - */ - private Long planId; - - /** - * 巡检单号 - */ - private String taskCode; - - /** - * 单位 - */ - private Long deptId; - - /** - * 单位名称 - */ - private String deptName; - - /** - * 项目名称 - */ - private String taskName; - - /** - * 项目地址 - */ - private String address; - - /** - * 巡检人 - */ - private Long servicemanId; - - /** - * 巡检人 - */ - private String servicemanName; - - /** - * 巡检说明 - */ - private String taskContent; - - /** - * 计划开始时间 - */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date startTime; - /** - * 预约上门时间 - */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date reservationTime; - - /** - * 附件详情 - */ - @TableField(exist = false) - private String statusSearch; - - /** - * 任务状态 - */ - private Integer taskStatus; - - /** - * 巡检完成时间 - */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date finishTime; - - /** - * 维修状态 - */ - private Integer repairStatus; - - /** - * 审批结果(0不通过 1通过) - */ - private Integer approveResult; - - /** - * 审核节点 - */ - private String approvePoint; - - /** - * 审批人 - */ - private Long approvePerson; - - /** - * 审批时间 - */ - private Date approveTime; - - /** - * 审批备注 - */ - private String approveRemark; - - /** - * 附件详情 - */ - @TableField(exist = false) - private List attaches; - - /** - * 评价质量是否满意(0否 1是) - */ - private Integer isOkQuality; - - /** - * 评价安全是否满意(0否 1是) - */ - private Integer isOkSecure; - - /** - * 评价时效是否满意(0否 1是) - */ - private Integer isOkValidity; - - /** - * 签名图片地址 - */ - private String signatureUrl; - - /** - * 签名人 - */ - private String signaturePerson; - - /** - * 签名时间 - */ - private Date signatureTime; - - /** - * 签字图片地址 - */ - private String signUrl; - - /** - * 备注 - */ - private String remark; - - /** - * 计划详情 - */ - @TableField(exist = false) - private List details; - + /** + * 业务状态, 0:正常, 1:异常 + */ + @Schema(description = "业务状态", hidden = true) + private Integer status; + + /** + * 计划ID + */ + private Long planId; + + /** + * 巡检单号 + */ + private String taskCode; + + /** + * 单位 + */ + private Long deptId; + + /** + * 单位名称 + */ + private String deptName; + + /** + * 项目名称 + */ + private String taskName; + + /** + * 项目地址 + */ + private String address; + + /** + * 巡检人 + */ + private Long servicemanId; + + /** + * 巡检人 + */ + private String servicemanName; + + /** + * 巡检说明 + */ + private String taskContent; + + /** + * 计划开始时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startTime; + /** + * 预约上门时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date reservationTime; + + /** + * 附件详情 + */ + @TableField(exist = false) + private String statusSearch; + + /** + * 任务状态 + */ + private Integer taskStatus; + + /** + * 巡检完成时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date finishTime; + + /** + * 维修状态 + */ + private Integer repairStatus; + + /** + * 审批结果(0不通过 1通过) + */ + private Integer approveResult; + + /** + * 审核节点 + */ + private String approvePoint; + + /** + * 审批人 + */ + private Long approvePerson; + + /** + * 审批时间 + */ + private Date approveTime; + + /** + * 审批备注 + */ + private String approveRemark; + + /** + * 附件详情 + */ + @TableField(exist = false) + private List attaches; + + /** + * 评价质量是否满意(0否 1是) + */ + private Integer isOkQuality; + + /** + * 评价安全是否满意(0否 1是) + */ + private Integer isOkSecure; + + /** + * 评价时效是否满意(0否 1是) + */ + private Integer isOkValidity; + + /** + * 签名图片地址 + */ + private String signatureUrl; + + /** + * 签名人 + */ + private String signaturePerson; + + /** + * 签名时间 + */ + private Date signatureTime; + + /** + * 签字图片地址 + */ + private String signUrl; + + /** + * 备注 + */ + private String remark; + + /** + * 计划详情 + */ + @TableField(exist = false) + private List details; + + /** + * 故障现象 + */ + private String faultDescribe; + + /** + * 故障产生原因 + */ + private String faultCause; + + /** + * 处理结果 + */ + private String processingResult; + + /** + * 差旅费 + */ + private Double travelExpense; + + /** + * 巡检结论 + */ + private String inspectionConclusion; + + /** + * 总价 + */ + private Double totalPrice; } 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 2107ad6..a79022a 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 @@ -239,7 +239,12 @@ public class WorkOrder extends BaseEntity { private Integer repairType; /** - * 维修类型 1紧急维修 2故障维修 3改造需求 + * 人工费 */ + private Double laborCost; + /** + * 差旅费 + */ + private Double travelExpense; } diff --git a/src/main/java/org/springblade/modules/business/pojo/vo/DeviceVO.java b/src/main/java/org/springblade/modules/business/pojo/vo/DeviceVO.java index edcb095..04aa999 100644 --- a/src/main/java/org/springblade/modules/business/pojo/vo/DeviceVO.java +++ b/src/main/java/org/springblade/modules/business/pojo/vo/DeviceVO.java @@ -18,9 +18,9 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) public class DeviceVO extends Device { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - List attaches; - List maintenances; + List attaches; + List maintenances; } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java index 099ee03..aeed47d 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java @@ -338,6 +338,8 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl taskDetails = new ArrayList<>(); + MaintenanceTaskDetail maintenanceTaskDetail = new MaintenanceTaskDetail(); + List list = taskService.list(Wrappers.lambdaQuery(MaintenanceTask.class).eq(MaintenanceTask::getPlanId, planId)); for (MaintenancePlanDetail newPlanDetail : newDetails) { MaintenanceTaskDetail taskDetail = new MaintenanceTaskDetail(); taskDetail.setTaskId(maintenanceTask.getId()); 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 6977ee5..758408f 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 @@ -7,6 +7,7 @@ import com.alibaba.excel.metadata.data.ImageData; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.undertow.util.FileUtils; import jakarta.servlet.ServletOutputStream; @@ -572,6 +573,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl map = new HashMap<>(); double total = workOrder.getTotalPrice(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); List workOrderRepairMaterialList = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); @@ -587,29 +589,32 @@ public class WorkOrderServiceImpl extends BaseServiceImpl signatureUrl = Optional.ofNullable(workOrder.getSignatureUrl()); + if (signatureUrl.isPresent() && StringUtils.isNotBlank(signatureUrl.get())) { + URL url = new URL(signatureUrl.get()); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setRequestMethod("GET"); + httpURLConnection.setDoInput(true); + InputStream inputStream = httpURLConnection.getInputStream(); + BufferedImage image = ImageIO.read(inputStream); + if (image != null) { + System.out.println("图片加载成功"); + } else { + System.out.println("图片加载失败"); + throw new IOException(); + } + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ImageIO.write(image, "png", byteArrayOutputStream); // 将图片写入输出流 + byte[] imageBytes = byteArrayOutputStream.toByteArray(); + Double width = Double.valueOf(image.getWidth()); + Double height = Double.valueOf(image.getHeight()); + WriteCellData voidWriteCellData = TemplateExcelUtils.imageCells(imageBytes, width, height, 0.6, 1.9); + map.put("image", voidWriteCellData); } - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - ImageIO.write(image, "png", byteArrayOutputStream); // 将图片写入输出流 - byte[] imageBytes = byteArrayOutputStream.toByteArray(); - Double width = Double.valueOf(image.getWidth()); - Double height = Double.valueOf(image.getHeight()); - WriteCellData voidWriteCellData = TemplateExcelUtils.imageCells(imageBytes, width, height, 0.6, 1.9); User repairPerson = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getRepairPerson())); - Map map = new HashMap<>(); User customer = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getInformant())); map.put("customerName", customer.getRealName()); map.put("informant", customer.getRealName()); @@ -621,28 +626,38 @@ public class WorkOrderServiceImpl extends BaseServiceImpl isWarran = Optional.ofNullable(device.getIsWarran()); - if (isWarran.isPresent()) { - if (isWarran.get() == 1) { - map.put("in", "--"); - map.put("out", total); - map.put("sel2", "√"); - } else { - map.put("in", total); + Optional finishTime = Optional.ofNullable(workOrder.getFinishTime()); + if (finishTime.isPresent()) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); + map.put("finishTime", simpleDateFormat.format(finishTime.get())); + } + Optional device = Optional.ofNullable(deviceService.getOne(Wrappers.lambdaQuery(Device.class).eq(Device::getId, workOrder.getDeviceId()))); + if (device.isPresent()) { + Optional limsId = Optional.ofNullable(device.get().getLimsId()); + if (limsId.isPresent()) { + map.put("in", total + workOrder.getLaborCost()); map.put("out", "--"); map.put("sel1", "√"); + map.put("sel2", null); + map.put("inTravel", workOrder.getTravelExpense()); + map.put("outTravel", "--"); + } else { + map.put("in", "--"); + map.put("out", total + workOrder.getLaborCost()); + map.put("sel2", "√"); + map.put("sel1", null); + map.put("outTravel", workOrder.getTravelExpense()); + map.put("inTravel", "--"); } } else { map.put("in", "--"); - map.put("out", "--"); + map.put("out", total + workOrder.getLaborCost()); map.put("sel2", "√"); map.put("sel1", null); + map.put("outTravel", workOrder.getTravelExpense()); + map.put("inTravel", "--"); } Optional status = Optional.ofNullable(workOrder.getStatus()); if (status.isPresent()) { @@ -673,6 +688,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl map = new HashMap<>(); double total = workOrder.getTotalPrice(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); List workOrderRepairMaterialList = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); @@ -688,29 +704,32 @@ public class WorkOrderServiceImpl extends BaseServiceImpl signatureUrl = Optional.ofNullable(workOrder.getSignatureUrl()); + if (signatureUrl.isPresent() && StringUtils.isNotBlank(signatureUrl.get())) { + URL url = new URL(signatureUrl.get()); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setRequestMethod("GET"); + httpURLConnection.setDoInput(true); + InputStream inputStream = httpURLConnection.getInputStream(); + BufferedImage image = ImageIO.read(inputStream); + if (image != null) { + System.out.println("图片加载成功"); + } else { + System.out.println("图片加载失败"); + throw new IOException(); + } + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ImageIO.write(image, "png", byteArrayOutputStream); // 将图片写入输出流 + byte[] imageBytes = byteArrayOutputStream.toByteArray(); + Double width = Double.valueOf(image.getWidth()); + Double height = Double.valueOf(image.getHeight()); + WriteCellData voidWriteCellData = TemplateExcelUtils.imageCells(imageBytes, width, height, 0.6, 1.9); + map.put("image", voidWriteCellData); } - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - ImageIO.write(image, "png", byteArrayOutputStream); // 将图片写入输出流 - byte[] imageBytes = byteArrayOutputStream.toByteArray(); - Double width = Double.valueOf(image.getWidth()); - Double height = Double.valueOf(image.getHeight()); - WriteCellData voidWriteCellData = TemplateExcelUtils.imageCells(imageBytes, width, height, 0.6, 1.9); User repairPerson = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getRepairPerson())); - Map map = new HashMap<>(); User customer = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getId, workOrder.getInformant())); map.put("customerName", customer.getRealName()); map.put("informant", customer.getRealName()); @@ -722,28 +741,35 @@ public class WorkOrderServiceImpl extends BaseServiceImpl isWarran = Optional.ofNullable(device.getIsWarran()); - if (isWarran.isPresent()) { - if (isWarran.get() == 1) { - map.put("in", "--"); - map.put("ou", total); - map.put("sel2", "√"); - } else { - map.put("in", total); + Optional finishTime = Optional.ofNullable(workOrder.getFinishTime()); + if (finishTime.isPresent()) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); + map.put("finishTime", simpleDateFormat.format(finishTime.get())); + } + Optional device = Optional.ofNullable(deviceService.getOne(Wrappers.lambdaQuery(Device.class).eq(Device::getId, workOrder.getDeviceId()))); + if (device.isPresent()) { + Optional limsId = Optional.ofNullable(device.get().getLimsId()); + if (limsId.isPresent()) { + map.put("in", total + workOrder.getLaborCost()); map.put("out", "--"); map.put("sel1", "√"); + map.put("sel2", null); + map.put("inTravel", workOrder.getTravelExpense()); + } else { + map.put("in", "--"); + map.put("out", total + workOrder.getLaborCost()); + map.put("sel2", "√"); + map.put("sel1", null); + map.put("outTravel", workOrder.getTravelExpense()); } } else { map.put("in", "--"); - map.put("out", "--"); + map.put("out", total + workOrder.getLaborCost()); map.put("sel2", "√"); map.put("sel1", null); + map.put("outTravel", workOrder.getTravelExpense()); } Optional status = Optional.ofNullable(workOrder.getStatus()); if (status.isPresent()) { diff --git a/src/main/resources/excel/WorkOrderServiceSheet.xlsx b/src/main/resources/excel/WorkOrderServiceSheet.xlsx index 100d6a7f383a6f91933d1899e0760ebecd885d2c..9d59238f95d118e439185ded6a6aa8dc9c0a790d 100644 GIT binary patch delta 6675 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 B&}skx delta 6607 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 iRp=kFCf0w&PFW>jlfbNOrvK}b0A>^Y5X$r~