Browse Source

Merge remote-tracking branch 'origin/master'

qt5107 2 years ago
parent
commit
92b05589cd
15 changed files with 198 additions and 7 deletions
  1. 9 1
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/base/StorageBaseService.java
  2. 4 0
      hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/check/CheckInfoEx.java
  3. 10 0
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/check/CheckController.java
  4. 16 2
      hx-service/storage-restructure/src/main/java/com/fjhx/controller/material/MaterialController.java
  5. 3 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/material/MaterialMapper.java
  6. 12 0
      hx-service/storage-restructure/src/main/java/com/fjhx/mapper/material/MaterialMapper.xml
  7. 6 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/check/CheckInfoService.java
  8. 39 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/check/impl/CheckInfoServiceImpl.java
  9. 2 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/material/MaterialService.java
  10. 13 0
      hx-service/storage-restructure/src/main/java/com/fjhx/service/material/impl/MaterialServiceImpl.java
  11. 17 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/ApplyInController.java
  12. 8 1
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsDetailsMapper.java
  13. 16 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsDetailsMapper.xml
  14. 13 1
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsDetailsService.java
  15. 30 2
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsDetailsServiceImpl.java

+ 9 - 1
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/base/StorageBaseService.java

@@ -59,12 +59,20 @@ public interface StorageBaseService<T> extends IService<T> {
     /**
      * 获取添加过的某个字段的去重列表
      */
-    default List<?> getDistinctList(SFunction<T, ?> column) {
+    default <S> List<S> getDistinctList(SFunction<T, S> column) {
         return list(Wrappers.<T>lambdaQuery().select(column))
                 .stream().map(column).filter(Objects::nonNull).distinct().collect(Collectors.toList());
     }
 
     /**
+     * 获取添加过的某个字段的去重列表
+     */
+    default <S> List<S> getDistinctList(Consumer<LambdaQueryWrapper<T>> consumer, SFunction<T, S> column) {
+        return list(Wrappers.<T>lambdaQuery().func(consumer).select(column))
+                .stream().map(column).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+    }
+
+    /**
      * 条件查询
      */
     default List<T> list(SFunction<T, ?> column, Long val) {

+ 4 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/check/CheckInfoEx.java

@@ -4,6 +4,8 @@ import com.fjhx.entity.check.CheckInfo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 盘点
  *
@@ -14,4 +16,6 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class CheckInfoEx extends CheckInfo {
 
+    private List<Long> materialIdList;
+
 }

+ 10 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/controller/check/CheckController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.Condition;
 import com.fjhx.entity.water.WaterTag;
 import com.fjhx.params.check.CheckDetailVo;
+import com.fjhx.params.check.CheckInfoEx;
 import com.fjhx.service.check.CheckInfoService;
 import com.fjhx.service.water.WaterTagService;
 import org.springblade.core.tool.api.R;
@@ -196,5 +197,14 @@ public class CheckController {
         return R.success(result);
     }
 
+    /**
+     * 发起人工盘点
+     */
+    @PostMapping("initiateManualCounting")
+    public R initiateManualCounting(@RequestBody CheckInfoEx checkInfoEx) {
+        checkInfoService.initiateManualCounting(checkInfoEx);
+        return R.success();
+    }
+
 }
 

+ 16 - 2
hx-service/storage-restructure/src/main/java/com/fjhx/controller/material/MaterialController.java

@@ -1,5 +1,6 @@
 package com.fjhx.controller.material;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.Condition;
 import com.fjhx.entity.material.Material;
@@ -80,8 +81,12 @@ public class MaterialController {
      * 物料用途
      */
     @PostMapping("/getPurpose")
-    public R getPurpose() {
-        return R.success(materialService.getDistinctList(Material::getPurpose));
+    public R getPurpose(@RequestBody Material material) {
+        Integer technologyType = material.getTechnologyType();
+        List<String> distinctList = materialService.getDistinctList(
+                q -> q.eq(ObjectUtil.isNotEmpty(technologyType), Material::getTechnologyType, technologyType),
+                Material::getPurpose);
+        return R.success(distinctList);
     }
 
     /**
@@ -102,5 +107,14 @@ public class MaterialController {
         return R.success(result);
     }
 
+    /**
+     * 获取物料信息以及库存
+     */
+    @PostMapping("/getMaterialAndStock")
+    public R getMaterialAndStock(@RequestBody Condition condition) {
+        Page<Map<String, Object>> result = materialService.getMaterialAndStock(condition);
+        return R.success(result);
+    }
+
 }
 

+ 3 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/material/MaterialMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.material.Material;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -23,4 +24,6 @@ public interface MaterialMapper extends BaseMapper<Material> {
 
     Page<Map<String, Object>> getStockPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
 
+    Page<Map<String, Object>> getMaterialAndStock(@Param("page") Page<Material> page, @Param("ew") IWrapper<Object> wrapper);
+
 }

+ 12 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/material/MaterialMapper.xml

@@ -24,4 +24,16 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getMaterialAndStock" resultType="java.util.Map">
+        SELECT m.id,
+               m.CODE,
+               m.NAME,
+               m.technology_type,
+               m.purpose,
+               s.quantity
+        FROM material m
+                 INNER JOIN stock s ON m.id = s.material_id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 6 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/check/CheckInfoService.java

@@ -5,6 +5,7 @@ import com.fjhx.base.Condition;
 import com.fjhx.base.StorageBaseService;
 import com.fjhx.entity.check.CheckInfo;
 import com.fjhx.params.check.CheckDetailVo;
+import com.fjhx.params.check.CheckInfoEx;
 
 import java.util.List;
 import java.util.Map;
@@ -116,4 +117,9 @@ public interface CheckInfoService extends StorageBaseService<CheckInfo> {
      */
     Page<Map<String, Object>> materialDetailPage(Condition condition);
 
+    /**
+     * 发起人工盘点
+     */
+    void initiateManualCounting(CheckInfoEx checkInfoEx);
+
 }

+ 39 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/check/impl/CheckInfoServiceImpl.java

@@ -18,6 +18,7 @@ import com.fjhx.entity.stock.Stock;
 import com.fjhx.entity.water.WaterTag;
 import com.fjhx.mapper.check.CheckInfoMapper;
 import com.fjhx.params.check.CheckDetailVo;
+import com.fjhx.params.check.CheckInfoEx;
 import com.fjhx.service.WebSocketServer;
 import com.fjhx.service.check.CheckDetailService;
 import com.fjhx.service.check.CheckInfoService;
@@ -417,6 +418,44 @@ public class CheckInfoServiceImpl extends ServiceImpl<CheckInfoMapper, CheckInfo
         return page;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void initiateManualCounting(CheckInfoEx checkInfoEx) {
+        Assert.notEmpty(checkInfoEx.getOperUserId(), "操作人id不能为空");
+        Assert.notEmpty(checkInfoEx.getBeginTime(), "开始盘点时间不能为空");
+
+        List<Long> materialIdList = checkInfoEx.getMaterialIdList();
+        Assert.notEmpty(materialIdList, "物料id列表不能为空");
+
+        checkInfoEx.setCheckResult(StatusConstant.YES);
+        checkInfoEx.setType(2);
+        checkInfoEx.setStatus(0);
+        checkInfoEx.setPeopleCheckResult(1);
+        save(checkInfoEx);
+
+        List<Stock> stockList = stockService.list(q -> q.in(Stock::getMaterialId, materialIdList));
+        Map<Long, Stock> collect = stockList.stream().collect(Collectors.toMap(Stock::getMaterialId, item -> item));
+
+        List<CheckDetail> checkDetailList = materialIdList.stream().map(item -> {
+            CheckDetail checkDetail = new CheckDetail();
+            checkDetail.setCheckId(checkInfoEx.getId());
+            checkDetail.setMaterialId(item);
+
+            Stock stock = collect.get(item);
+            if (stock == null) {
+                checkDetail.setStockCount(0);
+                checkDetail.setStockQuantity(BigDecimal.ZERO);
+            } else {
+                checkDetail.setStockCount(stock.getNumber());
+                checkDetail.setStockQuantity(stock.getQuantity());
+            }
+            checkDetail.setCheckResult(1);
+            return checkDetail;
+        }).collect(Collectors.toList());
+
+        checkDetailService.saveBatch(checkDetailList);
+    }
+
     /**
      * 获取在库标签
      */

+ 2 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/material/MaterialService.java

@@ -28,4 +28,6 @@ public interface MaterialService extends StorageBaseService<Material> {
 
     Page<Map<String, Object>> getStockPage(Condition condition);
 
+    Page<Map<String, Object>> getMaterialAndStock(Condition condition);
+
 }

+ 13 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/service/material/impl/MaterialServiceImpl.java

@@ -12,6 +12,8 @@ import com.fjhx.mapper.material.MaterialMapper;
 import com.fjhx.service.common.CommonConfigService;
 import com.fjhx.service.material.MaterialService;
 import com.fjhx.utils.WrapperUtil;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import com.fjhx.utils.wrapperUtil.KeywordData;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -75,4 +77,15 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
         return baseMapper.getStockPage(condition.getPage(), wrapper);
     }
 
+    @Override
+    public Page<Map<String, Object>> getMaterialAndStock(Condition condition) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition)
+                .keyword(new KeywordData("m", Material::getName), new KeywordData("m", Material::getCode))
+                .eq("m", Material::getTechnologyType)
+                .eq("m", Material::getPurpose)
+                .gt("s.quantity", 0);
+
+        return baseMapper.getMaterialAndStock(createPage(condition), wrapper);
+    }
+
 }

+ 17 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/ApplyInController.java

@@ -2,7 +2,9 @@ package com.fjhx.controller.stock;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.Condition;
+import com.fjhx.entity.logistics.LogisticsDetails;
 import com.fjhx.service.apply.ApplyPurchaseService;
+import com.fjhx.service.logistics.LogisticsDetailsService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -10,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -22,11 +25,25 @@ public class ApplyInController {
     @Autowired
     private ApplyPurchaseService applyPurchaseService;
 
+    @Autowired
+    private LogisticsDetailsService logisticsDetailsService;
+
     @PostMapping("/page")
     public R page(@RequestBody Condition condition) {
         Page<Map<String, Object>> result = applyPurchaseService.applyInPage(condition);
         return R.success(result);
     }
 
+    @PostMapping("getLogisticsDetailsByLogisticsId")
+    public R getLogisticsDetailsByLogisticsId(@RequestBody Condition condition) {
+        List<Map<String, Object>> result = logisticsDetailsService.getLogisticsDetailsByLogisticsId(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("submitLogisticsDetails")
+    public R submitLogisticsDetails(@RequestBody List<LogisticsDetails> logisticsDetailsList) {
+        logisticsDetailsService.submitLogisticsDetails(logisticsDetailsList);
+        return R.success();
+    }
 
 }

+ 8 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsDetailsMapper.java

@@ -1,7 +1,12 @@
 package com.fjhx.mapper.logistics;
 
-import com.fjhx.entity.logistics.LogisticsDetails;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.entity.logistics.LogisticsDetails;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface LogisticsDetailsMapper extends BaseMapper<LogisticsDetails> {
 
+    List<Map<String, Object>> getLogisticsDetailsByLogisticsId(@Param("ew") IWrapper<Object> wrapper);
+
 }

+ 16 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsDetailsMapper.xml

@@ -2,4 +2,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mapper.logistics.LogisticsDetailsMapper">
 
+    <select id="getLogisticsDetailsByLogisticsId" resultType="java.util.LinkedHashMap">
+        select ld.id,
+               ap.code     applyPurchaseCode,
+               pi.code     productCode,
+               pi.name     productName,
+               pi.type     productType,
+               w.name      warehouseName,
+               ap.quantity apply_purchase_quantity,
+               ld.shipment_quantity
+        from logistics_details ld
+                 left join apply_purchase ap on ld.apply_purchase_id = ap.id
+                 left join product_info pi on ap.goods_id = pi.id
+                 left join warehouse w on ap.receipt_warehouse_id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 13 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsDetailsService.java

@@ -1,10 +1,12 @@
 package com.fjhx.service.logistics;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.logistics.LogisticsDetails;
 import com.fjhx.params.logistics.LogisticsDetailsVo;
-import com.fjhx.base.BaseService;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,4 +27,14 @@ public interface LogisticsDetailsService extends BaseService<LogisticsDetails> {
 
     void delete(LogisticsDetailsVo logisticsDetailsVo);
 
+    /**
+     * 根据物流单id查询物流明细
+     */
+    List<Map<String, Object>> getLogisticsDetailsByLogisticsId(Condition condition);
+
+    /**
+     * 提交入库数量
+     */
+    void submitLogisticsDetails(List<LogisticsDetails> logisticsDetailsList);
+
 }

+ 30 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsDetailsServiceImpl.java

@@ -1,14 +1,18 @@
 package com.fjhx.service.logistics.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.logistics.LogisticsDetails;
-import com.fjhx.params.logistics.LogisticsDetailsVo;
 import com.fjhx.mapper.logistics.LogisticsDetailsMapper;
+import com.fjhx.params.logistics.LogisticsDetailsVo;
 import com.fjhx.service.logistics.LogisticsDetailsService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.Assert;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -45,4 +49,28 @@ public class LogisticsDetailsServiceImpl extends ServiceImpl<LogisticsDetailsMap
         removeById(logisticsDetailsVo.getId());
     }
 
+    @Override
+    public List<Map<String, Object>> getLogisticsDetailsByLogisticsId(Condition condition) {
+        Long id = condition.getLong("id");
+        Assert.notEmpty(id, "物流单id不能为空");
+
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition);
+        wrapper.eq("ld.id", id);
+
+        return baseMapper.getLogisticsDetailsByLogisticsId(wrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void submitLogisticsDetails(List<LogisticsDetails> logisticsDetailsList) {
+        saveBatch(logisticsDetailsList);
+
+        // 更新申购入库数量
+
+
+
+        // 更新库存
+
+    }
+
 }