|
@@ -1,6 +1,5 @@
|
|
|
package com.ruoyi.warehouseBusiness.service.impl;
|
|
|
|
|
|
-
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
@@ -110,6 +109,12 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
private TCorpsMapper tCorpsMapper;
|
|
|
|
|
|
@Autowired
|
|
|
+ private TCustomerContactMapper tCustomerContactMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysConfigMapper configMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private TVoyageMapper tVoyageMapper;
|
|
|
|
|
|
@Autowired
|
|
@@ -7653,5 +7658,99 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
return AjaxResult.success();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 出入库、库存统计
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult stockStatistics() {
|
|
|
+ String external = null;
|
|
|
+ String customerName;
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ if ("外部用户".equals(user.getDept().getDeptName())) {
|
|
|
+ external = user.getUserName();
|
|
|
+ customerName = String.valueOf(tCustomerContactMapper.getCustomerName(external).get("customerName"));
|
|
|
+ } else {
|
|
|
+ SysConfig config = new SysConfig();
|
|
|
+ config.setConfigKey("data_print_title");
|
|
|
+ customerName = configMapper.selectConfig(config).getConfigValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String> data = new HashMap<>();
|
|
|
+ // 客户名称
|
|
|
+ data.put("customerName", customerName);
|
|
|
+ // 全部库存
|
|
|
+ data.put("stockTotal", stockStatistics(null, null, external));
|
|
|
+
|
|
|
+ // 今天
|
|
|
+ data.put("inStockTotalToday", inAndOutStockStatistics("SJRK", DateUtils.today(), DateUtils.today(), external));
|
|
|
+ data.put("outStockTotalToday", inAndOutStockStatistics("SJCK", DateUtils.today(), DateUtils.today(), external));
|
|
|
+ // 昨天
|
|
|
+ data.put("inStockTotalYesterday", inAndOutStockStatistics("SJRK", DateUtils.yesterday(), DateUtils.yesterday(), external));
|
|
|
+ data.put("outStockTotalYesterday", inAndOutStockStatistics("SJCK", DateUtils.yesterday(), DateUtils.yesterday(), external));
|
|
|
+ // 本周
|
|
|
+ data.put("inStockTotalWeek", inAndOutStockStatistics("SJRK", DateUtils.beginOfWeek(), DateUtils.endOfWeek(), external));
|
|
|
+ data.put("outStockTotalWeek", inAndOutStockStatistics("SJCK", DateUtils.beginOfWeek(), DateUtils.endOfWeek(), external));
|
|
|
+ // 本月
|
|
|
+ data.put("inStockTotalMonth", inAndOutStockStatistics("SJRK", DateUtils.beginOfMonth(), DateUtils.endOfMonth(), external));
|
|
|
+ data.put("outStockTotalMonth", inAndOutStockStatistics("SJCK", DateUtils.beginOfMonth(), DateUtils.endOfMonth(), external));
|
|
|
+ // 上个月
|
|
|
+ data.put("inStockTotalLastMonth", inAndOutStockStatistics("SJRK", DateUtils.beginOfLastMonth(), DateUtils.endOfLastMonth(), external));
|
|
|
+ data.put("outStockTotalLastMonth", inAndOutStockStatistics("SJCK", DateUtils.beginOfLastMonth(), DateUtils.endOfLastMonth(), external));
|
|
|
+
|
|
|
+ // 库龄
|
|
|
+ data.put("stockDays", String.valueOf(tWhgenlegMapper.stockDays(external).get("days")));
|
|
|
+ return AjaxResult.success(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 周期库存统计
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult cycleStockStatistics() {
|
|
|
+ String external = null;
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ if ("外部用户".equals(user.getDept().getDeptName())) {
|
|
|
+ external = user.getUserName();
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String> data = new HashMap<>();
|
|
|
+ // 7天
|
|
|
+ data.put("stockTotalA", stockStatistics(DateUtils.offsetDate(-6), null, external));
|
|
|
+ // 15天
|
|
|
+ data.put("stockTotalB", stockStatistics(DateUtils.offsetDate(-14), DateUtils.offsetDate(-6), external));
|
|
|
+ // 30天
|
|
|
+ data.put("stockTotalC", stockStatistics(DateUtils.offsetDate(-29), DateUtils.offsetDate(-14), external));
|
|
|
+ // 60天
|
|
|
+ data.put("stockTotalD", stockStatistics(DateUtils.offsetDate(-59), DateUtils.offsetDate(-29), external));
|
|
|
+ // 90天
|
|
|
+ data.put("stockTotalE", stockStatistics(DateUtils.offsetDate(-89), DateUtils.offsetDate(-59), external));
|
|
|
+ // 180天
|
|
|
+ data.put("stockTotalF", stockStatistics(DateUtils.offsetDate(-179), DateUtils.offsetDate(-89), external));
|
|
|
+ // 180天+
|
|
|
+ data.put("stockTotalG", stockStatistics(null, DateUtils.offsetDate(-179), external));
|
|
|
+ return AjaxResult.success(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String inAndOutStockStatistics(String billType, String beginDate, String endDate, String external) {
|
|
|
+ beginDate += " 00:00:00";
|
|
|
+ endDate += " 23:59:59";
|
|
|
+ Map<String, Object> statistics = tWarehousebillsfeesMapper.inAndOutStockStatistics(billType, beginDate, endDate, external);
|
|
|
+ return String.valueOf(statistics.get("total"));
|
|
|
+ }
|
|
|
+
|
|
|
+ private String stockStatistics(String beginDate, String endDate, String external) {
|
|
|
+ if (StringUtils.isNotEmpty(beginDate)) {
|
|
|
+ beginDate += " 00:00:00";
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(endDate)) {
|
|
|
+ endDate += " 00:00:00";
|
|
|
+ }
|
|
|
+ Map<String, Object> statistics = tWhgenlegMapper.stockStatistics(beginDate, endDate, external);
|
|
|
+ return String.valueOf(statistics.get("total"));
|
|
|
+ }
|
|
|
|
|
|
}
|