|
@@ -1,33 +1,29 @@
|
|
|
package com.fjhx.wms.service.stock.impl;
|
|
|
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
-import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
-import com.fjhx.wms.entity.stock.po.Stock;
|
|
|
+import com.fjhx.wms.entity.stock.dto.StockCheckDto;
|
|
|
+import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
|
|
|
import com.fjhx.wms.entity.stock.po.StockCheck;
|
|
|
import com.fjhx.wms.entity.stock.po.StockCheckDetails;
|
|
|
import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
|
|
|
-import com.fjhx.wms.entity.stock.vo.StockJournalVo;
|
|
|
-import com.fjhx.wms.entity.stock.vo.StockVo;
|
|
|
+import com.fjhx.wms.entity.stock.vo.StockCheckVo;
|
|
|
import com.fjhx.wms.mapper.stock.StockCheckMapper;
|
|
|
import com.fjhx.wms.service.stock.StockCheckDetailsService;
|
|
|
import com.fjhx.wms.service.stock.StockCheckService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
|
+import com.fjhx.wms.utils.CodeEnum;
|
|
|
+import com.ruoyi.common.constant.StatusConstant;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.fjhx.wms.entity.stock.vo.StockCheckVo;
|
|
|
-import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
|
|
|
-import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
-import com.fjhx.wms.entity.stock.dto.StockCheckDto;
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.stream.Collectors;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -42,18 +38,34 @@ import java.util.stream.Collectors;
|
|
|
public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCheck> implements StockCheckService {
|
|
|
|
|
|
@Autowired
|
|
|
- StockCheckDetailsService stockCheckDetailsService;
|
|
|
+ private StockCheckDetailsService stockCheckDetailsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+
|
|
|
@Autowired
|
|
|
- ProductInfoService productInfoService;
|
|
|
+ private WarehouseService warehouseService;
|
|
|
|
|
|
@Override
|
|
|
public Page<StockCheckVo> getPage(StockCheckSelectDto dto) {
|
|
|
IWrapper<StockCheck> wrapper = getWrapper();
|
|
|
- wrapper.like("sc",StockCheckVo::getCreateTime,dto.getKeyword());
|
|
|
+ wrapper.like("sc", StockCheckVo::getCreateTime, dto.getKeyword());
|
|
|
+ wrapper.eq("sc", StockCheck::getResult, dto.getResult());
|
|
|
wrapper.orderByDesc("sc", StockCheck::getId);
|
|
|
Page<StockCheckVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
- //根据id赋值操作人名称
|
|
|
+ List<StockCheckVo> records = page.getRecords();
|
|
|
+ if (records.size() == 0) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据id赋值操作人名称
|
|
|
UserUtil.assignmentNickName(page.getRecords(), StockCheckVo::getCreateUser, StockCheckVo::setUserName);
|
|
|
+
|
|
|
+ // 赋值仓库名称
|
|
|
+ warehouseService.attributeAssign(records, StockCheck::getWarehouseId, (item, warehouse) -> {
|
|
|
+ item.setWarehouseName(warehouse.getName());
|
|
|
+ });
|
|
|
+
|
|
|
return page;
|
|
|
}
|
|
|
|
|
@@ -62,47 +74,45 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
|
|
|
StockCheckVo stockCheckVo = baseMapper.detail(id);
|
|
|
|
|
|
List<StockCheckDetailsVo> list = stockCheckVo.getList();
|
|
|
-
|
|
|
- List<Long> productIds = list.stream().map(StockCheckDetailsVo::getProductId).collect(Collectors.toList());
|
|
|
- if (ObjectUtil.isNotEmpty(productIds)) {
|
|
|
- List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
|
|
|
- Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
|
|
|
- Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
|
|
|
- for (StockCheckDetailsVo stockVo : list) {
|
|
|
- ProductInfo productInfo = productInfoMap.get(stockVo.getProductId());
|
|
|
- stockVo.setProductName(productInfo.getName());
|
|
|
- }
|
|
|
- }
|
|
|
+ productInfoService.attributeAssign(list, StockCheckDetails::getProductId, (item, product) -> {
|
|
|
+ item.setProductCode(product.getCode());
|
|
|
+ item.setProductName(product.getName());
|
|
|
+ item.setProductUnit(product.getUnit());
|
|
|
+ });
|
|
|
return stockCheckVo;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void add(StockCheckDto stockCheckDto) {
|
|
|
- stockCheckDto.setId(IdWorker.getId());
|
|
|
+
|
|
|
+ long stockCheckId = IdWorker.getId();
|
|
|
List<StockCheckDetails> list = stockCheckDto.getList();
|
|
|
- for (StockCheckDetails stockCheckDetails : list){
|
|
|
- stockCheckDetails.setStockCheckId(stockCheckDto.getId());
|
|
|
- stockCheckDto.setResult(0);
|
|
|
- //判断盘点数量与库存是否相同,不同将盘点结果设置为异常
|
|
|
- if(stockCheckDetails.getQuantity()!=stockCheckDetails.getCheckQuantity()){
|
|
|
- stockCheckDto.setResult(1);
|
|
|
- break;
|
|
|
+ int totalNum = 0, normalNum = 0, anomalyNum = 0;
|
|
|
+
|
|
|
+ for (StockCheckDetails stockCheckDetails : list) {
|
|
|
+
|
|
|
+ totalNum++;
|
|
|
+
|
|
|
+ if (Objects.equals(stockCheckDetails.getQuantity(), stockCheckDetails.getCheckQuantity())) {
|
|
|
+ normalNum++;
|
|
|
+ } else {
|
|
|
+ anomalyNum++;
|
|
|
}
|
|
|
+
|
|
|
+ stockCheckDetails.setStockCheckId(stockCheckDto.getId());
|
|
|
}
|
|
|
- //保存盘点记录以及明细
|
|
|
- save(stockCheckDto);
|
|
|
- stockCheckDetailsService.saveBatch(list);
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void edit(StockCheckDto stockCheckDto) {
|
|
|
- this.updateById(stockCheckDto);
|
|
|
- }
|
|
|
+ stockCheckDto.setId(stockCheckId);
|
|
|
+ stockCheckDto.setCode(CodeEnum.CHECK_CODE.getCode());
|
|
|
+ stockCheckDto.setResult(anomalyNum == 0 ? StatusConstant.YES : StatusConstant.NO);
|
|
|
+ stockCheckDto.setTotalNum(totalNum);
|
|
|
+ stockCheckDto.setNormalNum(normalNum);
|
|
|
+ stockCheckDto.setAnomalyNum(anomalyNum);
|
|
|
|
|
|
- @Override
|
|
|
- public void delete(Long id) {
|
|
|
- this.removeById(id);
|
|
|
+ // 保存盘点记录以及明细
|
|
|
+ save(stockCheckDto);
|
|
|
+ stockCheckDetailsService.saveBatch(list);
|
|
|
}
|
|
|
|
|
|
}
|