|
@@ -0,0 +1,152 @@
|
|
|
+package com.fjhx.victoriatourist.service.stock.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+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.victoriatourist.entity.stock.dto.StockTransferDto;
|
|
|
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferSelectDto;
|
|
|
+import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
|
|
|
+import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
|
|
|
+import com.fjhx.victoriatourist.entity.stock.vo.StockTransferDetailsVo;
|
|
|
+import com.fjhx.victoriatourist.entity.stock.vo.StockTransferVo;
|
|
|
+import com.fjhx.victoriatourist.mapper.stock.StockTransferMapper;
|
|
|
+import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
|
|
|
+import com.fjhx.victoriatourist.service.stock.StockTransferService;
|
|
|
+import com.fjhx.victoriatourist.utils.CodeEnum;
|
|
|
+import com.fjhx.wms.entity.stock.po.Stock;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockJournal;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
|
|
|
+import com.fjhx.wms.service.stock.StockJournalDetailsService;
|
|
|
+import com.fjhx.wms.service.stock.StockJournalService;
|
|
|
+import com.fjhx.wms.service.stock.StockService;
|
|
|
+import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
|
+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 org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 调仓记录 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2023-04-17
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, StockTransfer> implements StockTransferService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ WarehouseService warehouseService;
|
|
|
+ @Autowired
|
|
|
+ StockTransferDetailsService stockTransferDetailsService;
|
|
|
+ @Autowired
|
|
|
+ ProductInfoService productInfoService;
|
|
|
+ @Autowired
|
|
|
+ StockService stockService;
|
|
|
+ @Autowired
|
|
|
+ StockJournalService stockJournalService;
|
|
|
+ @Autowired
|
|
|
+ StockJournalDetailsService stockJournalDetailsService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<StockTransferVo> getPage(StockTransferSelectDto dto) {
|
|
|
+ IWrapper<StockTransfer> wrapper = getWrapper();
|
|
|
+ wrapper.eq(StockTransfer::getInWarehouseId,dto.getInWarehouseId());
|
|
|
+ wrapper.eq(StockTransfer::getOutWarehouseId,dto.getOutWarehouseId());
|
|
|
+ wrapper.eq(StockTransfer::getInStatus,dto.getInStatus());
|
|
|
+ wrapper.like(StockTransfer::getCode,dto.getKeyword());
|
|
|
+ wrapper.orderByDesc("st", StockTransfer::getId);
|
|
|
+ Page<StockTransferVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<StockTransferVo> records = page.getRecords();
|
|
|
+ //赋值仓库名称
|
|
|
+ warehouseService.attributeAssign(records, StockTransferVo::getInWarehouseId, (item, warehouse) -> {
|
|
|
+ item.setInWarehouseName(warehouse.getName());
|
|
|
+ });
|
|
|
+ warehouseService.attributeAssign(records, StockTransferVo::getOutWarehouseId, (item, warehouse) -> {
|
|
|
+ item.setOutWarehouseName(warehouse.getName());
|
|
|
+ });
|
|
|
+ //赋值调出人与接收人名称
|
|
|
+ UserUtil.assignmentNickName(records, StockTransferVo::getCreateUser, StockTransferVo::setOutUserName);
|
|
|
+ UserUtil.assignmentNickName(records, StockTransferVo::getInUserId, StockTransferVo::setInUserName);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public StockTransferVo detail(Long id) {
|
|
|
+ StockTransfer StockTransfer = this.getById(id);
|
|
|
+ StockTransferVo result = BeanUtil.toBean(StockTransfer, StockTransferVo.class);
|
|
|
+ List<StockTransferDetails> list = stockTransferDetailsService.list(q -> q.eq(StockTransferDetails::getStockTransferId, id));
|
|
|
+ List<StockTransferDetailsVo> stockTransferDetailsVos = BeanUtil.copyToList(list, StockTransferDetailsVo.class);
|
|
|
+ //赋值明细产品信息
|
|
|
+ productInfoService.attributeAssign(stockTransferDetailsVos, StockTransferDetailsVo::getProductId, (item, productInfo) -> {
|
|
|
+ item.setProductCode(productInfo.getCode());
|
|
|
+ item.setProductName(productInfo.getName());
|
|
|
+ item.setProductSpec(productInfo.getSpec());
|
|
|
+ });
|
|
|
+ result.setStockTransferDetailsList(stockTransferDetailsVos);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(StockTransferDto stockTransferDto) {
|
|
|
+ stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
|
|
|
+ stockTransferDto.setInStatus(0);
|
|
|
+ this.save(stockTransferDto);
|
|
|
+ List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
|
|
|
+ for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
|
|
|
+ stockTransferDetails.setStockTransferId(stockTransferDto.getId());
|
|
|
+ }
|
|
|
+ stockTransferDetailsService.saveBatch(stockTransferDetailsList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(StockTransferDto stockTransferDto) {
|
|
|
+ this.updateById(stockTransferDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void receive(StockTransferDto stockTransferDto) {
|
|
|
+ StockTransfer stockTransfer = getById(stockTransferDto);
|
|
|
+ stockTransfer.setInStatus(1);//修改为已接收
|
|
|
+ updateById(stockTransfer);
|
|
|
+ //明细
|
|
|
+ List<Stock> stockList = new ArrayList<>();
|
|
|
+ List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
|
|
|
+ stockTransferDetailsService.updateBatchById(stockTransferDetailsList);
|
|
|
+ for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
|
|
|
+ Stock stock = new Stock();
|
|
|
+ stock.setProductId(stockTransferDetails.getProductId());
|
|
|
+ stock.setQuantity(stockTransferDetails.getInQuantity());
|
|
|
+ }
|
|
|
+ //创建出入库记录
|
|
|
+ StockJournal stockJournal = new StockJournal();
|
|
|
+ stockJournal.setType(3);
|
|
|
+ stockJournal.setWarehouseId(stockTransfer.getOutWarehouseId());
|
|
|
+ stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
|
|
|
+ stockJournal.setBusinessId(stockTransfer.getId());
|
|
|
+ //保存出入库记录
|
|
|
+ stockJournalService.save(stockJournal);
|
|
|
+ //出库
|
|
|
+ List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
|
|
|
+ //入库
|
|
|
+ stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
|
|
|
+ //保存出入库记录明细
|
|
|
+ stockJournalDetailsService.saveBatch(stockJournalDetailsList);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|