出入库成本价调整
This commit is contained in:
parent
358ad1b6e7
commit
b315c23402
|
|
@ -46,11 +46,11 @@ import javax.persistence.EntityManager;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @author lyf
|
||||||
* @description 服务实现
|
* @website https://eladmin.vip
|
||||||
* @author lyf
|
* @description 服务实现
|
||||||
* @date 2024-01-25
|
* @date 2024-01-25
|
||||||
**/
|
**/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TbProductStockOperateServiceImpl implements TbProductStockOperateService {
|
public class TbProductStockOperateServiceImpl implements TbProductStockOperateService {
|
||||||
|
|
@ -62,7 +62,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
private final TbShopInfoRepository shopInfoRepository;
|
private final TbShopInfoRepository shopInfoRepository;
|
||||||
private final TbProductSkuRepository tbProductSkuRepository;
|
private final TbProductSkuRepository tbProductSkuRepository;
|
||||||
private final TbProductSkuService productSkuService;
|
private final TbProductSkuService productSkuService;
|
||||||
private final EntityManager entityManager;
|
private final EntityManager entityManager;
|
||||||
|
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
private final TbProductRepository tbProductRepository;
|
private final TbProductRepository tbProductRepository;
|
||||||
|
|
@ -74,25 +74,25 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort);
|
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort);
|
||||||
|
|
||||||
|
|
||||||
Page<TbProductStockOperate> page = tbProductStockOperateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
Page<TbProductStockOperate> page = tbProductStockOperateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
||||||
List<ProductStockOperateVO> stockOperateVOList = new ArrayList<>();
|
List<ProductStockOperateVO> stockOperateVOList = new ArrayList<>();
|
||||||
for (TbProductStockOperate stockOperate :page.getContent()) {
|
for (TbProductStockOperate stockOperate : page.getContent()) {
|
||||||
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
|
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
|
||||||
BeanUtils.copyProperties(stockOperate,stockOperateVO);
|
BeanUtils.copyProperties(stockOperate, stockOperateVO);
|
||||||
stockOperateVO.setStockSnap(ListUtil.stringChangeList(stockOperate.getStockSnap()));
|
stockOperateVO.setStockSnap(ListUtil.stringChangeList(stockOperate.getStockSnap()));
|
||||||
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(stockOperate.getOperatorSnap()));
|
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(stockOperate.getOperatorSnap()));
|
||||||
stockOperateVO.setType();
|
stockOperateVO.setType();
|
||||||
stockOperateVOList.add(stockOperateVO);
|
stockOperateVOList.add(stockOperateVO);
|
||||||
}
|
}
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("content",stockOperateVOList);
|
map.put("content", stockOperateVOList);
|
||||||
map.put("totalElements", page.getTotalElements());
|
map.put("totalElements", page.getTotalElements());
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbProductStockOperate> queryAll(TbProductStockOperateQueryCriteria criteria){
|
public List<TbProductStockOperate> queryAll(TbProductStockOperateQueryCriteria criteria) {
|
||||||
return tbProductStockOperateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder));
|
return tbProductStockOperateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -113,12 +113,12 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
public ProductStockOperateVO findById(Integer id) {
|
public ProductStockOperateVO findById(Integer id) {
|
||||||
TbProductStockOperate tbProductStockOperate = tbProductStockOperateRepository.findById(id).orElseGet(TbProductStockOperate::new);
|
TbProductStockOperate tbProductStockOperate = tbProductStockOperateRepository.findById(id).orElseGet(TbProductStockOperate::new);
|
||||||
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
|
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
|
||||||
BeanUtils.copyProperties(tbProductStockOperate,stockOperateVO);
|
BeanUtils.copyProperties(tbProductStockOperate, stockOperateVO);
|
||||||
stockOperateVO.setStockSnap(ListUtil.stringChangeList(tbProductStockOperate.getStockSnap()));
|
stockOperateVO.setStockSnap(ListUtil.stringChangeList(tbProductStockOperate.getStockSnap()));
|
||||||
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(tbProductStockOperate.getOperatorSnap()));
|
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(tbProductStockOperate.getOperatorSnap()));
|
||||||
|
|
||||||
|
|
||||||
ValidationUtil.isNull(tbProductStockOperate.getId(),"TbProductStockOperate","id",id);
|
ValidationUtil.isNull(tbProductStockOperate.getId(), "TbProductStockOperate", "id", id);
|
||||||
return stockOperateVO;
|
return stockOperateVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,18 +130,19 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库
|
* 出库
|
||||||
|
*
|
||||||
* @param resources
|
* @param resources
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public OutAndOnDto createOutAndONOperate(OutAndOnDto resources) {
|
public OutAndOnDto createOutAndONOperate(OutAndOnDto resources) {
|
||||||
if(CollectionUtils.isEmpty(resources.getList())){
|
if (CollectionUtils.isEmpty(resources.getList())) {
|
||||||
throw new BadRequestException("出入库数据不可为空");
|
throw new BadRequestException("出入库数据不可为空");
|
||||||
}
|
}
|
||||||
//用户相关
|
//用户相关
|
||||||
TbShopInfo byId = shopInfoRepository.findById(Integer.valueOf(resources.getShopId())).orElseGet(TbShopInfo::new);
|
TbShopInfo byId = shopInfoRepository.findById(Integer.valueOf(resources.getShopId())).orElseGet(TbShopInfo::new);
|
||||||
if (byId.getId() == null){
|
if (byId.getId() == null) {
|
||||||
throw new BadRequestException("商户号有误");
|
throw new BadRequestException("商户号有误");
|
||||||
}
|
}
|
||||||
//增加操作日志
|
//增加操作日志
|
||||||
|
|
@ -151,14 +152,14 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
stockOperate.setStockSnap(resources.getList().toString());
|
stockOperate.setStockSnap(resources.getList().toString());
|
||||||
stockOperate.setType(resources.getType());
|
stockOperate.setType(resources.getType());
|
||||||
//其它入库 //purveyor 供应商入库
|
//其它入库 //purveyor 供应商入库
|
||||||
if ("purchase".equals(resources.getType()) || "purveyor".equals(resources.getType())){
|
if ("purchase".equals(resources.getType()) || "purveyor".equals(resources.getType())) {
|
||||||
stockOperate.setSubType(1);
|
stockOperate.setSubType(1);
|
||||||
}else {
|
} else {
|
||||||
stockOperate.setSubType(-1);
|
stockOperate.setSubType(-1);
|
||||||
}
|
}
|
||||||
Map<String, String> operatorSnapMap = new HashMap<>();
|
Map<String, String> operatorSnapMap = new HashMap<>();
|
||||||
operatorSnapMap.put("name", byId.getShopName());
|
operatorSnapMap.put("name", byId.getShopName());
|
||||||
operatorSnapMap.put("account",byId.getAccount());
|
operatorSnapMap.put("account", byId.getAccount());
|
||||||
|
|
||||||
stockOperate.setOperatorSnap(JSON.toJSONString(operatorSnapMap));
|
stockOperate.setOperatorSnap(JSON.toJSONString(operatorSnapMap));
|
||||||
stockOperate.setBatchNumber(resources.getBatchNumber());
|
stockOperate.setBatchNumber(resources.getBatchNumber());
|
||||||
|
|
@ -173,9 +174,9 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
//供应商退货 reject
|
//供应商退货 reject
|
||||||
//供应商入库 purveyor
|
//供应商入库 purveyor
|
||||||
if ("reject".equals(resources.getType()) || "purveyor".equals(resources.getType())) {
|
if ("reject".equals(resources.getType()) || "purveyor".equals(resources.getType())) {
|
||||||
if(StringUtils.isNotBlank(resources.getPurveyorId())){
|
if (StringUtils.isNotBlank(resources.getPurveyorId())) {
|
||||||
Optional<TbShopPurveyor> byId1 = purveyorRepository.findById(Integer.valueOf(resources.getPurveyorId()));
|
Optional<TbShopPurveyor> byId1 = purveyorRepository.findById(Integer.valueOf(resources.getPurveyorId()));
|
||||||
if(byId1.isPresent()){
|
if (byId1.isPresent()) {
|
||||||
TbShopPurveyor tbShopPurveyor = byId1.get();
|
TbShopPurveyor tbShopPurveyor = byId1.get();
|
||||||
resources.setPurveyorName(tbShopPurveyor.getPurveyorName());
|
resources.setPurveyorName(tbShopPurveyor.getPurveyorName());
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +258,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
double refundStockNum = getStockNum(product, tbProductSku, productListDto.getNumber(), false);
|
double refundStockNum = getStockNum(product, tbProductSku, productListDto.getNumber(), false);
|
||||||
setProSpecInfo(product, refundStockNum,
|
setProSpecInfo(product, tbProductSku, refundStockNum,
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice(), isDistribute);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -269,7 +270,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
productStockDetail.setType("供应商出库");
|
productStockDetail.setType("供应商出库");
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
setProSpecInfo(product, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice(), isDistribute);
|
||||||
break;
|
break;
|
||||||
//后台入库
|
//后台入库
|
||||||
|
|
@ -282,7 +283,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
double stockNum = getStockNum(product, tbProductSku, productListDto.getNumber(), true);
|
double stockNum = getStockNum(product, tbProductSku, productListDto.getNumber(), true);
|
||||||
setProSpecInfo(product, stockNum,
|
setProSpecInfo(product, tbProductSku, stockNum,
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice(), isDistribute);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -295,7 +296,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
productStockDetail.setType("其他入库");
|
productStockDetail.setType("其他入库");
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
setProSpecInfo(product, getStockNum(product, tbProductSku, productListDto.getNumber(), true),
|
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), true),
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice(), isDistribute);
|
||||||
break;
|
break;
|
||||||
case "other-out":
|
case "other-out":
|
||||||
|
|
@ -307,7 +308,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
productStockDetail.setType("其他出库");
|
productStockDetail.setType("其他出库");
|
||||||
|
|
||||||
// 获取增加后的库存
|
// 获取增加后的库存
|
||||||
setProSpecInfo(product, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
setProSpecInfo(product, tbProductSku, getStockNum(product, tbProductSku, productListDto.getNumber(), false),
|
||||||
productListDto.getCostPrice(), isDistribute);
|
productListDto.getCostPrice(), isDistribute);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -328,7 +329,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
idStockMap.put(productListDto.getId(), productStockDetail.getStockNumber());
|
idStockMap.put(productListDto.getId(), productStockDetail.getStockNumber());
|
||||||
}
|
}
|
||||||
redisUtils.redisUp(2, resources.getShopId(), idStockMap);
|
redisUtils.redisUp(2, resources.getShopId(), idStockMap);
|
||||||
}else {
|
} else {
|
||||||
tbProductStockOperateRepository.save(stockOperate);
|
tbProductStockOperateRepository.save(stockOperate);
|
||||||
}
|
}
|
||||||
return resources;
|
return resources;
|
||||||
|
|
@ -338,13 +339,13 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
if (product.getIsDistribute() == 1) {
|
if (product.getIsDistribute() == 1) {
|
||||||
product.setStockNumber((int) (isAdd ? product.getStockNumber() + num : product.getStockNumber() - num));
|
product.setStockNumber((int) (isAdd ? product.getStockNumber() + num : product.getStockNumber() - num));
|
||||||
return product.getStockNumber();
|
return product.getStockNumber();
|
||||||
}else {
|
} else {
|
||||||
productSku.setStockNumber(isAdd ? productSku.getStockNumber() + num : productSku.getStockNumber() - num);
|
productSku.setStockNumber(isAdd ? productSku.getStockNumber() + num : productSku.getStockNumber() - num);
|
||||||
return productSku.getStockNumber();
|
return productSku.getStockNumber();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setProSpecInfo(TbProduct product, double num, BigDecimal cost, boolean isShareStock) {
|
private void setProSpecInfo(TbProduct product, TbProductSku productSku, double num, BigDecimal cost, boolean isShareStock) {
|
||||||
if (product.getSpecInfo() != null) {
|
if (product.getSpecInfo() != null) {
|
||||||
JSONArray specInfoArr = JSON.parseArray(product.getSpecInfo());
|
JSONArray specInfoArr = JSON.parseArray(product.getSpecInfo());
|
||||||
for (Object item : specInfoArr) {
|
for (Object item : specInfoArr) {
|
||||||
|
|
@ -352,7 +353,11 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
if (isShareStock) {
|
if (isShareStock) {
|
||||||
jsonObject.put("stockNumber", num);
|
jsonObject.put("stockNumber", num);
|
||||||
jsonObject.put("costPrice", cost);
|
jsonObject.put("costPrice", cost);
|
||||||
}else if (product.getSpecInfo() != null && product.getSpecInfo().equals(jsonObject.getString("specSnap"))) {
|
} else if (productSku != null &&
|
||||||
|
(
|
||||||
|
productSku.getId().equals(jsonObject.getInteger("id")) ||
|
||||||
|
(productSku.getSpecSnap() != null && productSku.getSpecSnap().equals(jsonObject.getString("specSnap")))
|
||||||
|
)) {
|
||||||
jsonObject.put("stockNumber", num);
|
jsonObject.put("stockNumber", num);
|
||||||
jsonObject.put("costPrice", cost);
|
jsonObject.put("costPrice", cost);
|
||||||
break;
|
break;
|
||||||
|
|
@ -367,7 +372,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(TbProductStockOperate resources) {
|
public void update(TbProductStockOperate resources) {
|
||||||
TbProductStockOperate tbProductStockOperate = tbProductStockOperateRepository.findById(resources.getId()).orElseGet(TbProductStockOperate::new);
|
TbProductStockOperate tbProductStockOperate = tbProductStockOperateRepository.findById(resources.getId()).orElseGet(TbProductStockOperate::new);
|
||||||
ValidationUtil.isNull( tbProductStockOperate.getId(),"TbProductStockOperate","id",resources.getId());
|
ValidationUtil.isNull(tbProductStockOperate.getId(), "TbProductStockOperate", "id", resources.getId());
|
||||||
tbProductStockOperate.copy(resources);
|
tbProductStockOperate.copy(resources);
|
||||||
tbProductStockOperateRepository.save(tbProductStockOperate);
|
tbProductStockOperateRepository.save(tbProductStockOperate);
|
||||||
}
|
}
|
||||||
|
|
@ -383,26 +388,26 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
|
||||||
public void download(List<TbProductStockOperate> all, HttpServletResponse response) throws IOException {
|
public void download(List<TbProductStockOperate> all, HttpServletResponse response) throws IOException {
|
||||||
|
|
||||||
List<Map<String, Object>> list = new ArrayList<>();
|
List<Map<String, Object>> list = new ArrayList<>();
|
||||||
for (TbProductStockOperate stockOperate :all) {
|
for (TbProductStockOperate stockOperate : all) {
|
||||||
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
|
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
|
||||||
BeanUtils.copyProperties(stockOperate,stockOperateVO);
|
BeanUtils.copyProperties(stockOperate, stockOperateVO);
|
||||||
stockOperateVO.setType();
|
stockOperateVO.setType();
|
||||||
stockOperateVO.setStockSnap(ListUtil.stringChangeList(stockOperate.getStockSnap()));
|
stockOperateVO.setStockSnap(ListUtil.stringChangeList(stockOperate.getStockSnap()));
|
||||||
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(stockOperate.getOperatorSnap()));
|
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(stockOperate.getOperatorSnap()));
|
||||||
Map<String,Object> map = new LinkedHashMap<>();
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
for (int i = 0; i < stockOperateVO.getStockSnap().size(); i++) {
|
for (int i = 0; i < stockOperateVO.getStockSnap().size(); i++) {
|
||||||
if(i==0){
|
if (i == 0) {
|
||||||
map.put("操作类型 ", stockOperateVO.getType());
|
map.put("操作类型 ", stockOperateVO.getType());
|
||||||
map.put("供应商名称", stockOperateVO.getPurveyorName());
|
map.put("供应商名称", stockOperateVO.getPurveyorName());
|
||||||
map.put("商品数量 ", stockOperateVO.getStockSnap().size());
|
map.put("商品数量 ", stockOperateVO.getStockSnap().size());
|
||||||
map.put(" 备 注 ", stockOperateVO.getRemark());
|
map.put(" 备 注 ", stockOperateVO.getRemark());
|
||||||
map.put("操作人 ", stockOperateVO.getOperatorSnap().get("account"));
|
map.put("操作人 ", stockOperateVO.getOperatorSnap().get("account"));
|
||||||
map.put("创建时间", DateUtil.getStrTime(new Date(stockOperateVO.getStockTime())));
|
map.put("创建时间", DateUtil.getStrTime(new Date(stockOperateVO.getStockTime())));
|
||||||
}else {
|
} else {
|
||||||
map.put("操作类型 ", "");
|
map.put("操作类型 ", "");
|
||||||
map.put("供应商名称", "");
|
map.put("供应商名称", "");
|
||||||
map.put("商品数量 ", "");
|
map.put("商品数量 ", "");
|
||||||
map.put(" 备 注 ", "");
|
map.put(" 备 注 ", "");
|
||||||
map.put("操 作 人", "");
|
map.put("操 作 人", "");
|
||||||
map.put("创建时间", "");
|
map.put("创建时间", "");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue