Browse Source

库存查询

yzc 2 năm trước cách đây
mục cha
commit
dd026a35ca

+ 7 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/schedule/dto/ScheduleInfoSelectDto.java

@@ -1,9 +1,12 @@
 package com.fjhx.oa.entity.schedule.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * 日程信息表列表查询入参实体
  *
@@ -14,4 +17,8 @@ import lombok.Setter;
 @Setter
 public class ScheduleInfoSelectDto extends BaseSelectDto {
 
+    /**按月份过滤*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    private Date date;
+
 }

+ 6 - 0
hx-oa/src/main/java/com/fjhx/oa/service/schedule/impl/ScheduleInfoServiceImpl.java

@@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -38,6 +39,8 @@ import java.util.stream.Collectors;
 @DS(SourceConstant.OA)
 @Service
 public class ScheduleInfoServiceImpl extends ServiceImpl<ScheduleInfoMapper, ScheduleInfo> implements ScheduleInfoService {
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
     @Autowired
     ScheduleDetailsService scheduleDetailsService;
 
@@ -45,6 +48,9 @@ public class ScheduleInfoServiceImpl extends ServiceImpl<ScheduleInfoMapper, Sch
     public Page<ScheduleInfoVo> getPage(ScheduleInfoSelectDto dto) {
         IWrapper<ScheduleInfo> wrapper = getWrapper();
         wrapper.orderByDesc("si", ScheduleInfo::getId);
+        if(ObjectUtil.isNotEmpty(dto.getDate())) {
+            wrapper.apply("date_format(si.start_date,'%Y-%m') = date_format('" + sdf.format(dto.getDate()) + "','%Y-%m')");
+        }
         Page<ScheduleInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         return page;
     }

+ 29 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java

@@ -38,6 +38,14 @@ public class StockController {
     }
 
     /**
+     * 维多利亚 按仓库库存查询
+     */
+    @PostMapping("/pageByWarehouse")
+    public Page<StockVo> pageByWarehouse(@RequestBody StockSelectDto dto) {
+        return stockService.pageByWarehouse(dto);
+    }
+
+    /**
      * 库存明细
      */
     @PostMapping("/detail")
@@ -77,4 +85,25 @@ public class StockController {
         stockService.delete(dto.getId());
     }
 
+    /**
+     * 次品转良品
+     *
+     * @return
+     */
+    @PostMapping("/defectiveToQualified")
+    public void defectiveToQualified(@RequestBody Stock stock){
+        stockService.defectiveToQualified(stock);
+    }
+
+    /**
+     * 良品转次品
+     *
+     * @return
+     */
+    @PostMapping("/qualifiedToDefective")
+    public void qualifiedToDefective(@RequestBody Stock stock){
+        stockService.qualifiedToDefective(stock);
+    }
+
+
 }

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/Stock.java

@@ -36,4 +36,7 @@ public class Stock extends BasePo {
      */
     private BigDecimal quantity;
 
+    /**维多利亚扩展*/
+    private String victoriatouristJson;
+
 }

+ 21 - 6
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java

@@ -1,13 +1,12 @@
 package com.fjhx.wms.service.stock;
 
-import com.fjhx.wms.entity.stock.po.Stock;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
-import com.ruoyi.common.core.domain.BaseSelectDto;
-import com.ruoyi.common.core.service.BaseService;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockVo;
-import com.fjhx.wms.entity.stock.dto.StockDto;
+import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
 
@@ -17,7 +16,7 @@ import java.util.List;
  * 库存 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-20
  */
 public interface StockService extends BaseService<Stock> {
@@ -28,6 +27,11 @@ public interface StockService extends BaseService<Stock> {
     Page<StockVo> getPage(StockSelectDto dto);
 
     /**
+     * 维多利亚 按仓库库存查询
+     */
+    Page<StockVo> pageByWarehouse(StockSelectDto dto);
+
+    /**
      * 库存明细
      */
     Stock detail(StockDto dto);
@@ -54,4 +58,15 @@ public interface StockService extends BaseService<Stock> {
 
     List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId);
 
+    /**
+     * 良品转次品
+     */
+    void qualifiedToDefective(Stock stock);
+
+    /**
+     * 次品转良品
+     */
+    void defectiveToQualified(Stock stock);
+
+
 }

+ 103 - 10
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -1,26 +1,27 @@
 package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.fjhx.item.entity.product.po.ProductInfo;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
+import com.fjhx.wms.entity.stock.dto.StockSelectDto;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournal;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
+import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.stock.StockMapper;
 import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.wms.entity.stock.vo.StockVo;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.wms.entity.stock.dto.StockDto;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
@@ -46,6 +47,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     StockJournalDetailsService stockJournalDetailsService;
     @Autowired
     ProductInfoService productInfoService;
+    @Autowired
+    WarehouseService warehouseService;
 
     @Override
     public Page<StockVo> getPage(StockSelectDto dto) {
@@ -65,15 +68,65 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 item.setProductName(productInfo.getName());
             });
         }
-        //维多利亚扩展
+        return page;
+    }
 
+    /**
+     * 维多利亚 按仓库库存查询
+     */
+    @Override
+    public Page<StockVo> pageByWarehouse(StockSelectDto dto) {
+        Page<StockVo> page = getPage(dto);
+        List<StockVo> stockVos = page.getRecords();
 
+        //获取产品id列表
+        List<Long> productIds = stockVos.stream().map(Stock::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productIds)) {
+            //赋值产品名称
+            productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
+                //赋值维多利亚扩展产品信息
+                String victoriatouristJson = item.getVictoriatouristJson();
+                if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                    json.put("code", productInfo.getCode());
+                    json.put("spec", productInfo.getSpec());
+                    json.put("unit", productInfo.getUnit());
+                    item.setVictoriatouristJson(json.toJSONString());
+                }
+            });
+        }
+
+        //维多利亚扩展
+        List<Long> warehouseIds = new ArrayList<>();
+        for (StockVo stockVo : stockVos) {
+            String victoriatouristJson = stockVo.getVictoriatouristJson();
+            if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                //遍历仓库id
+                warehouseIds.add(json.getLong("warehouseId"));
+            }
+        }
+        //如果仓库id列表为空直接返回
+        if (ObjectUtil.isEmpty(warehouseIds)) {
+            return page;
+        }
+        List<Warehouse> warehouses = warehouseService.listByIds(warehouseIds);
+        Map<Long, String> warehouseMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
+        for (StockVo stockVo : stockVos) {
+            String victoriatouristJson = stockVo.getVictoriatouristJson();
+            if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                String warehouseName = warehouseMap.get(json.getLong("warehouseId"));
+                json.put("warehouseName", warehouseName);
+                stockVo.setVictoriatouristJson(json.toJSONString());
+            }
+        }
         return page;
     }
 
     @Override
     public Stock detail(StockDto dto) {
-        return getOne(q->q.eq(Stock::getWarehouseId,dto.getWarehouseId()).eq(Stock::getProductId,dto.getProductId()));
+        return getOne(q -> q.eq(Stock::getWarehouseId, dto.getWarehouseId()).eq(Stock::getProductId, dto.getProductId()));
     }
 
     @Override
@@ -191,5 +244,45 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         return stockJournalDetailsList;
     }
 
+    /**
+     * 次品转良品
+     */
+    @Override
+    public void defectiveToQualified(Stock stock) {
+        if (ObjectUtil.isEmpty(stock.getId())) {
+            throw new ServiceException("库存id不能为空");
+        }
+        if (ObjectUtil.isEmpty(stock.getQuantity())) {
+            throw new ServiceException("要转换的数量不能为空");
+        }
+        Stock stock1 = getById(stock.getId());
+        String victoriatouristJson = stock1.getVictoriatouristJson();
+        JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        json.put("quantity", json.getBigDecimal("quantity").add(stock.getQuantity()));
+        json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").subtract(stock.getQuantity()));
+        stock1.setVictoriatouristJson(json.toJSONString());
+        updateById(stock1);
+    }
+
+    /**
+     * 良品转次品
+     */
+    @Override
+    public void qualifiedToDefective(Stock stock) {
+        if (ObjectUtil.isEmpty(stock.getId())) {
+            throw new ServiceException("库存id不能为空");
+        }
+        if (ObjectUtil.isEmpty(stock.getQuantity())) {
+            throw new ServiceException("要转换的数量不能为空");
+        }
+        Stock stock1 = getById(stock.getId());
+        String victoriatouristJson = stock1.getVictoriatouristJson();
+        JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        json.put("quantity", json.getBigDecimal("quantity").subtract(stock.getQuantity()));
+        json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").add(stock.getQuantity()));
+        stock1.setVictoriatouristJson(json.toJSONString());
+        updateById(stock1);
+    }
+
 
 }