Ver código fonte

杰生重构

home 2 anos atrás
pai
commit
c1036740e5

+ 2 - 1
bladex/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserSearchClient.java

@@ -24,6 +24,7 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -89,7 +90,7 @@ public interface IUserSearchClient {
      * @return MAP<用户id, 用户名称>
      */
     @GetMapping(MAP_BY_USER)
-    R<Map<Long, String>> mapByUser(@RequestParam("userIdList") List<Long> userIdList);
+    R<Map<Long, String>> mapByUser(@RequestParam("userIdList") Collection<Long> userIdList);
 
     /**
      * 通过用户id获取用户名称以及岗位名称

+ 2 - 1
bladex/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserSearchClient.java

@@ -25,6 +25,7 @@ import org.springblade.system.user.service.IUserSearchService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -66,7 +67,7 @@ public class UserSearchClient implements IUserSearchClient {
 
 	@Override
 	@GetMapping(MAP_BY_USER)
-	public R<Map<Long, String>> mapByUser(List<Long> userIdList) {
+	public R<Map<Long, String>> mapByUser(Collection<Long> userIdList) {
 		return R.data(service.mapByUser(userIdList));
 	}
 

+ 2 - 1
bladex/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserSearchService.java

@@ -20,6 +20,7 @@ package org.springblade.system.user.service;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.system.user.entity.User;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -68,7 +69,7 @@ public interface IUserSearchService extends BaseService<User> {
 	 * @param idList 用户id列表
 	 * @return MAP<用户id, 用户名称>
 	 */
-	Map<Long, String> mapByUser(List<Long> idList);
+	Map<Long, String> mapByUser(Collection<Long> idList);
 
 	/**
 	 * 通过用户id获取用户名称以及岗位名称

+ 2 - 1
bladex/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserSearchServiceImpl.java

@@ -27,6 +27,7 @@ import org.springblade.system.user.mapper.UserMapper;
 import org.springblade.system.user.service.IUserSearchService;
 import org.springframework.stereotype.Service;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -68,7 +69,7 @@ public class UserSearchServiceImpl extends BaseServiceImpl<UserMapper, User> imp
 	}
 
 	@Override
-	public Map<Long, String> mapByUser(List<Long> idList) {
+	public Map<Long, String> mapByUser(Collection<Long> idList) {
 		if (idList == null || idList.size() == 0) {
 			return new HashMap<>();
 		}

+ 11 - 1
hx-common/common-client-util/src/main/java/com/fjhx/utils/UserClientUtil.java

@@ -33,7 +33,7 @@ public class UserClientUtil {
      * @param userIdList 用户id列表
      * @return MAP<用户id, 用户名称>
      */
-    public static Map<Long, String> getUserNameMap(List<Long> userIdList) {
+    public static Map<Long, String> getUserNameMap(Collection<Long> userIdList) {
         if (userIdList == null || userIdList.size() == 0) {
             return new HashMap<>();
         }
@@ -62,6 +62,16 @@ public class UserClientUtil {
     }
 
     /**
+     * 通过userId获取userName
+     *
+     * @param userId 用户id
+     * @return 用户名
+     */
+    public static String getUserName(Long userId) {
+        return getUserNameMap(Collections.singletonList(userId)).get(userId);
+    }
+
+    /**
      * 赋值用户名称
      */
     public static void setUserName(List<Map<String, Object>> mapList, String getUserIdStr, String setUserNameStr) {

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

@@ -78,6 +78,13 @@ public interface StorageBaseService<T> extends IService<T> {
     /**
      * 条件查询
      */
+    default Map<String, Object> getMap(SFunction<T, ?> column, Object val) {
+        return getMap(Wrappers.<T>lambdaQuery().eq(column, val).last("limit 1"));
+    }
+
+    /**
+     * 条件查询
+     */
     default T getOne(SFunction<T, ?> column, Object val) {
         return lambdaQuery().eq(column, val).last("limit 1").one();
     }

+ 5 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/water/WaterTransferDetails.java

@@ -35,6 +35,11 @@ public class WaterTransferDetails extends StorageBaseEntity {
     private Long materialId;
 
     /**
+     * 接收人id
+     */
+    private Long receiveId;
+
+    /**
      * 数量
      */
     private BigDecimal quantity;

+ 8 - 0
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/params/water/WaterTransferVo.java

@@ -1,9 +1,12 @@
 package com.fjhx.params.water;
 
 import com.fjhx.entity.water.WaterTransfer;
+import com.fjhx.entity.water.WaterTransferDetails;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 转仓
  *
@@ -14,4 +17,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class WaterTransferVo extends WaterTransfer {
 
+    /**
+     * 转仓明细
+     */
+    private List<WaterTransferDetails> waterTransferDetailsList;
+
 }

+ 44 - 8
hx-service/storage-restructure/src/main/java/com/fjhx/controller/water/WaterTransferController.java

@@ -11,6 +11,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;
 
 /**
@@ -34,23 +35,58 @@ public class WaterTransferController {
         return R.success(result);
     }
 
-    @PostMapping("/add")
-    public R add(@RequestBody WaterTransferVo waterTransferVo) {
-        waterTransferService.add(waterTransferVo);
-        return R.success();
-    }
-
     @PostMapping("/edit")
     public R edit(@RequestBody WaterTransferVo waterTransferVo) {
         waterTransferService.edit(waterTransferVo);
         return R.success();
     }
 
+    /**
+     * 添加面料转仓
+     */
+    @PostMapping("/add")
+    public R add(@RequestBody List<WaterTransferVo> waterTransferVoList) {
+        waterTransferService.add(waterTransferVoList);
+        return R.success();
+    }
+
+    /**
+     * 待复核列表
+     */
+    @PostMapping("/toBeReviewedList")
+    public R toBeReviewedList() {
+        List<Map<String, Object>> result = waterTransferService.toBeReviewedList();
+        return R.success(result);
+    }
+
+    /**
+     * 明细
+     */
+    @PostMapping("/details")
+    public R details(@RequestBody WaterTransfer waterTransfer) {
+        Map<String, Object> result = waterTransferService.details(waterTransfer.getId());
+        return R.success(result);
+    }
+
+
+    /**
+     * 删除
+     */
     @PostMapping("/delete")
-    public R delete(@RequestBody WaterTransferVo waterTransferVo) {
-        waterTransferService.delete(waterTransferVo);
+    public R delete(@RequestBody WaterTransfer waterTransfer) {
+        waterTransferService.delete(waterTransfer.getId());
         return R.success();
     }
 
+    /**
+     * 提交
+     */
+    @PostMapping("/submit")
+    public R submit(@RequestBody WaterTransferVo waterTransferVo) {
+        waterTransferService.submit(waterTransferVo);
+        return R.success();
+    }
+
+
 }
 

+ 11 - 4
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/WaterTransferService.java

@@ -1,10 +1,11 @@
 package com.fjhx.service.water;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.StorageBaseService;
 import com.fjhx.entity.water.WaterTransfer;
 import com.fjhx.params.water.WaterTransferVo;
-import com.fjhx.base.StorageBaseService;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -19,10 +20,16 @@ public interface WaterTransferService extends StorageBaseService<WaterTransfer>
 
     Page<WaterTransfer> getPage(Map<String, String> condition);
 
-    void add(WaterTransferVo waterTransferVo);
-
     void edit(WaterTransferVo waterTransferVo);
 
-    void delete(WaterTransferVo waterTransferVo);
+    void add(List<WaterTransferVo> waterTransferVoList);
+
+    List<Map<String, Object>> toBeReviewedList();
+
+    Map<String, Object> details(Long id);
+
+    void delete(Long id);
+
+    void submit(WaterTransferVo waterTransferVo);
 
 }

+ 127 - 10
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterTransferServiceImpl.java

@@ -1,17 +1,30 @@
 package com.fjhx.service.water.impl;
 
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.StorageBaseEntity;
+import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.water.WaterTransfer;
-import com.fjhx.params.water.WaterTransferVo;
+import com.fjhx.entity.water.WaterTransferDetails;
 import com.fjhx.mapper.water.WaterTransferMapper;
+import com.fjhx.params.water.WaterTransferVo;
+import com.fjhx.service.material.MaterialService;
+import com.fjhx.service.water.WaterTransferDetailsService;
 import com.fjhx.service.water.WaterTransferService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.UserClientUtil;
+import com.fjhx.utils.WrapperUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -24,6 +37,12 @@ import java.util.Map;
 @Service
 public class WaterTransferServiceImpl extends ServiceImpl<WaterTransferMapper, WaterTransfer> implements WaterTransferService {
 
+    @Autowired
+    private WaterTransferDetailsService waterTransferDetailsService;
+
+    @Autowired
+    private MaterialService materialService;
+
     @Override
     public Page<WaterTransfer> getPage(Map<String, String> condition) {
 
@@ -37,18 +56,116 @@ public class WaterTransferServiceImpl extends ServiceImpl<WaterTransferMapper, W
     }
 
     @Override
-    public void add(WaterTransferVo waterTransferVo) {
-        save(waterTransferVo);
+    public void edit(WaterTransferVo waterTransferVo) {
+        updateById(waterTransferVo);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(WaterTransferVo waterTransferVo) {
-        updateById(waterTransferVo);
+    public void add(List<WaterTransferVo> waterTransferVoList) {
+
+        List<WaterTransferDetails> waterTransferDetailsList = new ArrayList<>();
+
+        for (WaterTransferVo waterTransferVo : waterTransferVoList) {
+            List<WaterTransferDetails> itemDetailsList = waterTransferVo.getWaterTransferDetailsList();
+
+            waterTransferVo.setNumber(itemDetailsList.size());
+            waterTransferVo.setQuantity(itemDetailsList.stream()
+                    .map(WaterTransferDetails::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
+            waterTransferVo.setStatus(StatusConstant.NO);
+            save(waterTransferVo);
+
+            for (WaterTransferDetails waterTransferDetails : itemDetailsList) {
+                waterTransferDetails.setWaterTransferId(waterTransferVo.getId());
+                waterTransferDetails.setReceiveId(waterTransferVo.getReceiveId());
+                waterTransferDetails.setMaterialId(waterTransferVo.getMaterialId());
+                waterTransferDetails.setOldQuantity(waterTransferDetails.getQuantity());
+                waterTransferDetails.setStatus(StatusConstant.NO);
+            }
+            waterTransferDetailsList.addAll(itemDetailsList);
+        }
+
+        waterTransferDetailsService.saveBatch(waterTransferDetailsList);
+    }
+
+    @Override
+    public List<Map<String, Object>> toBeReviewedList() {
+
+        List<Map<String, Object>> list = listMaps(Wrappers.<WaterTransfer>lambdaQuery()
+                .eq(WaterTransfer::getStatus, StatusConstant.NO));
+
+        if (list.size() == 0) {
+            return list;
+        }
+
+        Set<Long> userIdList = new HashSet<>();
+
+        list.forEach(item -> {
+            userIdList.add(Convert.toLong(item.get("createUser")));
+            userIdList.add(Convert.toLong(item.get("receiveId")));
+        });
+
+        Map<Long, String> userNameMap = UserClientUtil.getUserNameMap(userIdList);
+
+        list.forEach(item -> {
+            item.put("createUserName", userNameMap.get(Convert.toLong(item.get("createUser"))));
+            item.put("receiveUserName", userNameMap.get(Convert.toLong(item.get("receiveId"))));
+        });
+
+        return list;
+    }
+
+    @Override
+    public Map<String, Object> details(Long id) {
+        Map<String, Object> map = getMap(StorageBaseEntity::getId, id);
+        map.put("receiveUserName", UserClientUtil.getUserName(Convert.toLong(map.get("receiveId"))));
+        map.put("materialName", materialService.getById(Convert.toLong(map.get("materialId"))).getName());
+
+        List<WaterTransferDetails> list = waterTransferDetailsService.list(WaterTransferDetails::getWaterTransferId, id);
+        map.put("list", list);
+
+        return map;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void delete(WaterTransferVo waterTransferVo) {
-        removeById(waterTransferVo.getId());
+    public void delete(Long id) {
+        removeById(id);
+        waterTransferDetailsService.remove(WaterTransferDetails::getWaterTransferId, id);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void submit(WaterTransferVo waterTransferVo) {
+
+        waterTransferVo.setCheckerId(AuthUtil.getUserId());
+        waterTransferVo.setCheckerTime(new Date());
+        waterTransferVo.setStatus(StatusConstant.YES);
+        updateById(waterTransferVo);
+
+        Long waterTransferId = waterTransferVo.getId();
+        Long materialId = waterTransferVo.getMaterialId();
+        Long receiveId = waterTransferVo.getReceiveId();
+        List<WaterTransferDetails> waterTransferDetailsList = waterTransferVo.getWaterTransferDetailsList();
+
+        for (WaterTransferDetails waterTransferDetails : waterTransferDetailsList) {
+            waterTransferDetails.setWaterTransferId(waterTransferId);
+            waterTransferDetails.setMaterialId(materialId);
+            waterTransferDetails.setReceiveId(receiveId);
+            waterTransferDetails.setStatus(StatusConstant.YES);
+            if (ObjectUtil.isEmpty(waterTransferDetails.getId())) {
+                waterTransferDetails.setOldQuantity(BigDecimal.ZERO);
+            }
+        }
+        waterTransferDetailsService.saveOrUpdateBatch(waterTransferDetailsList);
+
+
+        List<Long> waterTransferDetailsIdList = waterTransferDetailsList.stream()
+                .map(StorageBaseEntity::getId).collect(Collectors.toList());
+
+        waterTransferDetailsService.remove(Wrappers.<WaterTransferDetails>lambdaQuery()
+                .eq(WaterTransferDetails::getWaterTransferId, waterTransferId)
+                .notIn(StorageBaseEntity::getId, waterTransferDetailsIdList));
     }
 
 }