Sfoglia il codice sorgente

手动出入库功能修改

yzc 1 anno fa
parent
commit
1d0ca3b5ab

+ 50 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockDto.java

@@ -4,6 +4,7 @@ import com.fjhx.wms.entity.stock.po.Stock;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -26,11 +27,59 @@ public class StockDto extends Stock {
      */
     private List<Stock> list;
 
-    /**业务类型*/
+    /**
+     * 业务类型
+     */
     private Integer type;
 
     /**
      * 业务id
      */
     private Long businessId;
+
+
+    //手动出入库类型ID赋值
+    /**
+     * 生产订单id
+     */
+    private Long prodOrderId;
+    /**
+     * 销售订单id
+     */
+    private Long saleOrderId;
+    /**
+     * 借用id
+     */
+    private Long borrowId;
+    /**
+     * 预计归还时间
+     */
+    private Date expectRestitutionTime;
+    /**
+     * 归还id
+     */
+    private Long restitutionId;
+    /**
+     * 归还时间
+     */
+    private Date restitutionTime;
+    /**
+     * 丢件id
+     */
+    private Long loseId;
+    /**
+     * 寻回id
+     */
+    private Long seekId;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 出入库人
+     */
+    private String exWarehousePerson;
+
 }

+ 10 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockJournalSelectDto.java

@@ -44,4 +44,14 @@ public class StockJournalSelectDto extends BaseSelectDto {
      */
     private Long companyId;
 
+    /**
+     * 是否归还
+     */
+    private Integer isRestitution;
+
+    /**
+     * 是否寻回
+     */
+    private Integer isSeek;
+
 }

+ 42 - 5
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockJournal.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * <p>
  * 出入库记录
@@ -38,11 +40,6 @@ public class StockJournal extends BasePo {
      */
     private Long warehouseId;
 
-//    /**
-//     * 调仓目标仓库id
-//     */
-//    private Long toWarehouseId;
-
     /**
      * 业务id
      */
@@ -53,4 +50,44 @@ public class StockJournal extends BasePo {
      */
     private Long companyId;
 
+    //手动出入库类型ID赋值
+    /**
+     * 生产订单id
+     */
+    private Long prodOrderId;
+    /**
+     * 借用id
+     */
+    private Long borrowId;
+    /**
+     * 预计归还时间
+     */
+    private Date expectRestitutionTime;
+    /**
+     * 归还id
+     */
+    private Long restitutionId;
+    /**
+     * 归还时间
+     */
+    private Date restitutionTime;
+    /**
+     * 丢件id
+     */
+    private Long loseId;
+    /**
+     * 寻回id
+     */
+    private Long seekId;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 出入库人
+     */
+    private String exWarehousePerson;
+
 }

+ 27 - 5
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -77,21 +78,42 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
     @Override
     public Page<StockJournalVo> getPage(StockJournalSelectDto dto) {
         IWrapper<StockJournal> wrapper = getWrapper();
-        wrapper.orderByDesc("sj", StockJournal::getCreateTime);
+
+        //根据类型过滤
         if (ObjectUtils.isNotEmpty(dto.getType())) {
             String[] split = dto.getType().split(",");
             wrapper.in("sj", StockJournal::getType, split);
         }
         wrapper.eq("sj", StockJournal::getOpType, dto.getOpType());
         wrapper.like("w", WarehouseVo::getName, dto.getKeyword());
+
+        //是否归还过滤
+        Integer isRestitution = dto.getIsRestitution();
+        if (ObjectUtil.isNotEmpty(isRestitution)) {
+            if (ObjectUtil.equals(isRestitution, 0)) {
+                wrapper.isNull("sj.restitution_id");
+            } else {
+                wrapper.isNotNull("sj.restitution_id");
+            }
+        }
+
+        //是否寻回过滤
+        Integer isSeek = dto.getIsSeek();
+        if (ObjectUtil.isNotEmpty(isSeek)) {
+            if (ObjectUtil.equals(isSeek, 0)) {
+                wrapper.isNull("sj.seek_id");
+            } else {
+                wrapper.isNotNull("sj.seek_id");
+            }
+        }
+
+        wrapper.orderByDesc("sj", StockJournal::getCreateTime);
         Page<StockJournalVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockJournalVo> records = page.getRecords();
         //根据id赋值操作人名称
         UserUtil.assignmentNickName(records, StockJournalVo::getCreateUser, StockJournalVo::setUserName);
-        //如果为调参类型记录赋值目标仓库名称
-//        warehouseService.attributeAssign(records, StockJournalVo::getToWarehouseId, (item, warehouse) -> {
-//            item.setToWarehouseName(warehouse.getName());
-//        });
+
+
         return page;
     }
 

+ 58 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -4,10 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.entity.InOutBo;
 import com.fjhx.common.enums.InOutType;
+import com.fjhx.common.utils.Assert;
 import com.fjhx.item.entity.product.po.ProductClassify;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.po.ProductStockInfo;
@@ -162,12 +164,17 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
+        stockJournal.setId(IdWorker.getId());
         stockJournal.setOpType(inOutType == InOutType.IN ? 1 : 2);
         stockJournal.setType(journalType.getDetailType());
         stockJournal.setCode(stockDto.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
         stockJournal.setWarehouseId(warehouseId);
         stockJournal.setBusinessId(stockDto.getBusinessId());
         stockJournal.setCompanyId(companyId);
+        stockJournal.setRemarks(stockDto.getRemarks());
+        stockJournal.setExWarehousePerson(stockDto.getExWarehousePerson());
+        //赋值流水信息
+        editStockJournalInfo(stockDto, stockJournal);
         //保存出入库记录
         stockJournalService.save(stockJournal);
         List<Stock> list = stockDto.getList();
@@ -194,6 +201,55 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         productInfoService.editAvailableQuantity(inOutBoList, inOutType, null, productAvailableRecordType, SecurityUtils.getCompanyId());
     }
 
+    /**
+     * 手动出入库参数校验赋值
+     */
+    private void editStockJournalInfo(StockDto stockDto, StockJournal stockJournal) {
+        JournalType byDetailType = JournalType.getByDetailType(stockDto.getType());
+        //赋值生产订单id以及销售订单id
+        boolean equals1 = JournalType.PROD_PROOFING_OUT.equals(byDetailType);//生产打样
+        boolean equals2 = JournalType.PROD_EXCEED_OUT.equals(byDetailType);//生产超领
+        boolean equals3 = JournalType.MATERIAL_RETURN_IN.equals(byDetailType);//退料入库
+        boolean equals4 = JournalType.DISCARD_MATERIAL_IN.equals(byDetailType);//废料入库
+        boolean equals5 = JournalType.SALE_OUT.equals(byDetailType);//销售出库
+        //生产打样,生产超领,退料入库,废料入库
+        if (equals1 || equals2 || equals3 || equals4 || equals5) {
+            Long prodOrderId = stockDto.getProdOrderId();
+            Assert.notEmpty(prodOrderId, "生产订单id不能为空");
+            stockJournal.setProdOrderId(prodOrderId);
+        }
+        //借用出库
+        if (JournalType.BORROW_OUT.equals(byDetailType)) {
+            Date expectRestitutionTime = stockDto.getExpectRestitutionTime();
+            Assert.notEmpty(expectRestitutionTime, "预计归还时间不能为空");
+            stockJournal.setExpectRestitutionTime(expectRestitutionTime);
+        }
+        //归还入库
+        if (JournalType.RESTITUTION_IN.equals(byDetailType)) {
+            Long borrowId = stockDto.getBorrowId();
+            Assert.notEmpty(borrowId, "借用id不能为空");
+            StockJournal borrowJournal = stockJournalService.getById(borrowId);
+            Assert.notEmpty(borrowJournal, "查询不到借用信息");
+            //赋值归还id
+            borrowJournal.setRestitutionId(stockJournal.getId());
+            borrowJournal.setRestitutionTime(new Date());
+            stockJournalService.updateById(borrowJournal);
+            //赋值借用id
+            stockJournal.setBorrowId(borrowId);
+        }
+        //丢件寻回
+        if (JournalType.LOSE_IN.equals(byDetailType)) {
+            Long loseId = stockDto.getLoseId();
+            Assert.notEmpty(loseId, "丢件id不能为空");
+            StockJournal loseIdJournal = stockJournalService.getById(loseId);
+            Assert.notEmpty(loseIdJournal, "查询不到丢件信息");
+            //赋值寻回Id
+            loseIdJournal.setSeekId(stockJournal.getId());
+            //赋值丢件id
+            stockJournal.setLoseId(loseId);
+        }
+    }
+
     @Override
     @DSTransactional
     public void edit(StockDto stockDto) {
@@ -269,7 +325,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
      * 计算结存单价(在操作库存之前计算)
      */
     @Override
-    public synchronized StockJournalDetails calculateUnitPrice(InOutType inOutType, Long productId, Long warehouseId, BigDecimal inOutQuantity, Integer purchaseArrival, BigDecimal price) {
+    public synchronized StockJournalDetails calculateUnitPrice(InOutType inOutType, Long productId, Long
+            warehouseId, BigDecimal inOutQuantity, Integer purchaseArrival, BigDecimal price) {
         Warehouse warehouse = warehouseService.getById(warehouseId);
         if (ObjectUtil.isEmpty(warehouse)) {
             throw new ServiceException("查询不到仓库信息");