|
@@ -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));
|
|
|
}
|
|
|
|
|
|
}
|