From d288936a571381c347aa3f4113228c9f319c379d Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 11:11:12 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=B4=E4=BF=AE=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RepairAuditDetailsController.java | 1 - .../repair/domain/RepairAuditDetails.java | 2 + .../material/repair/domain/RepairPart.java | 15 +++++-- .../repair/domain/vo/RepairTicketVo.java | 4 ++ .../mapper/RepairAuditDetailsMapper.java | 2 + .../repair/service/RepairService.java | 6 ++- .../service/impl/RepairServiceImpl.java | 40 +++++++++++++++---- .../repair/RepairAuditDetailsMapper.xml | 29 ++++++++++++++ 8 files changed, 85 insertions(+), 14 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java index 4d60b421..661febef 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairAuditDetailsController.java @@ -1,7 +1,6 @@ package com.bonus.material.repair.controller; import java.util.List; -import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairAuditDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairAuditDetails.java index 5d4504ac..14578fb2 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairAuditDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairAuditDetails.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import com.bonus.common.core.web.domain.BaseEntity; +import lombok.experimental.Accessors; /** @@ -20,6 +21,7 @@ import com.bonus.common.core.web.domain.BaseEntity; @EqualsAndHashCode(callSuper = false) @Data @ToString +@Accessors(chain = true) public class RepairAuditDetails extends BaseEntity { private static final long serialVersionUID = -8752731235584328836L; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java index 3a298b98..b4d7094d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java @@ -25,8 +25,15 @@ public class RepairPart { /** * 规格ID */ - @ApiModelProperty(value = "规格ID") - private String typeId; + @ApiModelProperty(value = "规格型号ID") + private Long typeId; + + @ApiModelProperty(value = "规格型号名称") + private String typeName; + + @ApiModelProperty(value = "机具类型名称") + private String maTypeName; + /** * 配件ID */ @@ -41,12 +48,12 @@ public class RepairPart { * 返厂id */ @ApiModelProperty(value = "返厂id") - private String supplierId; + private Long supplierId; /** * 配件数量 */ @ApiModelProperty(value = "配件数量") - private int partNum; + private Integer partNum; /** * 配件费用 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairTicketVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairTicketVo.java index 341a1b42..1a83c449 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairTicketVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairTicketVo.java @@ -1,5 +1,6 @@ package com.bonus.material.repair.domain.vo; +import com.bonus.material.repair.domain.RepairPart; import com.bonus.material.repair.domain.RepairTask; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; @@ -27,6 +28,9 @@ public class RepairTicketVo { @ApiModelProperty(value = "维修物资列表") private List repairDeviceArray; + @ApiModelProperty(value = "维修内容集合") + private List repairPartArray; + // 覆盖默认get方法,防止空指针异常 public List getRepairDeviceList() { if (this.repairDeviceArray == null) {return new ArrayList<>();} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairAuditDetailsMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairAuditDetailsMapper.java index d793ff08..604c3b0c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairAuditDetailsMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairAuditDetailsMapper.java @@ -22,6 +22,8 @@ public interface RepairAuditDetailsMapper { List getPartRecord(RepairAuditDetails bean); + List getPartDetailsByTaskId(RepairAuditDetails repairAuditDetails); + List getRepairRecord(RepairAuditDetails repairAuditDetails); /** diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java index f15df446..8523b503 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java @@ -27,7 +27,11 @@ public interface RepairService { /** * 获取维修详细列表 */ - List getRepairMaTypeList(RepairTaskDetails bean); + List getRepairMaTypeList(RepairTaskDetails bean, boolean isGroup); + + default List getRepairMaTypeList(RepairTaskDetails bean) { + return getRepairMaTypeList(bean, true); + } /** * 查询维修单 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 5471cdf5..ef29965c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -14,6 +14,7 @@ import com.bonus.material.repair.domain.*; import com.bonus.material.repair.domain.vo.RepairDeviceListVo; import com.bonus.material.repair.domain.vo.RepairDeviceVO; import com.bonus.material.repair.domain.vo.RepairTicketVo; +import com.bonus.material.repair.mapper.RepairAuditDetailsMapper; import com.bonus.material.repair.mapper.RepairMapper; import com.bonus.material.repair.service.RepairService; import com.bonus.material.task.mapper.TmTaskMapper; @@ -22,18 +23,22 @@ import com.bonus.system.api.model.LoginUser; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.Valid; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * @author syruan */ @Service("RepairService") +@Validated public class RepairServiceImpl implements RepairService { @Resource @@ -45,6 +50,9 @@ public class RepairServiceImpl implements RepairService { @Resource private BmFileInfoMapper bmFileInfoMapper; + @Resource + private RepairAuditDetailsMapper repairAuditDetailsMapper; + // 1:内部维修 2:外部返厂维修 3:报废 private final int inRepairType = 1, outRepairType = 2, scrapRepairType = 3; @@ -62,11 +70,11 @@ public class RepairServiceImpl implements RepairService { } @Override - public List getRepairMaTypeList(RepairTaskDetails bean) { + public List getRepairMaTypeList(RepairTaskDetails bean, boolean isGroup) { bean.setCompanyId(null); List repairMaTypeList = repairMapper.getRepairMaTypeList(bean); - if (repairMaTypeList.isEmpty()) { + if (repairMaTypeList.isEmpty() || !isGroup) { return repairMaTypeList; } @@ -110,18 +118,18 @@ public class RepairServiceImpl implements RepairService { long thisTaskId = Long.parseLong(taskId); // 查询维修任务信息 RepairTask repairTaskInfo = repairMapper.getRepairTaskInfoByTaskId(thisTaskId); - // 查询维修任务详情 - List repairMaTypeList = getRepairMaTypeList(new RepairTaskDetails(taskId)); - // TODO: 待完善--查询维修配件信息 - List partList = new ArrayList<>(); if (Objects.isNull(repairTaskInfo)) { return AjaxResult.error("未查询到维修任务信息"); } + // 查询维修任务详情 + List repairMaTypeGroupList = getRepairMaTypeList(new RepairTaskDetails(taskId), true); + List repairPartList = repairAuditDetailsMapper.getPartDetailsByTaskId(new RepairAuditDetails().setTaskId(thisTaskId)); + repairPartList = mergePartsNum(repairPartList); - // 组装result返回对象 RepairTicketVo result = new RepairTicketVo() .setRepairTaskInfo(repairTaskInfo) - .setRepairDeviceArray(repairMaTypeList); + .setRepairDeviceArray(repairMaTypeGroupList) + .setRepairPartArray(Optional.of(repairPartList).orElse(new ArrayList<>())); return AjaxResult.success(result); } catch (NumberFormatException e) { @@ -133,6 +141,22 @@ public class RepairServiceImpl implements RepairService { } } + public static List mergePartsNum(@NotNull List devices) { + try { + Map map = devices.stream().filter(Objects::nonNull).collect(Collectors.toConcurrentMap( + device -> device.getTypeId() + ":" + device.getPartCost() + ":" + device.getPartName(), + device -> device, (existing, recently) -> { + existing.setPartNum(existing.getPartNum() + recently.getPartNum()); + return existing; + }, + ConcurrentHashMap::new + )); + return new ArrayList<>(map.values()); + } catch (Exception e) { + throw new ServiceException("Error merging parts" + e.getMessage()); + } + } + /** * 提交维修记录 * @param bean repairApplyRecord diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml index 4ac34698..f2ca1ac6 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml @@ -483,4 +483,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + \ No newline at end of file From 8aead27cfb13e07687086d8659e5309bf67251ed Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 15:56:02 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E5=A2=9E=E5=8A=A0=E7=BB=B4=E4=BF=AE?= =?UTF-8?q?=E5=8D=95=E5=B0=8F=E8=AE=A1=E8=B4=B9=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repair/domain/vo/RepairDeviceListVo.java | 7 +++++ .../repair/service/RepairService.java | 13 +++++---- .../service/impl/RepairServiceImpl.java | 28 ++++++++++++------- .../mapper/material/repair/RepairMapper.xml | 7 ++++- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java index 8ed4a21b..32fd8a56 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -60,6 +61,12 @@ public class RepairDeviceListVo extends BaseVO { @ApiModelProperty(value = "维修报废数量") private int scrapNum; + @ApiModelProperty(value = "维修费用记录条数") + private Integer totalCostRecords; + + @ApiModelProperty(value = "维修费用合计") + private BigDecimal totalCost; + @ApiModelProperty(value = "内层物资类型集合") private List repairDeviceList = new ArrayList<>(); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java index 8523b503..cdac1727 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java @@ -9,6 +9,9 @@ import com.bonus.material.repair.domain.vo.RepairDeviceListVo; import com.bonus.material.repair.domain.vo.RepairDeviceVO; import com.bonus.system.api.domain.SysUser; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; @@ -36,19 +39,19 @@ public interface RepairService { /** * 查询维修单 */ - AjaxResult getRepairTicketInfo(String taskId); + AjaxResult getRepairTicketInfo(@NotBlank(message = "TaskId参数不能为空") String taskId); /** * 提交维修记录 */ - AjaxResult submitRepairApply(RepairApplyRecord bean); + AjaxResult submitRepairApply(@NotNull(message = "参数不能为空") RepairApplyRecord bean); /** * 快捷维修记录 */ AjaxResult fastRepairApply(List list); - AjaxResult batchRepairApply(List repairDeviceVOList); + AjaxResult batchRepairApply(@NotNull List repairDeviceVOList); /** * 维修明细--批量审核--更新明细status @@ -64,9 +67,9 @@ public interface RepairService { * 提交审核 * @param taskList 任务信息集合 */ - AjaxResult endRepairTask(List taskList); + AjaxResult endRepairTask(@NotNull List taskList); - AjaxResult rejectRepair(List taskList); + AjaxResult rejectRepair(@NotNull List taskList); /** diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index ef29965c..8a6693a8 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -71,13 +71,16 @@ public class RepairServiceImpl implements RepairService { @Override public List getRepairMaTypeList(RepairTaskDetails bean, boolean isGroup) { + if (Objects.isNull(bean)) { + return new ArrayList<>(); + } bean.setCompanyId(null); List repairMaTypeList = repairMapper.getRepairMaTypeList(bean); if (repairMaTypeList.isEmpty() || !isGroup) { return repairMaTypeList; } - + repairMaTypeList.removeIf(Objects::isNull); // 创建Map集合,用于快速分组,使用 ConcurrentHashMap 保证线程安全 Map resultMap = new ConcurrentHashMap<>(); @@ -92,16 +95,18 @@ public class RepairServiceImpl implements RepairService { System.err.println("复制属性时发生错误: {}" + e.getMessage()); throw new RuntimeException("复制属性时发生错误", e); } - if (item.getTypeNameId() == null) { // 处理 typeNameId 为空的情况 System.err.println("typeNameId 为空,跳过当前项: " + item); return; } - - // 使用 computeIfAbsent 方法,如果 key 不存在,则创建一个新对象,并添加到 resultMap 中 - resultMap.computeIfAbsent(item.getTypeNameId(), k -> item).getRepairDeviceList().add(repairDeviceVO); + resultMap.computeIfAbsent(item.getTypeNameId(), origin -> item).getRepairDeviceList().add(repairDeviceVO); + resultMap.computeIfPresent(item.getTypeNameId(), (origin, novel) -> { + novel.setTotalCost(novel.getTotalCost().add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO))); + return novel; + }); }); + return new ArrayList<>(resultMap.values()); } @@ -123,6 +128,7 @@ public class RepairServiceImpl implements RepairService { } // 查询维修任务详情 List repairMaTypeGroupList = getRepairMaTypeList(new RepairTaskDetails(taskId), true); + List repairPartList = repairAuditDetailsMapper.getPartDetailsByTaskId(new RepairAuditDetails().setTaskId(thisTaskId)); repairPartList = mergePartsNum(repairPartList); @@ -143,14 +149,13 @@ public class RepairServiceImpl implements RepairService { public static List mergePartsNum(@NotNull List devices) { try { - Map map = devices.stream().filter(Objects::nonNull).collect(Collectors.toConcurrentMap( - device -> device.getTypeId() + ":" + device.getPartCost() + ":" + device.getPartName(), + Map map = devices.stream().filter(Objects::nonNull).collect( + Collectors.toConcurrentMap(device -> device.getTypeId() + ":" + device.getPartCost() + ":" + device.getPartName(), device -> device, (existing, recently) -> { existing.setPartNum(existing.getPartNum() + recently.getPartNum()); return existing; - }, - ConcurrentHashMap::new - )); + }, ConcurrentHashMap::new) + ); return new ArrayList<>(map.values()); } catch (Exception e) { throw new ServiceException("Error merging parts" + e.getMessage()); @@ -286,6 +291,9 @@ public class RepairServiceImpl implements RepairService { * 校验维修数量 */ private static int verifyRepairNum(RepairApplyRecord bean, RepairTaskDetails details) { + if (bean == null || bean.getRepairNum() == null) { + throw new ServiceException("维修数量不能为空"); + } int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + bean.getRepairNum(); if (repairNum + OptionalInt.of(details.getScrapNum()).orElse(0) > details.getRepairNum()) { throw new ServiceException("维修数量大于维修总量"); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml index c8658e40..f75b269c 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml @@ -245,12 +245,16 @@ rad.status as status, su.nick_name as repairer, rad.update_time as updateTime, - rad.type_id as typeId + rad.type_id as typeId, + rad.create_time, + count(rc.id) AS totalCostRecords, + sum(rc.costs) AS totalCost from repair_apply_details rad left join ma_type mt on rad.type_id = mt.type_id left join ma_machine mm on mm.ma_id = rad.ma_id left join sys_user su on rad.repairer = su.user_id left join ma_type mt2 on mt.parent_id = mt2.type_id + left join repair_cost rc ON rad.id = rc.repair_id where rad.task_id = #{taskId} and rad.company_id = #{companyId} @@ -267,6 +271,7 @@ AND mt2.type_id = #{typeName} + GROUP BY rad.id order by rad.create_time desc From 8925b54d9cf8a0fcb718c6c921e7d1d5b742e0bd Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 16:16:50 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E9=85=8D=E4=BB=B6=E5=8D=95=E4=BB=B7?= =?UTF-8?q?=E5=8F=8A=E8=B4=B9=E7=94=A8=E5=90=88=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../material/repair/service/impl/RepairServiceImpl.java | 7 ++++++- .../mapper/material/repair/RepairAuditDetailsMapper.xml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 8a6693a8..6bf9c0b9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -101,6 +101,7 @@ public class RepairServiceImpl implements RepairService { return; } resultMap.computeIfAbsent(item.getTypeNameId(), origin -> item).getRepairDeviceList().add(repairDeviceVO); + resultMap.computeIfPresent(item.getTypeNameId(), (origin, novel) -> { novel.setTotalCost(novel.getTotalCost().add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO))); return novel; @@ -156,7 +157,11 @@ public class RepairServiceImpl implements RepairService { return existing; }, ConcurrentHashMap::new) ); - return new ArrayList<>(map.values()); + List list = new ArrayList<>(map.values()); + list.forEach(item -> { + item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO).multiply(new BigDecimal(item.getPartNum()))); + }); + return list; } catch (Exception e) { throw new ServiceException("Error merging parts" + e.getMessage()); } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml index f2ca1ac6..5983a386 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairAuditDetailsMapper.xml @@ -488,7 +488,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select mpt.pa_name as partName, rpd.part_num as partNum, - rpd.part_cost as partCost, + rpd.part_cost as partPrice, rpd.part_type as partType, rpd.type_id as typeId, mt.type_name as typeName, From 7b782583d4c73e684cab0d5605a41ef9d1b6f30d Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 16:43:55 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repair/service/impl/RepairServiceImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 6bf9c0b9..3de03c8a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -103,7 +103,9 @@ public class RepairServiceImpl implements RepairService { resultMap.computeIfAbsent(item.getTypeNameId(), origin -> item).getRepairDeviceList().add(repairDeviceVO); resultMap.computeIfPresent(item.getTypeNameId(), (origin, novel) -> { - novel.setTotalCost(novel.getTotalCost().add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO))); + novel.setTotalCost(Optional.ofNullable(novel.getTotalCost()).orElse(BigDecimal.ZERO) + .add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO)) + ); return novel; }); }); @@ -150,17 +152,17 @@ public class RepairServiceImpl implements RepairService { public static List mergePartsNum(@NotNull List devices) { try { - Map map = devices.stream().filter(Objects::nonNull).collect( + Map map = devices.stream().filter(Objects::nonNull).collect( Collectors.toConcurrentMap(device -> device.getTypeId() + ":" + device.getPartCost() + ":" + device.getPartName(), device -> device, (existing, recently) -> { existing.setPartNum(existing.getPartNum() + recently.getPartNum()); return existing; }, ConcurrentHashMap::new) - ); + ); List list = new ArrayList<>(map.values()); - list.forEach(item -> { - item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO).multiply(new BigDecimal(item.getPartNum()))); - }); + list.forEach(item -> item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO) + .multiply(new BigDecimal(Optional.ofNullable(item.getPartNum()).orElse(0)))) + ); return list; } catch (Exception e) { throw new ServiceException("Error merging parts" + e.getMessage()); From 59d82ace10d4a5088cff9e8cd7036ec77b946a79 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 16:43:55 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repair/service/impl/RepairServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 6bf9c0b9..ba6fe689 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -91,19 +91,19 @@ public class RepairServiceImpl implements RepairService { try { BeanUtil.copyProperties(item, repairDeviceVO); } catch (Exception e) { - // 记录异常日志,并提供更详细的错误信息 System.err.println("复制属性时发生错误: {}" + e.getMessage()); throw new RuntimeException("复制属性时发生错误", e); } if (item.getTypeNameId() == null) { - // 处理 typeNameId 为空的情况 System.err.println("typeNameId 为空,跳过当前项: " + item); return; } resultMap.computeIfAbsent(item.getTypeNameId(), origin -> item).getRepairDeviceList().add(repairDeviceVO); resultMap.computeIfPresent(item.getTypeNameId(), (origin, novel) -> { - novel.setTotalCost(novel.getTotalCost().add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO))); + novel.setTotalCost(Optional.ofNullable(novel.getTotalCost()).orElse(BigDecimal.ZERO) + .add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO)) + ); return novel; }); }); @@ -150,17 +150,17 @@ public class RepairServiceImpl implements RepairService { public static List mergePartsNum(@NotNull List devices) { try { - Map map = devices.stream().filter(Objects::nonNull).collect( + Map map = devices.stream().filter(Objects::nonNull).collect( Collectors.toConcurrentMap(device -> device.getTypeId() + ":" + device.getPartCost() + ":" + device.getPartName(), device -> device, (existing, recently) -> { existing.setPartNum(existing.getPartNum() + recently.getPartNum()); return existing; }, ConcurrentHashMap::new) - ); + ); List list = new ArrayList<>(map.values()); - list.forEach(item -> { - item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO).multiply(new BigDecimal(item.getPartNum()))); - }); + list.forEach(item -> item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO) + .multiply(new BigDecimal(Optional.ofNullable(item.getPartNum()).orElse(0)))) + ); return list; } catch (Exception e) { throw new ServiceException("Error merging parts" + e.getMessage()); From aa1727f02591843cbb2f465595dedbe544e7f839 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 17:20:57 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E5=AE=8C=E5=96=84=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repair/service/impl/RepairServiceImpl.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index ba6fe689..5ec52acd 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -174,6 +174,10 @@ public class RepairServiceImpl implements RepairService { @Override @Transactional(rollbackFor = Exception.class) public AjaxResult submitRepairApply(@NotNull(message = "参数不能为空") RepairApplyRecord bean) { + if (bean == null || bean.getRepairType() == null) { + return AjaxResult.error("维修方式参数不能为空"); + } + // 获取维修详情记录:待维修、已维修、报废的数量 RepairTaskDetails details = repairMapper.getById(bean.getId()); LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -356,6 +360,9 @@ public class RepairServiceImpl implements RepairService { } if (Objects.equals(manageTypeByCode, bean.getManageType())) { // 物资管理方式--编码管理 + if (bean.getRepairType() == null) { + continue; + } // 根据维修方式,更新维修数量、报废数量 switch (bean.getRepairType()) { case inRepairType: { @@ -389,6 +396,9 @@ public class RepairServiceImpl implements RepairService { if (bean.getId() == null) { throw new ServiceException("请完善参数,维修详情ID为空!"); } + if (bean.getRepairType() == null) { + continue; + } // 处理配件--数量管理--内部维修 if (CollectionUtil.isNotEmpty(bean.getNumberInRepairPartList())) { From 7437cc41551a2d954b9d01a95e27d38488eafa34 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 21 Nov 2024 18:12:35 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/material/repair/domain/RepairPart.java | 5 +++++ .../material/repair/domain/vo/RepairDeviceListVo.java | 4 ++++ .../repair/service/impl/RepairServiceImpl.java | 10 +++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java index b4d7094d..00186e1b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPart.java @@ -1,10 +1,12 @@ package com.bonus.material.repair.domain; +import com.bonus.material.basic.domain.BmFileInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** * @author syruan @@ -100,6 +102,9 @@ public class RepairPart { @ApiModelProperty(value = "维修内容") private String repairContent; + @ApiModelProperty(value = "附件列表") + private List fileList; + private Long companyId; private Long repairer; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java index 32fd8a56..54d45302 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceListVo.java @@ -1,6 +1,7 @@ package com.bonus.material.repair.domain.vo; import com.bonus.common.biz.domain.BaseVO; +import com.bonus.material.basic.domain.BmFileInfo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -69,4 +70,7 @@ public class RepairDeviceListVo extends BaseVO { @ApiModelProperty(value = "内层物资类型集合") private List repairDeviceList = new ArrayList<>(); + + @ApiModelProperty(value = "报废附件") + private List fileList; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 5ec52acd..e5761bec 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -129,10 +129,18 @@ public class RepairServiceImpl implements RepairService { } // 查询维修任务详情 List repairMaTypeGroupList = getRepairMaTypeList(new RepairTaskDetails(taskId), true); + repairMaTypeGroupList.removeIf(Objects::isNull); + repairMaTypeGroupList.forEach(repairDevice -> { + List fileInfos = bmFileInfoMapper.selectBmFileInfoList(new BmFileInfo() + .setTaskId(OptionalLong.of(thisTaskId).orElse(0L)) + .setModelId(Optional.ofNullable(repairDevice.getId()).orElse(0L)) + .setTaskType(TmTaskTypeEnum.TM_TASK_REPAIR.getTaskTypeId()) + ); + repairDevice.setFileList(fileInfos); + }); List repairPartList = repairAuditDetailsMapper.getPartDetailsByTaskId(new RepairAuditDetails().setTaskId(thisTaskId)); repairPartList = mergePartsNum(repairPartList); - RepairTicketVo result = new RepairTicketVo() .setRepairTaskInfo(repairTaskInfo) .setRepairDeviceArray(repairMaTypeGroupList)