Browse Source

白坯出库

wukai 3 months ago
parent
commit
9c404c3490

+ 2 - 0
jjt-biz/src/main/java/com/jjt/order/domain/MesStock.java

@@ -24,6 +24,8 @@ public class MesStock {
     private String clas;
     @ApiModelProperty("单据类型")
     private String type;
+    @ApiModelProperty("出库目标")
+    private String target;
     @ApiModelProperty("出/入库数量")
     private Long total;
     @ApiModelProperty("入库/出库 true:入库 false:出库")

+ 47 - 1
jjt-biz/src/main/java/com/jjt/utils/MssqlUtil.java

@@ -104,7 +104,7 @@ public class MssqlUtil {
      */
     public static List<MesStock> mesStock(LocalDate localDate) {
         List<MesStock> list = new ArrayList<>();
-        LocalDate start = localDate.minusMonths(11).withDayOfMonth(1);
+        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 + "'";
         String inView = "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_SHANGJIA WHERE DATEADD(HOUR,- 7,时间)>='" + start + "'";
         String[] sqls = new String[2];
@@ -150,6 +150,52 @@ public class MssqlUtil {
     }
 
     /**
+     * 查询投放到产线的投放量
+     *
+     * @param localDate 当前时间
+     * @return 结果
+     */
+    public static 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()) {
+                //第二步:根据连接协议、用户名、密码连接数据库
+                //第三步:进行数据库的数据操作
+                //取得Statement对象
+                //当日出库
+                try (ResultSet rs = statement.executeQuery(sql)) {
+                    while (rs.next()) {
+                        String code = rs.getString("CODE");
+                        String name = rs.getString("NAME");
+                        String clas = rs.getString("CLASS");
+                        String type = rs.getString("TYPE");
+                        String date = rs.getString("TIME");
+                        String target = rs.getString("TARGET");
+                        Long total = rs.getLong("TOTAL");
+
+                        MesStock mesStock = new MesStock();
+                        mesStock.setCode(code);
+                        mesStock.setName(name);
+                        mesStock.setClas(clas);
+                        mesStock.setType(type);
+                        mesStock.setTarget(target);
+                        mesStock.setDate(LocalDate.parse(date));
+                        mesStock.setTotal(total);
+                        list.add(mesStock);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+
+    /**
      * 查询当前库存
      *
      * @return

+ 16 - 1
jjt-biz/src/main/java/com/jjt/vms/service/impl/WmsServiceImpl.java

@@ -9,6 +9,7 @@ import com.jjt.vms.service.IWmsService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -34,6 +35,7 @@ public class WmsServiceImpl implements IWmsService {
         //减少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();
         HashMap<String, Object> initMap = new HashMap<>(16);
         initMap.put("d-in", 0L);
@@ -45,17 +47,29 @@ public class WmsServiceImpl implements IWmsService {
         mapping.put("WH03", "pt");
         mapping.put("WH04", "bpb");
         mapping.put("WH08", "cp");
+        Map<String, Double> lineMap = new HashMap<>(16);
         Map<String, Object> result = new HashMap<>(16);
         result.put("ycl", initMap.clone());
         result.put("cp", initMap.clone());
         result.put("bpb", initMap.clone());
         result.put("pt", initMap.clone());
+        result.put("out-rz-line", lineMap);
 
         for (String key : currStock.keySet()) {
             HashMap<String, Object> map = (HashMap<String, Object>) result.get(key);
-            map.put("curr", currStock.get(key));
+            map.put("curr", BigDecimal.valueOf(currStock.get(key)).longValue());
         }
 
+        //按目标产线分组
+        Map<String, List<MesStock>> bpTargetMap = wmsOutTargetList.stream().collect(Collectors.groupingBy(MesStock::getTarget));
+        bpTargetMap.forEach((target, targetList) -> {
+            //统计出库总量
+            double sum = targetList.stream().mapToDouble(MesStock::getTotal).sum();
+            //“染整白坯7#上料点”,解析产线
+            String line = target.replace("染整白坯", "").replace("#上料点", "");
+            lineMap.put(line, sum);
+        });
+
         //先按仓库分组
         Map<String, List<MesStock>> codeMap = list.stream().collect(Collectors.groupingBy(MesStock::getCode));
 
@@ -85,6 +99,7 @@ public class WmsServiceImpl implements IWmsService {
                     calc.setOutNum(outNum);
                     calcList.add(calc);
                     if (localDate.isEqual(date)) {
+                        //如果是当天数据
                         dIn.addAndGet(inNum);
                         dOut.addAndGet(outNum);
                         map.put("in", inList);