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