master:新增销售出库、返单等返回code;

pull/1121/head
liujiang 2025-10-09 22:16:44 +08:00
parent dbba5f1741
commit f3e3171d28
5 changed files with 53 additions and 15 deletions

View File

@ -57,16 +57,16 @@ public class StoreSaleController extends XktBaseController {
@ApiOperation(value = "新增档口销售出库", httpMethod = "POST", response = R.class) @ApiOperation(value = "新增档口销售出库", httpMethod = "POST", response = R.class)
@Log(title = "新增档口销售出库", businessType = BusinessType.INSERT) @Log(title = "新增档口销售出库", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public R<Integer> add(@Validated @RequestBody StoreSaleVO storeSaleVO) { public R<StoreSaleSimpleResVO> add(@Validated @RequestBody StoreSaleVO storeSaleVO) {
return R.ok(storeSaleService.insertStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class))); return R.ok(BeanUtil.toBean(storeSaleService.insertStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class)), StoreSaleSimpleResVO.class));
} }
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
@Log(title = "返单后,更新档口销售出库", businessType = BusinessType.UPDATE) @Log(title = "返单后,更新档口销售出库", businessType = BusinessType.UPDATE)
@ApiOperation(value = "返单后,更新档口销售出库", httpMethod = "PUT", response = R.class) @ApiOperation(value = "返单后,更新档口销售出库", httpMethod = "PUT", response = R.class)
@PutMapping @PutMapping
public R<Integer> edit(@Validated @RequestBody StoreSaleVO storeSaleVO) { public R<StoreSaleSimpleResVO> edit(@Validated @RequestBody StoreSaleVO storeSaleVO) {
return R.ok(storeSaleService.updateStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class))); return R.ok(BeanUtil.toBean(storeSaleService.updateStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class)), StoreSaleSimpleResVO.class));
} }
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")

View File

@ -0,0 +1,19 @@
package com.ruoyi.web.controller.xkt.vo.storeSale;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@Data
@ApiModel
public class StoreSaleSimpleResVO {
@ApiModelProperty(value = "单据编号")
private String code;
}

View File

@ -0,0 +1,19 @@
package com.ruoyi.xkt.dto.storeSale;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@Data
@ApiModel
public class StoreSaleSimpleResDTO {
@ApiModelProperty(value = "单据编号")
private String code;
}

View File

@ -28,7 +28,7 @@ public interface IStoreSaleService {
* @param storeSaleDTO * @param storeSaleDTO
* @return * @return
*/ */
int insertStoreSale(StoreSaleDTO storeSaleDTO); StoreSaleSimpleResDTO insertStoreSale(StoreSaleDTO storeSaleDTO);
/** /**
* *
@ -36,7 +36,7 @@ public interface IStoreSaleService {
* @param storeSaleDTO * @param storeSaleDTO
* @return * @return
*/ */
int updateStoreSale(StoreSaleDTO storeSaleDTO); StoreSaleSimpleResDTO updateStoreSale(StoreSaleDTO storeSaleDTO);
/** /**
* *

View File

@ -247,7 +247,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
*/ */
@Override @Override
@Transactional @Transactional
public int insertStoreSale(StoreSaleDTO storeSaleDTO) { public StoreSaleSimpleResDTO insertStoreSale(StoreSaleDTO storeSaleDTO) {
// 用户是否为档口管理者或子账户 // 用户是否为档口管理者或子账户
if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(storeSaleDTO.getStoreId())) { if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(storeSaleDTO.getStoreId())) {
throw new ServiceException("当前用户非档口管理者或子账号,无权限操作!", HttpStatus.ERROR); throw new ServiceException("当前用户非档口管理者或子账号,无权限操作!", HttpStatus.ERROR);
@ -271,7 +271,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
// 属性赋值 // 属性赋值
storeSale.setCode(code).setVoucherDate(voucherDate).setQuantity(quantity).setAmount(amount).setRoundOff(ObjectUtils.defaultIfNull(storeSaleDTO.getRoundOff(), BigDecimal.ZERO)) storeSale.setCode(code).setVoucherDate(voucherDate).setQuantity(quantity).setAmount(amount).setRoundOff(ObjectUtils.defaultIfNull(storeSaleDTO.getRoundOff(), BigDecimal.ZERO))
.setSaleQuantity(saleQuantity).setRefundQuantity(refundQuantity).setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()).setCreateBy(loginUser.getUsername()); .setSaleQuantity(saleQuantity).setRefundQuantity(refundQuantity).setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()).setCreateBy(loginUser.getUsername());
int count = storeSaleMapper.insert(storeSale); storeSaleMapper.insert(storeSale);
// 处理订单明细 // 处理订单明细
List<StoreSaleDetail> saleDetailList = storeSaleDTO.getDetailList().stream().map(x -> { List<StoreSaleDetail> saleDetailList = storeSaleDTO.getDetailList().stream().map(x -> {
StoreSaleDetail saleDetail = BeanUtil.toBean(x, StoreSaleDetail.class).setStoreSaleId(storeSale.getId()).setStoreId(storeSale.getStoreId()) StoreSaleDetail saleDetail = BeanUtil.toBean(x, StoreSaleDetail.class).setStoreSaleId(storeSale.getId()).setStoreId(storeSale.getStoreId())
@ -287,7 +287,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
.mapping(StoreSaleDTO.SaleDetailVO::getQuantity, Collectors.reducing(0, Integer::sum))))); .mapping(StoreSaleDTO.SaleDetailVO::getQuantity, Collectors.reducing(0, Integer::sum)))));
// 组装库存调整入参调整库存 // 组装库存调整入参调整库存
this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, -1), 1); this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, -1), 1);
return count; return BeanUtil.toBean(storeSale, StoreSaleSimpleResDTO.class);
} }
@ -299,7 +299,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
*/ */
@Override @Override
@Transactional @Transactional
public int updateStoreSale(StoreSaleDTO storeSaleDTO) { public StoreSaleSimpleResDTO updateStoreSale(StoreSaleDTO storeSaleDTO) {
Optional.ofNullable(storeSaleDTO.getStoreSaleId()).orElseThrow(() -> new ServiceException("storeSaleId不能为空!", HttpStatus.ERROR)); Optional.ofNullable(storeSaleDTO.getStoreSaleId()).orElseThrow(() -> new ServiceException("storeSaleId不能为空!", HttpStatus.ERROR));
// 用户是否为档口管理者或子账户 // 用户是否为档口管理者或子账户
if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(storeSaleDTO.getStoreId())) { if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(storeSaleDTO.getStoreId())) {
@ -344,7 +344,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
BigDecimal amount = storeSaleDTO.getDetailList().stream().map(x -> ObjectUtils.defaultIfNull(x.getAmount(), BigDecimal.ZERO)).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal amount = storeSaleDTO.getDetailList().stream().map(x -> ObjectUtils.defaultIfNull(x.getAmount(), BigDecimal.ZERO)).reduce(BigDecimal.ZERO, BigDecimal::add);
// 扣除掉抹零金额 // 扣除掉抹零金额
amount = amount.subtract(ObjectUtils.defaultIfNull(storeSaleDTO.getRoundOff(), BigDecimal.ZERO)); amount = amount.subtract(ObjectUtils.defaultIfNull(storeSaleDTO.getRoundOff(), BigDecimal.ZERO));
int count = this.storeSaleMapper.updateById(storeSale.setQuantity(quantity).setAmount(amount).setSaleQuantity(saleQuantity).setRefundQuantity(refundQuantity).setVoucherDate(voucherDate) this.storeSaleMapper.updateById(storeSale.setQuantity(quantity).setAmount(amount).setSaleQuantity(saleQuantity).setRefundQuantity(refundQuantity).setVoucherDate(voucherDate)
.setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()).setRoundOff(ObjectUtils.defaultIfNull(storeSaleDTO.getRoundOff(), BigDecimal.ZERO))); .setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()).setRoundOff(ObjectUtils.defaultIfNull(storeSaleDTO.getRoundOff(), BigDecimal.ZERO)));
// 先将所有明细置为无效,再新增 // 先将所有明细置为无效,再新增
this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag(Constants.DELETED)).collect(Collectors.toList())); this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag(Constants.DELETED)).collect(Collectors.toList()));
@ -365,7 +365,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
.mapping(StoreSaleDetail::getQuantity, Collectors.reducing(0, Integer::sum))))); .mapping(StoreSaleDetail::getQuantity, Collectors.reducing(0, Integer::sum)))));
// 调整库存 // 调整库存
this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, 1), 1); this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, 1), 1);
return count; return BeanUtil.toBean(storeSale, StoreSaleSimpleResDTO.class);
} }
/** /**
@ -396,9 +396,9 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
.groupingBy(StoreProductColorSize::getStoreProdId, Collectors .groupingBy(StoreProductColorSize::getStoreProdId, Collectors
.toMap(StoreProductColorSize::getSize, StoreProductColorSize::getStandard, (v1, v2) -> v2))); .toMap(StoreProductColorSize::getSize, StoreProductColorSize::getStandard, (v1, v2) -> v2)));
return storeSaleDTO.setDetailList(saleDetailList.stream().map(x -> { return storeSaleDTO.setDetailList(saleDetailList.stream().map(x -> {
Map<Integer, Integer> tempSizeMap = sizeMap.getOrDefault(x.getStoreProdId(), new HashMap<>()); Map<Integer, Integer> tempSizeMap = sizeMap.getOrDefault(x.getStoreProdId(), new HashMap<>());
return BeanUtil.toBean(x, StoreSaleResDTO.SSDetailDTO.class).setStandard(tempSizeMap.get(x.getSize())); return BeanUtil.toBean(x, StoreSaleResDTO.SSDetailDTO.class).setStandard(tempSizeMap.get(x.getSize()));
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
} }
/** /**