|
@@ -3,6 +3,7 @@ package com.hys.app.service.erp.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.io.IoUtil;
|
|
import cn.hutool.core.io.IoUtil;
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
import cn.hutool.poi.excel.ExcelWriter;
|
|
import cn.hutool.poi.excel.ExcelWriter;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -13,26 +14,21 @@ import com.hys.app.framework.database.WebPage;
|
|
import com.hys.app.framework.exception.ServiceException;
|
|
import com.hys.app.framework.exception.ServiceException;
|
|
import com.hys.app.framework.rabbitmq.MessageSender;
|
|
import com.hys.app.framework.rabbitmq.MessageSender;
|
|
import com.hys.app.framework.rabbitmq.MqMessage;
|
|
import com.hys.app.framework.rabbitmq.MqMessage;
|
|
|
|
+import com.hys.app.framework.util.BeanUtils;
|
|
import com.hys.app.framework.util.DateUtil;
|
|
import com.hys.app.framework.util.DateUtil;
|
|
import com.hys.app.framework.util.PageConvert;
|
|
import com.hys.app.framework.util.PageConvert;
|
|
import com.hys.app.framework.util.StringUtil;
|
|
import com.hys.app.framework.util.StringUtil;
|
|
import com.hys.app.mapper.erp.StockDamageReportMapper;
|
|
import com.hys.app.mapper.erp.StockDamageReportMapper;
|
|
import com.hys.app.model.base.rabbitmq.AmqpExchange;
|
|
import com.hys.app.model.base.rabbitmq.AmqpExchange;
|
|
-import com.hys.app.model.erp.dos.ProductStockDO;
|
|
|
|
-import com.hys.app.model.erp.dos.StockDamageReport;
|
|
|
|
-import com.hys.app.model.erp.dos.StockDamageReportProduct;
|
|
|
|
|
|
+import com.hys.app.model.erp.dos.*;
|
|
import com.hys.app.model.erp.dto.*;
|
|
import com.hys.app.model.erp.dto.*;
|
|
import com.hys.app.model.erp.dto.message.StockDamageAuditPassMessage;
|
|
import com.hys.app.model.erp.dto.message.StockDamageAuditPassMessage;
|
|
-import com.hys.app.model.erp.enums.NoBusinessTypeEnum;
|
|
|
|
-import com.hys.app.model.erp.enums.StockChangeSourceEnum;
|
|
|
|
-import com.hys.app.model.erp.enums.StockDamageReportStatusEnum;
|
|
|
|
-import com.hys.app.model.erp.enums.StockOperateEnum;
|
|
|
|
-import com.hys.app.model.erp.vo.StockDamageReportAllowable;
|
|
|
|
|
|
+import com.hys.app.model.erp.enums.*;
|
|
|
|
+import com.hys.app.model.erp.vo.GoodsVO;
|
|
import com.hys.app.model.erp.vo.StockDamageReportStatistics;
|
|
import com.hys.app.model.erp.vo.StockDamageReportStatistics;
|
|
import com.hys.app.model.erp.vo.StockDamageReportVO;
|
|
import com.hys.app.model.erp.vo.StockDamageReportVO;
|
|
import com.hys.app.service.erp.*;
|
|
import com.hys.app.service.erp.*;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -62,6 +58,7 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
|
|
private MessageSender messageSender;
|
|
private MessageSender messageSender;
|
|
private WarehouseEntryBatchManager warehouseEntryBatchManager;
|
|
private WarehouseEntryBatchManager warehouseEntryBatchManager;
|
|
private ProductStockManager productStockManager;
|
|
private ProductStockManager productStockManager;
|
|
|
|
+ private GoodsManager goodsManager;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 查询库存报损单分页列表数据
|
|
* 查询库存报损单分页列表数据
|
|
@@ -71,21 +68,10 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public WebPage list(StockDamageReportParam params) {
|
|
public WebPage list(StockDamageReportParam params) {
|
|
- IPage<StockDamageReport> iPage = this.lambdaQuery()
|
|
|
|
- .like(StringUtil.notEmpty(params.getSn()), StockDamageReport::getSn, params.getSn())
|
|
|
|
- .eq(params.getWarehouseId() != null, StockDamageReport::getWarehouseId, params.getWarehouseId())
|
|
|
|
- .eq(StringUtil.notEmpty(params.getStatus()), StockDamageReport::getStatus, params.getStatus())
|
|
|
|
- .eq(params.getDeptId() != null, StockDamageReport::getDeptId, params.getDeptId())
|
|
|
|
- .gt(params.getStartTime() != null, StockDamageReport::getReportTime, params.getStartTime())
|
|
|
|
- .lt(params.getEndTime() != null, StockDamageReport::getReportTime, params.getEndTime())
|
|
|
|
- .orderByDesc(StockDamageReport::getCreateTime)
|
|
|
|
- .page(new Page<>(params.getPageNo(), params.getPageSize()));
|
|
|
|
-
|
|
|
|
- for (StockDamageReport record : iPage.getRecords()) {
|
|
|
|
- StockDamageReportAllowable allowable = new StockDamageReportAllowable(record);
|
|
|
|
- record.setAllowable(allowable);
|
|
|
|
- }
|
|
|
|
- return PageConvert.convert(iPage);
|
|
|
|
|
|
+ Page<StockDamageReport> page = page(new Page<>(params.getPageNo(), params.getPageSize()), new LambdaQueryWrapper<StockDamageReport>()
|
|
|
|
+ .eq(ObjectUtil.isNotNull(params.getWarehouseId()), StockDamageReport::getWarehouseId, params.getWarehouseId())
|
|
|
|
+ .between(ObjectUtil.isNotNull(params.getStartTime()) && ObjectUtil.isNotNull(params.getEndTime()), StockDamageReport::getReportTime, params.getStartTime(), params.getEndTime()));
|
|
|
|
+ return PageConvert.convert(page);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -112,24 +98,63 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
|
|
String sn = noGenerateManager.generate(NoBusinessTypeEnum.StockDamageReport);
|
|
String sn = noGenerateManager.generate(NoBusinessTypeEnum.StockDamageReport);
|
|
report.setSn(sn);
|
|
report.setSn(sn);
|
|
this.save(report);
|
|
this.save(report);
|
|
|
|
+ //保存库存报损单商品信息
|
|
|
|
+ this.stockDamageReportProductManager.saveProduct(report.getId(), stockDamageReportDTO.getProductList());
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取库存报损单详情
|
|
|
|
+ *
|
|
|
|
+ * @param id 主键ID
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public StockDamageReportVO getDetail(Long id) {
|
|
|
|
+ StockDamageReport report = this.getById(id);
|
|
|
|
+ StockDamageReportVO reportVO = BeanUtil.copyProperties(report, StockDamageReportVO.class);
|
|
|
|
+ //获取库存盘点单商品信息
|
|
|
|
+ List<StockDamageReportProduct> goodsList = this.stockDamageReportProductManager.list(id);
|
|
|
|
+ List<Long> collect = goodsList.stream().map(StockDamageReportProduct::getGoodsId).collect(Collectors.toList());
|
|
|
|
+ List<ProductStockDO> page = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
|
|
|
|
+ .eq(ProductStockDO::getWarehouseId, report.getWarehouseId())
|
|
|
|
+ .in(ProductStockDO::getGoodsId, collect));
|
|
|
|
+ List<StockDamageReportProductDTO> beanList = BeanUtils.toBean(goodsList, StockDamageReportProductDTO.class);
|
|
|
|
+ for (StockDamageReportProductDTO dto : beanList) {
|
|
|
|
+ ProductStockDO aDo = page.stream().filter(item -> item.getGoodsId().equals(dto.getGoodsId())).findFirst().get();
|
|
|
|
+ dto.getGoodsVO().setUsableStock(aDo.getUsableStock());
|
|
|
|
+ }
|
|
|
|
+ beanList.forEach(item -> item.setGoodsVO(BeanUtil.copyProperties(goodsManager.getById(item.getGoodsId()), GoodsVO.class)));
|
|
|
|
+ reportVO.setProductList(beanList);
|
|
|
|
+ return reportVO;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 更改原订单状态
|
|
|
|
+ *
|
|
|
|
+ * @param id
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void syncStock(Long id) {
|
|
|
|
+ StockDamageReport report = getById(id);
|
|
|
|
+ report.setStatus(DamageinventoryEnum.HAS_HANDLE);
|
|
|
|
+ updateById(report);
|
|
|
|
+ List<StockDamageReportProduct> productList = stockDamageReportProductManager.list(id);
|
|
|
|
+ List<Long> collect = productList.stream().map(StockDamageReportProduct::getGoodsId).collect(Collectors.toList());
|
|
|
|
+ List<ProductStockDO> list = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
|
|
|
|
+ .eq(ProductStockDO::getWarehouseId, report.getWarehouseId())
|
|
|
|
+ .in(ProductStockDO::getGoodsId, collect));
|
|
|
|
|
|
-
|
|
|
|
- //设置创建时间
|
|
|
|
-// stockDamageReport.setCreateTime(DateUtil.getDateline());
|
|
|
|
-// //设置状态默认为未提交(待审核)
|
|
|
|
-// stockDamageReport.setStatus(StockDamageReportStatusEnum.NEW.name());
|
|
|
|
-// //入库
|
|
|
|
-//
|
|
|
|
-// //获取主键ID
|
|
|
|
-// Long id = stockDamageReport.getId();
|
|
|
|
- //保存库存报损单商品信息
|
|
|
|
-// this.stockDamageReportProductManager.saveProduct(id, stockDamageReportDTO.getProductList());
|
|
|
|
|
|
+ for (ProductStockDO stockDO : list) {
|
|
|
|
+ StockDamageReportProduct product = productList.stream().filter(item -> item.getGoodsId().equals(stockDO.getGoodsId())).findFirst().get();
|
|
|
|
+ stockDO.setActualStock(stockDO.getActualStock() - product.getReportNum());
|
|
|
|
+ stockDO.setUsableStock(stockDO.getUsableStock() - product.getReportNum());
|
|
|
|
+ }
|
|
|
|
+ productStockManager.updateBatchById(list);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 编辑库存报损单
|
|
* 编辑库存报损单
|
|
*
|
|
*
|
|
@@ -146,9 +171,6 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
|
|
throw new ServiceException("只有状态为未提交或审核驳回的库存报损单才可以进行编辑操作");
|
|
throw new ServiceException("只有状态为未提交或审核驳回的库存报损单才可以进行编辑操作");
|
|
}
|
|
}
|
|
//复制修改后的数据
|
|
//复制修改后的数据
|
|
- BeanUtil.copyProperties(stockDamageReportDTO, stockDamageReport);
|
|
|
|
- //编辑后默认库存报损单状态为未提交(待审核)
|
|
|
|
- stockDamageReport.setStatus(StockDamageReportStatusEnum.NEW.name());
|
|
|
|
//修改库存报损单信息
|
|
//修改库存报损单信息
|
|
this.updateById(stockDamageReport);
|
|
this.updateById(stockDamageReport);
|
|
//入库库存报损单商品
|
|
//入库库存报损单商品
|
|
@@ -182,23 +204,6 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
|
|
this.stockDamageReportProductManager.deleteProduct(ids);
|
|
this.stockDamageReportProductManager.deleteProduct(ids);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 获取库存报损单详情
|
|
|
|
- *
|
|
|
|
- * @param id 主键ID
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- public StockDamageReportVO getDetail(Long id) {
|
|
|
|
- StockDamageReport stockDamageReport = this.getById(id);
|
|
|
|
- StockDamageReportVO stockDamageReportVO = new StockDamageReportVO();
|
|
|
|
- BeanUtil.copyProperties(stockDamageReport, stockDamageReportVO);
|
|
|
|
-
|
|
|
|
- //获取库存报损单商品信息
|
|
|
|
- List<StockDamageReportProduct> goodsList = this.stockDamageReportProductManager.list(id);
|
|
|
|
- stockDamageReportVO.setProductList(goodsList);
|
|
|
|
- return stockDamageReportVO;
|
|
|
|
- }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* 库存报损单提交审核
|
|
* 库存报损单提交审核
|
|
@@ -376,4 +381,6 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
|
|
writer.close();
|
|
writer.close();
|
|
IoUtil.close(out);
|
|
IoUtil.close(out);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|