24282 2 年之前
父節點
當前提交
28621d9bb6

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

@@ -132,6 +132,11 @@ public class StockBackPlanDetails implements Serializable {
     private BigDecimal transferOutArea;
 
     /**
+     * 布头布尾面料
+     */
+    private BigDecimal headTailCorrectArea;
+
+    /**
      * 创建时间
      */
     private Date createTime;

+ 2 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackPlanMapper.java

@@ -41,4 +41,6 @@ public interface StockBackPlanMapper extends BaseMapper<StockBackPlan> {
     @TenantIgnore
     List<Map<String, Object>> getReturnWarehouse(@Param("ew") QueryWrapper<Object> wrapper);
 
+    List<Map<String, Object>> getHeadTailCorrectList(@Param("ew") QueryWrapper<Object> wrapper);
+
 }

+ 11 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackPlanMapper.xml

@@ -97,4 +97,15 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getHeadTailCorrectList" resultType="java.util.Map">
+        SELECT sc.correct_area area,
+               sc.correct_date createTime,
+               m.NAME          materialName,
+               uu.JobNo        jobNo
+        FROM stock_correct sc
+                 LEFT JOIN material m ON sc.material_id = m.ID
+                 LEFT JOIN u_user uu ON sc.correct_user = uu.ID
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 51 - 16
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackPlanServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.constants.StatusConstant;
@@ -140,7 +139,7 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
 
             // 工号,物料名称,排班时间封装成key,对象为value
             Map<String, StockBackPlanDetails> stockBackPlanMap = list.stream().collect(Collectors.toMap(
-                    item -> item.getJobNo() + item.getPlanMaterial() + item.getPlanTime(),
+                    item -> item.getJobNo() + item.getPlanMaterial() + item.getPlanTime().getTime(),
                     item -> {
                         StockBackPlanDetails stockBackPlanDetails =
                                 createStockBackPlanDetails(item.getJobNo(), item.getPlanMaterial(), item.getPlanTime());
@@ -171,12 +170,16 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             // 转出
             transferOut(beginDate, stockBackPlanMap);
 
+            // 布头布尾修正
+            headTailCorrect(beginDate, stockBackPlanMap);
+
             stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
 
         }
 
     }
 
+
     private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
         StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
         stockBackPlanDetails.setPlanMaterial(materialName);
@@ -205,6 +208,8 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
         stockBackPlanDetails.setTransferInArea(BigDecimal.ZERO);
         stockBackPlanDetails.setTransferInNum(0);
 
+        stockBackPlanDetails.setHeadTailCorrectArea(BigDecimal.ZERO);
+
         stockBackPlanDetails.setCreateTime(new Date());
 
         return stockBackPlanDetails;
@@ -291,10 +296,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
 
             // 金额
@@ -353,10 +358,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
 
             // 金额
@@ -417,10 +422,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
 
             // 金额
@@ -476,10 +481,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
 
             // 金额
@@ -523,10 +528,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal correctArea = BigDecimalUtil.keepDecimals(map.get("correctArea"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
             // 金额
             stockBackPlanDetails.setCorrectArea(stockBackPlanDetails.getCorrectArea().add(correctArea));
@@ -572,10 +577,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
 
             // 金额
@@ -633,10 +638,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
 
             // 排班对象
-            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {
                 stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
-                stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
             }
 
             // 金额
@@ -655,4 +660,34 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
         }
     }
 
+    private void headTailCorrect(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+        List<Map<String, Object>> list = baseMapper.getHeadTailCorrectList(Wrappers.query()
+                .ge("sc.correct_date", beginDate)
+                .notIn("m.CategoryCode", "99.999.", "01.007.")
+        );
+
+        for (Map<String, Object> map : list) {
+
+            // 工号
+            String jobNo = map.get("jobNo").toString();
+            // 物料名称
+            String materialName = map.get("materialName").toString().split("-")[0];
+            // 排班时间
+            Date planDate = DateUtil.beginOfDay((Date) map.get("createTime"));
+
+
+            // 排班对象
+            StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
+            if (stockBackPlanDetails == null) {
+                stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
+                stockBackPlanMap.put(jobNo + materialName + planDate.getTime(), stockBackPlanDetails);
+            }
+
+            // 面积
+            stockBackPlanDetails.setHeadTailCorrectArea(stockBackPlanDetails.getHeadTailCorrectArea().add(
+                    Convert.toBigDecimal(map.get("area"), BigDecimal.ZERO)));
+        }
+
+    }
+
 }

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

@@ -309,7 +309,8 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
         Assert.notEmpty(endTimeStr, "结束时间不能为空");
         Date endTime = DateUtil.endOfDay(DateUtil.parse(endTimeStr));
 
-        List<Map<String, Object>> userList = userList();
+        List<Map<String, Object>> userList = baseMapper.userStatistics(
+                Wrappers.query().eq("uu.IsDelete", 0).isNotNull("uu.JobNo"));
 
         List<StockBackPlanDetails> planList = stockBackPlanDetailsService.list(Wrappers.<StockBackPlanDetails>lambdaQuery()
                 .between(StockBackPlanDetails::getPlanTime, beginTime, endTime)
@@ -335,7 +336,7 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
             List<Map<String, Object>> list = new ArrayList<>();
 
             v.forEach((k2, v2) -> {
-                Map<String, Object> map = jobNoMap.get(k);
+                Map<String, Object> map = jobNoMap.get(k2);
                 if (map != null) {
                     if (v2 != null && v2.size() > 0) {
                         BigDecimal scheduleArea = BigDecimal.ZERO;
@@ -345,8 +346,8 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
 
                         for (StockBackPlanDetails item : v2) {
                             scheduleArea = scheduleArea.add(item.getQuantity());
-                            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());
+                            pickingArea = pickingArea.add(item.getPickingArea()).add(ObjectUtil.defaultIfNull(item.getTransferInArea(), BigDecimal.ZERO));
+                            backArea = backArea.add(item.getBackArea()).add(ObjectUtil.defaultIfNull(item.getTransferOutArea(), BigDecimal.ZERO));
                             correctArea = correctArea.add(item.getCorrectArea());
                         }