Commit f40a381f by zhangtw

首页统计入库次数、入库数量金额Top10、库存物料预警接口

parent 66587bed
...@@ -7,6 +7,7 @@ import com.ruoyi.common.utils.uuid.UUID; ...@@ -7,6 +7,7 @@ import com.ruoyi.common.utils.uuid.UUID;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.inventory.domain.InboundOrderItems; import com.ruoyi.inventory.domain.InboundOrderItems;
import com.ruoyi.inventory.domain.vo.InboundMaterialTotalVO;
import com.ruoyi.inventory.domain.vo.InboundTemplateVO; import com.ruoyi.inventory.domain.vo.InboundTemplateVO;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -136,4 +137,36 @@ public class InboundOrdersController extends BaseController ...@@ -136,4 +137,36 @@ public class InboundOrdersController extends BaseController
String message = inboundOrdersService.importInboundOrders(inboundOrders, updateSupport, operName); String message = inboundOrdersService.importInboundOrders(inboundOrders, updateSupport, operName);
return success(message); return success(message);
} }
/**
* 首页入库次数统计api
*
*/
@GetMapping("/inboundCount")
public AjaxResult inboundCount(){
int count = inboundOrdersService.countInboundOrders();
return AjaxResult.success(count);
}
/**
* 按数量统计本月入库物料Top前10
* @return 结果
*/
@GetMapping("/countQuantity")
public TableDataInfo countQuantity(){
startPage();
List<InboundMaterialTotalVO> list = inboundOrdersService.countInboundMaterialQuantity();
return getDataTable(list);
}
/**
* 按金额统计本月入库物料Top前10
* @return 结果
*/
@GetMapping("/countMoney")
public TableDataInfo countMoney(){
startPage();
List<InboundMaterialTotalVO> list = inboundOrdersService.countInboundMaterialMoney();
return getDataTable(list);
}
} }
...@@ -19,17 +19,15 @@ public class Materials extends BaseEntity ...@@ -19,17 +19,15 @@ public class Materials extends BaseEntity
private String id; private String id;
/** 物料编码 检索条件 */ /** 物料编码 检索条件 */
@Excel(name = "物料编码")
private String materialCode; private String materialCode;
/** SAP物料号 检索条件 */
@Excel(name = "SAP物料号")
private String sapNo;
/** 物料名称 检索条件 */ /** 物料名称 检索条件 */
@Excel(name = "物料名称") @Excel(name = "物料名称")
private String materialName; private String materialName;
/** SAP物料号 检索条件 */
@Excel(name = "SAP物料号")
private String sapNo;
/** TS Code 检索条件 */ /** TS Code 检索条件 */
@Excel(name = "TS Code") @Excel(name = "TS Code")
private String tsCode; private String tsCode;
......
...@@ -3,17 +3,12 @@ package com.ruoyi.inventory.controller; ...@@ -3,17 +3,12 @@ package com.ruoyi.inventory.controller;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.inventory.domain.vo.InventoryExceedWarnVO;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
...@@ -24,6 +19,7 @@ import com.ruoyi.inventory.domain.vo.InventorySummaryVO; ...@@ -24,6 +19,7 @@ import com.ruoyi.inventory.domain.vo.InventorySummaryVO;
import com.ruoyi.inventory.service.IInventoryService; import com.ruoyi.inventory.service.IInventoryService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 库存Controller * 库存Controller
...@@ -171,4 +167,15 @@ public class InventoryController extends BaseController ...@@ -171,4 +167,15 @@ public class InventoryController extends BaseController
{ {
return toAjax(inventoryService.insertInventoryList(inventoryList)); return toAjax(inventoryService.insertInventoryList(inventoryList));
} }
/**
* 统计库存物料超出预警值
*/
@GetMapping("/exceed")
public TableDataInfo exceedWarnValue()
{
startPage();
List<InventoryExceedWarnVO> list = inventoryService.selectInventoryExceedWarnList();
return getDataTable(list);
}
} }
...@@ -3,6 +3,7 @@ package com.ruoyi.inventory.mapper; ...@@ -3,6 +3,7 @@ package com.ruoyi.inventory.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.inventory.domain.InboundOrders; import com.ruoyi.inventory.domain.InboundOrders;
import com.ruoyi.inventory.domain.InboundOrderItems; import com.ruoyi.inventory.domain.InboundOrderItems;
import com.ruoyi.inventory.domain.vo.InboundMaterialTotalVO;
/** /**
* 入库单主Mapper接口 * 入库单主Mapper接口
...@@ -91,4 +92,25 @@ public interface InboundOrdersMapper ...@@ -91,4 +92,25 @@ public interface InboundOrdersMapper
* @return 结果 * @return 结果
*/ */
public int deleteInboundOrderItemsByOrderId(String id); public int deleteInboundOrderItemsByOrderId(String id);
/**
* 统计本月入库次数
* @param monthParam yy-MM
* @return 结果
*/
public int countInboundOrders(String monthParam);
/**
* 按数量统计本月入库物料Top前10
* @param monthParam yy-MM
* @return 结果
*/
public List<InboundMaterialTotalVO> countInboundMaterialQuantity(String monthParam);
/**
* 按金额统计本月入库物料Top前10
* @param monthParam yy-MM
* @return 结果
*/
public List<InboundMaterialTotalVO> countInboundMaterialMoney(String monthParam);
} }
...@@ -6,6 +6,7 @@ import com.ruoyi.common.core.page.TableDataInfo; ...@@ -6,6 +6,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.inventory.domain.Inventory; import com.ruoyi.inventory.domain.Inventory;
import com.ruoyi.inventory.domain.StocktakeItems; import com.ruoyi.inventory.domain.StocktakeItems;
import com.ruoyi.inventory.domain.TO.StocktakeItemsTo; import com.ruoyi.inventory.domain.TO.StocktakeItemsTo;
import com.ruoyi.inventory.domain.vo.InventoryExceedWarnVO;
/** /**
* 库存Mapper接口 * 库存Mapper接口
...@@ -97,4 +98,11 @@ public interface InventoryMapper ...@@ -97,4 +98,11 @@ public interface InventoryMapper
* @return 库存明细集合 * @return 库存明细集合
*/ */
public List<Inventory> selectInventoryDetailList(Inventory inventory); public List<Inventory> selectInventoryDetailList(Inventory inventory);
/**
* 统计物料库存超出预警库存数量
*
* @return 超出预警值物料信息集合
*/
public List<InventoryExceedWarnVO> selectInventoryExceedWarnList();
} }
...@@ -4,6 +4,7 @@ import java.util.List; ...@@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.inventory.domain.InboundOrderItems; import com.ruoyi.inventory.domain.InboundOrderItems;
import com.ruoyi.inventory.domain.InboundOrders; import com.ruoyi.inventory.domain.InboundOrders;
import com.ruoyi.inventory.domain.vo.InboundMaterialTotalVO;
import com.ruoyi.inventory.domain.vo.InboundTemplateVO; import com.ruoyi.inventory.domain.vo.InboundTemplateVO;
/** /**
...@@ -69,4 +70,24 @@ public interface IInboundOrdersService ...@@ -69,4 +70,24 @@ public interface IInboundOrdersService
* @return 结果 * @return 结果
*/ */
public String importInboundOrders(List<InboundTemplateVO> inboundOrders, Boolean isUpdateSupport, String operName); public String importInboundOrders(List<InboundTemplateVO> inboundOrders, Boolean isUpdateSupport, String operName);
/**
* 统计本月入库数量
*
* @return 结果
*/
public int countInboundOrders();
/**
* 按数量统计本月入库物料Top前10
* @return 结果
*/
public List<InboundMaterialTotalVO> countInboundMaterialQuantity();
/**
* 按金额统计本月入库物料Top前10
* @return 结果
*/
public List<InboundMaterialTotalVO> countInboundMaterialMoney();
} }
...@@ -8,6 +8,7 @@ import com.ruoyi.inventory.domain.Inventory; ...@@ -8,6 +8,7 @@ import com.ruoyi.inventory.domain.Inventory;
import com.ruoyi.inventory.domain.OutboundOrderItems; import com.ruoyi.inventory.domain.OutboundOrderItems;
import com.ruoyi.inventory.domain.StocktakeItems; import com.ruoyi.inventory.domain.StocktakeItems;
import com.ruoyi.inventory.domain.TO.StocktakeItemsTo; import com.ruoyi.inventory.domain.TO.StocktakeItemsTo;
import com.ruoyi.inventory.domain.vo.InventoryExceedWarnVO;
/** /**
* 库存Service接口 * 库存Service接口
...@@ -107,4 +108,11 @@ public interface IInventoryService ...@@ -107,4 +108,11 @@ public interface IInventoryService
*/ */
public List<Inventory> selectInventoryDetailList(Inventory inventory); public List<Inventory> selectInventoryDetailList(Inventory inventory);
/**
* 统计库存物料超出预警值
*
* @return 超出预警物料信息集合
*/
public List<InventoryExceedWarnVO> selectInventoryExceedWarnList();
} }
package com.ruoyi.inventory.service.impl; package com.ruoyi.inventory.service.impl;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.ruoyi.inventory.domain.vo.InboundMaterialTotalVO;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
...@@ -293,4 +297,32 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService ...@@ -293,4 +297,32 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
return finalSuccessMsg; return finalSuccessMsg;
} }
} }
/**
* 统计本月入库数量
*
* @return 结果
*/
@Override
public int countInboundOrders() {
String monthParam = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
return inboundOrdersMapper.countInboundOrders(monthParam);
}
/**
* 按数量统计本月入库物料Top前10
* @return 结果
*/
@Override
public List<InboundMaterialTotalVO> countInboundMaterialQuantity() {
String monthParam = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
return inboundOrdersMapper.countInboundMaterialQuantity(monthParam);
}
/**
* 按金额统计本月入库物料Top前10
* @return 结果
*/
@Override
public List<InboundMaterialTotalVO> countInboundMaterialMoney() {
String monthParam = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
return inboundOrdersMapper.countInboundMaterialMoney(monthParam);
}
} }
...@@ -8,6 +8,7 @@ import com.ruoyi.common.utils.DateUtils; ...@@ -8,6 +8,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.inventory.domain.OutboundOrderItems; import com.ruoyi.inventory.domain.OutboundOrderItems;
import com.ruoyi.inventory.domain.OutboundOrderLog; import com.ruoyi.inventory.domain.OutboundOrderLog;
import com.ruoyi.inventory.domain.TO.StocktakeItemsTo; import com.ruoyi.inventory.domain.TO.StocktakeItemsTo;
import com.ruoyi.inventory.domain.vo.InventoryExceedWarnVO;
import com.ruoyi.inventory.domain.vo.InventorySummaryVO; import com.ruoyi.inventory.domain.vo.InventorySummaryVO;
import com.ruoyi.inventory.mapper.OutboundOrderItemsMapper; import com.ruoyi.inventory.mapper.OutboundOrderItemsMapper;
import com.ruoyi.inventory.mapper.OutboundOrderLogMapper; import com.ruoyi.inventory.mapper.OutboundOrderLogMapper;
...@@ -259,4 +260,9 @@ public class InventoryServiceImpl implements IInventoryService ...@@ -259,4 +260,9 @@ public class InventoryServiceImpl implements IInventoryService
{ {
return inventoryMapper.selectInventoryDetailList(inventory); return inventoryMapper.selectInventoryDetailList(inventory);
} }
@Override
public List<InventoryExceedWarnVO> selectInventoryExceedWarnList() {
return inventoryMapper.selectInventoryExceedWarnList();
}
} }
...@@ -228,4 +228,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -228,4 +228,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
( #{item.id}, #{item.orderId}, #{item.materialId}, #{item.batchId}, #{item.warehouseId}, #{item.locationId}, #{item.plannedQuantity}, #{item.actualQuantity}, #{item.plannedPackages}, #{item.actualPackages}, #{item.divisor}, #{item.labelColor}, #{item.voucherNumber}, #{item.unitPrice}, #{item.itemStatus}, #{item.receivedAt}, #{item.receivedBy}, #{item.remark}, #{item.isUsed}, #{item.sortNo}, #{item.createTime}, #{item.createUserCode}, #{item.updateTime}, #{item.updateUserCode}, #{item.inboundOrderId}) ( #{item.id}, #{item.orderId}, #{item.materialId}, #{item.batchId}, #{item.warehouseId}, #{item.locationId}, #{item.plannedQuantity}, #{item.actualQuantity}, #{item.plannedPackages}, #{item.actualPackages}, #{item.divisor}, #{item.labelColor}, #{item.voucherNumber}, #{item.unitPrice}, #{item.itemStatus}, #{item.receivedAt}, #{item.receivedBy}, #{item.remark}, #{item.isUsed}, #{item.sortNo}, #{item.createTime}, #{item.createUserCode}, #{item.updateTime}, #{item.updateUserCode}, #{item.inboundOrderId})
</foreach> </foreach>
</insert> </insert>
<!-- 统计入库次数-->
<select id="countInboundOrders" resultType="int" parameterType="String">
select count(id)
from inbound_orders
where DATE_FORMAT(inbound_date, '%Y-%m') = #{monthParam};
</select>
<!-- 统计入库物料数量Top10-->
<resultMap id="InboundMaterialTotalResultMap" type="com.ruoyi.inventory.domain.vo.InboundMaterialTotalVO">
<result column="material_name" property="materialName" jdbcType="VARCHAR"/>
<result column="total_quantity" property="totalQuantity" jdbcType="BIGINT"/>
<result column="total_money" property="totalMoney" jdbcType="DECIMAL"/>
</resultMap>
<select id="countInboundMaterialQuantity" resultMap="InboundMaterialTotalResultMap" parameterType="String">
select ioi.material_name,sum(ioi.actual_quantity) as total_quantity
from inbound_order as io
inner join inbound_order_items as ioi on io.id = ioi.inbound_order_id
inner join materials as m on ioi.material_id = m.id
where io.order_status = 2
group by m.id
order by total_quantity desc
limit 10
</select>
<select id="countInboundMaterialMoney" resultMap="InboundMaterialTotalResultMap" parameterType="String">
select ioi.material_name,sum(ioi.actual_quantity * ioi.unit_price) as total_money
from inbound_order as io
inner join inbound_order_items as ioi on io.id = ioi.inbound_order_id
inner join materials as m on ioi.material_id = m.id
where io.order_status = 2
group by m.id
order by total_money desc
limit 10
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -317,4 +317,24 @@ and inventory_status = '1' ...@@ -317,4 +317,24 @@ and inventory_status = '1'
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<!-- 库存物料超出预警值统计-->
<resultMap id="InventoryExceedWarnResultMap" type="com.ruoyi.inventory.domain.vo.InventoryExceedWarnVO">
<result column="material_name" property="materialName" jdbcType="VARCHAR"/>
<result column="category_name" property="categoryName" jdbcType="VARCHAR"/>
<result column="sap_no" property="sapNo" jdbcType="VARCHAR"/>
<result column="quantity" property="quantity" jdbcType="BIGINT"/>
<result column="min_stock_level" property="minStockLevel" jdbcType="BIGINT"/>
<result column="max_stock_level" property="maxStockLevel" jdbcType="BIGINT"/>
</resultMap>
<select id="selectInventoryExceedWarnList" resultMap="InventoryExceedWarnResultMap">
select m.material_name,mc.category_name,m.sap_no,
COALESCE(i.quantity, 0) AS quantity,
COALESCE(m.min_stock_level, 0) AS min_stock_level,
COALESCE(m.max_stock_level, 9999) AS max_stock_level
from materials as m
inner join inventory as i on i.material_id = m.id
inner join materials_category as mc on m.category_code = mc.id
where COALESCE(i.quantity, 0) &gt; COALESCE(m.max_stock_level, 999999)
or COALESCE(i.quantity, 0) &lt; COALESCE(m.min_stock_level, 0)
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论