feat(qc): 新增批量检验功能并优化数据处理流程
- 添加 BatchInspectionMainBo 和 BatchInspectionTensileBo 数据传输对象 - 集成检验明细列表到 WmsInspectionMainBo 和 WmsInspectionTensileDetailBo - 在 inspectionMain 控制器中实现批量插入检验主数据接口 - 在 inspectionTensileDetail 控制器中实现批量插入拉伸试验明细接口 - 重构前端检验样品页面,合并主表和明细表的保存操作 - 优化前端拉伸试验页面的批量新增逻辑,统一使用批量插入接口 - 更新服务层实现以支持批量插入并更新申请单关联ID列表 - 移除前端页面中单独的明细表增删改操作接口调用
This commit is contained in:
@@ -3,6 +3,7 @@ package com.klp.controller;
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.klp.domain.bo.BatchInspectionMainBo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.*;
|
||||
@@ -96,4 +97,14 @@ public class WmsInspectionMainController extends BaseController {
|
||||
@PathVariable Long[] mainIds) {
|
||||
return toAjax(iWmsInspectionMainService.deleteWithValidByIds(Arrays.asList(mainIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增检验主及明细,更新申请单detailIds为主键列表
|
||||
*/
|
||||
@Log(title = "批量新增检验主", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/batchInsertWithDetails")
|
||||
public R<Void> batchInsertWithDetails(@RequestBody BatchInspectionMainBo batchBo) {
|
||||
return toAjax(iWmsInspectionMainService.batchInsertWithDetails(
|
||||
batchBo.getMasterId(), batchBo.getApplicationId(), batchBo.getBoList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.klp.controller;
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.klp.domain.bo.BatchInspectionTensileBo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.*;
|
||||
@@ -19,7 +20,9 @@ import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.domain.vo.WmsInspectionTensileDetailVo;
|
||||
import com.klp.domain.bo.WmsInspectionTensileDetailBo;
|
||||
import com.klp.domain.bo.WmsInspectionTensileBo;
|
||||
import com.klp.service.IWmsInspectionTensileDetailService;
|
||||
import com.klp.service.IWmsInspectionTensileService;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
@@ -96,4 +99,14 @@ public class WmsInspectionTensileDetailController extends BaseController {
|
||||
@PathVariable String[] detailIds) {
|
||||
return toAjax(iWmsInspectionTensileDetailService.deleteWithValidByIds(Arrays.asList(detailIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量插入明细并更新申请单detailIds
|
||||
*/
|
||||
@Log(title = "批量插入拉伸试验明细", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/batchInsertDetails")
|
||||
public R<Void> batchInsertDetails(@RequestBody BatchInspectionTensileBo bo) {
|
||||
return toAjax(iWmsInspectionTensileDetailService.batchInsertDetails(
|
||||
bo.getMasterId(), bo.getApplicationId(), bo.getDetailList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.klp.domain.bo;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class BatchInspectionMainBo {
|
||||
private Long masterId;
|
||||
private Long applicationId;
|
||||
private List<WmsInspectionMainBo> boList;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.klp.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class BatchInspectionTensileBo {
|
||||
private Long masterId;
|
||||
private Long applicationId;
|
||||
private List<WmsInspectionTensileDetailBo> detailList;
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
@@ -74,5 +75,10 @@ public class WmsInspectionMainBo extends BaseEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 检验项目明细列表
|
||||
*/
|
||||
private List<WmsInspectionDetailBo> detailList;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ import javax.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
@@ -265,4 +267,9 @@ public class WmsInspectionTensileDetailBo extends BaseEntity {
|
||||
private String remark;
|
||||
|
||||
|
||||
/**
|
||||
* 试验样品明细列表
|
||||
*/
|
||||
private List<WmsInspectionTensileDetailBo> detailList;
|
||||
|
||||
}
|
||||
|
||||
@@ -46,4 +46,9 @@ public interface IWmsInspectionMainService {
|
||||
* 校验并批量删除检验主信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 批量新增检验主及明细,并更新申请单detailIds为主键列表
|
||||
*/
|
||||
Boolean batchInsertWithDetails(Long masterId, Long applicationId, List<WmsInspectionMainBo> boList);
|
||||
}
|
||||
|
||||
@@ -46,4 +46,6 @@ public interface IWmsInspectionTensileDetailService {
|
||||
* 校验并批量删除金属材料室温拉伸试验样品明细信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
|
||||
|
||||
Boolean batchInsertDetails(Long masterId, Long applicationId, List<WmsInspectionTensileDetailBo> detailList);
|
||||
}
|
||||
|
||||
@@ -2,15 +2,19 @@ package com.klp.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.WmsInspectionApplication;
|
||||
import com.klp.mapper.WmsInspectionApplicationMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsInspectionMainBo;
|
||||
import com.klp.domain.bo.WmsInspectionDetailBo;
|
||||
import com.klp.domain.vo.WmsInspectionMainVo;
|
||||
import com.klp.domain.vo.WmsInspectionDetailVo;
|
||||
import com.klp.domain.WmsInspectionMain;
|
||||
@@ -19,6 +23,7 @@ import com.klp.mapper.WmsInspectionMainMapper;
|
||||
import com.klp.mapper.WmsInspectionDetailMapper;
|
||||
import com.klp.service.IWmsInspectionMainService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -37,6 +42,7 @@ public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
|
||||
|
||||
private final WmsInspectionMainMapper baseMapper;
|
||||
private final WmsInspectionDetailMapper detailMapper;
|
||||
private final WmsInspectionApplicationMapper applicationMapper;
|
||||
|
||||
/**
|
||||
* 查询检验主
|
||||
@@ -107,6 +113,15 @@ public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setMainId(add.getMainId());
|
||||
if (CollUtil.isNotEmpty(bo.getDetailList())) {
|
||||
List<WmsInspectionDetail> detailEntities = new ArrayList<>();
|
||||
for (WmsInspectionDetailBo detailBo : bo.getDetailList()) {
|
||||
detailBo.setMainId(add.getMainId());
|
||||
detailBo.setDetailId(null);
|
||||
detailEntities.add(BeanUtil.toBean(detailBo, WmsInspectionDetail.class));
|
||||
}
|
||||
detailMapper.insertBatch(detailEntities);
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -118,7 +133,59 @@ public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
|
||||
public Boolean updateByBo(WmsInspectionMainBo bo) {
|
||||
WmsInspectionMain update = BeanUtil.toBean(bo, WmsInspectionMain.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
if (flag && CollUtil.isNotEmpty(bo.getDetailList())) {
|
||||
for (WmsInspectionDetailBo detailBo : bo.getDetailList()) {
|
||||
detailBo.setMainId(bo.getMainId());
|
||||
WmsInspectionDetail detail = BeanUtil.toBean(detailBo, WmsInspectionDetail.class);
|
||||
if (detailBo.getDetailId() != null) {
|
||||
detailMapper.updateById(detail);
|
||||
} else {
|
||||
detail.setDetailId(null);
|
||||
detailMapper.insert(detail);
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增检验主及明细,并更新申请单detailIds为主键列表
|
||||
*/
|
||||
@Override
|
||||
public Boolean batchInsertWithDetails(Long masterId, Long applicationId, List<WmsInspectionMainBo> boList) {
|
||||
if (CollUtil.isEmpty(boList)) {
|
||||
return false;
|
||||
}
|
||||
List<Long> mainIds = new ArrayList<>();
|
||||
for (WmsInspectionMainBo bo : boList) {
|
||||
WmsInspectionMain add = BeanUtil.toBean(bo, WmsInspectionMain.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (!flag) {
|
||||
return false;
|
||||
}
|
||||
bo.setMainId(add.getMainId());
|
||||
mainIds.add(add.getMainId());
|
||||
if (CollUtil.isNotEmpty(bo.getDetailList())) {
|
||||
List<WmsInspectionDetail> detailEntities = new ArrayList<>();
|
||||
for (WmsInspectionDetailBo detailBo : bo.getDetailList()) {
|
||||
detailBo.setMainId(add.getMainId());
|
||||
detailBo.setDetailId(null);
|
||||
detailEntities.add(BeanUtil.toBean(detailBo, WmsInspectionDetail.class));
|
||||
}
|
||||
detailMapper.insertBatch(detailEntities);
|
||||
}
|
||||
}
|
||||
if (masterId != null && applicationId != null) {
|
||||
String detailIds = mainIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
||||
applicationMapper.update(null,
|
||||
new LambdaUpdateWrapper<WmsInspectionApplication>()
|
||||
.eq(WmsInspectionApplication::getMainId, masterId)
|
||||
.eq(WmsInspectionApplication::getApplicationId, applicationId)
|
||||
.set(WmsInspectionApplication::getDetailIds, detailIds));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package com.klp.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.WmsInspectionApplication;
|
||||
import com.klp.mapper.WmsInspectionApplicationMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsInspectionTensileDetailBo;
|
||||
@@ -15,9 +19,11 @@ import com.klp.domain.WmsInspectionTensileDetail;
|
||||
import com.klp.mapper.WmsInspectionTensileDetailMapper;
|
||||
import com.klp.service.IWmsInspectionTensileDetailService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 金属材料室温拉伸试验样品明细Service业务层处理
|
||||
@@ -31,6 +37,8 @@ public class WmsInspectionTensileDetailServiceImpl implements IWmsInspectionTens
|
||||
|
||||
private final WmsInspectionTensileDetailMapper baseMapper;
|
||||
|
||||
private final WmsInspectionApplicationMapper applicationMapper;
|
||||
|
||||
/**
|
||||
* 查询金属材料室温拉伸试验样品明细
|
||||
*/
|
||||
@@ -151,4 +159,33 @@ public class WmsInspectionTensileDetailServiceImpl implements IWmsInspectionTens
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量插入明细并更新申请单detailIds
|
||||
*/
|
||||
@Override
|
||||
public Boolean batchInsertDetails(Long masterId, Long applicationId, List<WmsInspectionTensileDetailBo> detailList) {
|
||||
if (CollUtil.isEmpty(detailList)) {
|
||||
return false;
|
||||
}
|
||||
List<WmsInspectionTensileDetail> details = new ArrayList<>();
|
||||
for (WmsInspectionTensileDetailBo bo : detailList) {
|
||||
bo.setDetailId(null);
|
||||
details.add(BeanUtil.toBean(bo, WmsInspectionTensileDetail.class));
|
||||
}
|
||||
boolean flag = baseMapper.insertBatch(details);
|
||||
if (flag && masterId != null && applicationId != null) {
|
||||
String detailIds = details.stream()
|
||||
.map(WmsInspectionTensileDetail::getDetailId)
|
||||
.collect(Collectors.joining(","));
|
||||
applicationMapper.update(null,
|
||||
new LambdaUpdateWrapper<WmsInspectionApplication>()
|
||||
.eq(WmsInspectionApplication::getMainId, masterId)
|
||||
.eq(WmsInspectionApplication::getApplicationId, applicationId)
|
||||
.set(WmsInspectionApplication::getDetailIds, detailIds));
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user