修改耗材
This commit is contained in:
parent
49ada5c669
commit
e93e19c596
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue