Parcourir la source

白胚布靶向智能生产预测相关接口

wukai il y a 2 mois
Parent
commit
a22618ddc0

+ 5 - 0
jjt-admin/src/main/resources/application-dev.yml

@@ -1,5 +1,10 @@
 local:
   rzCompare: D:\SYSTEM\Desktop\temp\rzCompare.json
+mssql:
+  driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  url: jdbc:sqlserver://192.168.66.133:31433;databaseName=WMS_V2_1
+  user: MES
+  pass: MES
 # 数据源配置
 spring:
   # redis 配置

+ 5 - 0
jjt-admin/src/main/resources/application-devt.yml

@@ -1,5 +1,10 @@
 local:
   rzCompare: D:\SYSTEM\Desktop\temp\rzCompare.json
+mssql:
+  driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  url: jdbc:sqlserver://192.168.66.133:31433;databaseName=WMS_V2_1
+  user: MES
+  pass: MES
 # 数据源配置
 spring:
   # redis 配置

+ 5 - 0
jjt-admin/src/main/resources/application-prod.yml

@@ -1,5 +1,10 @@
 local:
   rzCompare: D:\twin\service\rzCompare.json
+mssql:
+  driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  url: jdbc:sqlserver://192.168.33.153:1433;databaseName=WMS_V2_1
+  user: MES
+  pass: MES
 # 数据源配置
 spring:
   # redis 配置

+ 5 - 0
jjt-admin/src/main/resources/application-test.yml

@@ -1,5 +1,10 @@
 local:
   rzCompare: /opt/twin2025/rzCompare.json
+mssql:
+  driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  url: jdbc:sqlserver://192.168.33.153:1433;databaseName=WMS_V2_1
+  user: MES
+  pass: MES
 # 数据源配置
 spring:
   # redis 配置

+ 96 - 97
jjt-biz/src/main/java/com/jjt/order/controller/OrderApiController.java

@@ -9,11 +9,13 @@ import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.redis.RedisCache;
 import com.jjt.common.utils.DateUtils;
 import com.jjt.order.domain.TwinOrder;
+import com.jjt.order.domain.TwinOrderDetail;
 import com.jjt.order.domain.VmsStock;
 import com.jjt.order.service.ITwinOrderService;
 import com.jjt.order.utils.OrderExportUtil;
 import com.jjt.order.utils.OrderGsmExportUtil;
-import com.jjt.utils.MssqlUtil;
+import com.jjt.order.vo.BomVO;
+import com.jjt.utils.MssqlService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -23,9 +25,11 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
@@ -34,7 +38,7 @@ import java.util.zip.ZipOutputStream;
 /**
  * @author ruoyi
  */
-@Api("数据接口")
+@Api("订单数据接口")
 @RestController
 @Slf4j
 @RequestMapping()
@@ -47,6 +51,8 @@ public class OrderApiController extends BaseController {
     private ITwinFormulaInfoService formulaInfoService;
     @Resource
     private ITwinCalcDayService dayService;
+    @Resource
+    private MssqlService mssqlService;
 
     @ApiOperation("查看当前库存")
     @GetMapping("/api/stock")
@@ -59,7 +65,7 @@ public class OrderApiController extends BaseController {
     @ApiOperation("导出白坯预测")
     @RequestMapping("/api/export/order")
     @CrossOrigin(origins = "*")
-    public void orderExport(String start, String end, HttpServletResponse response) {
+    public void orderExport(@RequestParam String start, @RequestParam String end, @RequestParam Integer days, HttpServletResponse response) {
         //查询订单
         List<TwinOrder> orderList = orderService.selectTwinOrderListByDate(start, end);
         //按订单ID分组
@@ -73,7 +79,7 @@ public class OrderApiController extends BaseController {
         List<TwinCalcDay> dayList = dayService.selectTwinCalcDayListByTime(sd, sd);
         //按设备ID分组
         Map<Long, TwinCalcDay> dayMap = dayList.stream().collect(Collectors.toMap(TwinCalcDay::getDeviceId, o -> o));
-        List<VmsStock> stocks = MssqlUtil.vmsStock();
+        List<VmsStock> stocks = mssqlService.vmsStock();
         try (OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipOutputStream zipOut = new ZipOutputStream(bos);) {
             // 创建临时输出流
             response.reset();
@@ -83,8 +89,8 @@ public class OrderApiController extends BaseController {
 
             try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/order.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream);) {
                 OrderExportUtil oe = new OrderExportUtil();
-                String title = "白坯布靶向生产测算-10天(" + start + " 至 " + end + ")\n按重量匹配";
-                oe.process(wb, title, orderList, infos, orderMap, dayMap, stocks);
+                String title = "白坯布靶向生产测算-"+days+"天(" + start + " 至 " + end + ")\n按重量匹配";
+                oe.process(wb, title, orderList, infos, orderMap, dayMap, stocks,days);
                 // 将第一个工作簿写入 ZIP
                 ZipEntry entry = new ZipEntry("按重量匹配.xlsx");
                 zipOut.putNextEntry(entry);
@@ -97,8 +103,8 @@ public class OrderApiController extends BaseController {
 
             try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/order-gsm.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream);) {
                 OrderGsmExportUtil oe = new OrderGsmExportUtil();
-                String title = "白坯布靶向生产测算-10天(" + start + " 至 " + end + ")\n按平方米克重匹配";
-                oe.process(wb, title, orderList, infos, orderMap, dayMap, stocks);
+                String title = "白坯布靶向生产测算-"+days+"天(" + start + " 至 " + end + ")\n按平方米克重匹配";
+                oe.process(wb, title, orderList, infos, orderMap, dayMap, stocks,days);
                 // 将第二个工作簿写入 ZIP
                 ZipEntry entry = new ZipEntry("按平方米克重匹配.xlsx");
                 zipOut.putNextEntry(entry);
@@ -117,101 +123,94 @@ public class OrderApiController extends BaseController {
         }
     }
 
-
-    /**
-     * 先按重量匹配,再匹配长或者宽大于规格的长宽
-     *
-     * @param spec   规格
-     * @param stocks 库存
-     * @return 结果
-     */
-    private VmsStock matchStock(String spec, List<VmsStock> stocks) {
-        //按重量分组
-        Map<Integer, List<VmsStock>> stockMap = stocks.stream().collect(Collectors.groupingBy(VmsStock::getWeight, LinkedHashMap::new, Collectors.toList()));
-        if (spec != null) {
-            String[] tmp = spec.split("\\*");
-            if (tmp.length == 3) {
-                //长
-                float length = Float.parseFloat(tmp[0]);
-                //宽
-                float width = Float.parseFloat(tmp[1]);
-                //重量,单位kg,需要转换成克
-                int weight = (int) (Float.parseFloat(tmp[2]) * 1000);
-                List<VmsStock> tempList = stockMap.get(weight);
-                if (tempList != null) {
-                    for (VmsStock stock : tempList) {
-                        if (length > stock.getLength() || width > stock.getLength()) {
-                            return stock;
-                        }
-                    }
-                }
-            }
-        }
-
-        return null;
+    @ApiOperation("查询最近一个月有订单的时间")
+    @GetMapping("/api/order/date")
+    @CrossOrigin(origins = "*")
+    @ResponseBody
+    public List<LocalDate> orderDate() {
+        LocalDate end = LocalDate.now();
+        LocalDate start = end.minusMonths(1);
+        List<TwinOrder> orderList = orderService.selectTwinOrderListByDate(start.toString(), end.toString());
+        List<LocalDate> result = orderList.stream()
+                .map(order -> order.getOrderDate().toInstant()
+                        .atZone(ZoneId.systemDefault())
+                        .toLocalDate())
+                .distinct()
+                .collect(Collectors.toList());
+        return result;
     }
 
-    /**
-     * 匹配库存,新匹配方式,以幅宽和平方米克重来匹配
-     * 订单中计算得到毛毯平方米克重要求,根据长宽规格,先以产品长度匹配白胚库中的幅宽规格。
-     * 如没有或不足,以宽匹配,但此时要做标注,以准备网框的工艺切换。
-     * 白胚库的规格,只以平方米克重和幅宽为规格单位。
-     *
-     * @param spec   规格
-     * @param stocks 库存
-     * @return 结果
-     */
-    private VmsStock matchStockGsm(String spec, List<VmsStock> stocks) {
-        //按重量分组
-//        Map<Integer, List<VmsStock>> stockMap = stocks.stream().collect(Collectors.groupingBy(VmsStock::getWeight, LinkedHashMap::new, Collectors.toList()));
-//        if (spec != null) {
-//            String[] tmp = spec.split("\\*");
-//            if (tmp.length == 3) {
-//                float length = Float.parseFloat(tmp[0]);
-//                float width = Float.parseFloat(tmp[1]);
-//                int weight = (int) (Float.parseFloat(tmp[2]) * 1000);
-//                List<VmsStock> tempList = stockMap.get(weight);
-//                if (tempList != null) {
-//                    for (VmsStock stock : tempList) {
-//                        if (length > stock.getLength() || width > stock.getLength()) {
-//                            return stock;
-//                        }
-//                    }
-//                }
-//            }
-//        }
-
-        return null;
-    }
+    @ApiOperation("按照时间查询订单")
+    @GetMapping("/api/order/query")
+    @CrossOrigin(origins = "*")
+    @ResponseBody
+    public List<TwinOrder> query(@RequestParam String start, @RequestParam String end, @RequestParam Integer days) {
+        List<TwinOrder> orderList = orderService.selectTwinOrderListByDate(start, end);
 
-    /**
-     * 匹配产线
-     *
-     * @param spec 规格
-     * @param list 产线
-     * @return 结果
-     */
-    private List<TwinFormulaInfo> matchFormula(String spec, List<TwinFormulaInfo> list) {
-        List<TwinFormulaInfo> result = new ArrayList<>();
-        //按重量分组
-        Map<Float, List<TwinFormulaInfo>> formulaMap = list.stream().collect(Collectors.groupingBy(TwinFormulaInfo::getFd18, LinkedHashMap::new, Collectors.toList()));
-        if (spec != null) {
-            String[] tmp = spec.split("\\*");
-            if (tmp.length == 3) {
-                Float length = Float.parseFloat(tmp[0]);
-                Float width = Float.parseFloat(tmp[1]);
-                Float weight = Float.parseFloat(tmp[2]);
-                List<TwinFormulaInfo> infos = formulaMap.get(weight);
-                if (infos != null) {
-                    for (TwinFormulaInfo info : infos) {
-                        if (length.equals(info.getFd16()) && width.equals(info.getFd17()) ||
-                                length.equals(info.getFd17()) && width.equals(info.getFd16())) {
-                            result.add(info);
-                        }
+        //白柸布库存
+        List<VmsStock> stocks = mssqlService.vmsStock();
+        //当前产量处理
+        List<TwinFormulaInfo> infos = formulaInfoService.selectTwinFormulaInfoList(new TwinFormulaInfo());
+        LocalDateTime ldt = LocalDateTime.now();
+        Date sd = DateUtils.toDate(LocalDateTime.now().minusHours(7).toLocalDate().minusDays(1));
+        List<TwinCalcDay> dayList = dayService.selectTwinCalcDayListByTime(sd, sd);
+        //按设备ID分组
+        Map<Long, TwinCalcDay> dayMap = dayList.stream().collect(Collectors.toMap(TwinCalcDay::getDeviceId, o -> o));
+
+        for (TwinOrder twinOrder : orderList) {
+            List<BomVO> bomVOList = new ArrayList<>();
+            //过滤掉规格为空的,并按规格分组
+            Map<String, List<TwinOrderDetail>> allMap = twinOrder.getTwinOrderDetailList().stream().filter(tod -> tod.getBomSpec() != null).collect(Collectors.groupingBy(TwinOrderDetail::getBomSpec, LinkedHashMap::new, Collectors.toList()));
+            OrderExportUtil oe = new OrderExportUtil();
+            for (String spec : allMap.keySet()) {
+                List<TwinOrderDetail> todList = allMap.get(spec);
+                //匹配白坯布库存
+                Float kc = 0f;
+                VmsStock stock = oe.matchStock(spec, stocks);
+                if (stock != null) {
+                    kc = stock.getQty();
+                }
+                //匹配生产设备
+                List<TwinFormulaInfo> matchFormula = oe.matchFormula(spec, infos);
+                BigDecimal cl = BigDecimal.ZERO;
+                for (TwinFormulaInfo match : matchFormula) {
+                    TwinCalcDay day = dayMap.get(match.getDeviceId());
+                    if (day != null) {
+                        cl = cl.add(day.getWeight());
                     }
                 }
+
+                cl = cl.multiply(BigDecimal.valueOf(1000));
+                double totalWeight = todList.stream().mapToDouble(o -> o.getWeight().doubleValue()).sum();
+                TwinOrderDetail tod = todList.get(0);
+
+                BomVO bom = new BomVO();
+                bom.setLast(cl.doubleValue());
+                bom.setBomCode(tod.getBomCode());
+                bom.setBomName(tod.getBomName());
+                bom.setBomSpec(spec);
+                bom.setXql(totalWeight);
+                bom.setKcl(kc);
+                double ycl = cl.multiply(BigDecimal.valueOf(days)).doubleValue();
+                double cz = totalWeight - kc - ycl;
+                bom.setYcl(ycl);
+                bom.setCz(cz);
+                bomVOList.add(bom);
             }
+            twinOrder.setBomList(bomVOList);
+            twinOrder.setTwinOrderDetailList(null);
         }
-        return result;
+        return orderList;
     }
+
+//    @ApiOperation("按订单号查询预测信息")
+//    @GetMapping("/api/order/detail")
+//    @CrossOrigin(origins = "*")
+//    @ResponseBody
+//    public List<TwinOrder> detail(@RequestParam List<String> code) {
+////        List<TwinOrder> orderList = orderService.selectTwinOrderListByDate(date, date);
+//        return null;
+//    }
+
+
 }

+ 6 - 0
jjt-biz/src/main/java/com/jjt/order/domain/TwinOrder.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jjt.common.annotation.Excel;
 import com.jjt.common.core.domain.BaseEntity;
+import com.jjt.order.vo.BomVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -62,4 +63,9 @@ public class TwinOrder extends BaseEntity {
      */
     private List<TwinOrderDetail> twinOrderDetailList;
 
+    /**
+     * 物料信息
+     */
+    private List<BomVO> bomList;
+
 }

+ 4 - 4
jjt-biz/src/main/java/com/jjt/order/utils/OrderExportUtil.java

@@ -41,7 +41,7 @@ public class OrderExportUtil {
         p2.setVerticalAlignment(VerticalAlignment.CENTER);
     }
 
-    public void process(XSSFWorkbook wb, String sheetTitle, List<TwinOrder> orderList, List<TwinFormulaInfo> infos, Map<Long, TwinOrder> orderMap, Map<Long, TwinCalcDay> dayMap, List<VmsStock> stocks) {
+    public void process(XSSFWorkbook wb, String sheetTitle, List<TwinOrder> orderList, List<TwinFormulaInfo> infos, Map<Long, TwinOrder> orderMap, Map<Long, TwinCalcDay> dayMap, List<VmsStock> stocks, Integer days) {
         init(wb);
         List<TwinOrderDetail> all = new ArrayList<>();
         orderList.forEach(to -> all.addAll(to.getTwinOrderDetailList().stream().filter(tod -> tod.getBomSpec() != null).collect(Collectors.toList())));
@@ -89,7 +89,7 @@ public class OrderExportUtil {
             bom.setXql(totalWeight);
             bom.setKcl(kc);
             bom.setOrders(orders);
-            double ycl = cl.multiply(BigDecimal.TEN).doubleValue();
+            double ycl = cl.multiply(BigDecimal.valueOf(days)).doubleValue();
             double cz = totalWeight - kc - ycl;
             bom.setYcl(ycl);
             bom.setCz(cz);
@@ -495,7 +495,7 @@ public class OrderExportUtil {
      * @param stocks 库存
      * @return 结果
      */
-    private VmsStock matchStock(String spec, List<VmsStock> stocks) {
+    public VmsStock matchStock(String spec, List<VmsStock> stocks) {
         //按重量分组
         Map<Integer, List<VmsStock>> stockMap = stocks.stream().collect(Collectors.groupingBy(VmsStock::getWeight, LinkedHashMap::new, Collectors.toList()));
         if (spec != null) {
@@ -529,7 +529,7 @@ public class OrderExportUtil {
      * @param list 产线
      * @return 结果
      */
-    private List<TwinFormulaInfo> matchFormula(String spec, List<TwinFormulaInfo> list) {
+    public List<TwinFormulaInfo> matchFormula(String spec, List<TwinFormulaInfo> list) {
         List<TwinFormulaInfo> result = new ArrayList<>();
         //按重量分组
         Map<Float, List<TwinFormulaInfo>> formulaMap = list.stream().collect(Collectors.groupingBy(TwinFormulaInfo::getFd18, LinkedHashMap::new, Collectors.toList()));

+ 2 - 2
jjt-biz/src/main/java/com/jjt/order/utils/OrderGsmExportUtil.java

@@ -39,7 +39,7 @@ public class OrderGsmExportUtil {
         p2.setVerticalAlignment(VerticalAlignment.CENTER);
     }
 
-    public void process(XSSFWorkbook wb, String sheetTitle, List<TwinOrder> orderList, List<TwinFormulaInfo> infos, Map<Long, TwinOrder> orderMap, Map<Long, TwinCalcDay> dayMap, List<VmsStock> stocks) {
+    public void process(XSSFWorkbook wb, String sheetTitle, List<TwinOrder> orderList, List<TwinFormulaInfo> infos, Map<Long, TwinOrder> orderMap, Map<Long, TwinCalcDay> dayMap, List<VmsStock> stocks, Integer days) {
         init(wb);
         infos.forEach(info -> info.setGsm());
         infos.sort(Comparator.comparing(TwinFormulaInfo::getDeviceId));
@@ -90,7 +90,7 @@ public class OrderGsmExportUtil {
             bom.setXql(totalWeight);
             bom.setKcl(kc);
             bom.setOrders(orders);
-            double ycl = cl.multiply(BigDecimal.TEN).doubleValue();
+            double ycl = cl.multiply(BigDecimal.valueOf(days)).doubleValue();
             double cz = totalWeight - kc - ycl;
             bom.setYcl(ycl);
             bom.setCz(cz);

+ 0 - 9
jjt-biz/src/main/java/com/jjt/task/OrderTask.java

@@ -1,20 +1,11 @@
 package com.jjt.task;
 
-import com.jjt.common.constant.CacheConstants;
-import com.jjt.common.core.redis.RedisCache;
-import com.jjt.order.domain.MesStock;
-import com.jjt.order.domain.MesStockCalc;
 import com.jjt.order.service.ITwinOrderService;
-import com.jjt.utils.MssqlUtil;
 import com.jjt.vms.service.IWmsService;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.stream.Collectors;
 
 /**
  * 订单/库存定时任务

+ 26 - 18
jjt-biz/src/main/java/com/jjt/utils/MssqlUtil.java → jjt-biz/src/main/java/com/jjt/utils/MssqlService.java

@@ -3,6 +3,9 @@ package com.jjt.utils;
 import com.jjt.common.utils.StringUtils;
 import com.jjt.order.domain.MesStock;
 import com.jjt.order.domain.VmsStock;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -19,37 +22,42 @@ import java.util.regex.Pattern;
 /**
  * @author wukai
  */
-public class MssqlUtil {
+@Service
+public class MssqlService {
     /**
      * SQLServer本地驱动的地址
      */
-    private static final String DB_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
+    @Value("${mssql.driver}")
+    private String dbDriver;
     /**
      * 连接sqlserver数据库;本地连接;通过1433号端口号连接(根据你自身数据库的端口号来),数据库名称DBMS
      * 你需要现在Sql Server客户端上建立一个数据库
      */
-    private static final String DB_URL = "jdbc:sqlserver://192.168.33.153:1433;databaseName=WMS_V2_1";
+    @Value("${mssql.url}")
+    private  String dbUrl;
     /**
      * 用户名
      */
-    private static final String USER = "MES";
+    @Value("${mssql.user}")
+    private   String user = "MES";
     /**
      * 密码
      */
-    private static final String PASSWORD = "MES";
+    @Value("${mssql.pass}")
+    private  String pass = "MES";
 
     /**
      * 白柸布库存
      *
      * @return 结果
      */
-    public static List<VmsStock> vmsStock() {
+    public  List<VmsStock> vmsStock() {
         List<VmsStock> stocks = new ArrayList<>();
         try {
             //第一步:加载数据库驱动程序,此时不需要实例化,因为会由容器自己负责
-            Class.forName(DB_DRIVER);
+            Class.forName(dbDriver);
             String sql = "select SKU,SKU_DESCRC,COUNT(1) NUM,SUM(QTY) QTY from V_WMS_STOCK where lot24 is not NULL and WAREHOUSE_ID='WH04-白坯仓库' and UOM='KG' group by sku,SKU_DESCRC order by sku";
-            try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD); Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery(sql)) {
+            try (Connection conn = DriverManager.getConnection(dbUrl, user, pass); Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery(sql)) {
                 //第二步:根据连接协议、用户名、密码连接数据库
                 //第三步:进行数据库的数据操作
                 //取得Statement对象
@@ -72,7 +80,7 @@ public class MssqlUtil {
 //                    String pattern1 = "\\d+(\\.\\d+)?\\*\\d+(\\.\\d+)?";
 //                    String pattern2 = "L(\\d+)";
                     // 定义正则表达式模式
-                    String patternString = "([A-Za-z]+-[A-Z])(\\d+)\\(([0-9.]+\\*[0-9.]+)\\)";
+                    String patternString = "([A-Za-z]+-[A-Za-z])(\\d+)\\(([0-9.]+\\*[0-9.]+)\\)";
                     Pattern pattern = Pattern.compile(patternString);
                     String weight = "";
                     String specification = "";
@@ -106,7 +114,7 @@ public class MssqlUtil {
      * @param localDate 当前时间
      * @return 结果
      */
-    public static List<MesStock> mesStock(LocalDate localDate) {
+    public  List<MesStock> mesStock(LocalDate localDate) {
         List<MesStock> list = new ArrayList<>();
         LocalDate start = localDate.minusMonths(1);
         String outView = "SELECT [仓库编码] AS CODE,[仓库名称] AS NAME,[物料类型] AS CLASS,CAST(DATEADD( HOUR,- 7,时间 ) AS DATE) AS TIME,[当日出库量] AS TOTAL,TRY_CAST(单托_支数_米数 AS DECIMAL) AS NUM,[单重_KG] WEIGHT,[单据类型] TYPE FROM V_MES_FAYUN WHERE DATEADD(HOUR,- 7,时间)>='" + start + "'";
@@ -118,8 +126,8 @@ public class MssqlUtil {
         sqls[1] = "SELECT CODE,NAME,CLASS,TYPE,TIME,SUM(TOTAL) AS TOTAL FROM (" + outView + ") T GROUP BY CODE,NAME,CLASS,TYPE,TIME";
         try {
             //第一步:加载数据库驱动程序,此时不需要实例化,因为会由容器自己负责
-            Class.forName(DB_DRIVER);
-            try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD); Statement statement = conn.createStatement()) {
+            Class.forName(dbDriver);
+            try (Connection conn = DriverManager.getConnection(dbUrl, user, pass); Statement statement = conn.createStatement()) {
                 //第二步:根据连接协议、用户名、密码连接数据库
                 //第三步:进行数据库的数据操作
                 //取得Statement对象
@@ -159,14 +167,14 @@ public class MssqlUtil {
      * @param localDate 当前时间
      * @return 结果
      */
-    public static List<MesStock> wmsOutTarget(LocalDate localDate) {
+    public  List<MesStock> wmsOutTarget(LocalDate localDate) {
         List<MesStock> list = new ArrayList<>();
         String sql = "SELECT [仓库编码] AS CODE,[仓库名称] AS NAME,[物料类型] AS CLASS,CAST(DATEADD(HOUR,- 7,时间 ) AS DATE) AS TIME,[当日出库量] AS TOTAL,TRY_CAST(单托_支数_米数 AS DECIMAL) AS NUM,[单重_KG] WEIGHT,[单据类型] TYPE,[产线_目标库位名称] TARGET FROM V_MES_FAYUN" +
                 " where [仓库编码]='WH04' and convert(date,DATEADD(HOUR,- 7,时间 ))=convert(date,'" + localDate + "') and [产线_目标库位名称] like '%上料点'";
         try {
             //第一步:加载数据库驱动程序,此时不需要实例化,因为会由容器自己负责
-            Class.forName(DB_DRIVER);
-            try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD); Statement statement = conn.createStatement()) {
+            Class.forName(dbDriver);
+            try (Connection conn = DriverManager.getConnection(dbUrl, user, pass); Statement statement = conn.createStatement()) {
                 //第二步:根据连接协议、用户名、密码连接数据库
                 //第三步:进行数据库的数据操作
                 //取得Statement对象
@@ -204,7 +212,7 @@ public class MssqlUtil {
      *
      * @return
      */
-    public static Map<String, Double> currStock() {
+    public  Map<String, Double> currStock() {
         Map<String, Double> result = new HashMap<>();
         Map<String, String> mapping = new HashMap<>();
         mapping.put("WH01-原料仓库", "ycl");
@@ -213,8 +221,8 @@ public class MssqlUtil {
         mapping.put("WH08-成辅仓库", "cp");
         try {
             //第一步:加载数据库驱动程序,此时不需要实例化,因为会由容器自己负责
-            Class.forName(DB_DRIVER);
-            try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD); Statement statement = conn.createStatement()) {
+            Class.forName(dbDriver);
+            try (Connection conn = DriverManager.getConnection(dbUrl, user, pass); Statement statement = conn.createStatement()) {
                 //第二步:根据连接协议、用户名、密码连接数据库
                 //第三步:进行数据库的数据操作
                 //取得Statement对象

+ 6 - 4
jjt-biz/src/main/java/com/jjt/vms/service/impl/WmsServiceImpl.java

@@ -4,7 +4,7 @@ import com.jjt.common.constant.CacheConstants;
 import com.jjt.common.core.redis.RedisCache;
 import com.jjt.order.domain.MesStock;
 import com.jjt.order.domain.MesStockCalc;
-import com.jjt.utils.MssqlUtil;
+import com.jjt.utils.MssqlService;
 import com.jjt.vms.service.IWmsService;
 import org.springframework.stereotype.Service;
 
@@ -26,6 +26,8 @@ import java.util.stream.Collectors;
 public class WmsServiceImpl implements IWmsService {
     @Resource
     private RedisCache redisCache;
+    @Resource
+    private MssqlService mssqlService;
 
     /**
      * 获取当前库存
@@ -34,9 +36,9 @@ public class WmsServiceImpl implements IWmsService {
     public void currStock() {
         //减少7个小时,班组统计时间
         LocalDate localDate = LocalDateTime.now().minusHours(7).toLocalDate();
-        List<MesStock> list = MssqlUtil.mesStock(localDate);
-        List<MesStock> wmsOutTargetList = MssqlUtil.wmsOutTarget(localDate);
-        Map<String, Double> currStock = MssqlUtil.currStock();
+        List<MesStock> list = mssqlService.mesStock(localDate);
+        List<MesStock> wmsOutTargetList = mssqlService.wmsOutTarget(localDate);
+        Map<String, Double> currStock = mssqlService.currStock();
         HashMap<String, Object> initMap = new HashMap<>(16);
         initMap.put("d-in", 0L);
         initMap.put("d-out", 0L);