huangfuli 4 anos atrás
pai
commit
4d1e2af8e1

+ 4 - 3
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/constant/StatusEnum.java

@@ -18,9 +18,10 @@ public enum StatusEnum {
     HIDE("0","隐藏",""),
     SHOW("1","显示",""),
 
-    //出入库状态
-    WAREHOUSE_WAIT("1", "已暂存", "wait implementation"),
-    WAREHOUSE_COMPLETED("3", "已提交", "Completed"),
+
+    // 出入库记录
+    TEMPORARILY_STORED("1", "已暂存", "Temporarily stored"),
+    SUBMITTED("3", "已提交", "Submitted"),
 
     ;
     @Getter

+ 4 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/WarehouseInOutInfo.java

@@ -4,6 +4,7 @@ import java.util.Date;
 import com.baomidou.mybatisplus.activerecord.Model;
 import java.io.Serializable;
 
+import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.annotations.Version;
@@ -120,6 +121,9 @@ public class WarehouseInOutInfo extends BaseModel<WarehouseInOutInfo> {
      */
     private String status;
 
+    @TableField(exist = false)
+    private WarehouseInOutDetail warehouseInOutDetail;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 4 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/YExceptionEnum.java

@@ -12,6 +12,10 @@ public enum YExceptionEnum {
 
 	WAREHOSE_SYSTEM_ERROR("ERROR", "现有库存不为0,不可删除!"),
 	CONTRACT_NO_ERROR("ERROR", "合同编号已存在,不可重复!"),
+	WAREHOUSE_NO_ERROR("ERROR","仓库不存在"),
+	POSITION_NO_ERROR("ERROR","库位不存在"),
+	POSITIONSTORAGE_NO_ERROR("ERROR","没有储存量"),
+	INVENTORY_NO_ERROR("ERROR","出库量大于库存量"),
 	;
 
 	@Getter

+ 5 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/IWarehouseInOutInfoService.java

@@ -13,4 +13,9 @@ import com.baomidou.mybatisplus.service.IService;
  */
 public interface IWarehouseInOutInfoService extends IService<WarehouseInOutInfo> {
 
+    /**
+     * 出入库
+     */
+    String InOutWarehouse (WarehouseInOutInfo warehouseInOutInfo);
+
 }

+ 138 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseInOutInfoServiceImpl.java

@@ -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";
+    }
 }