From 535983d09273433728bb13286ed17e7f97221307 Mon Sep 17 00:00:00 2001 From: double <768903061@qq.com> Date: Sat, 27 Apr 2019 21:03:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=8A=A5=E8=A1=A8=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=BA=93=E5=AD=98=E9=A2=84=E8=AD=A6=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=20"=E5=90=8D=E7=A7=B0",=20"=E5=9E=8B=E5=8F=B7",=20"=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E4=BF=A1=E6=81=AF",=20"=E5=8D=95=E4=BD=8D",=20"?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=95=B0=E9=87=8F",=20"=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E6=95=B0=E9=87=8F",=20"=E5=BA=93=E5=AD=98=E6=95=B0=E9=87=8F",?= =?UTF-8?q?=20"=E5=AE=89=E5=85=A8=E5=BA=93=E5=AD=98=E9=87=8F",=20"?= =?UTF-8?q?=E4=B8=B4=E7=95=8C=E5=BA=93=E5=AD=98=E9=87=8F"=20=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E4=B8=B4=E7=95=8C=E5=BA=93=E5=AD=98=E9=87=8F=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=20=E4=B8=B4=E7=95=8C=E5=BA=93=E5=AD=98=E9=87=8F=3D?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=95=B0=E9=87=8F-=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/reports/stock_warning_report.html | 333 ++++++++++++++++++ .../erp/controller/DepotItemController.java | 80 ++++- .../datasource/mappers/DepotItemMapperEx.java | 7 + .../vo/DepotItemStockWarningCount.java | 109 ++++++ .../service/depotItem/DepotItemService.java | 33 +- .../mapper_xml/DepotItemMapperEx.xml | 104 +++++- 6 files changed, 660 insertions(+), 6 deletions(-) create mode 100644 erp_web/pages/reports/stock_warning_report.html create mode 100644 src/main/java/com/jsh/erp/datasource/vo/DepotItemStockWarningCount.java diff --git a/erp_web/pages/reports/stock_warning_report.html b/erp_web/pages/reports/stock_warning_report.html new file mode 100644 index 00000000..ff4d484d --- /dev/null +++ b/erp_web/pages/reports/stock_warning_report.html @@ -0,0 +1,333 @@ + + + + 库存预警 + + + + + + + + + + + + + + + + +
+ + + + + + + + +
仓库: + +   + 查询 +    + 导出 +    + 打印 +    +
+
+ + +
+
+
+ + + + diff --git a/src/main/java/com/jsh/erp/controller/DepotItemController.java b/src/main/java/com/jsh/erp/controller/DepotItemController.java index deafa7f8..0b4a11fd 100644 --- a/src/main/java/com/jsh/erp/controller/DepotItemController.java +++ b/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.vo.DepotItemStockWarningCount; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.depotItem.DepotItemService; import com.jsh.erp.service.material.MaterialService; @@ -827,4 +828,81 @@ public class DepotItemController { } return result; } -} + /** + * 库存预警报表 + * @param currentPage + * @param pageSize + * @return + */ + @GetMapping(value = "/findStockWarningCount") + public BaseResponseInfo findStockWarningCount(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, @RequestParam("projectId") Integer pid )throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List resList = new ArrayList(); + List list = depotItemService.findStockWarningCount((currentPage-1)*pageSize, pageSize,pid); + int total = depotItemService.findStockWarningCountTotal(pid); + map.put("total", total); + map.put("rows", list); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + /** + * 导出库存预警excel表格 + * @param currentPage + * @param pageSize + * @param projectId + * @param monthTime + * @param request + * @param response + * @return + */ + @GetMapping(value = "/exportWarningExcel") + public BaseResponseInfo exportWarningExcel(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("projectId") Integer projectId, + HttpServletRequest request, HttpServletResponse response)throws Exception { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + String message = "成功"; + try { + List dataList = depotItemService.findStockWarningCount((currentPage - 1) * pageSize, pageSize, projectId); + //存放数据json数组 + Integer pid = projectId; + String[] names = {"名称", "型号", "扩展信息", "单位", "入库数量", "出库数量", "库存数量", "安全库存量", "临界库存量"}; + String title = "库存预警报表"; + List objects = new ArrayList(); + if (null != dataList) { + for (DepotItemStockWarningCount diEx : dataList) { + String[] objs = new String[9]; + + objs[0] = diEx.getMaterialName().toString(); + objs[1] = diEx.getMaterialModel().toString(); + objs[2] = diEx.getMaterialOther().toString(); + objs[3] = diEx.getMaterialUnit().toString(); + objs[4] = diEx.getBasicInNumber().toString(); + objs[5] = diEx.getBasicOutNumber() == null ? "0" : diEx.getBasicOutNumber().toString(); + objs[6] = diEx.getBasicNumber() == null ? "0" : diEx.getBasicNumber().toString(); + objs[7] = diEx.getSafetystock() == null ? "0" : diEx.getSafetystock().toString(); + objs[8] = diEx.getBasicLinjieNumber() == null ? "0" : diEx.getBasicLinjieNumber().toString(); + objects.add(objs); + } + } + File file = ExcelUtils.exportObjectsWithoutTitle(title+pid, names, title, objects); + ExportExecUtil.showExec(file, file.getName(), response); + res.code = 200; + } catch (Exception e) { + e.printStackTrace(); + message = "导出失败"; + res.code = 500; + } + return res; + } + } diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java index 70e71dbe..34a30d14 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java @@ -1,6 +1,7 @@ package com.jsh.erp.datasource.mappers; import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.vo.DepotItemStockWarningCount; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; @@ -172,4 +173,10 @@ public interface DepotItemMapperEx { List getDepotItemListListByDepotIds(@Param("depotIds") String[] depotIds); List getDepotItemListListByMaterialIds(@Param("materialIds") String[] materialIds); + + + List findStockWarningCount(@Param("offset") Integer offset, + @Param("rows") Integer rows, @Param("pid") Integer pid); + + int findStockWarningCountTotal( @Param("pid") Integer pid); } diff --git a/src/main/java/com/jsh/erp/datasource/vo/DepotItemStockWarningCount.java b/src/main/java/com/jsh/erp/datasource/vo/DepotItemStockWarningCount.java new file mode 100644 index 00000000..db709e1b --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/DepotItemStockWarningCount.java @@ -0,0 +1,109 @@ +package com.jsh.erp.datasource.vo; + + +import java.math.BigDecimal; + +public class DepotItemStockWarningCount { + + + private String MaterialName; + + private String MaterialModel; + + private String categoryName; + + private String MaterialOther; + + private String MaterialUnit; + + private BigDecimal safetystock;//安全库存量 + + private BigDecimal BasicInNumber;//入库量 + + private BigDecimal BasicOutNumber;//出库量 + + + private BigDecimal BasicNumber;//库存 + + private BigDecimal BasicLinjieNumber;//临界库存 + + public String getMaterialName() { + return MaterialName; + } + + public void setMaterialName(String materialName) { + MaterialName = materialName; + } + + public String getMaterialModel() { + return MaterialModel; + } + + public void setMaterialModel(String materialModel) { + MaterialModel = materialModel; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public String getMaterialOther() { + return MaterialOther; + } + + public void setMaterialOther(String materialOther) { + MaterialOther = materialOther; + } + + public String getMaterialUnit() { + return MaterialUnit; + } + + public void setMaterialUnit(String materialUnit) { + MaterialUnit = materialUnit; + } + + public BigDecimal getSafetystock() { + return safetystock; + } + + public void setSafetystock(BigDecimal safetystock) { + this.safetystock = safetystock; + } + + public BigDecimal getBasicInNumber() { + return BasicInNumber; + } + + public void setBasicInNumber(BigDecimal basicInNumber) { + BasicInNumber = basicInNumber; + } + + public BigDecimal getBasicOutNumber() { + return BasicOutNumber; + } + + public void setBasicOutNumber(BigDecimal basicOutNumber) { + BasicOutNumber = basicOutNumber; + } + + public BigDecimal getBasicNumber() { + return BasicNumber; + } + + public void setBasicNumber(BigDecimal basicNumber) { + BasicNumber = basicNumber; + } + + public BigDecimal getBasicLinjieNumber() { + return BasicLinjieNumber; + } + + public void setBasicLinjieNumber(BigDecimal basicLinjieNumber) { + BasicLinjieNumber = basicLinjieNumber; + } +} diff --git a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index 33650f01..55b1ee5c 100644 --- a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -9,17 +9,16 @@ import com.jsh.erp.datasource.mappers.DepotHeadMapper; import com.jsh.erp.datasource.mappers.DepotItemMapper; import com.jsh.erp.datasource.mappers.DepotItemMapperEx; import com.jsh.erp.datasource.mappers.SerialNumberMapperEx; +import com.jsh.erp.datasource.vo.DepotItemStockWarningCount; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.log.LogService; import com.jsh.erp.service.material.MaterialService; import com.jsh.erp.service.serialNumber.SerialNumberService; import com.jsh.erp.service.user.UserService; -import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.QueryUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; @@ -32,8 +31,6 @@ import java.util.Date; import java.util.List; import java.util.Map; -import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; - @Service public class DepotItemService { private Logger logger = LoggerFactory.getLogger(DepotItemService.class); @@ -795,4 +792,32 @@ public class DepotItemService { } return result; } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public List findStockWarningCount(int offset, Integer rows, Integer pid) { + + List list = null; + try{ + list =depotItemMapperEx.findStockWarningCount( offset, rows, pid); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return list; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int findStockWarningCountTotal(Integer pid) { + int result = 0; + try{ + result =depotItemMapperEx.findStockWarningCountTotal(pid); + }catch(Exception e){ + logger.error("异常码[{}],异常提示[{}],异常[{}]", + ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); + throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, + ExceptionConstants.DATA_READ_FAIL_MSG); + } + return result; + } } diff --git a/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/src/main/resources/mapper_xml/DepotItemMapperEx.xml index 1679a69d..dea589b7 100644 --- a/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -41,6 +41,18 @@ + + + + + + + + + + + + + SELECT + m. NAME MaterialName, + m.Model MaterialModel, + mc.`Name` categoryName, + CONCAT( + '(', + m.Standard, + ')', + '(', + m.Color, + ')' + ) AS MaterialOther, + m.unit MaterialUnit, + ifnull(m.safetystock,0) safetystock, + IFNULL(intype.BasicInNumber ,0) BasicInNumber, + IFNULL(outtype.BasicOutNumber ,0) BasicOutNumber, + ( + IFNULL(intype.BasicInNumber ,0) - IFNULL(outtype.BasicOutNumber ,0) + ) BasicNumber, + (IFNULL(intype.BasicInNumber ,0) - IFNULL(outtype.BasicOutNumber ,0) - ifnull(m.safetystock,0)) BasicLinjieNumber + FROM + jsh_material m + LEFT JOIN jsh_materialcategory mc ON mc.Id = m.CategoryId + LEFT JOIN ( + SELECT + di.MaterialId, + ifnull(sum(BasicNumber), 0) AS BasicInNumber + FROM + jsh_depothead dh + INNER JOIN jsh_depotitem di ON dh.id = di.HeaderId + AND ifnull(di.delete_Flag, '0') != '1' + WHERE + dh.type = '入库' + + and di.DepotId= ${pid} + + AND ifnull(dh.delete_Flag, '0') != '1' + ) intype ON intype.MaterialId = m.id + LEFT JOIN ( + SELECT + di.MaterialId, + ifnull(sum(BasicNumber), 0) AS BasicOutNumber + FROM + jsh_depothead dh + INNER JOIN jsh_depotitem di ON dh.id = di.HeaderId + AND ifnull(di.delete_Flag, '0') != '1' + WHERE + dh.type = '出库' + AND dh.SubType != '调拨' + + and di.DepotId= ${pid} + + AND ifnull(dh.delete_Flag, '0') != '1' + ) outtype ON outtype.MaterialId = m.id + WHERE + 1 = 1 + AND ifnull(m.delete_Flag, '0') != '1' + AND intype.BasicInNumber > 0 + ORDER BY + (IFNULL(intype.BasicInNumber ,0) - IFNULL(outtype.BasicOutNumber ,0) - ifnull(m.safetystock,0)) + + limit #{offset},#{rows} + + - \ No newline at end of file + + +