添加耗材功能

This commit is contained in:
韩鹏辉
2024-07-04 18:20:40 +08:00
parent 39c0bf5e65
commit bdef37b050
5 changed files with 131 additions and 44 deletions

View File

@@ -51,7 +51,7 @@ public class TbProskuConController {
@PutMapping @PutMapping
@Log("修改商品规格耗材信息") @Log("修改商品规格耗材信息")
@ApiOperation("修改商品规格耗材信息") @ApiOperation("修改商品规格耗材信息")
public ResponseEntity<Object> updateTbProskuCon(@Validated @RequestBody ProskuInfo resources) throws Exception { public ResponseEntity<Object> updateTbProskuCon(@Validated @RequestBody TbProskuCon resources) throws Exception {
tbProskuConService.update(resources); tbProskuConService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} }

View File

@@ -49,7 +49,7 @@ public interface TbProskuConService {
* 编辑 * 编辑
* @param resources / * @param resources /
*/ */
void update(ProskuInfo resources) throws Exception; void update(TbProskuCon resources) throws Exception;
/** /**
* 多选删除 * 多选删除

View File

@@ -11,6 +11,8 @@ import cn.ysk.cashier.cons.service.TbConsInfoFlowService;
import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowDto; import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowDto;
import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowQueryCriteria; import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowQueryCriteria;
import cn.ysk.cashier.cons.service.mapstruct.TbConsInfoFlowMapper; import cn.ysk.cashier.cons.service.mapstruct.TbConsInfoFlowMapper;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@@ -37,6 +39,10 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService {
@Override @Override
public Map<String,Object> queryAll(TbConsInfoFlowQueryCriteria criteria, Pageable pageable){ public Map<String,Object> queryAll(TbConsInfoFlowQueryCriteria criteria, Pageable pageable){
Sort sort = Sort.by(Sort.Direction.DESC, "id");
pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort);
Page<TbConsInfoFlow> page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page<TbConsInfoFlow> page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(tbConsInfoFlowMapper::toDto)); return PageUtil.toPage(page.map(tbConsInfoFlowMapper::toDto));
} }

View File

@@ -8,14 +8,19 @@ import cn.ysk.cashier.cons.repository.TbConsInfoFlowRepository;
import cn.ysk.cashier.cons.repository.TbConsSuppFlowRepository; import cn.ysk.cashier.cons.repository.TbConsSuppFlowRepository;
import cn.ysk.cashier.cons.repository.TbConsTypeRepository; import cn.ysk.cashier.cons.repository.TbConsTypeRepository;
import cn.ysk.cashier.cons.service.mapstruct.TbConsSuppFlowMapper; import cn.ysk.cashier.cons.service.mapstruct.TbConsSuppFlowMapper;
import cn.ysk.cashier.pojo.product.TbProductStockOperate;
import cn.ysk.cashier.pojo.shop.TbShopInfo; import cn.ysk.cashier.pojo.shop.TbShopInfo;
import cn.ysk.cashier.pojo.shop.TbShopPurveyor; import cn.ysk.cashier.pojo.shop.TbShopPurveyor;
import cn.ysk.cashier.pojo.shop.TbShopPurveyorTransact;
import cn.ysk.cashier.repository.product.TbProductStockOperateRepository;
import cn.ysk.cashier.repository.shop.TbShopInfoRepository; import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
import cn.ysk.cashier.repository.shop.TbShopPurveyorRepository; import cn.ysk.cashier.repository.shop.TbShopPurveyorRepository;
import cn.ysk.cashier.repository.shop.TbShopPurveyorTransactRepository;
import cn.ysk.cashier.utils.FileUtil; import cn.ysk.cashier.utils.FileUtil;
import cn.ysk.cashier.utils.PageUtil; import cn.ysk.cashier.utils.PageUtil;
import cn.ysk.cashier.utils.QueryHelp; import cn.ysk.cashier.utils.QueryHelp;
import cn.ysk.cashier.utils.ValidationUtil; import cn.ysk.cashier.utils.ValidationUtil;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import cn.ysk.cashier.cons.repository.TbConsInfoRepository; import cn.ysk.cashier.cons.repository.TbConsInfoRepository;
import cn.ysk.cashier.cons.service.TbConsInfoService; import cn.ysk.cashier.cons.service.TbConsInfoService;
@@ -55,6 +60,14 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
private final TbShopPurveyorRepository tbShopPurveyorRepository; private final TbShopPurveyorRepository tbShopPurveyorRepository;
private final TbShopInfoRepository tbShopInfoRepository; private final TbShopInfoRepository tbShopInfoRepository;
private final TbShopPurveyorTransactRepository purveyorTransactRepository;
private final TbProductStockOperateRepository tbProductStockOperateRepository;
@Override @Override
public Map<String,Object> queryAll(TbConsInfoQueryCriteria criteria, Pageable pageable){ public Map<String,Object> queryAll(TbConsInfoQueryCriteria criteria, Pageable pageable){
Page<TbConsInfo> page = tbConsInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page<TbConsInfo> page = tbConsInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
@@ -151,6 +164,41 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
TbConsInfoFlow flow=new TbConsInfoFlow(); TbConsInfoFlow flow=new TbConsInfoFlow();
TbShopPurveyorTransact purveyorTransact = new TbShopPurveyorTransact();
purveyorTransact.setShopId(tbShopInfo.getId().toString());
purveyorTransact.setPurveyorName(purveyor.getPurveyorName());
purveyorTransact.setPurveyorId(purveyor.getId().toString());
purveyorTransact.setRemark("");
purveyorTransact.setCreatedAt(System.currentTimeMillis());
purveyorTransact.setUpdatedAt(System.currentTimeMillis());
TbProductStockOperate stockOperate = new TbProductStockOperate();
stockOperate.setShopId(tbShopInfo.getId().toString());
stockOperate.setStockSnap("");
stockOperate.setType(resources.getType());
stockOperate.setSubType(-1);
Map<String, String> operatorSnapMap = new HashMap<>();
operatorSnapMap.put("name", tbShopInfo.getShopName());
operatorSnapMap.put("account", tbShopInfo.getAccount());
stockOperate.setOperatorSnap(JSON.toJSONString(operatorSnapMap));
stockOperate.setBatchNumber("");
stockOperate.setRemark("");
stockOperate.setStockTime(System.currentTimeMillis());
stockOperate.setCreatedAt(System.currentTimeMillis());
stockOperate.setUpdatedAt(System.currentTimeMillis());
stockOperate.setStatus("normal");
stockOperate.setPurveyorId(resources.getSupplierId().toString());
stockOperate.setPurveyorName(purveyor.getPurveyorName());
tbProductStockOperateRepository.save(stockOperate);
if("in".equals(resources.getType())){ if("in".equals(resources.getType())){
info.setStockNumber(info.getStockNumber().add(resources.getStockNumber())); info.setStockNumber(info.getStockNumber().add(resources.getStockNumber()));
info.setLasterInStock(resources.getStockNumber()); info.setLasterInStock(resources.getStockNumber());
@@ -159,6 +207,11 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
flow.setBizCode("stockIn"); flow.setBizCode("stockIn");
flow.setBizName("耗材入库"); flow.setBizName("耗材入库");
flow.setBizType("+"); flow.setBizType("+");
purveyorTransact.setTotalAmount(resources.getAccountsPayable());
purveyorTransact.setPaidAmount(resources.getActualPayment());
purveyorTransact.setWaitAmount((resources.getAccountsPayable().subtract(resources.getActualPayment())));
purveyorTransact.setType("cons_in");
}else { }else {
@@ -168,9 +221,33 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
flow.setBizCode("stockout"); flow.setBizCode("stockout");
flow.setBizName("耗材出库"); flow.setBizName("耗材出库");
flow.setBizType("-"); flow.setBizType("-");
purveyorTransact.setTotalAmount(resources.getAccountsPayable().negate());
purveyorTransact.setPaidAmount(resources.getActualPayment());
purveyorTransact.setWaitAmount((resources.getAccountsPayable().subtract(resources.getActualPayment())).negate());
purveyorTransact.setType("cons_out");
} }
if (resources.getAccountsPayable().compareTo(resources.getActualPayment()) <= 0) {
purveyorTransact.setStatus(1);
} else {
purveyorTransact.setStatus(0);
}
purveyorTransact.setPaidAt(System.currentTimeMillis());
purveyorTransactRepository.save(purveyorTransact);
if (resources.getSupplierId() != null) {
tbShopPurveyorRepository.upLastTransactAt(resources.getSupplierId().toString());
}
tbConsInfoRepository.save(info); tbConsInfoRepository.save(info);

View File

@@ -2,6 +2,7 @@ package cn.ysk.cashier.cons.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.ysk.cashier.cons.domain.TbConsInfo; import cn.ysk.cashier.cons.domain.TbConsInfo;
import cn.ysk.cashier.cons.domain.TbConsSuppFlow;
import cn.ysk.cashier.cons.domain.TbProskuCon; import cn.ysk.cashier.cons.domain.TbProskuCon;
import cn.ysk.cashier.cons.repository.TbConsInfoRepository; import cn.ysk.cashier.cons.repository.TbConsInfoRepository;
import cn.ysk.cashier.cons.service.dto.ProskuInfo; import cn.ysk.cashier.cons.service.dto.ProskuInfo;
@@ -126,55 +127,58 @@ public class TbProskuConServiceImpl implements TbProskuConService {
if(Objects.nonNull(list)&&list.size()>0){ if(Objects.nonNull(list)&&list.size()>0){
tbProskuConRepository.saveAll(list); tbProskuConRepository.saveAll(list);
} }
return new TbProskuConDto(); return new TbProskuConDto();
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(ProskuInfo resources) throws Exception { public void update(TbProskuCon resources) throws Exception {
TbProskuCon tbProskuCon = tbProskuConRepository.findById(resources.getId()).orElseGet(TbProskuCon::new);
ValidationUtil.isNull( tbProskuCon.getId(),"TbProskuCon","id",resources.getId());
tbProskuCon.copy(resources);
tbProskuConRepository.save(tbProskuCon);
TbProduct product= tbProductRepository.getById(resources.getProductId());
if(Objects.isNull(product)){
throw new Exception("对应的商品信息不存在");
}
TbConsInfo tbConsInfo= tbConsInfoRepository.getById(resources.getConsInfoId()); // TbProduct product= tbProductRepository.getById(resources.getProductId());
if(Objects.isNull(tbConsInfo)){ // if(Objects.isNull(product)){
throw new Exception("对应的耗材信息不存在"); // throw new Exception("对应的商品信息不存在");
} // }
//
List<TbProskuCon> list=new ArrayList<>(); // TbConsInfo tbConsInfo= tbConsInfoRepository.getById(resources.getConsInfoId());
if("1".equals(product.getIsDistribute().toString())){ // if(Objects.isNull(tbConsInfo)){
//查询商品对应的所有规格 // throw new Exception("对应的耗材信息不存在");
List<TbProductSku> skuList= tbProductSkuRepository.searchSku(product.getId().toString()); // }
if(Objects.nonNull(skuList)&&skuList.size()>0){ //
for (TbProductSku tbProductSku : skuList) { // List<TbProskuCon> list=new ArrayList<>();
TbProskuCon tbProskuCon=tbProskuConRepository.selectByConInfoIdAndProductSkuIdAndShopId(resources.getConsInfoId(), tbProductSku.getId(), Integer.valueOf(tbProductSku.getShopId()), Integer.valueOf(tbProductSku.getProductId())); // if("1".equals(product.getIsDistribute().toString())){
if(Objects.nonNull(tbProskuCon)){ // //查询商品对应的所有规格
tbProskuCon.setSurplusStock(resources.getSurplusStock()); // List<TbProductSku> skuList= tbProductSkuRepository.searchSku(product.getId().toString());
tbProskuCon.setStatus(resources.getStatus()); // if(Objects.nonNull(skuList)&&skuList.size()>0){
tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis())); // for (TbProductSku tbProductSku : skuList) {
list.add(tbProskuCon); // TbProskuCon tbProskuCon=tbProskuConRepository.selectByConInfoIdAndProductSkuIdAndShopId(resources.getConsInfoId(), tbProductSku.getId(), Integer.valueOf(tbProductSku.getShopId()), Integer.valueOf(tbProductSku.getProductId()));
} // if(Objects.nonNull(tbProskuCon)){
} // tbProskuCon.setSurplusStock(resources.getSurplusStock());
} // tbProskuCon.setStatus(resources.getStatus());
// tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
}else { // list.add(tbProskuCon);
// }
for (ProskuInfo.SkuInfo skuInfo : resources.getSkuInfos()) { // }
TbProskuCon tbProskuCon=tbProskuConRepository.selectByConInfoIdAndProductSkuIdAndShopId(resources.getConsInfoId(), skuInfo.getSkuId(), skuInfo.getShopId(), resources.getProductId()); // }
if(Objects.nonNull(tbProskuCon)){ //
tbProskuCon.setSurplusStock(skuInfo.getSurplusStock()); // }else {
tbProskuCon.setStatus(skuInfo.getStatus()); //
tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis())); // for (ProskuInfo.SkuInfo skuInfo : resources.getSkuInfos()) {
list.add(tbProskuCon); // TbProskuCon tbProskuCon=tbProskuConRepository.selectByConInfoIdAndProductSkuIdAndShopId(resources.getConsInfoId(), skuInfo.getSkuId(), skuInfo.getShopId(), resources.getProductId());
} // if(Objects.nonNull(tbProskuCon)){
} // tbProskuCon.setSurplusStock(skuInfo.getSurplusStock());
// tbProskuCon.setStatus(skuInfo.getStatus());
} // tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
tbProskuConRepository.saveAll(list); // list.add(tbProskuCon);
// }
// }
//
// }
// tbProskuConRepository.saveAll(list);
} }
@Override @Override