Browse Source

Merge branch 'dev-new-houpn' into dev

cangku
Houpn 3 years ago
parent
commit
ca86d8dbe8
  1. 6
      hiver-admin/src/main/resources/application.yml
  2. 10
      hiver-core/pom.xml
  3. 24
      hiver-core/src/main/java/cc/hiver/core/config/jpush/JPushConfig.java
  4. 36
      hiver-core/src/main/java/cc/hiver/core/service/JPushService.java
  5. 24
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PushController.java
  6. 136
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java
  7. 8
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java
  8. 29
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/SaleDTO.java
  9. 15
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/MessageVO.java
  10. 22
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleQueryVO.java
  11. 28
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleVO.java
  12. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/RushOrderService.java
  13. 13
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SalesAndDetailsService.java
  14. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SendMessageService.java
  15. 15
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/StockAndLogService.java
  16. 10
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleDetailService.java
  17. 41
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/RushOrderServiceImpl.java
  18. 103
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java
  19. 25
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SendMessageServiceImpl.java
  20. 95
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/StockAndLogServiceImpl.java

6
hiver-admin/src/main/resources/application.yml

@ -287,6 +287,7 @@ ignored:
# 临时增加 # 临时增加
- /hiver/app/** - /hiver/app/**
- /hiver/thorui/** - /hiver/thorui/**
- /hiver/order/**
# 限流及黑名单不拦截的路径 # 限流及黑名单不拦截的路径
limitUrls: limitUrls:
- /**/*.js - /**/*.js
@ -351,4 +352,7 @@ logging:
# 最大保存天数 # 最大保存天数
max-history: 7 max-history: 7
# 每个文件最大大小 # 每个文件最大大小
max-file-size: 5MB max-file-size: 5MB
jpush:
appKey: 130f556e8473c9b558777fe3
masterSecret: 2b4e5196dfc40a78db36480d

10
hiver-core/pom.xml

@ -138,5 +138,15 @@
<groupId>org.seleniumhq.selenium</groupId> <groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId> <artifactId>selenium-java</artifactId>
</dependency> </dependency>
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.2.17</version>
</dependency>
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.1.12</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

24
hiver-core/src/main/java/cc/hiver/core/config/jpush/JPushConfig.java

@ -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);
}
}

36
hiver-core/src/main/java/cc/hiver/core/service/JPushService.java

@ -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();
}
}
}

24
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PushController.java

@ -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!";
}
}

136
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java

@ -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);
}
}

8
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java

@ -12,7 +12,7 @@ import java.util.Date;
@ApiModel(value = "销售单主表") @ApiModel(value = "销售单主表")
@TableName(value = "t_sale", autoResultMap = true) @TableName(value = "t_sale", autoResultMap = true)
public class Sale implements Serializable { public class Sale implements Serializable {
private String id = SnowFlakeUtil.nextId().toString(); private String id = "XD" + SnowFlakeUtil.nextId().toString();
private String createBy; private String createBy;
@ -48,13 +48,13 @@ public class Sale implements Serializable {
@ApiModelProperty(value = "未收") @ApiModelProperty(value = "未收")
private BigDecimal noEarn; private BigDecimal noEarn;
@ApiModelProperty(value = "收款状态 0-未收款 1-已收款") @ApiModelProperty(value = "收款状态 0-未收款 1-已收款 2-部分收款")
private String payStatus; private String payStatus;
@ApiModelProperty(value = "订单状态 0-拣货中 1-已提交抢单 2-已取货 3-已送达") @ApiModelProperty(value = "订单状态 1-拣货中 2-已预定 3-已作废 4-已取货 5-已送达")
private String status; private String status;
@ApiModelProperty(value = "物流类别 0-物流 1-快递 2-自提 3-拼单") @ApiModelProperty(value = "物流类别 1-物流 2-自提 3-快递 4-拼单")
private String transportType; private String transportType;
@ApiModelProperty(value = "拼单店铺地址 为拼单类别时手动输入") @ApiModelProperty(value = "拼单店铺地址 为拼单类别时手动输入")

29
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/SaleDTO.java

@ -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;
}

15
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/MessageVO.java

@ -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;
}

22
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleQueryVO.java

@ -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;
}

28
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleVO.java

@ -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;
}

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/RushOrderService.java

@ -0,0 +1,9 @@
package cc.hiver.mall.service;
import cc.hiver.mall.pojo.dto.SaleDTO;
public interface RushOrderService {
void handleRushOrder(SaleDTO saleDTO);
}

13
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SalesAndDetailsService.java

@ -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);
}

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SendMessageService.java

@ -0,0 +1,9 @@
package cc.hiver.mall.service;
public interface SendMessageService {
void handleSendAppMessage();
void handleSendWXMessage();
}

15
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/StockAndLogService.java

@ -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);
}

10
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleDetailService.java

@ -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> {
}

41
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/RushOrderServiceImpl.java

@ -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);
}
}

103
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java

@ -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;
}
}

25
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SendMessageServiceImpl.java

@ -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() {
}
}

95
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/StockAndLogServiceImpl.java

@ -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…
Cancel
Save