20 changed files with 653 additions and 5 deletions
@ -0,0 +1,24 @@ |
|||
package cc.hiver.core.config.jpush; |
|||
|
|||
import org.springframework.beans.factory.annotation.Value; |
|||
import org.springframework.context.annotation.Bean; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
import cn.jiguang.common.ClientConfig; |
|||
import cn.jpush.api.JPushClient; |
|||
|
|||
@Configuration |
|||
public class JPushConfig { |
|||
|
|||
@Value("${jpush.appKey}") |
|||
private String appKey; |
|||
|
|||
@Value("${jpush.masterSecret}") |
|||
private String masterSecret; |
|||
|
|||
@Bean |
|||
public JPushClient jPushClient() { |
|||
ClientConfig clientConfig = ClientConfig.getInstance(); |
|||
return new JPushClient(masterSecret, appKey, null, clientConfig); |
|||
} |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package cc.hiver.core.service; |
|||
|
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import cn.jpush.api.JPushClient; |
|||
import cn.jpush.api.push.PushResult; |
|||
import cn.jpush.api.push.model.Message; |
|||
import cn.jpush.api.push.model.PushPayload; |
|||
import cn.jpush.api.push.model.notification.Notification; |
|||
|
|||
@Service |
|||
public class JPushService { |
|||
|
|||
private final JPushClient jPushClient; |
|||
|
|||
@Autowired |
|||
public JPushService(JPushClient jPushClient) { |
|||
this.jPushClient = jPushClient; |
|||
} |
|||
|
|||
public void sendPushNotification(String registrationId, String message) { |
|||
PushPayload payload = PushPayload.newBuilder() |
|||
.setPlatform(cn.jpush.api.push.model.Platform.all()) |
|||
.setAudience(cn.jpush.api.push.model.audience.Audience.registrationId(registrationId)) |
|||
.setNotification(Notification.alert(message)) |
|||
.build(); |
|||
|
|||
try { |
|||
PushResult result = jPushClient.sendPush(payload); |
|||
System.out.println("Push result: " + result); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package cc.hiver.mall.controller; |
|||
|
|||
import cc.hiver.core.service.JPushService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.GetMapping; |
|||
import org.springframework.web.bind.annotation.RequestParam; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
@RestController |
|||
public class PushController { |
|||
|
|||
private final JPushService jPushService; |
|||
|
|||
@Autowired |
|||
public PushController(JPushService jPushService) { |
|||
this.jPushService = jPushService; |
|||
} |
|||
|
|||
@GetMapping("/push") |
|||
public String pushNotification(@RequestParam String registrationId, @RequestParam String message) { |
|||
jPushService.sendPushNotification(registrationId, message); |
|||
return "Push request sent!"; |
|||
} |
|||
} |
|||
@ -0,0 +1,136 @@ |
|||
package cc.hiver.mall.controller; |
|||
|
|||
import cc.hiver.core.common.utils.ResultUtil; |
|||
import cc.hiver.core.common.utils.SecurityUtil; |
|||
import cc.hiver.core.common.utils.StringUtils; |
|||
import cc.hiver.core.common.vo.Result; |
|||
import cc.hiver.mall.entity.*; |
|||
|
|||
|
|||
import cc.hiver.mall.pojo.dto.SaleDTO; |
|||
import cc.hiver.mall.pojo.vo.SaleQueryVO; |
|||
import cc.hiver.mall.pojo.vo.SaleVO; |
|||
import cc.hiver.mall.service.*; |
|||
import cc.hiver.mall.service.mybatis.SaleDetailService; |
|||
import cc.hiver.mall.service.mybatis.SaleService; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
import org.springframework.util.ObjectUtils; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Slf4j |
|||
@RestController |
|||
@Api(tags = "销售订单接口") |
|||
@RequestMapping(value = "/hiver/app/sale/") |
|||
@Transactional |
|||
public class SaleController { |
|||
@Autowired |
|||
private SalesAndDetailsService salesAndDetailsService; |
|||
|
|||
@Autowired |
|||
private StockAndLogService stockAndLogService; |
|||
|
|||
@Autowired |
|||
private RushOrderService rushOrderService; |
|||
|
|||
@Autowired |
|||
private SendMessageService sendMessageService; |
|||
|
|||
@Autowired |
|||
private SaleService saleService; |
|||
|
|||
@Autowired |
|||
private SaleDetailService saleDetailService; |
|||
|
|||
@Autowired |
|||
private SecurityUtil securityUtil; |
|||
|
|||
|
|||
@RequestMapping(value = "/buy", method = RequestMethod.POST) |
|||
@ApiOperation(value = "下单操作") |
|||
@Transactional |
|||
public Result buy(@RequestBody SaleDTO saleDTO) { |
|||
|
|||
/** |
|||
* 订单中是物流且包含扛包工人员的话,直接进入抢单表 |
|||
* */ |
|||
//1.处理订单表模块
|
|||
Sale sale = salesAndDetailsService.handleSalesAndDetails(saleDTO); |
|||
//更新sale
|
|||
saleDTO.setSale(sale); |
|||
//2.处理库存模块
|
|||
stockAndLogService.handleSubStockAndLog(saleDTO.getSaleDetailList()); |
|||
//3.处理抢单模块
|
|||
rushOrderService.handleRushOrder(saleDTO); |
|||
//4.消息推送模块
|
|||
sendMessageService.handleSendAppMessage(); |
|||
|
|||
return ResultUtil.success("下单成功"); |
|||
|
|||
} |
|||
|
|||
@RequestMapping(value = "/edit", method = RequestMethod.POST) |
|||
@ApiOperation(value = "根据id修改货品属性") |
|||
public Result edit(SaleQueryVO saleQueryVO) { |
|||
Sale sale = saleQueryVO.getSale(); |
|||
List<SaleDetail> saleDetailList = saleQueryVO.getSaleDetailList(); |
|||
boolean result = saleService.updateById(sale); |
|||
if(result) { |
|||
QueryWrapper<SaleDetail> deleteWrapper = new QueryWrapper<>(); |
|||
deleteWrapper.eq("sale_id",sale.getId()); |
|||
boolean removeBatchByIds = saleDetailService.remove(deleteWrapper); |
|||
if (removeBatchByIds){ |
|||
return saleDetailService.saveBatch(saleDetailList)?ResultUtil.success("修改成功"):ResultUtil.error("修改失败"); |
|||
} |
|||
} |
|||
return ResultUtil.error("修改失败"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/delById", method = RequestMethod.POST) |
|||
@ApiOperation(value = "根据id删除订单") |
|||
public Result delete(Sale sale) { |
|||
boolean result = saleService.removeById(sale); |
|||
if(result) { |
|||
QueryWrapper<SaleDetail> deleteWrapper = new QueryWrapper<>(); |
|||
deleteWrapper.eq("sale_id",sale.getId()); |
|||
boolean removeBatchByIds = saleDetailService.remove(deleteWrapper); |
|||
if (removeBatchByIds){ |
|||
return ResultUtil.success("删除成功"); |
|||
} |
|||
} |
|||
return ResultUtil.error("删除失败"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/list", method = RequestMethod.POST) |
|||
@ApiOperation(value = "根据条件获得分页") |
|||
public Result<List<Sale>> queryAll(SaleVO saleVO) { |
|||
QueryWrapper<Sale> queryWrapper = new QueryWrapper<>(); |
|||
if (!ObjectUtils.isEmpty(saleVO)){ |
|||
if (ObjectUtils.isEmpty(saleVO.getPayStatus())) queryWrapper.eq("pay_status",saleVO.getPayStatus()); |
|||
if (StringUtils.isEmpty(saleVO.getStatus())) queryWrapper.eq("status",saleVO.getStatus()); |
|||
if (StringUtils.isEmpty(saleVO.getTransportType())) queryWrapper.eq("transport_type",saleVO.getTransportType()); |
|||
} |
|||
List<Sale> saleList = saleService.list(queryWrapper); |
|||
return new ResultUtil<List<Sale>>().setData(saleList); |
|||
} |
|||
|
|||
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET) |
|||
@ApiOperation(value = "获得订单详情") |
|||
public Result<SaleQueryVO> get(@PathVariable String id) { |
|||
SaleQueryVO saleQueryVO = new SaleQueryVO(); |
|||
Sale sale = saleService.getById(id); |
|||
saleQueryVO.setSale(sale); |
|||
QueryWrapper<SaleDetail> queryWrapper = new QueryWrapper<>(); |
|||
queryWrapper.eq("sale_id",id); |
|||
List<SaleDetail> saleDetailList = saleDetailService.list(queryWrapper); |
|||
saleQueryVO.setSaleDetailList(saleDetailList); |
|||
return new ResultUtil<SaleQueryVO>().setData(saleQueryVO); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,29 @@ |
|||
package cc.hiver.mall.pojo.dto; |
|||
|
|||
import cc.hiver.mall.entity.Sale; |
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
@ApiModel(value = "销售单主表") |
|||
@Data |
|||
public class SaleDTO implements Serializable { |
|||
|
|||
@ApiModelProperty(value = "订单") |
|||
private Sale sale; |
|||
|
|||
@ApiModelProperty(value = "订单明细") |
|||
private List<SaleDetail> saleDetailList; |
|||
|
|||
|
|||
@ApiModelProperty(value = "扛包工编号") |
|||
private String orderByWorker; |
|||
|
|||
@ApiModelProperty(value = "物流公司编号") |
|||
private String transCompany; |
|||
|
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
package cc.hiver.mall.pojo.vo; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
@ApiModel(value = "消息推送实体") |
|||
public class MessageVO implements Serializable { |
|||
@ApiModelProperty(value = "客户端标识") |
|||
private String registrationId; |
|||
|
|||
@ApiModelProperty(value = "消息内容") |
|||
private String message; |
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
package cc.hiver.mall.pojo.vo; |
|||
|
|||
import cc.hiver.mall.entity.Sale; |
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
@ApiModel(value = "销售单主表") |
|||
@Data |
|||
public class SaleQueryVO implements Serializable { |
|||
|
|||
@ApiModelProperty(value = "订单") |
|||
private Sale sale; |
|||
|
|||
@ApiModelProperty(value = "订单明细") |
|||
private List<SaleDetail> saleDetailList; |
|||
|
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
package cc.hiver.mall.pojo.vo; |
|||
|
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.math.BigDecimal; |
|||
import java.util.List; |
|||
@Data |
|||
@ApiModel(value = "销售单主表") |
|||
public class SaleVO implements Serializable { |
|||
|
|||
@ApiModelProperty(value = "收款状态 0-未收款 1-已收款 2-部分收款") |
|||
private String payStatus; |
|||
|
|||
@ApiModelProperty(value = "订单状态 1-未预定 2-已预定 3-待自提 4-已取货 5-已送达") |
|||
private String status; |
|||
|
|||
@ApiModelProperty(value = "物流类别 1-物流 2-快递 3-自提 4-拼单") |
|||
private String transportType; |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.service; |
|||
|
|||
import cc.hiver.mall.pojo.dto.SaleDTO; |
|||
|
|||
public interface RushOrderService { |
|||
|
|||
void handleRushOrder(SaleDTO saleDTO); |
|||
|
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
package cc.hiver.mall.service; |
|||
|
|||
import cc.hiver.mall.entity.Sale; |
|||
import cc.hiver.mall.pojo.dto.SaleDTO; |
|||
import cc.hiver.mall.pojo.vo.SaleVO; |
|||
|
|||
public interface SalesAndDetailsService { |
|||
|
|||
public Sale handleSalesAndDetails(SaleDTO saleDTO); |
|||
|
|||
public Sale handleBackSalesAndDetails(SaleDTO saleDTO); |
|||
|
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.service; |
|||
|
|||
public interface SendMessageService { |
|||
|
|||
void handleSendAppMessage(); |
|||
|
|||
void handleSendWXMessage(); |
|||
|
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
package cc.hiver.mall.service; |
|||
|
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface StockAndLogService { |
|||
|
|||
//出
|
|||
void handleSubStockAndLog(List<SaleDetail> saleDetailList); |
|||
|
|||
//入
|
|||
void handleIncStockAndLog(List<SaleDetail> saleDetailList); |
|||
|
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
package cc.hiver.mall.service.mybatis; |
|||
|
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
|
|||
public interface SaleDetailService extends IService<SaleDetail> { |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,41 @@ |
|||
package cc.hiver.mall.serviceimpl; |
|||
|
|||
import cc.hiver.mall.entity.OrderXd; |
|||
import cc.hiver.mall.entity.Sale; |
|||
import cc.hiver.mall.pojo.dto.SaleDTO; |
|||
import cc.hiver.mall.service.OrderService; |
|||
import cc.hiver.mall.service.RushOrderService; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
public class RushOrderServiceImpl implements RushOrderService { |
|||
|
|||
@Autowired |
|||
OrderService orderService; |
|||
|
|||
@Override |
|||
public void handleRushOrder(SaleDTO saleDTO) { |
|||
/** |
|||
* 根据销售单推入至抢单表 |
|||
* */ |
|||
Sale sale = saleDTO.getSale(); |
|||
OrderXd orderXd = new OrderXd(); |
|||
orderXd.setOrderId(sale.getId()); |
|||
orderXd.setOrderLogistics(sale.getTransportType()); |
|||
orderXd.setOrderAddress(sale.getProvince()+","+sale.getCity()+","+sale.getArea()); |
|||
if("4".equals(sale.getTransportType())) |
|||
orderXd.setOrderStreet(sale.getShareAddress()); |
|||
else |
|||
orderXd.setOrderStreet(sale.getReceiveAddress()); |
|||
orderXd.setOrderStatus(Integer.valueOf(sale.getStatus())); |
|||
orderXd.setOrderByWorker(StrUtil.isNotEmpty(saleDTO.getOrderByWorker())? saleDTO.getOrderByWorker() : null); |
|||
orderXd.setTransCompany(saleDTO.getTransCompany()); |
|||
orderXd.setOrderByWorkertime(sale.getCreateTime()); |
|||
orderXd.setTimeout(2); |
|||
|
|||
orderService.save(orderXd); |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,103 @@ |
|||
package cc.hiver.mall.serviceimpl; |
|||
|
|||
import cc.hiver.mall.entity.Sale; |
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
import cc.hiver.mall.pojo.dto.SaleDTO; |
|||
import cc.hiver.mall.service.SalesAndDetailsService; |
|||
import cc.hiver.mall.service.mybatis.SaleDetailService; |
|||
import cc.hiver.mall.service.mybatis.SaleService; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.List; |
|||
|
|||
@Service |
|||
public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { |
|||
|
|||
|
|||
@Autowired |
|||
SaleService saleService; |
|||
|
|||
@Autowired |
|||
SaleDetailService saleDetailService; |
|||
|
|||
@Override |
|||
public Sale handleSalesAndDetails(SaleDTO saleDTO) { |
|||
|
|||
/** |
|||
* 1.处理Sale总订单 |
|||
* 处理订单状态/收款状态 |
|||
* */ |
|||
Sale sale = saleDTO.getSale(); |
|||
|
|||
BigDecimal realAmount = sale.getRealAmount(); |
|||
BigDecimal alreadyEarn = sale.getAlreadyEarn(); |
|||
if(realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)>0 && alreadyEarn.compareTo(BigDecimal.ZERO)>0){ |
|||
sale.setPayStatus("2"); |
|||
} else if (realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)==0){ |
|||
sale.setPayStatus("1"); |
|||
} else { |
|||
sale.setPayStatus("0"); |
|||
} |
|||
|
|||
if (StrUtil.isNotBlank(saleDTO.getOrderByWorker())) { |
|||
sale.setStatus("2"); |
|||
} else { |
|||
sale.setStatus("1"); |
|||
} |
|||
saleService.save(sale); |
|||
|
|||
String saleId = sale.getId(); |
|||
/** |
|||
* 2.处理SaleDetail明细单 |
|||
* */ |
|||
|
|||
List<SaleDetail> saleDetailList = saleDTO.getSaleDetailList(); |
|||
for(SaleDetail saleDetail : saleDetailList) |
|||
saleDetail.setSaleId(saleId); |
|||
saleDetailService.saveBatch(saleDetailList); |
|||
|
|||
return sale; |
|||
} |
|||
|
|||
@Override |
|||
public Sale handleBackSalesAndDetails(SaleDTO saleDTO) { |
|||
|
|||
/** |
|||
* 1.处理Sale总订单 |
|||
* 处理订单状态/收款状态 |
|||
* */ |
|||
Sale sale = saleDTO.getSale(); |
|||
|
|||
BigDecimal realAmount = sale.getRealAmount(); |
|||
BigDecimal alreadyEarn = sale.getAlreadyEarn(); |
|||
if(realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)>0 && alreadyEarn.compareTo(BigDecimal.ZERO)>0){ |
|||
sale.setPayStatus("2"); |
|||
} else if (realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)==0){ |
|||
sale.setPayStatus("1"); |
|||
} else { |
|||
sale.setPayStatus("0"); |
|||
} |
|||
|
|||
if (StrUtil.isNotBlank(saleDTO.getOrderByWorker())) { |
|||
sale.setStatus("2"); |
|||
} else { |
|||
sale.setStatus("1"); |
|||
} |
|||
saleService.save(sale); |
|||
|
|||
String saleId = sale.getId(); |
|||
/** |
|||
* 2.处理SaleDetail明细单 |
|||
* */ |
|||
|
|||
List<SaleDetail> saleDetailList = saleDTO.getSaleDetailList(); |
|||
for(SaleDetail saleDetail : saleDetailList) |
|||
saleDetail.setSaleId(saleId); |
|||
saleDetailService.saveBatch(saleDetailList); |
|||
|
|||
return sale; |
|||
} |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
package cc.hiver.mall.serviceimpl; |
|||
|
|||
import cc.hiver.core.service.JPushService; |
|||
import cc.hiver.mall.service.SendMessageService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
public class SendMessageServiceImpl implements SendMessageService { |
|||
|
|||
@Autowired |
|||
JPushService jPushService; |
|||
|
|||
@Override |
|||
public void handleSendAppMessage() { |
|||
String registrationId = ""; |
|||
String message = "宝贝儿,来订单了"; |
|||
jPushService.sendPushNotification(registrationId, message); |
|||
} |
|||
|
|||
@Override |
|||
public void handleSendWXMessage() { |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,95 @@ |
|||
package cc.hiver.mall.serviceimpl; |
|||
|
|||
import cc.hiver.core.common.utils.BeanUtils; |
|||
import cc.hiver.mall.entity.SaleDetail; |
|||
import cc.hiver.mall.entity.Stock; |
|||
import cc.hiver.mall.entity.StockLog; |
|||
import cc.hiver.mall.service.StockAndLogService; |
|||
import cc.hiver.mall.service.mybatis.SaleDetailService; |
|||
import cc.hiver.mall.service.mybatis.StockLogService; |
|||
import cc.hiver.mall.service.mybatis.StockService; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Service |
|||
public class StockAndLogServiceImpl implements StockAndLogService { |
|||
|
|||
@Autowired |
|||
StockService stockService; |
|||
|
|||
@Autowired |
|||
StockLogService stockLogService; |
|||
|
|||
@Autowired |
|||
SaleDetailService saleDetailService; |
|||
|
|||
@Override |
|||
public void handleSubStockAndLog(List<SaleDetail> saleDetailList) { |
|||
|
|||
//根据销售单明细进行库存消减
|
|||
for(SaleDetail saleDetail : saleDetailList){ |
|||
String productId = saleDetail.getProductId(); |
|||
String attributeList = saleDetail.getAttributeList(); |
|||
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>(); |
|||
stockQueryWrapper.eq("product_id",productId); |
|||
stockQueryWrapper.eq("attribute_list",attributeList); |
|||
//存在库存则修改库存数量
|
|||
Stock origin = stockService.getOne(stockQueryWrapper); |
|||
Integer stockCount = origin.getStockCount(); |
|||
UpdateWrapper<Stock> updateWrapper = new UpdateWrapper<>(); |
|||
updateWrapper.eq("id",origin.getId()); |
|||
updateWrapper.set("stock_count",stockCount - saleDetail.getProductCount()); |
|||
stockService.update(updateWrapper); |
|||
|
|||
//2.记录库存履历
|
|||
StockLog stockLog = new StockLog(); |
|||
stockLog.setChangeType("1");//出库
|
|||
stockLog.setProductId(saleDetail.getProductId()); |
|||
stockLog.setProductSpecs(saleDetail.getAttributeList()); |
|||
stockLog.setStock(stockCount);//出库前数量
|
|||
stockLog.setChangeStock(saleDetail.getProductCount());//出库数量
|
|||
stockLog.setPrice(saleDetail.getPrice()); |
|||
stockLog.setPurchasePrice(saleDetail.getPurchasePrice()); |
|||
stockLog.setWholesalePrice(saleDetail.getWholesalePrice()); |
|||
stockLog.setShopId(saleDetail.getShopId()); |
|||
stockLogService.save(stockLog); |
|||
} |
|||
|
|||
} |
|||
|
|||
@Override |
|||
public void handleIncStockAndLog(List<SaleDetail> saleDetailList) { |
|||
//根据销售单明细进行库存消减
|
|||
for(SaleDetail saleDetail : saleDetailList){ |
|||
String productId = saleDetail.getProductId(); |
|||
String attributeList = saleDetail.getAttributeList(); |
|||
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>(); |
|||
stockQueryWrapper.eq("product_id",productId); |
|||
stockQueryWrapper.eq("attribute_list",attributeList); |
|||
//存在库存则修改库存数量
|
|||
Stock origin = stockService.getOne(stockQueryWrapper); |
|||
Integer stockCount = origin.getStockCount(); |
|||
UpdateWrapper<Stock> updateWrapper = new UpdateWrapper<>(); |
|||
updateWrapper.eq("id",origin.getId()); |
|||
updateWrapper.set("stock_count",stockCount + saleDetail.getProductCount()); |
|||
stockService.update(updateWrapper); |
|||
|
|||
//2.记录库存履历
|
|||
StockLog stockLog = new StockLog(); |
|||
stockLog.setChangeType("0");//退货-入库
|
|||
stockLog.setProductId(saleDetail.getProductId()); |
|||
stockLog.setProductSpecs(saleDetail.getAttributeList()); |
|||
stockLog.setStock(stockCount);//退货-入库前数量
|
|||
stockLog.setChangeStock(saleDetail.getProductCount());//退货-入库数量
|
|||
stockLog.setPrice(saleDetail.getPrice()); |
|||
stockLog.setPurchasePrice(saleDetail.getPurchasePrice()); |
|||
stockLog.setWholesalePrice(saleDetail.getWholesalePrice()); |
|||
stockLog.setShopId(saleDetail.getShopId()); |
|||
stockLogService.save(stockLog); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue