添加耗材警告

This commit is contained in:
韩鹏辉
2024-07-03 14:51:55 +08:00
parent 8da3d036b1
commit f7b44edf0d
6 changed files with 133 additions and 136 deletions

View File

@@ -29,6 +29,9 @@ public interface TbProskuConMapper {
List<Integer> selectIdBySkuIdAndShopId(@Param("skuId") Integer skuId, @Param("shopId") Integer shopId);
TbProskuCon selectByShopIdAndSkuIdAndProductId(@Param("skuId") Integer skuId, @Param("shopId") Integer shopId,@Param("productId") Integer productId);
}

View File

@@ -25,6 +25,12 @@ public class TbConsInfo implements Serializable {
private BigDecimal conWarning;
private BigDecimal stockConsume;
private String status;
private BigDecimal price;
private Date createTime;
private Date updateTime;
@@ -126,4 +132,28 @@ public class TbConsInfo implements Serializable {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public BigDecimal getStockConsume() {
return stockConsume;
}
public void setStockConsume(BigDecimal stockConsume) {
this.stockConsume = stockConsume;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}

View File

@@ -9,6 +9,8 @@ public class TbProskuCon implements Serializable {
private Integer shopId;
private Integer productId;
private Integer productSkuId;
private Integer conInfoId;
@@ -37,6 +39,14 @@ public class TbProskuCon implements Serializable {
this.shopId = shopId;
}
public Integer getProductId() {
return productId;
}
public void setProductId(Integer productId) {
this.productId = productId;
}
public Integer getProductSkuId() {
return productSkuId;
}

View File

@@ -2,20 +2,15 @@ package com.chaozhanggui.system.cashierservice.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chaozhanggui.system.cashierservice.dao.TbCashierCartMapper;
import com.chaozhanggui.system.cashierservice.dao.TbConsInfoFlowMapper;
import com.chaozhanggui.system.cashierservice.dao.TbConsInfoMapper;
import com.chaozhanggui.system.cashierservice.dao.TbProskuConMapper;
import com.chaozhanggui.system.cashierservice.entity.TbCashierCart;
import com.chaozhanggui.system.cashierservice.entity.TbConsInfo;
import com.chaozhanggui.system.cashierservice.entity.TbConsInfoFlow;
import com.chaozhanggui.system.cashierservice.entity.TbProskuCon;
import com.chaozhanggui.system.cashierservice.dao.*;
import com.chaozhanggui.system.cashierservice.entity.*;
import com.chaozhanggui.system.cashierservice.entity.po.ConsInfoPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
@Slf4j
@@ -36,6 +31,9 @@ public class ConsService {
@Autowired
TbConsInfoFlowMapper tbConsInfoFlowMapper;
@Autowired
TbOrderDetailMapper tbOrderDetailMapper;
@Transactional(rollbackFor = Exception.class)
public void exect(String message) throws Exception {
log.info("耗材信息更新开始:{}",message);
@@ -43,109 +41,66 @@ public class ConsService {
String type=jsonObject.getString("type");
if(Objects.nonNull(type)){
String orderId=jsonObject.getString("orderId");
List<TbOrderDetail> orderDetails= tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId));
if(Objects.isNull(orderDetails)||orderDetails.size()<=0){
log.info("订单信息不存在");
return;
}
List<ConsInfoPO> consInfoPOS=new ArrayList<>();
List<TbConsInfoFlow> consInfoFlows=new ArrayList<>();
for (TbOrderDetail orderDetail : orderDetails) {
TbProskuCon proskuCon= tbProskuConMapper.selectByShopIdAndSkuIdAndProductId(orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId());
if(Objects.isNull(proskuCon)){
log.info("不存在的耗材信息配置:orderId:{},skuId:{},shopId:{},productId:{}",orderDetail.getOrderId(),orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId());
continue;
}
TbConsInfo tbConsInfo= tbConsInfoMapper.selectByPrimaryKey(proskuCon.getConInfoId());
if(Objects.nonNull(tbConsInfo)&&"1".equals(tbConsInfo.getStatus())){
BigDecimal amount=BigDecimal.ZERO;
TbConsInfoFlow flow=new TbConsInfoFlow();
flow.setConsId(tbConsInfo.getId());
flow.setShopId(tbConsInfo.getShopId());
flow.setConName(tbConsInfo.getConName());
if("create".equals(type)){
amount=proskuCon.getSurplusStock().multiply(new BigDecimal(orderDetail.getNum()));
String cartId=jsonObject.getString("cartId");
TbCashierCart cart= tbCashierCartMapper.selectByPrimaryKey(Integer.valueOf(cartId));
if(Objects.isNull(cart)){
log.info("不存在的购物车信息::{}",cartId);
return;
}
//减少耗材库存信息
List<TbProskuCon> tbProskuCons= tbProskuConMapper.selectBySkuIdAndShopId(Integer.valueOf(cart.getSkuId()),Integer.valueOf(cart.getShopId()));
if(Objects.isNull(tbProskuCons)||tbProskuCons.size()<=0){
log.info("没有对应的耗材配置: skuId:{},shopId:{}",cart.getSkuId(),cart.getShopId());
return;
}
List<ConsInfoPO> consInfoPOS=new ArrayList<>();
List<TbConsInfoFlow> consInfoFlows=new ArrayList<>();
for (TbProskuCon tbProskuCon : tbProskuCons) {
TbConsInfo tbConsInfo= tbConsInfoMapper.selectByPrimaryKey(tbProskuCon.getConInfoId());
if(Objects.nonNull(tbConsInfo)){
ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),tbProskuCon.getSurplusStock());
consInfoPOS.add(consInfoPO);
TbConsInfoFlow flow=new TbConsInfoFlow();
flow.setConsId(tbConsInfo.getId());
flow.setShopId(tbConsInfo.getShopId());
flow.setConName(tbConsInfo.getConName());
flow.setAmount(tbProskuCon.getSurplusStock());
flow.setBalance(tbConsInfo.getStockNumber().subtract(tbProskuCon.getSurplusStock()));
flow.setAmount(amount);
flow.setBalance(tbConsInfo.getStockNumber().subtract(amount));
flow.setBizCode("createCart");
flow.setBizName("加入购物消耗");
flow.setBizName("加入购物消耗");
flow.setBizType("-");
flow.setCreateTime(new Date());
flow.setUpdateTime(new Date());
consInfoFlows.add(flow);
}
}
}else if("delete".equals(type)){
amount=proskuCon.getSurplusStock().multiply(new BigDecimal(orderDetail.getNum())).negate();
//更新耗材信息
tbConsInfoMapper.batchStock(consInfoPOS);
//记录更新日志
tbConsInfoFlowMapper.insertBatch(consInfoFlows);
return;
}
if("delete".equals(type)){
List jsonArray= jsonObject.getJSONArray("skuIds").toJavaList(Integer.class);
String shopId= jsonObject.getString("shopId");
if(Objects.isNull(jsonArray)||jsonArray.size()<=0){
log.info("错误的商品规格信息");
return;
}
List<ConsInfoPO> consInfoPOS=new ArrayList<>();
List<TbConsInfoFlow> consInfoFlows=new ArrayList<>();
for(int i=0;i<jsonArray.size();i++){
//减少耗材库存信息
List<TbProskuCon> tbProskuCons= tbProskuConMapper.selectBySkuIdAndShopId(Integer.valueOf(jsonArray.get(i)+""),Integer.valueOf(shopId));
if(Objects.isNull(tbProskuCons)||tbProskuCons.size()<=0){
log.info("没有对应的耗材配置: skuId:{},shopId:{}",jsonArray.get(i),shopId);
return;
}
for (TbProskuCon tbProskuCon : tbProskuCons) {
TbConsInfo tbConsInfo= tbConsInfoMapper.selectByPrimaryKey(tbProskuCon.getConInfoId());
if(Objects.nonNull(tbConsInfo)){
ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),tbProskuCon.getSurplusStock().negate());
consInfoPOS.add(consInfoPO);
TbConsInfoFlow flow=new TbConsInfoFlow();
flow.setConsId(tbConsInfo.getId());
flow.setShopId(tbConsInfo.getShopId());
flow.setConName(tbConsInfo.getConName());
flow.setAmount(tbProskuCon.getSurplusStock());
flow.setBalance(tbConsInfo.getStockNumber().add(tbProskuCon.getSurplusStock()));
flow.setAmount(amount.abs());
flow.setBalance(tbConsInfo.getStockNumber().subtract(amount));
flow.setBizCode("cancelCart");
flow.setBizName("取消购物车返回");
flow.setBizType("+");
}
ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),amount);
consInfoPOS.add(consInfoPO);
flow.setCreateTime(new Date());
flow.setUpdateTime(new Date());
consInfoFlows.add(flow);
}
}
}
//更新耗材信息
tbConsInfoMapper.batchStock(consInfoPOS);
//记录更新日志
tbConsInfoFlowMapper.insertBatch(consInfoFlows);
return;
}
}
}
}
}
}

View File

@@ -126,13 +126,6 @@ public class OrderService {
}
}
JSONObject objectMsg=new JSONObject();
objectMsg.put("skuId",skuWithBLOBs.getId());
objectMsg.put("shopId",shopInfo.getId());
producer.con_msg(objectMsg.toString());
if (StringUtils.isEmpty(masterId)) {
boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId);
if (flag) {
@@ -236,11 +229,7 @@ public class OrderService {
redisUtil.saveMessage("SHOP:CODE:SET" + clientType + ":" + shopId + ":" + DateUtils.getDay(),masterId.substring(1,masterId.length()));
//修改耗材数据
JSONObject jsonObject=new JSONObject();
jsonObject.put("cartId",cart.getId());
jsonObject.put("type","create");
producer.cons(jsonObject.toString());
CompletableFuture.runAsync(() -> checkWarnLineAndSendMsg(skuWithBLOBs, product, shopInfo, number));
return Result.success(CodeEnum.SUCCESS, masterId);
@@ -364,14 +353,6 @@ public class OrderService {
cashierCartMapper.deleteByCartId(masterId, cartId);
//修改耗材数据
JSONObject jsonObject=new JSONObject();
jsonObject.put("type","delete");
jsonObject.put("skuIds",skuIds);
jsonObject.put("shopId",cashierCart.getShopId());
producer.cons(jsonObject.toString());
return Result.success(CodeEnum.SUCCESS);
}
@@ -399,6 +380,14 @@ public class OrderService {
return Result.fail(CARTEXIST);
}
for (TbCashierCart cashierCart : list) {
JSONObject objectMsg=new JSONObject();
objectMsg.put("skuId",Integer.valueOf(cashierCart.getSkuId()));
objectMsg.put("shopId",Integer.valueOf(cashierCart.getShopId()));
producer.con_msg(objectMsg.toString());
TbProductSkuWithBLOBs tbProduct = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId()));
totalAmount = totalAmount.add(cashierCart.getTotalAmount());
packAMount = packAMount.add(cashierCart.getPackFee());
@@ -543,6 +532,17 @@ public class OrderService {
redisUtil.saveMessage(RedisCst.OUT_NUMBER.concat(orderInfo.getShopId().toString()),object.toString());
//修改耗材数据
JSONObject jsonObject=new JSONObject();
jsonObject.put("orderId",orderInfo.getId());
jsonObject.put("type","create");
producer.cons(jsonObject.toString());
return Result.success(CodeEnum.SUCCESS, orderInfo);
}
@@ -820,15 +820,6 @@ public class OrderService {
tbProductSkuMapper.batchStockNum(productSkuPos);
}
//修改耗材数据
JSONObject jsonObject=new JSONObject();
jsonObject.put("type","delete");
jsonObject.put("skuIds",skuIds);
jsonObject.put("shopId",cartVo.getShopId());
producer.cons(jsonObject.toString());
return Result.success(CodeEnum.SUCCESS);
}

View File

@@ -924,6 +924,14 @@ public class PayService {
producer.printMechine(String.valueOf(newOrderInfo.getId()));
//修改耗材数据
JSONObject jsonObject1=new JSONObject();
jsonObject1.put("orderId",orderInfo.getId());
jsonObject1.put("type","delete");
producer.cons(jsonObject1.toString());
// 更新商品库存
for (TbOrderDetail detail : returnDetail) {
detail = tbOrderDetailMapper.selectByPrimaryKey(detail.getId());