From be34fe4c436bd6d156f730127a7591bc885b5a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=AB=E7=8C=ABguowen?= <9290821+guowen-the-cat@user.noreply.gitee.com> Date: Tue, 27 May 2025 16:32:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=B1=87=E6=80=BB=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/StockSummaryController.java | 104 ++++++++ .../StockSummary/domain/StockSummary.java | 223 ++++++++++++++++++ .../mapper/StockSummaryMapper.java | 61 +++++ .../service/IStockSummaryService.java | 61 +++++ .../service/impl/StockSummaryServiceImpl.java | 93 ++++++++ .../mapper/search/StockSummaryMapper.xml | 122 ++++++++++ ruoyi-ui/src/api/search/StockSummary.js | 44 ++++ .../src/views/search/StockSummary/index.vue | 173 ++++++++++++++ 8 files changed, 881 insertions(+) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/controller/StockSummaryController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/domain/StockSummary.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/mapper/StockSummaryMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/IStockSummaryService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/impl/StockSummaryServiceImpl.java create mode 100644 ruoyi-admin/src/main/resources/mapper/search/StockSummaryMapper.xml create mode 100644 ruoyi-ui/src/api/search/StockSummary.js create mode 100644 ruoyi-ui/src/views/search/StockSummary/index.vue diff --git a/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/controller/StockSummaryController.java b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/controller/StockSummaryController.java new file mode 100644 index 0000000..8dc5128 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/controller/StockSummaryController.java @@ -0,0 +1,104 @@ +package com.ruoyi.search.StockSummary.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +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.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.search.StockSummary.domain.StockSummary; +import com.ruoyi.search.StockSummary.service.IStockSummaryService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 库存汇总Controller + * + * @author ruoyi + * @date 2025-05-26 + */ +@RestController +@RequestMapping("/search/StockSummary") +public class StockSummaryController extends BaseController +{ + @Autowired + private IStockSummaryService stockSummaryService; + + /** + * 查询库存汇总列表 + */ + @PreAuthorize("@ss.hasPermi('search:StockSummary:list')") + @GetMapping("/list") + public TableDataInfo list(StockSummary stockSummary) + { + startPage(); + List list = stockSummaryService.selectStockSummaryList(stockSummary); + return getDataTable(list); + } + + /** + * 导出库存汇总列表 + */ + @PreAuthorize("@ss.hasPermi('search:StockSummary:export')") + @Log(title = "库存汇总", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, StockSummary stockSummary) + { + List list = stockSummaryService.selectStockSummaryList(stockSummary); + ExcelUtil util = new ExcelUtil(StockSummary.class); + util.exportExcel(response, list, "库存汇总数据"); + } + + /** + * 获取库存汇总详细信息 + */ + @PreAuthorize("@ss.hasPermi('search:StockSummary:query')") + @GetMapping(value = "/{onlyIdentity}") + public AjaxResult getInfo(@PathVariable("onlyIdentity") Long onlyIdentity) + { + return success(stockSummaryService.selectStockSummaryByOnlyIdentity(onlyIdentity)); + } + + /** + * 新增库存汇总 + */ + @PreAuthorize("@ss.hasPermi('search:StockSummary:add')") + @Log(title = "库存汇总", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody StockSummary stockSummary) + { + return toAjax(stockSummaryService.insertStockSummary(stockSummary)); + } + + /** + * 修改库存汇总 + */ + @PreAuthorize("@ss.hasPermi('search:StockSummary:edit')") + @Log(title = "库存汇总", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody StockSummary stockSummary) + { + return toAjax(stockSummaryService.updateStockSummary(stockSummary)); + } + + /** + * 删除库存汇总 + */ + @PreAuthorize("@ss.hasPermi('search:StockSummary:remove')") + @Log(title = "库存汇总", businessType = BusinessType.DELETE) + @DeleteMapping("/{onlyIdentitys}") + public AjaxResult remove(@PathVariable Long[] onlyIdentitys) + { + return toAjax(stockSummaryService.deleteStockSummaryByOnlyIdentitys(onlyIdentitys)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/domain/StockSummary.java b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/domain/StockSummary.java new file mode 100644 index 0000000..7647f9e --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/domain/StockSummary.java @@ -0,0 +1,223 @@ +package com.ruoyi.search.StockSummary.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 库存汇总对象 stock_summary + * + * @author ruoyi + * @date 2025-05-26 + */ +public class StockSummary extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 序号 */ + @Excel(name = "序号") + private Long onlyIdentity; + + /** 物料编码 */ + @Excel(name = "物料编码") + private String productId; + + /** 物料名称 */ + @Excel(name = "物料名称") + private String productName; + + /** 规格 */ + @Excel(name = "规格") + private String spec; + + /** 单位 */ + @Excel(name = "单位") + private String unit; + + /** 批号 */ + @Excel(name = "批号") + private String lotNo; + + /** 仓库 */ + @Excel(name = "仓库") + private String warehouseId; + + /** 巷道 */ + @Excel(name = "巷道") + private String roadwayId; + + /** 库存数量 */ + @Excel(name = "库存数量") + private Double quantity; + + /** 分组字段控制 */ + private Boolean groupByProductId; + private Boolean groupByProductName; + private Boolean groupBySpec; + private Boolean groupByUnit; + private Boolean groupByLotNo; + private Boolean groupByWarehouseId; + private Boolean groupByRoadwayId; + + public Boolean getGroupByProductId() { + return groupByProductId; + } + + public void setGroupByProductId(Boolean groupByProductId) { + this.groupByProductId = groupByProductId; + } + + public Boolean getGroupByProductName() { + return groupByProductName; + } + + public void setGroupByProductName(Boolean groupByProductName) { + this.groupByProductName = groupByProductName; + } + + public Boolean getGroupBySpec() { + return groupBySpec; + } + + public void setGroupBySpec(Boolean groupBySpec) { + this.groupBySpec = groupBySpec; + } + + public Boolean getGroupByUnit() { + return groupByUnit; + } + + public void setGroupByUnit(Boolean groupByUnit) { + this.groupByUnit = groupByUnit; + } + + public Boolean getGroupByLotNo() { + return groupByLotNo; + } + + public void setGroupByLotNo(Boolean groupByLotNo) { + this.groupByLotNo = groupByLotNo; + } + + public Boolean getGroupByWarehouseId() { + return groupByWarehouseId; + } + + public void setGroupByWarehouseId(Boolean groupByWarehouseId) { + this.groupByWarehouseId = groupByWarehouseId; + } + + public Boolean getGroupByRoadwayId() { + return groupByRoadwayId; + } + + public void setGroupByRoadwayId(Boolean groupByRoadwayId) { + this.groupByRoadwayId = groupByRoadwayId; + } + + public void setOnlyIdentity(Long onlyIdentity) + { + this.onlyIdentity = onlyIdentity; + } + + public Long getOnlyIdentity() + { + return onlyIdentity; + } + + public void setProductId(String productId) + { + this.productId = productId; + } + + public String getProductId() + { + return productId; + } + + public void setProductName(String productName) + { + this.productName = productName; + } + + public String getProductName() + { + return productName; + } + + public void setSpec(String spec) + { + this.spec = spec; + } + + public String getSpec() + { + return spec; + } + + public void setUnit(String unit) + { + this.unit = unit; + } + + public String getUnit() + { + return unit; + } + + public void setLotNo(String lotNo) + { + this.lotNo = lotNo; + } + + public String getLotNo() + { + return lotNo; + } + + public void setWarehouseId(String warehouseId) + { + this.warehouseId = warehouseId; + } + + public String getWarehouseId() + { + return warehouseId; + } + + public void setRoadwayId(String roadwayId) + { + this.roadwayId = roadwayId; + } + + public String getRoadwayId() + { + return roadwayId; + } + + public void setQuantity(Double quantity) + { + this.quantity = quantity; + } + + public Double getQuantity() + { + return quantity; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("onlyIdentity", getOnlyIdentity()) + .append("productId", getProductId()) + .append("productName", getProductName()) + .append("spec", getSpec()) + .append("unit", getUnit()) + .append("lotNo", getLotNo()) + .append("warehouseId", getWarehouseId()) + .append("roadwayId", getRoadwayId()) + .append("quantity", getQuantity()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/mapper/StockSummaryMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/mapper/StockSummaryMapper.java new file mode 100644 index 0000000..417cdbc --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/mapper/StockSummaryMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.search.StockSummary.mapper; + +import java.util.List; +import com.ruoyi.search.StockSummary.domain.StockSummary; + +/** + * 库存汇总Mapper接口 + * + * @author ruoyi + * @date 2025-05-26 + */ +public interface StockSummaryMapper +{ + /** + * 查询库存汇总 + * + * @param onlyIdentity 库存汇总主键 + * @return 库存汇总 + */ + public StockSummary selectStockSummaryByOnlyIdentity(Long onlyIdentity); + + /** + * 查询库存汇总列表 + * + * @param stockSummary 库存汇总 + * @return 库存汇总集合 + */ + public List selectStockSummaryList(StockSummary stockSummary); + + /** + * 新增库存汇总 + * + * @param stockSummary 库存汇总 + * @return 结果 + */ + public int insertStockSummary(StockSummary stockSummary); + + /** + * 修改库存汇总 + * + * @param stockSummary 库存汇总 + * @return 结果 + */ + public int updateStockSummary(StockSummary stockSummary); + + /** + * 删除库存汇总 + * + * @param onlyIdentity 库存汇总主键 + * @return 结果 + */ + public int deleteStockSummaryByOnlyIdentity(Long onlyIdentity); + + /** + * 批量删除库存汇总 + * + * @param onlyIdentitys 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteStockSummaryByOnlyIdentitys(Long[] onlyIdentitys); +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/IStockSummaryService.java b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/IStockSummaryService.java new file mode 100644 index 0000000..d1fdbcd --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/IStockSummaryService.java @@ -0,0 +1,61 @@ +package com.ruoyi.search.StockSummary.service; + +import java.util.List; +import com.ruoyi.search.StockSummary.domain.StockSummary; + +/** + * 库存汇总Service接口 + * + * @author ruoyi + * @date 2025-05-26 + */ +public interface IStockSummaryService +{ + /** + * 查询库存汇总 + * + * @param onlyIdentity 库存汇总主键 + * @return 库存汇总 + */ + public StockSummary selectStockSummaryByOnlyIdentity(Long onlyIdentity); + + /** + * 查询库存汇总列表 + * + * @param stockSummary 库存汇总 + * @return 库存汇总集合 + */ + public List selectStockSummaryList(StockSummary stockSummary); + + /** + * 新增库存汇总 + * + * @param stockSummary 库存汇总 + * @return 结果 + */ + public int insertStockSummary(StockSummary stockSummary); + + /** + * 修改库存汇总 + * + * @param stockSummary 库存汇总 + * @return 结果 + */ + public int updateStockSummary(StockSummary stockSummary); + + /** + * 批量删除库存汇总 + * + * @param onlyIdentitys 需要删除的库存汇总主键集合 + * @return 结果 + */ + public int deleteStockSummaryByOnlyIdentitys(Long[] onlyIdentitys); + + /** + * 删除库存汇总信息 + * + * @param onlyIdentity 库存汇总主键 + * @return 结果 + */ + public int deleteStockSummaryByOnlyIdentity(Long onlyIdentity); +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/impl/StockSummaryServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/impl/StockSummaryServiceImpl.java new file mode 100644 index 0000000..9f11614 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/search/StockSummary/service/impl/StockSummaryServiceImpl.java @@ -0,0 +1,93 @@ +package com.ruoyi.search.StockSummary.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.search.StockSummary.mapper.StockSummaryMapper; +import com.ruoyi.search.StockSummary.domain.StockSummary; +import com.ruoyi.search.StockSummary.service.IStockSummaryService; + +/** + * 库存汇总Service业务层处理 + * + * @author ruoyi + * @date 2025-05-26 + */ +@Service +public class StockSummaryServiceImpl implements IStockSummaryService +{ + @Autowired + private StockSummaryMapper stockSummaryMapper; + + /** + * 查询库存汇总 + * + * @param onlyIdentity 库存汇总主键 + * @return 库存汇总 + */ + @Override + public StockSummary selectStockSummaryByOnlyIdentity(Long onlyIdentity) + { + return stockSummaryMapper.selectStockSummaryByOnlyIdentity(onlyIdentity); + } + + /** + * 查询库存汇总列表 + * + * @param stockSummary 库存汇总 + * @return 库存汇总 + */ + @Override + public List selectStockSummaryList(StockSummary stockSummary) + { + return stockSummaryMapper.selectStockSummaryList(stockSummary); + } + + /** + * 新增库存汇总 + * + * @param stockSummary 库存汇总 + * @return 结果 + */ + @Override + public int insertStockSummary(StockSummary stockSummary) + { + return stockSummaryMapper.insertStockSummary(stockSummary); + } + + /** + * 修改库存汇总 + * + * @param stockSummary 库存汇总 + * @return 结果 + */ + @Override + public int updateStockSummary(StockSummary stockSummary) + { + return stockSummaryMapper.updateStockSummary(stockSummary); + } + + /** + * 批量删除库存汇总 + * + * @param onlyIdentitys 需要删除的库存汇总主键 + * @return 结果 + */ + @Override + public int deleteStockSummaryByOnlyIdentitys(Long[] onlyIdentitys) + { + return stockSummaryMapper.deleteStockSummaryByOnlyIdentitys(onlyIdentitys); + } + + /** + * 删除库存汇总信息 + * + * @param onlyIdentity 库存汇总主键 + * @return 结果 + */ + @Override + public int deleteStockSummaryByOnlyIdentity(Long onlyIdentity) + { + return stockSummaryMapper.deleteStockSummaryByOnlyIdentity(onlyIdentity); + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/search/StockSummaryMapper.xml b/ruoyi-admin/src/main/resources/mapper/search/StockSummaryMapper.xml new file mode 100644 index 0000000..26e753d --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/search/StockSummaryMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + SELECT + + + p.product_id, + p.product_name, + p.spec, + p.unit, + s.lot_no, + s.warehouse_id, + s.cargo_space_id as roadway_id, + SUM(CAST(s.quantity AS DECIMAL(18,2))) as quantity + FROM bas_stock s + LEFT JOIN bas_product p ON s.product_guid = p.product_guid + GROUP BY + + ,p.product_id + ,p.product_name + ,p.spec + ,p.unit + ,s.lot_no + ,s.warehouse_id + ,s.cargo_space_id + + + + 1 as group_all, + SUM(CAST(s.quantity AS DECIMAL(18,2))) as quantity + FROM bas_stock s + LEFT JOIN bas_product p ON s.product_guid = p.product_guid + + + + + + + + + + insert into stock_summary + + only_identity, + product_id, + product_name, + spec, + unit, + lot_no, + warehouse_id, + roadway_id, + quantity, + + + #{onlyIdentity}, + #{productId}, + #{productName}, + #{spec}, + #{unit}, + #{lotNo}, + #{warehouseId}, + #{roadwayId}, + #{quantity}, + + + + + update stock_summary + + product_id = #{productId}, + product_name = #{productName}, + spec = #{spec}, + unit = #{unit}, + lot_no = #{lotNo}, + warehouse_id = #{warehouseId}, + roadway_id = #{roadwayId}, + quantity = #{quantity}, + + where only_identity = #{onlyIdentity} + + + + delete from stock_summary where only_identity = #{onlyIdentity} + + + + delete from stock_summary where only_identity in + + #{onlyIdentity} + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/search/StockSummary.js b/ruoyi-ui/src/api/search/StockSummary.js new file mode 100644 index 0000000..0d12d7a --- /dev/null +++ b/ruoyi-ui/src/api/search/StockSummary.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询库存汇总列表 +export function listStockSummary(query) { + return request({ + url: '/search/StockSummary/list', + method: 'get', + params: query + }) +} + +// 查询库存汇总详细 +export function getStockSummary(onlyIdentity) { + return request({ + url: '/search/StockSummary/' + onlyIdentity, + method: 'get' + }) +} + +// 新增库存汇总 +export function addStockSummary(data) { + return request({ + url: '/search/StockSummary', + method: 'post', + data: data + }) +} + +// 修改库存汇总 +export function updateStockSummary(data) { + return request({ + url: '/search/StockSummary', + method: 'put', + data: data + }) +} + +// 删除库存汇总 +export function delStockSummary(onlyIdentity) { + return request({ + url: '/search/StockSummary/' + onlyIdentity, + method: 'delete' + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/search/StockSummary/index.vue b/ruoyi-ui/src/views/search/StockSummary/index.vue new file mode 100644 index 0000000..e8395a9 --- /dev/null +++ b/ruoyi-ui/src/views/search/StockSummary/index.vue @@ -0,0 +1,173 @@ + + + \ No newline at end of file