From 9b921c37534869976e0f5a5d12351e35c932d839 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Thu, 24 Mar 2022 18:27:47 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=8C=E6=88=90=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E5=AE=9E=E7=8E=B0=20=20=E9=A1=B5=E9=9D=A2todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xjs/mall/RemoteProductFeign.java | 21 ++++++++ .../core/constant/ServiceNameConstants.java | 5 ++ .../views/mall/ware/warepurchase/purchase.vue | 2 +- .../product/controller/SkuInfoController.java | 20 ++++++-- .../ware/controller/PurchaseController.java | 11 ++++- .../com/xjs/mall/ware/dao/WareSkuDao.java | 14 ++++-- .../mall/ware/service/PurchaseService.java | 9 +++- .../xjs/mall/ware/service/WareSkuService.java | 8 +++ .../service/impl/PurchaseServiceImpl.java | 49 ++++++++++++++++++- .../ware/service/impl/WareSkuServiceImpl.java | 38 +++++++++++++- .../com/xjs/mall/ware/vo/PurchaseDoneVo.java | 18 +++++++ .../xjs/mall/ware/vo/PurchaseItemDoneVo.java | 14 ++++++ .../main/resources/mapper/ware/WareSkuDao.xml | 11 ++++- 13 files changed, 203 insertions(+), 17 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteProductFeign.java create mode 100644 xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseDoneVo.java create mode 100644 xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseItemDoneVo.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteProductFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteProductFeign.java new file mode 100644 index 00000000..bb18cc46 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteProductFeign.java @@ -0,0 +1,21 @@ +package com.xjs.mall; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.xjs.mall.other.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * 远程调用商品服务feign + * + * @author xiejs + * @since 2022-03-24 + */ +@FeignClient(contextId = "remoteProductFeign", + value = ServiceNameConstants.MALL_PRODUCT_SERVICE) +public interface RemoteProductFeign { + + @GetMapping("/product/skuinfo/getSkuNameByIdForRPC/{skuId}") + R getSkuNameById(@PathVariable("skuId") Long skuId); +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java index cc88e31e..65fa1c72 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java @@ -47,5 +47,10 @@ public class ServiceNameConstants { */ public static final String MALL_COUPON_SERVICE = "xjs-mall-coupon"; + /** + * 商品服务的serviceid + */ + public static final String MALL_PRODUCT_SERVICE = "xjs-mall-product"; + } diff --git a/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue b/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue index 37fe762d..47b85fde 100644 --- a/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue +++ b/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue @@ -12,7 +12,7 @@ - + diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/SkuInfoController.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/SkuInfoController.java index 0a078435..d42b80ef 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/SkuInfoController.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/SkuInfoController.java @@ -1,18 +1,17 @@ package com.xjs.mall.product.controller; +import com.xjs.mall.other.R; import com.xjs.mall.product.entity.SkuInfoEntity; import com.xjs.mall.product.service.SkuInfoService; import com.xjs.utils.PageUtils; -import com.xjs.mall.other.R; import com.xjs.web.MyBaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; import java.util.Map; - +import java.util.Objects; /** @@ -20,7 +19,7 @@ import java.util.Map; * * @author xiejs * @email 1294405880@qq.com - * @since 2022-03-15 10:16:53 + * @since 2022-03-15 10:16:53 */ @RestController @RequestMapping("product/skuinfo") @@ -34,11 +33,22 @@ public class SkuInfoController extends MyBaseController { */ @GetMapping("/list") @ApiOperation("列表") - public R list(@RequestParam Map params){ + public R list(@RequestParam Map params) { super.checkParams(params); PageUtils page = skuInfoService.queryPageByCondition(params); return R.ok().put("page", page); } + + @GetMapping("getSkuNameByIdForRPC/{skuId}") + @ApiOperation("远程调用-根据skuId查询sku名称") + public R getSkuNameById(@PathVariable("skuId") Long skuId) { + SkuInfoEntity skuInfoEntity = skuInfoService.getById(skuId); + if (Objects.nonNull(skuInfoEntity)) { + return R.ok(skuInfoEntity.getSkuName()); + } + return R.error("根据skuId未获取到sku信息"); + } + } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/controller/PurchaseController.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/controller/PurchaseController.java index db2220be..60c8ed03 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/controller/PurchaseController.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/controller/PurchaseController.java @@ -6,6 +6,7 @@ import com.xjs.mall.other.R; import com.xjs.mall.ware.entity.PurchaseEntity; import com.xjs.mall.ware.service.PurchaseService; import com.xjs.mall.ware.vo.MergeVo; +import com.xjs.mall.ware.vo.PurchaseDoneVo; import com.xjs.utils.PageUtils; import com.xjs.validation.group.AddGroup; import com.xjs.validation.group.UpdateGroup; @@ -35,6 +36,14 @@ public class PurchaseController { @Autowired private PurchaseService purchaseService; + @ApiOperation("完成采购单") + @PostMapping("/done") + public R done(@RequestBody PurchaseDoneVo doneVo) { + purchaseService.done(doneVo); + return R.ok(); + } + + @ApiOperation("领取采购单") @PostMapping("/received") public R received(@RequestBody List ids) { @@ -44,8 +53,6 @@ public class PurchaseController { return R.ok(); } - - @ApiOperation("合并采购单") @PostMapping("/merge") public R mergePurchase(@RequestBody MergeVo mergeVo) { diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/dao/WareSkuDao.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/dao/WareSkuDao.java index 3f3daa0c..7a842a7d 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/dao/WareSkuDao.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/dao/WareSkuDao.java @@ -1,16 +1,22 @@ package com.xjs.mall.ware.dao; -import com.xjs.mall.ware.entity.WareSkuEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; +import com.xjs.mall.ware.entity.WareSkuEntity; +import org.apache.ibatis.annotations.Param; /** * 商品库存 - * + * * @author xiejs * @email 1294405880@qq.com * @date 2022-03-15 09:56:19 */ public interface WareSkuDao extends BaseMapper { - + /** + * 添加库存 + * @param skuId 商品id + * @param wareId 仓库id + * @param skuNum 商品数量 + */ + void addStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum); } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseService.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseService.java index c361ef89..6cd1385c 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseService.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseService.java @@ -3,6 +3,7 @@ package com.xjs.mall.ware.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xjs.mall.ware.entity.PurchaseEntity; import com.xjs.mall.ware.vo.MergeVo; +import com.xjs.mall.ware.vo.PurchaseDoneVo; import com.xjs.utils.PageUtils; import java.util.List; @@ -13,7 +14,7 @@ import java.util.Map; * * @author xiejs * @email 1294405880@qq.com - * @date 2022-03-15 09:56:19 + * @since 2022-03-15 09:56:19 */ public interface PurchaseService extends IService { @@ -37,5 +38,11 @@ public interface PurchaseService extends IService { * @param ids 采购单ids */ void received(List ids); + + /** + * 完成采购单 + * @param doneVo 采购完成vo + */ + void done(PurchaseDoneVo doneVo); } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/WareSkuService.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/WareSkuService.java index 2592e6ce..b8c148a2 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/WareSkuService.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/WareSkuService.java @@ -16,5 +16,13 @@ import java.util.Map; public interface WareSkuService extends IService { PageUtils queryPage(Map params); + + /** + * 采购完添加库存 + * @param skuId 商品id + * @param wareId 仓库id + * @param skuNum 商品数量 + */ + void addStock(Long skuId, Long wareId, Integer skuNum); } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseServiceImpl.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseServiceImpl.java index 8a8e309c..7b9bae38 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseServiceImpl.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseServiceImpl.java @@ -13,7 +13,10 @@ import com.xjs.mall.ware.entity.WareInfoEntity; import com.xjs.mall.ware.service.PurchaseDetailService; import com.xjs.mall.ware.service.PurchaseService; import com.xjs.mall.ware.service.WareInfoService; +import com.xjs.mall.ware.service.WareSkuService; import com.xjs.mall.ware.vo.MergeVo; +import com.xjs.mall.ware.vo.PurchaseDoneVo; +import com.xjs.mall.ware.vo.PurchaseItemDoneVo; import com.xjs.mall.ware.vo.PurchaseVo; import com.xjs.utils.PageUtils; import com.xjs.utils.Query; @@ -22,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -38,6 +42,8 @@ public class PurchaseServiceImpl extends ServiceImpl params) { @@ -52,7 +58,7 @@ public class PurchaseServiceImpl extends ServiceImpl page = this.page(new Query().getPage(params), wrapper); List collect = page.getRecords().stream().map(purchaseEntity -> { PurchaseVo purchaseVo = new PurchaseVo(); - BeanUtils.copyProperties(purchaseEntity,purchaseVo); + BeanUtils.copyProperties(purchaseEntity, purchaseVo); if (purchaseEntity.getWareId() != null) { //获取仓库信息 @@ -154,4 +160,45 @@ public class PurchaseServiceImpl extends ServiceImpl items = doneVo.getItems(); + + ArrayList updates = new ArrayList<>(); + + for (PurchaseItemDoneVo item : items) { + PurchaseDetailEntity purchaseDetailEntity = new PurchaseDetailEntity(); + + if (item.getStatus() == HASERROR.getCode()) { + flag = false; + purchaseDetailEntity.setStatus(item.getStatus()); + } else { + purchaseDetailEntity.setStatus(FINISH.getCode()); + + //将成功采购的进行入库 + PurchaseDetailEntity entity = purchaseDetailService.getById(item.getItemId()); + wareSkuService.addStock(entity.getSkuId(), entity.getWareId(), entity.getSkuNum()); + + } + purchaseDetailEntity.setId(item.getItemId()); + + updates.add(purchaseDetailEntity); + } + + purchaseDetailService.updateBatchById(updates); + + //改变采购单状态 + Long purchaseId = doneVo.getId(); + PurchaseEntity purchaseEntity = new PurchaseEntity(); + purchaseEntity.setId(purchaseId); + purchaseEntity.setStatus(flag ? FINISH.getCode() : HASERROR.getCode()); + purchaseEntity.setUpdateTime(new Date()); + super.updateById(purchaseEntity); + + + + } + } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/WareSkuServiceImpl.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/WareSkuServiceImpl.java index 8e226e4a..25fb313b 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/WareSkuServiceImpl.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/WareSkuServiceImpl.java @@ -1,10 +1,14 @@ package com.xjs.mall.ware.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.constant.HttpStatus; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.xjs.mall.RemoteProductFeign; +import com.xjs.mall.other.R; import com.xjs.mall.ware.dao.WareSkuDao; import com.xjs.mall.ware.entity.WareInfoEntity; import com.xjs.mall.ware.entity.WareSkuEntity; @@ -15,17 +19,22 @@ import com.xjs.utils.PageUtils; import com.xjs.utils.Query; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service("wareSkuService") +@Transactional public class WareSkuServiceImpl extends ServiceImpl implements WareSkuService { @Autowired private WareInfoService wareInfoService; + @Resource + private RemoteProductFeign remoteProductFeign; @Override public PageUtils queryPage(Map params) { @@ -42,7 +51,7 @@ public class WareSkuServiceImpl extends ServiceImpl i List collect = page.getRecords().stream().map(wareSkuEntity -> { WareSkuVo wareSkuVo = new WareSkuVo(); - BeanUtils.copyProperties(wareSkuEntity,wareSkuVo); + BeanUtils.copyProperties(wareSkuEntity, wareSkuVo); //获取仓库信息 WareInfoEntity wareInfoEntity = wareInfoService.getById(wareSkuVo.getWareId()); wareSkuVo.setWareName(wareInfoEntity.getName()); @@ -55,4 +64,31 @@ public class WareSkuServiceImpl extends ServiceImpl i return pageUtils; } + @Override + public void addStock(Long skuId, Long wareId, Integer skuNum) { + //判断是否有库存记录,有--新增,无--更新 + List wareSkuEntities = super.baseMapper.selectList(new LambdaQueryWrapper() + .eq(WareSkuEntity::getSkuId, skuId) + .eq(WareSkuEntity::getWareId, wareId)); + + if (CollUtil.isEmpty(wareSkuEntities)) { + WareSkuEntity wareSkuEntity = new WareSkuEntity(); + wareSkuEntity.setSkuId(skuId); + wareSkuEntity.setStock(skuNum); + wareSkuEntity.setWareId(wareId); + wareSkuEntity.setStockLocked(0); + + //远程查询sku的名字 + R r = remoteProductFeign.getSkuNameById(skuId); + if (r.getCode() == HttpStatus.SUCCESS) { + wareSkuEntity.setSkuName((String) r.get("msg")); + } + + super.baseMapper.insert(wareSkuEntity); + }else { + super.baseMapper.addStock(skuId, wareId, skuNum); + } + + } + } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseDoneVo.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseDoneVo.java new file mode 100644 index 00000000..433fc787 --- /dev/null +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseDoneVo.java @@ -0,0 +1,18 @@ +package com.xjs.mall.ware.vo; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 采购单完成vo + */ +@Data +public class PurchaseDoneVo { + + @NotNull + private Long id;//采购单id + + private List items; +} diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseItemDoneVo.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseItemDoneVo.java new file mode 100644 index 00000000..be3adcec --- /dev/null +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseItemDoneVo.java @@ -0,0 +1,14 @@ +package com.xjs.mall.ware.vo; + +import lombok.Data; + +/** + * 采购单采购项目vo + */ +@Data +public class PurchaseItemDoneVo { + //{itemId:1,status:4,reason:""} + private Long itemId; + private Integer status; + private String reason; +} diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/resources/mapper/ware/WareSkuDao.xml b/xjs-business/xjs-project-mall/mall-ware/src/main/resources/mapper/ware/WareSkuDao.xml index 646e90d0..6f9b1f22 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/resources/mapper/ware/WareSkuDao.xml +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/resources/mapper/ware/WareSkuDao.xml @@ -3,7 +3,7 @@ - + @@ -13,5 +13,12 @@ + + update wms_ware_sku + set stock = stock + #{skuNum} + where sku_id = #{skuId} + and ware_id = #{wareId} + - \ No newline at end of file + +