Parcourir la source

杰生 转仓

home il y a 2 ans
Parent
commit
bbfc381286

+ 39 - 7
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackPlanDetails.java

@@ -1,18 +1,16 @@
 package com.fjhx.entity.stock;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.fjhx.base.BaseEntity;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author ${author}
@@ -94,5 +92,39 @@ public class StockBackPlanDetails implements Serializable {
      */
     private BigDecimal backArea;
 
+    /**
+     * 转入金额
+     */
+    private BigDecimal transferInMoney;
+    /**
+     * 转入数量
+     */
+    private Integer transferInNum;
+    /**
+     * 转入米数
+     */
+    private BigDecimal transferInMeters;
+    /**
+     * 转入面积
+     */
+    private BigDecimal transferInArea;
+
+    /**
+     * 转出金额
+     */
+    private BigDecimal transferOutMoney;
+    /**
+     * 转出数量
+     */
+    private Integer transferOutNum;
+    /**
+     * 转出米数
+     */
+    private BigDecimal transferOutMeters;
+    /**
+     * 转出面积
+     */
+    private BigDecimal transferOutArea;
+
 
 }

+ 7 - 2
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockTransfer.java

@@ -1,7 +1,6 @@
 package com.fjhx.entity.stock;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fjhx.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -74,5 +73,11 @@ public class StockTransfer implements Serializable {
      */
     private Integer status;
 
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
 
 }

+ 46 - 1
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/StatisticsResult.java

@@ -58,6 +58,40 @@ public class StatisticsResult {
      */
     private BigDecimal backArea;
 
+//    /**
+//     * 转入金额
+//     */
+//    private BigDecimal transferInMoney;
+//    /**
+//     * 转入数量
+//     */
+//    private Integer transferInNum;
+//    /**
+//     * 转入米数
+//     */
+//    private BigDecimal transferInMeters;
+    /**
+     * 转入面积
+     */
+    private BigDecimal transferInArea;
+
+//    /**
+//     * 转出金额
+//     */
+//    private BigDecimal transferOutMoney;
+//    /**
+//     * 转出数量
+//     */
+//    private Integer transferOutNum;
+//    /**
+//     * 转出米数
+//     */
+//    private BigDecimal transferOutMeters;
+    /**
+     * 转出面积
+     */
+    private BigDecimal transferOutArea;
+
     /**
      * 用户id
      */
@@ -92,7 +126,11 @@ public class StatisticsResult {
      * 实际使用
      */
     public BigDecimal getActualUse() {
-        return pickingArea.subtract(backArea).subtract(correctArea);
+        return getPickingArea()
+                .subtract(getBackArea())
+                .subtract(getCorrectArea())
+                .subtract(getTransferOutArea())
+                .add(getTransferInArea());
     }
 
     /**
@@ -142,4 +180,11 @@ public class StatisticsResult {
         return BigDecimalUtil.keepDecimals(backArea);
     }
 
+    public BigDecimal getTransferInArea() {
+        return BigDecimalUtil.keepDecimals(transferInArea);
+    }
+
+    public BigDecimal getTransferOutArea() {
+        return BigDecimalUtil.keepDecimals(transferOutArea);
+    }
 }

+ 7 - 6
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackMapper.xml

@@ -180,10 +180,11 @@
         sum(sbpd.back_money) backMoney,
         sum(sbpd.back_num) backNum,
         sum(sbpd.back_meters) backMeters,
-        sum(sbpd.back_area) backArea
+        sum(sbpd.back_area) backArea,
+        sum(sbpd.transfer_in_area) transferInArea,
+        sum(sbpd.transfer_out_area) transferOutArea
         from stock_back_plan_details sbpd
         left join u_user uu on uu.JobNo = sbpd.job_no
-
         where
         sbpd.plan_time between #{beginTime} and #{endTime}
         and
@@ -240,10 +241,10 @@
     </select>
 
     <select id="getBackStatistics" resultType="java.util.Map">
-        select count(0)                                            count,
-               ifnull(sum(sbd.material_meters), 0)                 meters,
-               ifnull(sum(m.Width * sbd.material_meters / 100), 0) area,
-               ifnull(sum(sbd.material_meters * m.Price), 0)       price
+        select count(0)                                                      count,
+               ifnull(sum(sbd.material_meters), 0)                           meters,
+               round(ifnull(sum(m.Width * sbd.material_meters / 100), 0), 2) area,
+               round(ifnull(sum(sbd.material_meters * m.Price), 0), 2)       price
         from stock_back sb
                  inner join stock_back_details sbd on sb.id = sbd.stock_back_id
                  inner join material m on sbd.material_id = m.ID

+ 190 - 60
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackPlanServiceImpl.java

@@ -125,6 +125,80 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
                 .between(StockBackPlanDetails::getPlanTime, beginDate, endDate));
 
         // 查询出库
+        issue(beginDate, stockBackPlanMap);
+
+        // 查询回仓
+        returnWarehouse(beginDate, stockBackPlanMap);
+
+        // 物料修正
+        correct(beginDate, stockBackPlanMap);
+
+        // 转入
+        transferIn(beginDate, stockBackPlanMap);
+
+        // 转出
+        transferOut(beginDate, stockBackPlanMap);
+
+        stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
+    }
+
+    private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
+        StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
+        stockBackPlanDetails.setPlanMaterial(materialName);
+        stockBackPlanDetails.setPlanTime(planDate);
+        stockBackPlanDetails.setQuantity(BigDecimal.ZERO);
+        stockBackPlanDetails.setJobNo(jobNo);
+        stockBackPlanDetails.setCorrectArea(BigDecimal.ZERO);
+        stockBackPlanDetails.setPickingMoney(BigDecimal.ZERO);
+        stockBackPlanDetails.setPickingNum(0);
+        stockBackPlanDetails.setPickingMeters(BigDecimal.ZERO);
+        stockBackPlanDetails.setPickingArea(BigDecimal.ZERO);
+        stockBackPlanDetails.setBackMoney(BigDecimal.ZERO);
+        stockBackPlanDetails.setBackNum(0);
+        stockBackPlanDetails.setBackMeters(BigDecimal.ZERO);
+        stockBackPlanDetails.setBackArea(BigDecimal.ZERO);
+        return stockBackPlanDetails;
+    }
+
+    /**
+     * 获取token
+     */
+    private String getToken() {
+        String url = "http://mes.cfmfactory.com:8087/portal/getAccessTokenAction.do?AppId=1&AppSecret=a2b1c2d3";
+        String result = restTemplate.getForEntity(url, String.class).getBody();
+        if (ObjectUtil.isEmpty(result)) {
+            return null;
+        }
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        return jsonObject.getString("token");
+    }
+
+    /**
+     * 赋值排班数据
+     */
+    private void addOrEditFlagMap(Map<String, StockBackPlan> flagMap, String jobNo, BigDecimal plantotalsquare, String planDate, String material, Date date) {
+        String key = jobNo + material + planDate;
+        StockBackPlan stockBackPlan = flagMap.get(key);
+
+        if (stockBackPlan == null) {
+            stockBackPlan = new StockBackPlan();
+            stockBackPlan.setJobNo(jobNo);
+            stockBackPlan.setPlanMaterial(material.trim());
+            stockBackPlan.setPlanTime(DateUtil.parse(planDate));
+            stockBackPlan.setQuantity(plantotalsquare);
+            stockBackPlan.setCreateTime(date);
+
+            flagMap.put(key, stockBackPlan);
+        } else {
+            BigDecimal quantity = stockBackPlan.getQuantity();
+            stockBackPlan.setQuantity(quantity.add(plantotalsquare));
+        }
+    }
+
+    /**
+     * 出库
+     */
+    private void issue(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
         List<Map<String, Object>> pickingList = baseMapper.getWater(Wrappers.query()
                 .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
                 .in("swd.StockChangeType", 20, 23)
@@ -132,13 +206,6 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
                 .in("uu.DepartmentID", "A007", "A008", "A012")
                 .likeRight("m.Code", "01.")
                 .isNotNull("uu.JobNo"));
-        // 转仓
-        List<Map<String, Object>> transferPickingList = baseMapper.getTransferPickingList(Wrappers.query()
-                .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
-                .eq("st.status", StatusConstant.YES)
-                .eq("st.del_flag", 0)
-        );
-        pickingList.addAll(transferPickingList);
 
         for (Map<String, Object> map : pickingList) {
 
@@ -187,22 +254,18 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             stockBackPlanDetails.setPickingArea(stockBackPlanDetails.getPickingArea().add(
                     BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
         }
+    }
 
-        // 查询回仓
+    /**
+     * 回仓
+     */
+    private void returnWarehouse(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
         List<Map<String, Object>> backList = baseMapper.getWater(Wrappers.query()
                 .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
                 .eq("swd.StockChangeType", 16)
                 .likeRight("m.Code", "01.")
                 .isNotNull("uu.JobNo"));
 
-        // 转仓
-        List<Map<String, Object>> transferBackList = baseMapper.getTransferBackList(Wrappers.query()
-                .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
-                .eq("st.status", StatusConstant.YES)
-                .eq("st.del_flag", 0)
-        );
-        backList.addAll(transferBackList);
-
         for (Map<String, Object> map : backList) {
 
             // 出库时间
@@ -248,8 +311,12 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             stockBackPlanDetails.setBackArea(stockBackPlanDetails.getBackArea().add(
                     BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
         }
+    }
 
-        // 物料修正
+    /**
+     * 修正
+     */
+    private void correct(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
         List<Map<String, Object>> correctList = baseMapper.getCorrect(Wrappers.query()
                 .gt("sbc.correct_time", DateUtil.format(beginDate, "yyyy-MM-dd 00:00:00"))
                 .isNotNull("uu.JobNo"));
@@ -274,60 +341,123 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             // 金额
             stockBackPlanDetails.setCorrectArea(stockBackPlanDetails.getCorrectArea().add(correctArea));
         }
-
-        stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
-    }
-
-    private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
-        StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
-        stockBackPlanDetails.setPlanMaterial(materialName);
-        stockBackPlanDetails.setPlanTime(planDate);
-        stockBackPlanDetails.setQuantity(BigDecimal.ZERO);
-        stockBackPlanDetails.setJobNo(jobNo);
-        stockBackPlanDetails.setCorrectArea(BigDecimal.ZERO);
-        stockBackPlanDetails.setPickingMoney(BigDecimal.ZERO);
-        stockBackPlanDetails.setPickingNum(0);
-        stockBackPlanDetails.setPickingMeters(BigDecimal.ZERO);
-        stockBackPlanDetails.setPickingArea(BigDecimal.ZERO);
-        stockBackPlanDetails.setBackMoney(BigDecimal.ZERO);
-        stockBackPlanDetails.setBackNum(0);
-        stockBackPlanDetails.setBackMeters(BigDecimal.ZERO);
-        stockBackPlanDetails.setBackArea(BigDecimal.ZERO);
-        return stockBackPlanDetails;
     }
 
     /**
-     * 获取token
+     * 转入
      */
-    private String getToken() {
-        String url = "http://mes.cfmfactory.com:8087/portal/getAccessTokenAction.do?AppId=1&AppSecret=a2b1c2d3";
-        String result = restTemplate.getForEntity(url, String.class).getBody();
-        if (ObjectUtil.isEmpty(result)) {
-            return null;
+    private void transferIn(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+        List<Map<String, Object>> transferPickingList = baseMapper.getTransferPickingList(Wrappers.query()
+                .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
+                .eq("st.status", StatusConstant.YES)
+                .eq("st.del_flag", 0)
+        );
+
+        for (Map<String, Object> map : transferPickingList) {
+
+            // 出库时间
+            Date createTime = (Date) map.get("createTime");
+            // 时
+            int h = Integer.parseInt(DateUtil.format(createTime, "H"));
+            // 分
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+            // 小于7点30算前一日
+            if (h < 7 || (h == 7 && m <= 30)) {
+                createTime = DateUtil.offsetDay(createTime, -1);
+            }
+
+            // 排班时间
+            Date planDate = DateUtil.beginOfDay(createTime);
+            // 工号
+            String jobNo = map.get("jobNo").toString();
+            // 物料名称
+            String materialName = map.get("materialName").toString().split("-")[0];
+            // 数量
+            BigDecimal changeNum = BigDecimalUtil.keepDecimals(map.get("changeNum"));
+            // 单价
+            BigDecimal price = BigDecimalUtil.keepDecimals(map.get("price"));
+            // 门幅
+            BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
+
+            // 排班对象
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            if (stockBackPlanDetails == null) {
+                stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
+                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+            }
+
+            // 金额
+            stockBackPlanDetails.setTransferInMoney(
+                    BigDecimalUtil.init(stockBackPlanDetails.getPickingMoney()).add(price.multiply(changeNum)).getValue(2));
+
+            // 数量
+            stockBackPlanDetails.setTransferInNum(stockBackPlanDetails.getPickingNum() + 1);
+
+            // 米
+            stockBackPlanDetails.setTransferInMeters(stockBackPlanDetails.getPickingMeters().add(changeNum));
+
+            // 面积
+            stockBackPlanDetails.setTransferInArea(stockBackPlanDetails.getPickingArea().add(
+                    BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
         }
-        JSONObject jsonObject = JSONObject.parseObject(result);
-        return jsonObject.getString("token");
+
     }
 
     /**
-     * 赋值排班数据
+     * 转出
      */
-    private void addOrEditFlagMap(Map<String, StockBackPlan> flagMap, String jobNo, BigDecimal plantotalsquare, String planDate, String material, Date date) {
-        String key = jobNo + material + planDate;
-        StockBackPlan stockBackPlan = flagMap.get(key);
+    private void transferOut(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
 
-        if (stockBackPlan == null) {
-            stockBackPlan = new StockBackPlan();
-            stockBackPlan.setJobNo(jobNo);
-            stockBackPlan.setPlanMaterial(material.trim());
-            stockBackPlan.setPlanTime(DateUtil.parse(planDate));
-            stockBackPlan.setQuantity(plantotalsquare);
-            stockBackPlan.setCreateTime(date);
+        List<Map<String, Object>> transferBackList = baseMapper.getTransferBackList(Wrappers.query()
+                .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 07:30:00"))
+                .eq("st.status", StatusConstant.YES)
+                .eq("st.del_flag", 0)
+        );
 
-            flagMap.put(key, stockBackPlan);
-        } else {
-            BigDecimal quantity = stockBackPlan.getQuantity();
-            stockBackPlan.setQuantity(quantity.add(plantotalsquare));
+        for (Map<String, Object> map : transferBackList) {
+
+            // 出库时间
+            Date createTime = (Date) map.get("createTime");
+
+            int h = Integer.parseInt(DateUtil.format(createTime, "H"));
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+            // 小于7点30点算前一日
+            if (h < 7 || (h == 7 && m <= 30)) {
+                createTime = DateUtil.offsetDay(createTime, -1);
+            }
+            // 排班时间
+            Date planDate = DateUtil.beginOfDay(createTime);
+            // 工号
+            String jobNo = map.get("jobNo").toString();
+            // 物料名称
+            String materialName = map.get("materialName").toString().split("-")[0];
+            // 数量
+            BigDecimal changeNum = BigDecimalUtil.keepDecimals(map.get("changeNum"));
+            // 单价
+            BigDecimal price = BigDecimalUtil.keepDecimals(map.get("price"));
+            // 门幅
+            BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
+
+            // 排班对象
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            if (stockBackPlanDetails == null) {
+                stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
+                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+            }
+
+            // 金额
+            stockBackPlanDetails.setTransferOutMoney(
+                    BigDecimalUtil.init(stockBackPlanDetails.getBackMoney()).add(price.multiply(changeNum)).getValue(2));
+
+            // 数量
+            stockBackPlanDetails.setTransferOutNum(stockBackPlanDetails.getBackNum() + 1);
+
+            // 米
+            stockBackPlanDetails.setTransferOutMeters(stockBackPlanDetails.getBackMeters().add(changeNum));
+
+            // 面积
+            stockBackPlanDetails.setTransferOutArea(stockBackPlanDetails.getBackArea().add(
+                    BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
         }
     }
 

+ 4 - 2
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java

@@ -279,8 +279,8 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
 
                 for (StockBackPlanDetails item : stockBackPlanDetails) {
                     scheduleArea = scheduleArea.add(item.getQuantity());
-                    pickingArea = pickingArea.add(item.getPickingArea());
-                    backArea = backArea.add(item.getBackArea());
+                    pickingArea = pickingArea.add(item.getPickingArea()).add(item.getTransferInArea() == null ? BigDecimal.ZERO : item.getTransferInArea());
+                    backArea = backArea.add(item.getBackArea()).add(item.getTransferOutArea() == null ? BigDecimal.ZERO : item.getTransferOutArea());
                     correctArea = correctArea.add(item.getCorrectArea());
                 }
 
@@ -329,6 +329,8 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
             result.setBackNum(result.getBackNum() + item.getBackNum());
             result.setBackMeters(result.getBackMeters().add(item.getBackMeters()));
             result.setBackArea(result.getBackArea().add(item.getBackArea()));
+            result.setTransferInArea(result.getTransferInArea().add(item.getTransferInArea() == null ? BigDecimal.ZERO : item.getTransferInArea()));
+            result.setTransferOutArea(result.getTransferOutArea().add(item.getTransferOutArea() == null ? BigDecimal.ZERO : item.getTransferOutArea()));
         }
 
         return result;

+ 2 - 1
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockTransferServiceImpl.java

@@ -42,7 +42,8 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
     public Page<Map<String, Object>> getPage(Map<String, String> condition) {
 
         QueryWrapper<Object> wrapper = Wrappers.query()
-                .eq("st.status", StatusConstant.NO);
+                .eq("st.status", StatusConstant.NO)
+                .eq("st.del_flag", 0);
 
         return baseMapper.getPage(createPage(condition), wrapper);
     }