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