|
@@ -0,0 +1,152 @@
|
|
|
+package com.fjhx.mes.service.border.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.fjhx.item.entity.product.po.ProductClassify;
|
|
|
+import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.fjhx.item.service.product.ProductClassifyService;
|
|
|
+import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.mes.entity.border.po.BorderOfLine;
|
|
|
+import com.fjhx.mes.entity.border.po.BorderOfLineJournal;
|
|
|
+import com.fjhx.mes.entity.border.vo.BorderOfLineJournalVo;
|
|
|
+import com.fjhx.mes.mapper.border.BorderOfLineMapper;
|
|
|
+import com.fjhx.mes.service.border.BorderOfLineJournalService;
|
|
|
+import com.fjhx.mes.service.border.BorderOfLineService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockWait;
|
|
|
+import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
+import org.checkerframework.checker.units.qual.A;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.fjhx.mes.entity.border.vo.BorderOfLineVo;
|
|
|
+import com.fjhx.mes.entity.border.dto.BorderOfLineSelectDto;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.fjhx.mes.entity.border.dto.BorderOfLineDto;
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 线边管理 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2023-03-31
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class BorderOfLineServiceImpl extends ServiceImpl<BorderOfLineMapper, BorderOfLine> implements BorderOfLineService {
|
|
|
+ @Autowired
|
|
|
+ BorderOfLineJournalService borderOfLineJournalService;
|
|
|
+ @Autowired
|
|
|
+ ProductInfoService productInfoService;
|
|
|
+ @Autowired
|
|
|
+ ProductClassifyService productClassifyService;
|
|
|
+ @Autowired
|
|
|
+ StockWaitService stockWaitService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<BorderOfLineVo> getPage(BorderOfLineSelectDto dto) {
|
|
|
+ IWrapper<BorderOfLine> wrapper = getWrapper();
|
|
|
+ wrapper.orderByDesc("bol", BorderOfLine::getId);
|
|
|
+ Page<BorderOfLineVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<BorderOfLineVo> records = page.getRecords();
|
|
|
+ //赋值产品信息
|
|
|
+ List<Long> productIds = records.stream().map(BorderOfLine::getProductId).collect(Collectors.toList());
|
|
|
+ if(ObjectUtil.isNotEmpty(productIds)) {
|
|
|
+ List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
|
|
|
+ if(ObjectUtil.isNotEmpty(productInfos)) {
|
|
|
+ List<Long> productClassifyIds = productInfos.stream().map(ProductInfo::getProductClassifyId).collect(Collectors.toList());
|
|
|
+ if(ObjectUtil.isNotEmpty(productClassifyIds)) {
|
|
|
+ List<ProductClassify> productClassifies = productClassifyService.listByIds(productClassifyIds);
|
|
|
+ if(ObjectUtil.isNotEmpty(productClassifies)) {
|
|
|
+ Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
|
|
|
+ Map<Long, ProductClassify> productClassifyMap = productClassifies.stream().collect(Collectors.groupingBy(ProductClassify::getId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
|
|
|
+ for (BorderOfLineVo borderOfLineVo : records) {
|
|
|
+ ProductInfo productInfo = productInfoMap.get(borderOfLineVo.getProductId());
|
|
|
+ if (ObjectUtil.isNotEmpty(productInfo)){
|
|
|
+ borderOfLineVo.setProductName(productInfo.getName());
|
|
|
+ ProductClassify productClassify = productClassifyMap.get(productInfo.getProductClassifyId());
|
|
|
+ if (ObjectUtil.isNotEmpty(productClassify)){
|
|
|
+ borderOfLineVo.setProductTypeName(productClassify.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BorderOfLineVo detail(Long id) {
|
|
|
+ BorderOfLine BorderOfLine = this.getById(id);
|
|
|
+ BorderOfLineVo result = BeanUtil.toBean(BorderOfLine, BorderOfLineVo.class);
|
|
|
+ ProductInfo productInfo = productInfoService.getById(result.getProductId());
|
|
|
+ if(ObjectUtil.isNotEmpty(productInfo)){
|
|
|
+ result.setProductName(productInfo.getName());
|
|
|
+ ProductClassify productClassify = productClassifyService.getById(productInfo.getProductClassifyId());
|
|
|
+ if(ObjectUtil.isNotEmpty(productClassify)){
|
|
|
+ result.setProductTypeName(productClassify.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(BorderOfLineDto borderOfLineDto) {
|
|
|
+ BorderOfLine borderOfLine = getOne(q -> q.eq(BorderOfLine::getProductId, borderOfLineDto.getProductId()));
|
|
|
+ if(ObjectUtil.isNotEmpty(borderOfLine)){
|
|
|
+ borderOfLine.setQuantity(borderOfLine.getQuantity().add(borderOfLineDto.getQuantity()));
|
|
|
+ }else {
|
|
|
+ borderOfLine = BeanUtil.toBean(borderOfLineDto,BorderOfLine.class);
|
|
|
+ }
|
|
|
+ saveOrUpdate(borderOfLine);
|
|
|
+ //创建流水记录
|
|
|
+ BorderOfLineJournal borderOfLineJournal = new BorderOfLineJournal();
|
|
|
+ borderOfLineJournal.setBorderOfLineId(borderOfLine.getId());
|
|
|
+ borderOfLineJournal.setQuantity(borderOfLineDto.getQuantity());
|
|
|
+ borderOfLineJournal.setType(5);
|
|
|
+ borderOfLineJournalService.save(borderOfLineJournal);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(BorderOfLineDto borderOfLineDto) {
|
|
|
+ BorderOfLine borderOfLine = getById(borderOfLineDto.getId());
|
|
|
+ borderOfLine.setQuantity(borderOfLine.getQuantity().subtract(borderOfLineDto.getQuantity()));
|
|
|
+ updateById(borderOfLine);
|
|
|
+ //创建流水记录
|
|
|
+ BorderOfLineJournal borderOfLineJournal = new BorderOfLineJournal();
|
|
|
+ borderOfLineJournal.setBorderOfLineId(borderOfLine.getId());
|
|
|
+ borderOfLineJournal.setQuantity(borderOfLineDto.getQuantity());
|
|
|
+ borderOfLineJournal.setType(borderOfLineDto.getType());
|
|
|
+ borderOfLineJournalService.save(borderOfLineJournal);
|
|
|
+ //如果类型是"回仓"创建待入库数据
|
|
|
+ if(borderOfLineDto.getType()==2){
|
|
|
+ StockWait stockWait = new StockWait();
|
|
|
+ stockWait.setType(1);
|
|
|
+ stockWait.setBusinessType(1);
|
|
|
+ stockWait.setBusinessId(borderOfLineJournal.getId());
|
|
|
+ stockWait.setProductId(borderOfLine.getProductId());
|
|
|
+ stockWait.setQuantity(borderOfLineDto.getQuantity());
|
|
|
+ stockWait.setReceiptQuantity(BigDecimal.ZERO);
|
|
|
+ stockWait.setStatus(0);
|
|
|
+ stockWaitService.save(stockWait);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|