修改耗材

This commit is contained in:
wangw 2024-09-24 11:07:12 +08:00
parent 49ada5c669
commit e93e19c596
5 changed files with 61 additions and 49 deletions

View File

@ -3,6 +3,7 @@ package cn.ysk.cashier.cons.repository;
import cn.ysk.cashier.cons.domain.TbProskuCon;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
@ -18,7 +19,9 @@ public interface TbProskuConRepository extends JpaRepository<TbProskuCon, Intege
@Query(value = "select count(0) from tb_prosku_con where con_info_id=?1 and product_sku_id=?2 and shop_id=?3 and product_id=?4",nativeQuery = true)
int countByConInfoIdAndProductSkuIdAndShopId(Integer conInfoId,Integer productSkuId,Integer shopId,Integer productId);
@Modifying
@Query(value = "delete from tb_prosku_con where product_id=?1" , nativeQuery = true)
void deleteAllByProductId(Integer productId);

View File

@ -4,6 +4,7 @@ import cn.ysk.cashier.annotation.Log;
import cn.ysk.cashier.cons.domain.TbProskuCon;
import cn.ysk.cashier.cons.service.TbProskuConService;
import cn.ysk.cashier.cons.service.dto.ProskuInfo;
import cn.ysk.cashier.cons.service.dto.TbProskuConDtoV2;
import cn.ysk.cashier.cons.service.dto.TbProskuConQueryCriteria;
import cn.ysk.cashier.exception.BadRequestException;
import org.springframework.data.domain.Pageable;
@ -59,7 +60,7 @@ public class TbProskuConController {
@PostMapping("V2")
@Log("新增商品耗材绑定关系")
@ApiOperation("新增商品耗材绑定关系")
public ResponseEntity<Object> upV2(@Validated @RequestBody List<TbProskuCon> resources) throws Exception {
public ResponseEntity<Object> upV2(@Validated @RequestBody TbProskuConDtoV2 resources) throws Exception {
try {
tbProskuConService.upV2(resources);
return new ResponseEntity<>(HttpStatus.CREATED);

View File

@ -3,6 +3,7 @@ package cn.ysk.cashier.cons.service;
import cn.ysk.cashier.cons.domain.TbProskuCon;
import cn.ysk.cashier.cons.service.dto.ProskuInfo;
import cn.ysk.cashier.cons.service.dto.TbProskuConDto;
import cn.ysk.cashier.cons.service.dto.TbProskuConDtoV2;
import cn.ysk.cashier.cons.service.dto.TbProskuConQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
@ -44,7 +45,7 @@ public interface TbProskuConService {
* @return TbProskuConDto
*/
TbProskuConDto create(List<ProskuInfo> resources) throws Exception;
void upV2(List<TbProskuCon> resources) throws Exception;
void upV2(TbProskuConDtoV2 resources) throws Exception;
/**
* 编辑

View File

@ -0,0 +1,15 @@
package cn.ysk.cashier.cons.service.dto;
import cn.ysk.cashier.cons.domain.TbProskuCon;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class TbProskuConDtoV2 {
@NotNull
private Integer productId;
List<TbProskuCon> cons;
}

View File

@ -6,6 +6,7 @@ import cn.ysk.cashier.cons.domain.TbConsSuppFlow;
import cn.ysk.cashier.cons.domain.TbProskuCon;
import cn.ysk.cashier.cons.repository.TbConsInfoRepository;
import cn.ysk.cashier.cons.service.dto.ProskuInfo;
import cn.ysk.cashier.cons.service.dto.TbProskuConDtoV2;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.pojo.product.TbProduct;
import cn.ysk.cashier.pojo.product.TbProductSku;
@ -160,55 +161,46 @@ public class TbProskuConServiceImpl implements TbProskuConService {
@Override
@Transactional(rollbackFor = Exception.class)
public void upV2(List<TbProskuCon> resources) {
List<TbProskuCon> newCons=new ArrayList<>();
Map<Integer, List<TbProskuCon>> conMap = resources.stream()
.collect(Collectors.groupingBy(TbProskuCon::getProductId));
for (Integer proId : conMap.keySet()) {
TbProduct product= tbProductRepository.getById(proId);
if(Objects.isNull(product)){
throw new BadRequestException("对应的商品信息不存在");
public void upV2(TbProskuConDtoV2 resources) {
if (CollectionUtils.isEmpty(resources.getCons())) {
tbProskuConRepository.deleteAllByProductId(resources.getProductId());
return;
}
List<TbProskuCon> newCons = new ArrayList<>();
TbProduct product = tbProductRepository.getById(resources.getProductId());
if (Objects.isNull(product)) {
throw new BadRequestException("对应的商品信息不存在");
}
List<Integer> collect = resources.getCons().stream().map(TbProskuCon::getId).collect(Collectors.toList());
//现有的
List<TbProskuCon> tbProskuCons = tbProskuConRepository.searchAllByProductId(resources.getProductId());
List<Integer> delIds = new ArrayList<>();
for (TbProskuCon tbProskuCon : tbProskuCons) {
if (!collect.contains(tbProskuCon.getId())) {
delIds.add(tbProskuCon.getId());
}
List<TbProskuCon> cons = conMap.get(proId);
List<Integer> collect = cons.stream().map(TbProskuCon::getId).collect(Collectors.toList());
//现有的
List<TbProskuCon> tbProskuCons = tbProskuConRepository.searchAllByProductId(proId);
List<Integer> delIds = new ArrayList<>();
for (TbProskuCon tbProskuCon : tbProskuCons) {
if (!collect.contains(tbProskuCon.getId())) {
delIds.add(tbProskuCon.getId());
}
if (!CollectionUtils.isEmpty(delIds)) {
tbProskuConRepository.deleteAllById(delIds);
}
//判断
for (TbProskuCon resource : resources.getCons()) {
TbConsInfo tbConsInfo = tbConsInfoRepository.findById(resource.getConInfoId()).orElseGet(TbConsInfo::new);
if (ObjectUtil.isNull(tbConsInfo) || ObjectUtil.isNull(tbConsInfo.getId())) {
throw new BadRequestException("对应的耗材信息不存在");
}
if (resource.getProductSkuId() != 0) {
TbProductSku sku = tbProductSkuRepository.findById(resource.getProductSkuId()).orElseGet(TbProductSku::new);
if (ObjectUtil.isNull(sku) || ObjectUtil.isNull(sku.getId())) {
throw new BadRequestException("规格信息不存在");
}
}
if (!CollectionUtils.isEmpty(delIds)) {
tbProskuConRepository.deleteAllById(delIds);
}
//判断
for (TbProskuCon resource : cons) {
TbConsInfo tbConsInfo = tbConsInfoRepository.findById(resource.getConInfoId()).orElseGet(TbConsInfo::new);
if (ObjectUtil.isNull(tbConsInfo) || ObjectUtil.isNull(tbConsInfo.getId())) {
throw new BadRequestException("对应的耗材信息不存在");
}
TbProductSku sku = new TbProductSku();
if (resource.getProductSkuId() != 0) {
sku = tbProductSkuRepository.findById(resource.getProductSkuId()).orElseGet(TbProductSku::new);
if (ObjectUtil.isNull(sku) || ObjectUtil.isNull(sku.getId())) {
throw new BadRequestException("规格信息不存在");
}
}
int count = tbProskuConRepository.countByConInfoIdAndProductSkuIdAndShopId(resource.getConInfoId(), resource.getProductSkuId(), resource.getShopId(), resource.getProductId());
if (count <= 0) {
newCons.add(resource);
} else {
if (resource.getProductSkuId() != 0) {
throw new BadRequestException(StringUtils.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : "".concat(" 对应的耗材").concat(tbConsInfo.getConName()).concat("关系已存在"));
} else {
throw new BadRequestException(" 对应的耗材".concat(tbConsInfo.getConName()).concat("关系已存在"));
}
}
}
if(!CollectionUtils.isEmpty(newCons)){
tbProskuConRepository.saveAll(newCons);
}
newCons.add(resource);
}
if (!CollectionUtils.isEmpty(newCons)) {
tbProskuConRepository.saveAll(newCons);
}
}