From d96e14f9bbf9925000b1df8c23f68431a9ac8125 Mon Sep 17 00:00:00 2001 From: JaxCen <1694546944@qq.com> Date: Tue, 15 Oct 2024 10:59:49 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90admin=E3=80=91=E6=96=B0=E5=A2=9E#=201.?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=B4=E4=BF=AE=E5=8D=95=E9=A2=86=E6=96=99?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/ParentRepairOrderController.java | 9 +- .../order/RepairOrderController.java | 2 + .../order/IParentRepairOrderService.java | 9 ++ .../impl/ParentRepairOrderServiceImpl.java | 128 +++++++++++++++++- .../sparePart/impl/SparePartServiceImpl.java | 2 + .../order/ParentRepairOrderParam.java | 5 + .../validate/sparePart/SparePartParam.java | 2 + .../hcy/admin/vo/excel/OfferDetailEntity.java | 2 +- .../vo/excel/order/GetMaterialsOrder.java | 44 ++++++ .../admin/vo/sparePart/SparePartDetailVo.java | 2 +- .../admin/vo/sparePart/SparePartListVo.java | 1 + .../templates/excel/materialRequisition.xlsx | Bin 0 -> 11127 bytes .../templates/excel/placingOrders.xlsx | Bin 0 -> 11261 bytes .../templates/excel/repairOrder.xlsx | Bin 0 -> 11754 bytes .../resources/templates/excel/scrapForm.xlsx | Bin 0 -> 11249 bytes .../common/dto/order/OrderSparePartDto.java | 36 +++++ .../common/entity/sparePart/SparePart.java | 1 + .../mapper/order/OrderSparePartMapper.java | 13 ++ .../mapper/order/ParentRepairOrderMapper.java | 1 + .../mapper/order/RepairOrderMapper.java | 8 ++ 20 files changed, 259 insertions(+), 6 deletions(-) create mode 100644 admin/src/main/java/com/hcy/admin/vo/excel/order/GetMaterialsOrder.java create mode 100644 admin/src/main/resources/templates/excel/materialRequisition.xlsx create mode 100644 admin/src/main/resources/templates/excel/placingOrders.xlsx create mode 100644 admin/src/main/resources/templates/excel/repairOrder.xlsx create mode 100644 admin/src/main/resources/templates/excel/scrapForm.xlsx create mode 100644 common/src/main/java/com/hcy/common/dto/order/OrderSparePartDto.java diff --git a/admin/src/main/java/com/hcy/admin/controller/order/ParentRepairOrderController.java b/admin/src/main/java/com/hcy/admin/controller/order/ParentRepairOrderController.java index 6753788..7d95156 100644 --- a/admin/src/main/java/com/hcy/admin/controller/order/ParentRepairOrderController.java +++ b/admin/src/main/java/com/hcy/admin/controller/order/ParentRepairOrderController.java @@ -4,15 +4,18 @@ import com.hcy.admin.config.aop.Log; import com.hcy.admin.service.order.IParentRepairOrderService; import com.hcy.admin.validate.order.ParentRepairOrderParam; import com.hcy.admin.validate.common.PageParam; +import com.hcy.admin.validate.order.RepairOrderParam; import com.hcy.admin.vo.order.ParentRepairOrderListVo; import com.hcy.admin.vo.order.ParentRepairOrderDetailVo; import com.hcy.common.core.AjaxResult; import com.hcy.common.core.PageResult; import com.hcy.common.validator.annotation.IDMust; +import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -108,5 +111,9 @@ public class ParentRepairOrderController { return AjaxResult.success(list); } - + @ApiOperation(value = "模块管理 - 导出Excel报表") + @PostMapping(value="/exportExcel") + public void exportExcel(@Validated @RequestBody ParentRepairOrderParam params, HttpServletResponse response) { + iParentRepairOrderService.exportExcel(params,response); + } } diff --git a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java index 51285b1..5a734d5 100644 --- a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java +++ b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java @@ -242,4 +242,6 @@ public class RepairOrderController { List list = iRepairOrderService.shippingList(repairOrderParam); return AjaxResult.success(list); } + + } diff --git a/admin/src/main/java/com/hcy/admin/service/order/IParentRepairOrderService.java b/admin/src/main/java/com/hcy/admin/service/order/IParentRepairOrderService.java index 928b33e..3bd77c1 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/IParentRepairOrderService.java +++ b/admin/src/main/java/com/hcy/admin/service/order/IParentRepairOrderService.java @@ -2,12 +2,14 @@ package com.hcy.admin.service.order; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.order.ParentRepairOrderParam; +import com.hcy.admin.validate.order.RepairOrderParam; import com.hcy.admin.vo.order.DispatchItemListVO; import com.hcy.admin.vo.order.ParentRepairOrderListVo; import com.hcy.admin.vo.order.ParentRepairOrderDetailVo; import com.hcy.common.core.PageResult; import org.springframework.validation.annotation.Validated; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -66,4 +68,11 @@ public interface IParentRepairOrderService { * @return PageResult */ PageResult dispatchItemList(PageParam pageParam, ParentRepairOrderParam parentRepairOrderParam); + + /** + * 导出模块维修报表 - 按模版导出 + * @param params + * @return + */ + void exportExcel(ParentRepairOrderParam params, HttpServletResponse response); } diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/ParentRepairOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/ParentRepairOrderServiceImpl.java index 858b797..588edec 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/ParentRepairOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/ParentRepairOrderServiceImpl.java @@ -1,5 +1,9 @@ package com.hcy.admin.service.order.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,18 +12,20 @@ import com.github.yulichang.query.MPJQueryWrapper; import com.hcy.admin.service.order.IParentRepairOrderService; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.order.ParentRepairOrderParam; +import com.hcy.admin.vo.excel.OfferDetailEntity; +import com.hcy.admin.vo.excel.order.GetMaterialsOrder; import com.hcy.admin.vo.order.*; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; -import com.hcy.common.dto.order.MaintenanceOrderDto; -import com.hcy.common.dto.order.ParentRepairOrderDto; -import com.hcy.common.dto.order.RepairOrderDto; +import com.hcy.common.dto.order.*; import com.hcy.common.entity.client.Client; import com.hcy.common.entity.order.ParentRepairOrder; import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; import com.hcy.common.enums.order.RepairOrderStatusEnum; +import com.hcy.common.exception.OperateException; +import com.hcy.common.mapper.order.OrderSparePartMapper; import com.hcy.common.mapper.order.ParentRepairOrderMapper; import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; @@ -29,11 +35,17 @@ import com.hcy.common.utils.StringUtil; import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.UrlUtil; import com.hcy.common.config.GlobalConfig; +import com.hcy.common.utils.excel.EasyExcelUtil; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -55,6 +67,9 @@ public class ParentRepairOrderServiceImpl implements IParentRepairOrderService { @Resource SystemAuthAdminMapper systemAuthAdminMapper; + @Resource + OrderSparePartMapper orderSparePartMapper; + /** * 总维修单列表 * @@ -300,4 +315,111 @@ public class ParentRepairOrderServiceImpl implements IParentRepairOrderService { return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); } + @Override + public void exportExcel(ParentRepairOrderParam params, HttpServletResponse response) { + try { + Assert.notNull(params.getClientId(),"客户id不可为空"); + ServletOutputStream out = response.getOutputStream(); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() + .eq(ParentRepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .eq(ParentRepairOrder::getClientId, params.getClientId()) + .between(ParentRepairOrder::getCreateTime, params.getStartTime(), params.getEndTime()); + FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); + + List parentRepairOrders = parentRepairOrderMapper.selectList(lambdaQueryWrapper); + + String[] typeIdList = params.getTypeIds().split(","); + EasyExcelUtil.initResponse(response, "领料单"); + // 文件模板输入流,将 excel 模板放到 resources 目录下 + InputStream templateFile = new ClassPathResource("templates/excel/materialRequisition.xlsx").getInputStream(); + + int index1 = 0; + Map adminMap = new HashMap<>(); +// XSSFWorkbook workbook = new XSSFWorkbook(templateFile); +// for (int i = 0; i < parentRepairOrders.size(); i++) { +// if(i == 0){ +// workbook.setSheetName(0, parentRepairOrders.get(i).getOrderNo() + "领料单"); +// }else{ +// workbook.cloneSheet(0,parentRepairOrders.get(i).getOrderNo() + "领料单"); +// } +// } +// workbook.write(out); + ExcelWriter writer = EasyExcel + .write(out) + .withTemplate(templateFile) + .build(); + + for (ParentRepairOrder parentRepairOrder : parentRepairOrders) { + List repairOrderList = repairOrderMapper.findRepairOrderByParentId(parentRepairOrder.getId()); + + int totalQuantity = 0; + int index = 1; + + OfferDetailEntity offerDetail = new OfferDetailEntity(); + offerDetail.setDeliveryTime(TimeUtil.timestampToDate(System.currentTimeMillis() / 1000,"yyyy-MM-dd")); + offerDetail.setOrderNo(parentRepairOrder.getOrderNo()); + //获取创建者信息 + SystemAuthAdmin contentAdmin= systemAuthAdminMapper.findSystemAuthAdminByUserId(Math.toIntExact(parentRepairOrder.getCreatorId())); + if(contentAdmin != null){ + offerDetail.setCreator(contentAdmin.getUsername()); + } + offerDetail.setTotalQty(totalQuantity); + + WriteSheet sheet = EasyExcel.writerSheet(0,parentRepairOrder.getOrderNo() + "领料单").build(); + //填充内容占位符 + writer.fill(offerDetail, sheet); + + List getMaterialsOrderList = new ArrayList<>(); + for (RepairOrder item : repairOrderList) { + for (String ids : typeIdList) { + if(ids.equals("1")){ + List orderSparePartList = orderSparePartMapper.findOrderSparePartByModuleId(item.getId()); + if(orderSparePartList.isEmpty()){ + continue; + } + for (OrderSparePartDto orderSparePartDto : orderSparePartList) { + GetMaterialsOrder getMaterialsOrder = new GetMaterialsOrder(); + getMaterialsOrder.setIndex(index); + getMaterialsOrder.setModelType(item.getModuleNumber()); + getMaterialsOrder.setModelCode(item.getModuleCode()); + getMaterialsOrder.setSparePartsCode(orderSparePartDto.getSparePartsCode()); + getMaterialsOrder.setName(orderSparePartDto.getSparePartsName()); + getMaterialsOrder.setSpecificationsModel(orderSparePartDto.getSpecificationsModel()); + getMaterialsOrder.setUnit(orderSparePartDto.getUnit()); + getMaterialsOrder.setQuantityClaimed(orderSparePartDto.getCount().toString()); + getMaterialsOrder.setActualQuantity(orderSparePartDto.getCount().toString()); + SystemAuthAdmin systemAuthAdmin; + if(adminMap.get(orderSparePartDto.getApplicantId()) != null){ + systemAuthAdmin = adminMap.get(orderSparePartDto.getApplicantId()); + }else{ + systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(Math.toIntExact(orderSparePartDto.getApplicantId())); + adminMap.put(orderSparePartDto.getApplicantId(),systemAuthAdmin); + } + if(systemAuthAdmin != null){ + getMaterialsOrder.setRecipient(systemAuthAdmin.getUsername()); + } + getMaterialsOrderList.add(getMaterialsOrder); + index++; + totalQuantity += orderSparePartDto.getCount(); + } + + } + } + } + + // 填充列表占位符 + writer.fill(getMaterialsOrderList, fillConfig, sheet); + index1++; + } + writer.finish(); + out.close(); + templateFile.close(); + }catch (Exception e){ + e.printStackTrace(); + throw new OperateException("导出报表出现错误:"+e.getLocalizedMessage()); + } + + } + } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java index 0340717..9ab11ea 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java @@ -188,6 +188,7 @@ public class SparePartServiceImpl implements ISparePartService { model.setQuantity(sparePartParam.getQuantity()); model.setUnitPrice(sparePartParam.getUnitPrice()); model.setCreateTime(System.currentTimeMillis() / 1000); + model.setBrand(sparePartParam.getBrand()); sparePartMapper.insert(model); } @@ -223,6 +224,7 @@ public class SparePartServiceImpl implements ISparePartService { model.setWarehouseId(sparePartParam.getWarehouseId()); model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); model.setUnit(sparePartParam.getUnit()); + model.setBrand(sparePartParam.getBrand()); /*model.setQuantity(sparePartParam.getQuantity());// 库存数量*/ model.setUnitPrice(sparePartParam.getUnitPrice()); model.setUpdateTime(System.currentTimeMillis() / 1000);//更新时间 diff --git a/admin/src/main/java/com/hcy/admin/validate/order/ParentRepairOrderParam.java b/admin/src/main/java/com/hcy/admin/validate/order/ParentRepairOrderParam.java index ece87fa..96ddcd2 100644 --- a/admin/src/main/java/com/hcy/admin/validate/order/ParentRepairOrderParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/order/ParentRepairOrderParam.java @@ -7,6 +7,7 @@ import org.hibernate.validator.constraints.Length; import lombok.Data; import javax.validation.constraints.*; import java.io.Serializable; +import java.util.Date; /** * 总维修单参数 @@ -36,4 +37,8 @@ public class ParentRepairOrderParam implements Serializable { private String moduleCode; // 模块代码 private Integer matter; // 事项(0=派单事项、1=发货事项) + + private String typeIds; //表单类型 :0-入仓单 1-领料单 2-维修单 3-报废单 4-难修改派单 5-报废维修单 + private String startTime; //开始时间 + private String endTime; //结束时间 } diff --git a/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java b/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java index 99b730e..0db7873 100644 --- a/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/sparePart/SparePartParam.java @@ -52,5 +52,7 @@ public class SparePartParam implements Serializable { private BigDecimal unitPrice; + private String brand; //品牌 + private List ids; //批量删除 } diff --git a/admin/src/main/java/com/hcy/admin/vo/excel/OfferDetailEntity.java b/admin/src/main/java/com/hcy/admin/vo/excel/OfferDetailEntity.java index 5bd6d56..bbde0e0 100644 --- a/admin/src/main/java/com/hcy/admin/vo/excel/OfferDetailEntity.java +++ b/admin/src/main/java/com/hcy/admin/vo/excel/OfferDetailEntity.java @@ -22,7 +22,7 @@ public class OfferDetailEntity { private String orderNo; @ApiModelProperty(value = "制单人") - private String consignerName; + private String creator; @ApiModelProperty(value = "合计数量") private Integer totalQty; diff --git a/admin/src/main/java/com/hcy/admin/vo/excel/order/GetMaterialsOrder.java b/admin/src/main/java/com/hcy/admin/vo/excel/order/GetMaterialsOrder.java new file mode 100644 index 0000000..06e3ac9 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/excel/order/GetMaterialsOrder.java @@ -0,0 +1,44 @@ +package com.hcy.admin.vo.excel.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GetMaterialsOrder { + + @ApiModelProperty(value = "序号") + private Integer index; + + @ApiModelProperty(value = "模块型号") + private String modelType; + + @ApiModelProperty(value = "模块代码") + private String modelCode; + + @ApiModelProperty(value = "料号") + private String sparePartsCode; + + @ApiModelProperty(value = "品牌") + private String name; + + @ApiModelProperty(value = "型号/规格") + private String specificationsModel; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "领料数量") + private String quantityClaimed; + + @ApiModelProperty(value = "实发数量") + private String actualQuantity; + + @ApiModelProperty(value = "领取人员") + private String recipient; +} diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java index d2b8964..ec878f1 100644 --- a/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartDetailVo.java @@ -22,5 +22,5 @@ public class SparePartDetailVo implements Serializable { private Integer quantity; // 库存数量 private BigDecimal unitPrice; // 单价 private String warehouseName; // 所属仓库名 - + private String brand; //品牌 } diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java index f7fe498..e2e60d7 100644 --- a/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/sparePart/SparePartListVo.java @@ -23,6 +23,7 @@ public class SparePartListVo implements Serializable { private String createTime; // 创建时间 private String updateTime; // 更新时间 private BigDecimal unitPrice; // 单价 + private String brand; //品牌 // 备件模糊关键字 private String likeWork; diff --git a/admin/src/main/resources/templates/excel/materialRequisition.xlsx b/admin/src/main/resources/templates/excel/materialRequisition.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a1d9960adad147866dd9c72f708e6b66b2b1a574 GIT binary patch literal 11127 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 literal 0 HcmV?d00001 diff --git a/admin/src/main/resources/templates/excel/placingOrders.xlsx b/admin/src/main/resources/templates/excel/placingOrders.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..57649a44f3ba00a581342137dd141b63b5a4a72c GIT binary patch literal 11261 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 literal 0 HcmV?d00001 diff --git a/admin/src/main/resources/templates/excel/scrapForm.xlsx b/admin/src/main/resources/templates/excel/scrapForm.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..44162acb2c392097f9f829325930a640d8b90b0c GIT binary patch literal 11249 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 a{Ax;&7Ki!;9B81=L^Np5B2O { */ @Select("SELECT * FROM la_order_spare_part WHERE repair_order_id = #{repairOrderId}") List findOrderSparePartByRepairOrderId(@Param("repairOrderId") Long repairOrderId); + + @Select("SELECT\n" + + "\tosp.*,\n" + + "\troa.applicant_id AS applicantId \n" + + "FROM\n" + + "\tla_order_spare_part AS osp\n" + + "\tLEFT JOIN la_repair_order_audit AS roa ON osp.repair_order_id = roa.repair_order_id \n" + + "WHERE\n" + + "\troa.repair_order_id = #{moduleId} \n" + + "\tAND roa.review_request = 1\n" + + "\tAND roa.audit_status = 3") + List findOrderSparePartByModuleId(@Param("moduleId") Long moduleId); } diff --git a/common/src/main/java/com/hcy/common/mapper/order/ParentRepairOrderMapper.java b/common/src/main/java/com/hcy/common/mapper/order/ParentRepairOrderMapper.java index 25d3dea..cdd95cf 100644 --- a/common/src/main/java/com/hcy/common/mapper/order/ParentRepairOrderMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/order/ParentRepairOrderMapper.java @@ -6,6 +6,7 @@ import com.hcy.common.dto.order.ParentRepairOrderDto; import com.hcy.common.entity.order.ParentRepairOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * 总维修单Mapper 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 e9d409a..95cf6e6 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 @@ -90,4 +90,12 @@ public interface RepairOrderMapper extends IBaseMapper { * @return */ IPage auditMattersList(@Param("page") Page page, @Param("param")RepairOrderDto repairOrderDto); + + /** + * 通过维修单id查询模块列表 + * @param parentId 维修单id + * @return 模块列表 + */ + @Select("SELECT * FROM la_repair_order WHERE parent_repair_order_id = #{parentId}") + List findRepairOrderByParentId(@Param("parentId") Long parentId); }