diff --git a/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java b/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java index 70efb71d..fa876406 100644 --- a/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java +++ b/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java @@ -75,6 +75,16 @@ public class CostProdDetailController extends BaseController { return R.ok(iCostProdDetailService.insertByBo(bo)); } + /** + * 批量保存生产成本明细(先删除再插入) + */ + @Log(title = "生产成本明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/batch") + public R batchSave(@RequestBody CostProdDetailBo bo) { + return toAjax(iCostProdDetailService.batchSaveWithDelete(bo)); + } + /** * 修改生产成本明细 */ diff --git a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java index 10a7ac56..9f242972 100644 --- a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java +++ b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java @@ -7,6 +7,7 @@ import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; @@ -68,5 +69,15 @@ public class CostProdDetailBo extends BaseEntity { */ private String remark; + /** + * 要删除的主键ID集合 + */ + private List detailIds; + + /** + * 要批量插入的数据集合 + */ + private List prodDetailList; + } diff --git a/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java b/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java index e1471f60..0c5b1157 100644 --- a/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java +++ b/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java @@ -46,4 +46,9 @@ public interface ICostProdDetailService { * 校验并批量删除生产成本明细信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 批量保存(先删除再插入) + */ + Boolean batchSaveWithDelete(CostProdDetailBo bo); } diff --git a/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java index 1034d4bf..8042b7c1 100644 --- a/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java +++ b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java @@ -1,6 +1,7 @@ package com.klp.cost.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.klp.cost.domain.bo.CostProdDetailBo; import com.klp.cost.domain.vo.CostProdDetailVo; import com.klp.cost.domain.CostProdDetail; @@ -18,6 +20,7 @@ import com.klp.cost.service.ICostProdDetailService; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; /** * 生产成本明细Service业务层处理 @@ -112,4 +115,22 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService { } return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 批量保存(先删除再插入) + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchSaveWithDelete(CostProdDetailBo bo) { + if (CollUtil.isNotEmpty(bo.getProdDetailList())) { + if (CollUtil.isNotEmpty(bo.getDetailIds())) { + baseMapper.deleteBatchIds(bo.getDetailIds()); + } + List list = bo.getProdDetailList().stream() + .map(item -> BeanUtil.toBean(item, CostProdDetail.class)) + .collect(Collectors.toList()); + return baseMapper.insertBatch(list); + } + return false; + } }