Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
44ae142d74
|
|
@ -23,6 +23,7 @@ import javax.persistence.*;
|
|||
import javax.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
|
|
@ -94,6 +95,14 @@ public class ViewConSku implements Serializable {
|
|||
@ApiModelProperty(value = "单价")
|
||||
private String price;
|
||||
|
||||
|
||||
@Column(name = "`create_time`")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Timestamp createTime;
|
||||
|
||||
|
||||
|
||||
|
||||
public void copy(ViewConSku source){
|
||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,4 +10,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|||
* @date 2024-06-22
|
||||
**/
|
||||
public interface TbConsInfoRepository extends JpaRepository<TbConsInfo, Integer>, JpaSpecificationExecutor<TbConsInfo> {
|
||||
|
||||
|
||||
int countByConCode(String conCode);
|
||||
}
|
||||
|
|
@ -10,4 +10,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|||
* @date 2024-06-22
|
||||
**/
|
||||
public interface TbConsTypeRepository extends JpaRepository<TbConsType, Integer>, JpaSpecificationExecutor<TbConsType> {
|
||||
|
||||
int countByConTypeCode(String conTypeCode);
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ public class TbConsTypeController {
|
|||
@PostMapping
|
||||
@Log("新增耗材类型")
|
||||
@ApiOperation("新增耗材类型")
|
||||
public ResponseEntity<Object> createTbConsType(@Validated @RequestBody TbConsType resources){
|
||||
public ResponseEntity<Object> createTbConsType(@Validated @RequestBody TbConsType resources) throws Exception {
|
||||
resources.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
||||
return new ResponseEntity<>(tbConsTypeService.create(resources),HttpStatus.CREATED);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class TbProskuConController {
|
|||
@PutMapping
|
||||
@Log("修改商品规格耗材信息")
|
||||
@ApiOperation("修改商品规格耗材信息")
|
||||
public ResponseEntity<Object> updateTbProskuCon(@Validated @RequestBody ProskuInfo resources) throws Exception {
|
||||
public ResponseEntity<Object> updateTbProskuCon(@Validated @RequestBody TbProskuCon resources) throws Exception {
|
||||
tbProskuConService.update(resources);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public interface TbConsTypeService {
|
|||
* @param resources /
|
||||
* @return TbConsTypeDto
|
||||
*/
|
||||
TbConsTypeDto create(TbConsType resources);
|
||||
TbConsTypeDto create(TbConsType resources) throws Exception;
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public interface TbProskuConService {
|
|||
* 编辑
|
||||
* @param resources /
|
||||
*/
|
||||
void update(ProskuInfo resources) throws Exception;
|
||||
void update(TbProskuCon resources) throws Exception;
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package cn.ysk.cashier.cons.service.dto;
|
|||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
/**
|
||||
* @author admin
|
||||
|
|
@ -66,5 +67,7 @@ public class ViewConSkuDto implements Serializable {
|
|||
|
||||
private String price;
|
||||
|
||||
private Timestamp createTime;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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.TbConsInfoFlowQueryCriteria;
|
||||
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.transaction.annotation.Transactional;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
|
@ -37,6 +39,10 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService {
|
|||
|
||||
@Override
|
||||
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);
|
||||
return PageUtil.toPage(page.map(tbConsInfoFlowMapper::toDto));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,14 +8,19 @@ import cn.ysk.cashier.cons.repository.TbConsInfoFlowRepository;
|
|||
import cn.ysk.cashier.cons.repository.TbConsSuppFlowRepository;
|
||||
import cn.ysk.cashier.cons.repository.TbConsTypeRepository;
|
||||
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.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.TbShopPurveyorRepository;
|
||||
import cn.ysk.cashier.repository.shop.TbShopPurveyorTransactRepository;
|
||||
import cn.ysk.cashier.utils.FileUtil;
|
||||
import cn.ysk.cashier.utils.PageUtil;
|
||||
import cn.ysk.cashier.utils.QueryHelp;
|
||||
import cn.ysk.cashier.utils.ValidationUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import cn.ysk.cashier.cons.repository.TbConsInfoRepository;
|
||||
import cn.ysk.cashier.cons.service.TbConsInfoService;
|
||||
|
|
@ -55,6 +60,14 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
|
|||
private final TbShopPurveyorRepository tbShopPurveyorRepository;
|
||||
|
||||
private final TbShopInfoRepository tbShopInfoRepository;
|
||||
|
||||
|
||||
private final TbShopPurveyorTransactRepository purveyorTransactRepository;
|
||||
|
||||
|
||||
private final TbProductStockOperateRepository tbProductStockOperateRepository;
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(TbConsInfoQueryCriteria criteria, Pageable pageable){
|
||||
Page<TbConsInfo> page = tbConsInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||
|
|
@ -84,6 +97,12 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
|
|||
throw new Exception("不存在的耗材类型");
|
||||
}
|
||||
|
||||
|
||||
|
||||
int count= tbConsInfoRepository.countByConCode(resources.getConCode());
|
||||
if(count>0){
|
||||
throw new Exception("耗材代码不允许重复");
|
||||
}
|
||||
resources.setConTypeName(tbConsType.getConTypeName());
|
||||
resources.setLasterInStock(BigDecimal.ZERO);
|
||||
resources.setStockNumber(BigDecimal.ZERO);
|
||||
|
|
@ -151,6 +170,41 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
|
|||
|
||||
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())){
|
||||
info.setStockNumber(info.getStockNumber().add(resources.getStockNumber()));
|
||||
info.setLasterInStock(resources.getStockNumber());
|
||||
|
|
@ -159,6 +213,11 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
|
|||
flow.setBizCode("stockIn");
|
||||
flow.setBizName("耗材入库");
|
||||
flow.setBizType("+");
|
||||
|
||||
purveyorTransact.setTotalAmount(resources.getAccountsPayable());
|
||||
purveyorTransact.setPaidAmount(resources.getActualPayment());
|
||||
purveyorTransact.setWaitAmount((resources.getAccountsPayable().subtract(resources.getActualPayment())));
|
||||
purveyorTransact.setType("cons_in");
|
||||
}else {
|
||||
|
||||
|
||||
|
|
@ -168,9 +227,33 @@ public class TbConsInfoServiceImpl implements TbConsInfoService {
|
|||
flow.setBizCode("stockout");
|
||||
flow.setBizName("耗材出库");
|
||||
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);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,14 @@ public class TbConsTypeServiceImpl implements TbConsTypeService {
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public TbConsTypeDto create(TbConsType resources) {
|
||||
public TbConsTypeDto create(TbConsType resources) throws Exception {
|
||||
|
||||
|
||||
int count= tbConsTypeRepository.countByConTypeCode(resources.getConTypeCode());
|
||||
if(count>0){
|
||||
throw new Exception("耗材类型代码不允许重复");
|
||||
}
|
||||
|
||||
return tbConsTypeMapper.toDto(tbConsTypeRepository.save(resources));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package cn.ysk.cashier.cons.service.impl;
|
|||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
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.repository.TbConsInfoRepository;
|
||||
import cn.ysk.cashier.cons.service.dto.ProskuInfo;
|
||||
|
|
@ -126,55 +127,58 @@ public class TbProskuConServiceImpl implements TbProskuConService {
|
|||
if(Objects.nonNull(list)&&list.size()>0){
|
||||
tbProskuConRepository.saveAll(list);
|
||||
}
|
||||
|
||||
|
||||
return new TbProskuConDto();
|
||||
}
|
||||
|
||||
@Override
|
||||
@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());
|
||||
if(Objects.isNull(tbConsInfo)){
|
||||
throw new Exception("对应的耗材信息不存在");
|
||||
}
|
||||
|
||||
List<TbProskuCon> list=new ArrayList<>();
|
||||
if("1".equals(product.getIsDistribute().toString())){
|
||||
//查询商品对应的所有规格
|
||||
List<TbProductSku> skuList= tbProductSkuRepository.searchSku(product.getId().toString());
|
||||
if(Objects.nonNull(skuList)&&skuList.size()>0){
|
||||
for (TbProductSku tbProductSku : skuList) {
|
||||
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()));
|
||||
list.add(tbProskuCon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}else {
|
||||
|
||||
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());
|
||||
tbProskuCon.setStatus(skuInfo.getStatus());
|
||||
tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
||||
list.add(tbProskuCon);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
tbProskuConRepository.saveAll(list);
|
||||
// TbProduct product= tbProductRepository.getById(resources.getProductId());
|
||||
// if(Objects.isNull(product)){
|
||||
// throw new Exception("对应的商品信息不存在");
|
||||
// }
|
||||
//
|
||||
// TbConsInfo tbConsInfo= tbConsInfoRepository.getById(resources.getConsInfoId());
|
||||
// if(Objects.isNull(tbConsInfo)){
|
||||
// throw new Exception("对应的耗材信息不存在");
|
||||
// }
|
||||
//
|
||||
// List<TbProskuCon> list=new ArrayList<>();
|
||||
// if("1".equals(product.getIsDistribute().toString())){
|
||||
// //查询商品对应的所有规格
|
||||
// List<TbProductSku> skuList= tbProductSkuRepository.searchSku(product.getId().toString());
|
||||
// if(Objects.nonNull(skuList)&&skuList.size()>0){
|
||||
// for (TbProductSku tbProductSku : skuList) {
|
||||
// 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()));
|
||||
// list.add(tbProskuCon);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }else {
|
||||
//
|
||||
// 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());
|
||||
// tbProskuCon.setStatus(skuInfo.getStatus());
|
||||
// tbProskuCon.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
||||
// list.add(tbProskuCon);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// tbProskuConRepository.saveAll(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -105,20 +105,24 @@ public class TbShopPurveyorTransactServiceImpl implements TbShopPurveyorTransact
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void payTransact(TbShopPurveyorTransact resources) {
|
||||
if (resources.getPaidAmount().compareTo(BigDecimal.ZERO) == 0) {
|
||||
throw new BadRequestException("付款金额不能为 0");
|
||||
}
|
||||
TbShopPurveyorTransact tbShopPurveyorTransact = tbShopPurveyorTransactRepository.findById(resources.getId()).orElseGet(TbShopPurveyorTransact::new);
|
||||
ValidationUtil.isNull(tbShopPurveyorTransact.getId(), "TbShopPurveyorTransact", "id", resources.getId());
|
||||
tbShopPurveyorTransact.setPaidAmount(tbShopPurveyorTransact.getPaidAmount().add(resources.getPaidAmount()));
|
||||
if (resources.getPaidAmount().compareTo(BigDecimal.ZERO) == 0) {
|
||||
throw new BadRequestException("付款金额不能为 0");
|
||||
} else {
|
||||
if (tbShopPurveyorTransact.getWaitAmount().compareTo(BigDecimal.ZERO) > 0 && resources.getPaidAmount().compareTo(BigDecimal.ZERO) > 0) {//待付款金额大于0
|
||||
tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().subtract(resources.getPaidAmount()));
|
||||
} else if (tbShopPurveyorTransact.getWaitAmount().compareTo(BigDecimal.ZERO) < 0 && resources.getPaidAmount().compareTo(BigDecimal.ZERO) < 0) {
|
||||
tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().subtract(resources.getPaidAmount()));
|
||||
} else {
|
||||
tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().add(resources.getPaidAmount()));
|
||||
}
|
||||
}
|
||||
tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getTotalAmount().subtract(tbShopPurveyorTransact.getPaidAmount()));
|
||||
// if (resources.getPaidAmount().compareTo(BigDecimal.ZERO) == 0) {
|
||||
// throw new BadRequestException("付款金额不能为 0");
|
||||
// } else {
|
||||
// if (tbShopPurveyorTransact.getWaitAmount().compareTo(BigDecimal.ZERO) > 0 && resources.getPaidAmount().compareTo(BigDecimal.ZERO) > 0) {//待付款金额大于0
|
||||
// tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().subtract(resources.getPaidAmount()));
|
||||
// } else if (tbShopPurveyorTransact.getWaitAmount().compareTo(BigDecimal.ZERO) < 0 && resources.getPaidAmount().compareTo(BigDecimal.ZERO) < 0) {
|
||||
// tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().subtract(resources.getPaidAmount()));
|
||||
// } else {
|
||||
// tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().add(resources.getPaidAmount()));
|
||||
// }
|
||||
// }
|
||||
tbShopPurveyorTransact.setPaidAt(System.currentTimeMillis());
|
||||
if (tbShopPurveyorTransact.getWaitAmount().compareTo(tbShopPurveyorTransact.getPaidAmount()) <= 0) {
|
||||
tbShopPurveyorTransact.setStatus(1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue