diff --git a/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue b/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue index b0546b44..37fe762d 100644 --- a/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue +++ b/ruoyi-ui/src/views/mall/ware/warepurchase/purchase.vue @@ -62,7 +62,7 @@ 有异常 - 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 420c18db..db2220be 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 @@ -2,11 +2,11 @@ package com.xjs.mall.ware.controller; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +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.utils.PageUtils; -import com.xjs.mall.other.R; import com.xjs.validation.group.AddGroup; import com.xjs.validation.group.UpdateGroup; import io.swagger.annotations.Api; @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Map; @@ -34,6 +35,17 @@ public class PurchaseController { @Autowired private PurchaseService purchaseService; + @ApiOperation("领取采购单") + @PostMapping("/received") + public R received(@RequestBody List ids) { + + purchaseService.received(ids); + + 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/entity/PurchaseEntity.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/entity/PurchaseEntity.java index 1b7bef32..6b98772f 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/entity/PurchaseEntity.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/entity/PurchaseEntity.java @@ -30,16 +30,17 @@ public class PurchaseEntity implements Serializable { */ @TableId private Long id; + /** - * + *用户id */ private Long assigneeId; /** - * + *用户名 */ private String assigneeName; /** - * + *手机号 */ private String phone; @@ -51,15 +52,15 @@ public class PurchaseEntity implements Serializable { @Max(value = 9999,message = "优先级最大为9999",groups = {AddGroup.class, UpdateGroup.class}) private Integer priority; /** - * + *采购单状态 */ private Integer status; /** - * + *仓库id */ private Long wareId; /** - * + *总金额 */ private BigDecimal amount; /** diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseDetailService.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseDetailService.java index 92e66632..0f3c505b 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseDetailService.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/PurchaseDetailService.java @@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.xjs.mall.ware.entity.PurchaseDetailEntity; import com.xjs.utils.PageUtils; +import java.util.List; import java.util.Map; /** - * + * * * @author xiejs * @email 1294405880@qq.com @@ -16,5 +17,12 @@ import java.util.Map; public interface PurchaseDetailService extends IService { PageUtils queryPage(Map params); + + /** + * 按采购 ID 列出详细信息 + * @param id 采购id + * @return 采购list + */ + List listDetailByPurchaseId(Long id); } 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 f5be2a18..c361ef89 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 @@ -5,6 +5,7 @@ import com.xjs.mall.ware.entity.PurchaseEntity; import com.xjs.mall.ware.vo.MergeVo; import com.xjs.utils.PageUtils; +import java.util.List; import java.util.Map; /** @@ -30,5 +31,11 @@ public interface PurchaseService extends IService { * @param mergeVo 合并的参数 */ void mergePurchase(MergeVo mergeVo); + + /** + * 领取采购单 + * @param ids 采购单ids + */ + void received(List ids); } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseDetailServiceImpl.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseDetailServiceImpl.java index a9b742c0..f13ef98d 100644 --- a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseDetailServiceImpl.java +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/service/impl/PurchaseDetailServiceImpl.java @@ -60,4 +60,10 @@ public class PurchaseDetailServiceImpl extends ServiceImpl listDetailByPurchaseId(Long id) { + + return super.list(new LambdaQueryWrapper().eq(PurchaseDetailEntity::getPurchaseId, id)); + } + } 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 5c096e07..8a8e309c 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 @@ -1,17 +1,23 @@ package com.xjs.mall.ware.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.StringUtils; +import com.xjs.consts.WareConstant; +import com.xjs.exception.MallException; import com.xjs.mall.ware.dao.PurchaseDao; import com.xjs.mall.ware.entity.PurchaseDetailEntity; import com.xjs.mall.ware.entity.PurchaseEntity; +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.vo.MergeVo; +import com.xjs.mall.ware.vo.PurchaseVo; import com.xjs.utils.PageUtils; import com.xjs.utils.Query; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,8 +27,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.xjs.consts.WareConstant.PurchaseStatusEnum.ASSIGNED; -import static com.xjs.consts.WareConstant.PurchaseStatusEnum.CREATED; +import static com.xjs.consts.WareConstant.PurchaseStatusEnum.*; @Service("purchaseService") @@ -31,14 +36,35 @@ public class PurchaseServiceImpl extends ServiceImpl params) { - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper<>() - ); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + String key = (String) params.get(Query.KEY_NAME); + wrapper.and(StringUtils.isNotEmpty(key), wr -> { + wr.like(PurchaseEntity::getAssigneeName, key).or() + .eq(PurchaseEntity::getPhone, key); + }); + + IPage page = this.page(new Query().getPage(params), wrapper); + List collect = page.getRecords().stream().map(purchaseEntity -> { + PurchaseVo purchaseVo = new PurchaseVo(); + BeanUtils.copyProperties(purchaseEntity,purchaseVo); + if (purchaseEntity.getWareId() != null) { + //获取仓库信息 + WareInfoEntity wareInfoEntity = wareInfoService.getById(purchaseVo.getWareId()); + purchaseVo.setWareName(wareInfoEntity.getName()); + } + + return purchaseVo; + }).collect(Collectors.toList()); + + PageUtils pageUtils = new PageUtils(page); + pageUtils.setList(collect); return new PageUtils(page); } @@ -60,6 +86,7 @@ public class PurchaseServiceImpl extends ServiceImpl items = mergeVo.getItems(); + + for (Long item : items) { + PurchaseDetailEntity entity = purchaseDetailService.getById(item); + if (!(entity.getStatus() == CREATED.getCode() || entity.getStatus() == ASSIGNED.getCode())) { + throw new MallException("采购单只有在新建或分配状态才能合并"); + } + } + + //合并采购单 Long finalPurchaseId = purchaseId; List collect = items.stream().map(i -> { @@ -88,4 +124,34 @@ public class PurchaseServiceImpl extends ServiceImpl ids) { + //确认当前采购单是新建或者已分配状态 + List collect = ids.stream().map(super::getById) + .filter(item -> + item.getStatus() == CREATED.getCode() || item.getStatus() == ASSIGNED.getCode() + ) + .peek(item -> { + item.setStatus(RECEIVE.getCode()); + item.setUpdateTime(new Date()); + }) + .collect(Collectors.toList()); + + //改变采购单的状态 + super.updateBatchById(collect); + + //改变采购项的状态 + collect.forEach(item -> { + List entities = purchaseDetailService.listDetailByPurchaseId(item.getId()); + List PurchaseDetailEntityList = entities.stream().map(entity -> { + PurchaseDetailEntity purchaseDetailEntity = new PurchaseDetailEntity(); + purchaseDetailEntity.setId(entity.getId()); + purchaseDetailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.BUYING.getCode()); + return purchaseDetailEntity; + }).collect(Collectors.toList()); + purchaseDetailService.updateBatchById(PurchaseDetailEntityList); + }); + + } + } diff --git a/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseVo.java b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseVo.java new file mode 100644 index 00000000..2a86dea4 --- /dev/null +++ b/xjs-business/xjs-project-mall/mall-ware/src/main/java/com/xjs/mall/ware/vo/PurchaseVo.java @@ -0,0 +1,62 @@ +package com.xjs.mall.ware.vo; + +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 采购信息vo + * @author xiejs + * @since 2022-03-24 + */ +@Data +public class PurchaseVo { + @TableId + private Long id; + + /** + *用户id + */ + private Long assigneeId; + /** + *用户名 + */ + private String assigneeName; + /** + *手机号 + */ + private String phone; + + /** + * 优先级 + */ + private Integer priority; + /** + *采购单状态 + */ + private Integer status; + /** + *仓库id + */ + private Long wareId; + /** + *总金额 + */ + private BigDecimal amount; + /** + * + */ + private Date createTime; + /** + * + */ + private Date updateTime; + + + /** + * 仓库名称 + */ + private String wareName; +}