|
@@ -1,10 +1,20 @@
|
|
|
package com.yh.saas.plugin.yiliangyiyun.service.impl;
|
|
|
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.entity.WarehouseInOutInfo;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
|
+import com.yh.saas.common.support.util.IdGenerator;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.entity.*;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.exception.YException;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.exception.YExceptionEnum;
|
|
|
import com.yh.saas.plugin.yiliangyiyun.mapper.WarehouseInOutInfoMapper;
|
|
|
-import com.yh.saas.plugin.yiliangyiyun.service.IWarehouseInOutInfoService;
|
|
|
+import com.yh.saas.plugin.yiliangyiyun.service.*;
|
|
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -17,4 +27,130 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInfoMapper, WarehouseInOutInfo> implements IWarehouseInOutInfoService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IWarehouseInOutDetailService warehouseInOutDetailService;
|
|
|
+ @Autowired
|
|
|
+ private IWarehousePositionStorageInfoService warehousePositionStorageInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IWarehouseBaseInfoService warehouseBaseInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IWarehousePositionInfoService warehousePositionInfoService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String InOutWarehouse(WarehouseInOutInfo warehouseInOutInfo) {
|
|
|
+ WarehouseInOutDetail warehouseInOutDetail = warehouseInOutInfo.getWarehouseInOutDetail();
|
|
|
+ //判断暂存提交(前端传参1暂存3提交)
|
|
|
+ if ("1".equals(warehouseInOutInfo.getStatusFlag())) {
|
|
|
+ //插入记录
|
|
|
+ if (StringUtils.isEmpty(warehouseInOutInfo.getId())) {
|
|
|
+ warehouseInOutInfo.setId(IdGenerator.generateUUID());
|
|
|
+ warehouseInOutInfo.setStatus(StatusEnum.TEMPORARILY_STORED.getName());
|
|
|
+ this.insert(warehouseInOutInfo);
|
|
|
+ // 详情
|
|
|
+ warehouseInOutDetail.setInfoId(warehouseInOutInfo.getId());
|
|
|
+ warehouseInOutDetail.setId(IdGenerator.generateUUID());
|
|
|
+ warehouseInOutDetailService.insert(warehouseInOutDetail);
|
|
|
+ }
|
|
|
+ // 编辑修改记录
|
|
|
+ else {
|
|
|
+ this.updateById(warehouseInOutInfo);
|
|
|
+ warehouseInOutDetailService.updateById(warehouseInOutDetail);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ //判断出入库
|
|
|
+ if ("2".equals(warehouseInOutInfo.getInOutFlag())) {
|
|
|
+ //判断是否有货
|
|
|
+ // 查询仓库
|
|
|
+ WarehouseBaseInfo warehouseBaseInfo = warehouseBaseInfoService.selectById(warehouseInOutInfo.getBaseId());
|
|
|
+ if (warehouseBaseInfo != null) {
|
|
|
+ // 查询库位
|
|
|
+ WarehousePositionInfo warehousePositionInfo = warehousePositionInfoService.selectById(warehouseInOutInfo.getPositionId());
|
|
|
+ if (warehousePositionInfo != null) {
|
|
|
+ // 查询货物库存量
|
|
|
+ WarehousePositionStorageInfo warehousePositionStorageInfo = warehousePositionStorageInfoService.selectOne(new EntityWrapper<WarehousePositionStorageInfo>()
|
|
|
+ .eq("position_id", warehouseInOutInfo.getPositionId())
|
|
|
+ .eq("goods_name_key", warehouseInOutInfo.getGoodsNameKey())
|
|
|
+ .eq("delete_flag", "0"));
|
|
|
+ // 判断是否有货
|
|
|
+ if (warehousePositionStorageInfo != null) {
|
|
|
+ // 更新库存量
|
|
|
+ warehousePositionStorageInfo.setStorage(warehousePositionStorageInfo.getStorage()+warehouseInOutInfo.getNetWeight());
|
|
|
+ warehousePositionStorageInfoService.updateById(warehousePositionStorageInfo);
|
|
|
+ }
|
|
|
+ // 没有货
|
|
|
+ else{
|
|
|
+ WarehousePositionStorageInfo warehousePositionStorageInfo1 = new WarehousePositionStorageInfo();
|
|
|
+ warehousePositionStorageInfo1.setId(IdGenerator.generateUUID());
|
|
|
+ warehousePositionStorageInfo1.setPositionId(warehouseInOutInfo.getPositionId());
|
|
|
+ warehousePositionStorageInfo1.setBinNumber(warehouseInOutInfo.getBinNumber());
|
|
|
+ warehousePositionStorageInfo1.setGoodsNameKey(warehouseInOutInfo.getGoodsNameKey());
|
|
|
+ warehousePositionStorageInfo1.setGoodsName(warehouseInOutInfo.getGoodsName());
|
|
|
+ warehousePositionStorageInfo1.setStorage(warehouseInOutInfo.getNetWeight());
|
|
|
+ warehousePositionStorageInfoService.insert(warehousePositionStorageInfo1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ //判断是否有货
|
|
|
+ // 查询仓库
|
|
|
+ WarehouseBaseInfo warehouseBaseInfo = warehouseBaseInfoService.selectById(warehouseInOutInfo.getBaseId());
|
|
|
+ if (warehouseBaseInfo != null) {
|
|
|
+ // 查询库位
|
|
|
+ WarehousePositionInfo warehousePositionInfo = warehousePositionInfoService.selectById(warehouseInOutInfo.getPositionId());
|
|
|
+ if (warehousePositionInfo != null) {
|
|
|
+ // 查询货物库存量
|
|
|
+ WarehousePositionStorageInfo warehousePositionStorageInfo = warehousePositionStorageInfoService.selectOne(new EntityWrapper<WarehousePositionStorageInfo>()
|
|
|
+ .eq("position_id", warehouseInOutInfo.getPositionId())
|
|
|
+ .eq("goods_name_key", warehouseInOutInfo.getGoodsNameKey())
|
|
|
+ .eq("delete_flag", "0"));
|
|
|
+ // 判断是否有货
|
|
|
+ if (warehousePositionStorageInfo != null) {
|
|
|
+ if(warehouseInOutInfo.getNetWeight() <= warehousePositionStorageInfo.getStorage()){
|
|
|
+ // 更新库存量
|
|
|
+ warehousePositionStorageInfo.setStorage(warehousePositionStorageInfo.getStorage()-warehouseInOutInfo.getNetWeight());
|
|
|
+ warehousePositionStorageInfoService.updateById(warehousePositionStorageInfo);
|
|
|
+ }
|
|
|
+ //出库量大于库存量
|
|
|
+ else{
|
|
|
+ throw new YException(YExceptionEnum.INVENTORY_NO_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 没有储存量
|
|
|
+ else{
|
|
|
+ throw new YException(YExceptionEnum.POSITIONSTORAGE_NO_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //库位不存在
|
|
|
+ else{
|
|
|
+ throw new YException(YExceptionEnum.POSITION_NO_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //仓库不存在
|
|
|
+ else{
|
|
|
+ throw new YException(YExceptionEnum.WAREHOUSE_NO_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //插入记录
|
|
|
+ if (StringUtils.isEmpty(warehouseInOutInfo.getId())) {
|
|
|
+ warehouseInOutInfo.setId(IdGenerator.generateUUID());
|
|
|
+ warehouseInOutInfo.setStatus(StatusEnum.SUBMITTED.getName());
|
|
|
+ this.insert(warehouseInOutInfo);
|
|
|
+ // 详情
|
|
|
+ warehouseInOutDetail.setInfoId(warehouseInOutInfo.getId());
|
|
|
+ warehouseInOutDetail.setId(IdGenerator.generateUUID());
|
|
|
+ warehouseInOutDetailService.insert(warehouseInOutDetail);
|
|
|
+ }
|
|
|
+ // 编辑修改记录
|
|
|
+ else {
|
|
|
+ warehouseInOutInfo.setStatus(StatusEnum.SUBMITTED.getName());
|
|
|
+ this.updateById(warehouseInOutInfo);
|
|
|
+ warehouseInOutDetailService.updateById(warehouseInOutDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
}
|