Kaynağa Gözat

库存管理详情批量导出

home 2 yıl önce
ebeveyn
işleme
8875bca0f8

+ 2 - 4
hx-service/storage-restructure/src/main/java/com/fjhx/controller/common/CommonFileController.java

@@ -45,6 +45,7 @@ public class CommonFileController {
 
 
     private final ExampleAbstract exampleAbstract = new ExampleAbstract() {
+
         @Override
         public String getCode() {
             return "test";
@@ -56,13 +57,13 @@ public class CommonFileController {
             System.err.println("缓存     " + cacheData);
             System.err.println("流程结束了");
         }
+
     };
 
 
     @GetMapping("test")
     public R test() {
 
-
         HashMap<String, String> map = new HashMap<>();
         map.put("processInfoId", "1111111111111111111111");
         map.put("processTenantId", "222222222222222222222");
@@ -81,8 +82,5 @@ public class CommonFileController {
         return R.success();
     }
 
-
-//    jumpNodeId
-
 }
 

+ 9 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockWaterController.java

@@ -91,6 +91,15 @@ public class StockWaterController {
         return R.success(result);
     }
 
+    /**
+     * 今日剩余分页列表(原库存管理)
+     */
+    @PostMapping("remainingTodayList")
+    public R remainingTodayList(@RequestBody Map<String, String> condition) {
+        List<Map<String, Object>> result = stockWaterService.remainingTodayList(condition);
+        return R.success(result);
+    }
+
 
     /**
      * 今日剩余在库列表

+ 4 - 1
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockWaterMapper.java

@@ -48,6 +48,9 @@ public interface StockWaterMapper extends BaseMapper<StockWater> {
     List<String> selectMaterialIdByHouseId(@Param("houseId") String houseId);
 
     @TenantIgnore
-    List<Map<String, Object>> inStockList(@Param("materialCode") String materialCode);
+    List<Map<String, Object>> inStockList(@Param("ew") QueryWrapper<Object> wrapper);
+
+    @TenantIgnore
+    List<Map<String, Object>> remainingTodayList(@Param("ew") QueryWrapper<?> wrapper);
 
 }

+ 32 - 4
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockWaterMapper.xml

@@ -142,7 +142,8 @@
     </select>
 
     <select id="inStockList" resultType="java.util.Map">
-        select sd.RfidCode           rfidCode,
+        select sd.MaterialCode       materialCode,
+               sd.RfidCode           rfidCode,
                sd.Quantity           quantity,
                sd.CreatedTime        createTime,
                sh.Name               houseName,
@@ -152,9 +153,36 @@
                  left join stock_house sh on sd.StockHouseId = sh.ID
                  left join stock_area sa on sd.PlaceAreaId = sa.ID
                  left join stock_tag st on sd.RfidCode = st.RfidCode
-        where sd.MaterialCode = #{materialCode}
-          and st.IsDelete = 0
-        order by sd.CreatedTime
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="remainingTodayList" resultType="java.util.Map">
+        SELECT m.ID   materialId,
+               m.Name materialName,
+               m.Code materialCode
+        FROM material m
+                 INNER JOIN stock_detail sd ON sd.MaterialCode = m.Code
+                 LEFT JOIN (
+            SELECT s.HandTagCount,
+                   s.TagQuantity,
+                   s.CheckTagCount,
+                   s.MaterialCode,
+                   s.CheckTime,
+                   s.RecordId
+            FROM (
+                     SELECT scd.HandTagCount,
+                            scd.TagQuantity,
+                            scd.CheckTagCount,
+                            scd.MaterialCode,
+                            scd.CheckTime,
+                            scd.RecordId
+                     FROM stock_checkrecorddetail scd
+                     WHERE scd.CheckTime IS NOT NULL
+                     ORDER BY scd.CheckTime DESC
+                 ) s
+            GROUP BY s.MaterialCode
+        ) a ON m.CODE = a.MaterialCode
+            ${ew.customSqlSegment}
     </select>
 
 

+ 4 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/StockWaterService.java

@@ -31,6 +31,10 @@ public interface StockWaterService extends BaseService<StockWater> {
 
     Page<Map<String, Object>> remainingTodayPage(Map<String, String> condition);
 
+    List<Map<String, Object>> remainingTodayList(Map<String, String> condition);
+
     List<Map<String, Object>> inStockList(Map<String, String> condition);
 
+
+
 }

+ 96 - 40
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockWaterServiceImpl.java

@@ -409,46 +409,8 @@ public class StockWaterServiceImpl extends ServiceImpl<StockWaterMapper, StockWa
 
     @Override
     public Page<Map<String, Object>> remainingTodayPage(Map<String, String> condition) {
-        QueryWrapper<?> wrapper = WrapperUtil.init(condition)
-                .keyword("m.Code", "m.Name") // 关键字查询
-                .eq("m.CategoryCode", "categoryCode") // 物料分类
-                .eq("IF( a.CheckTagCount = a.TagQuantity AND a.CheckTagCount = a.HandTagCount, 1, 0)", "inventoryResults")
-                .getWrapper();
-
-        // 物料分组
-        wrapper.groupBy("m.id");
-        // 在库
-        wrapper.eq("sd.IsDelete", 0);
-
-        // 仓库id
-        String houseId = condition.get("houseId");
-        if (ObjectUtil.isNotEmpty(houseId)) {
-            List<String> materialCodeList = baseMapper.selectMaterialIdByHouseId(houseId);
-            wrapper.in("m.code", materialCodeList);
-        }
-
-        // 工艺类型
-        String technologyType = condition.get("technologyType");
-        if (ObjectUtil.isNotEmpty(technologyType)) {
-            if (technologyType.equals("5")) {
-                wrapper.in("m.TechnologyType", 0, 1, 2, 4);
-            } else {
-                wrapper.eq("m.TechnologyType", technologyType);
-            }
-        }
 
-        // 用途
-        String purpose = condition.get("purpose");
-        if (ObjectUtil.isNotEmpty(purpose)) {
-            if (purpose.equals("其他")) {
-                wrapper.ne("m.TechnologyType", 3);
-                wrapper.eq("ifNull(m.Purpose,'其他')", purpose);
-            } else {
-                wrapper.eq("m.Purpose", purpose);
-            }
-        }
-
-        wrapper.orderByAsc("m.Name");
+        QueryWrapper<?> wrapper = createRemainingTodayWrapper(condition);
 
         // 查询基本信息
         Page<Map<String, Object>> page = baseMapper.remainingTodayPage(createPage(condition), wrapper);
@@ -478,11 +440,60 @@ public class StockWaterServiceImpl extends ServiceImpl<StockWaterMapper, StockWa
     }
 
     @Override
+    public List<Map<String, Object>> remainingTodayList(Map<String, String> condition) {
+        QueryWrapper<?> wrapper = createRemainingTodayWrapper(condition);
+
+        // 查询基本信息
+        List<Map<String, Object>> list = baseMapper.remainingTodayList(wrapper);
+        if (list.size() == 0) {
+            return list;
+        }
+
+        Map<String, Map<String, Object>> materialCodeMap = list.stream().collect(Collectors.toMap(
+                item -> item.get("materialCode").toString(),
+                item -> item
+        ));
+
+
+        QueryWrapper<Object> query = Wrappers.query();
+        query.in("sd.MaterialCode", materialCodeMap.keySet());
+        query.eq("st.IsDelete", 0);
+        query.orderByAsc("sd.MaterialCode", "sd.CreatedTime");
+        List<Map<String, Object>> inStockList = baseMapper.inStockList(query);
+
+        if (inStockList.size() == 0) {
+            return inStockList;
+        }
+
+        Date date = new Date();
+
+        inStockList.forEach(item -> {
+
+            Date createTime = (Date) item.get("createTime");
+            item.put("createTime", DateUtil.format(createTime, "yyyy-MM-dd"));
+            item.put("inStockTime", DateUtil.betweenDay(date, createTime, true));
+
+            Map<String, Object> map = materialCodeMap.get(item.get("materialCode").toString());
+            if (map != null) {
+                item.putAll(map);
+            }
+        });
+
+        return inStockList;
+    }
+
+    @Override
     public List<Map<String, Object>> inStockList(Map<String, String> condition) {
         String materialCode = condition.get("materialCode");
         Assert.notEmpty(materialCode, "物料编码不能为空");
 
-        List<Map<String, Object>> list = baseMapper.inStockList(materialCode);
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        wrapper.eq("sd.MaterialCode", materialCode);
+        wrapper.eq("st.IsDelete", 0);
+        wrapper.orderByAsc("sd.CreatedTime");
+
+
+        List<Map<String, Object>> list = baseMapper.inStockList(wrapper);
 
         if (list.size() == 0) {
             return list;
@@ -499,6 +510,51 @@ public class StockWaterServiceImpl extends ServiceImpl<StockWaterMapper, StockWa
         return list;
     }
 
+
+    private QueryWrapper<?> createRemainingTodayWrapper(Map<String, String> condition) {
+        QueryWrapper<?> wrapper = WrapperUtil.init(condition)
+                .keyword("m.Code", "m.Name") // 关键字查询
+                .eq("m.CategoryCode", "categoryCode") // 物料分类
+                .eq("IF( a.CheckTagCount = a.TagQuantity AND a.CheckTagCount = a.HandTagCount, 1, 0)", "inventoryResults")
+                .getWrapper();
+
+        // 物料分组
+        wrapper.groupBy("m.id");
+        // 在库
+        wrapper.eq("sd.IsDelete", 0);
+
+        // 仓库id
+        String houseId = condition.get("houseId");
+        if (ObjectUtil.isNotEmpty(houseId)) {
+            List<String> materialCodeList = baseMapper.selectMaterialIdByHouseId(houseId);
+            wrapper.in("m.code", materialCodeList);
+        }
+
+        // 工艺类型
+        String technologyType = condition.get("technologyType");
+        if (ObjectUtil.isNotEmpty(technologyType)) {
+            if (technologyType.equals("5")) {
+                wrapper.in("m.TechnologyType", 0, 1, 2, 4);
+            } else {
+                wrapper.eq("m.TechnologyType", technologyType);
+            }
+        }
+
+        // 用途
+        String purpose = condition.get("purpose");
+        if (ObjectUtil.isNotEmpty(purpose)) {
+            if (purpose.equals("其他")) {
+                wrapper.ne("m.TechnologyType", 3);
+                wrapper.eq("ifNull(m.Purpose,'其他')", purpose);
+            } else {
+                wrapper.eq("m.Purpose", purpose);
+            }
+        }
+
+        wrapper.orderByAsc("m.Name");
+        return wrapper;
+    }
+
     private QueryWrapper<?> createPickingWrapper(Map<String, String> condition) {
         QueryWrapper<?> wrapper = WrapperUtil.init(condition)
                 .periodOfTime("sw.CreatedTime") // 时间段查询