|
@@ -20,10 +20,12 @@ import com.sd.business.mapper.inventory.InventoryMapper;
|
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.in.InOutStorageDetailsService;
|
|
|
import com.sd.business.service.inventory.InventoryService;
|
|
|
+import com.sd.framework.util.excel.util.ExcelUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.util.Collection;
|
|
@@ -46,7 +48,8 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory> implements InventoryService {
|
|
|
|
|
|
- private final static BigDecimal tempUnitPrice = BigDecimal.TEN;
|
|
|
+ @Autowired
|
|
|
+ private HttpServletResponse response;
|
|
|
|
|
|
@Autowired
|
|
|
private BomSpecService bomSpecService;
|
|
@@ -56,24 +59,7 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
|
|
|
|
|
|
@Override
|
|
|
public Page<InventoryVo> getPage(InventorySelectDto dto, String tableName) {
|
|
|
- IWrapper<Inventory> wrapper = getWrapper();
|
|
|
-
|
|
|
- wrapper.orderByDesc("i", Inventory::getId);
|
|
|
- wrapper.eq("b", Bom::getBomClassifyId, dto.getBomClassifyId());
|
|
|
- wrapper.like("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
- wrapper.like("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
- wrapper.eq("b", Bom::getSpecies, dto.getBomSpecies());
|
|
|
- wrapper.eq("b", Bom::getChromatophore, dto.getBomChromatophore());
|
|
|
- wrapper.eq("b", Bom::getEmbossingProcess, dto.getBomEmbossingProcess());
|
|
|
- wrapper.eq("b", Bom::getFrontGrain, dto.getBomFrontGrain());
|
|
|
- wrapper.eq("b", Bom::getReverseGrain, dto.getBomReverseGrain());
|
|
|
- wrapper.like("bs", BomSpec::getColour, dto.getBomSpecColour());
|
|
|
- wrapper.like("bs", BomSpec::getLength, dto.getBomSpecLength());
|
|
|
- wrapper.like("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
- wrapper.eq("i", Inventory::getWarehouseId, dto.getWarehouseId());
|
|
|
- wrapper.eq("i", Inventory::getDepartmentId, dto.getDepartmentId());
|
|
|
- wrapper.eq("i", InventoryBackup::getBackupDate, dto.getBackupDate());
|
|
|
-
|
|
|
+ IWrapper<Inventory> wrapper = getDtoWrapper(dto);
|
|
|
return this.baseMapper.getPage(dto.getPage(), wrapper, tableName);
|
|
|
}
|
|
|
|
|
@@ -93,26 +79,32 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
|
|
|
|
|
|
synchronized (this) {
|
|
|
|
|
|
+ // 通过事业部id和出库id获取bom规格库存
|
|
|
+ List<Inventory> inventoryList = getInventoryList(departmentId, warehouseId, bomSpecIdList);
|
|
|
+
|
|
|
+ // 通过bom规格分组
|
|
|
+ Map<Long, Inventory> map = inventoryList.stream().collect(Collectors.toMap(Inventory::getBomSpecId, Function.identity()));
|
|
|
+
|
|
|
// 保存结存单价批次
|
|
|
List<InOutStorageDetails> inOutStorageDetailsList = list.stream().map(item -> {
|
|
|
+
|
|
|
+ // todo 获取临时结存单价
|
|
|
+ Inventory inventory = map.get(item.getBomSpecId());
|
|
|
+ BigDecimal inUnitPrice = inventory == null ? BigDecimal.ZERO : inventory.getBalanceUnitPrice();
|
|
|
+
|
|
|
InOutStorageDetails inOutStorageDetails = new InOutStorageDetails();
|
|
|
inOutStorageDetails.setDepartmentId(departmentId);
|
|
|
inOutStorageDetails.setWarehouseId(warehouseId);
|
|
|
inOutStorageDetails.setBomSpecId(item.getBomSpecId());
|
|
|
- inOutStorageDetails.setInUnitPrice(tempUnitPrice);
|
|
|
+ inOutStorageDetails.setInUnitPrice(inUnitPrice);
|
|
|
inOutStorageDetails.setQuantity(item.getQuantity());
|
|
|
return inOutStorageDetails;
|
|
|
}).collect(Collectors.toList());
|
|
|
inOutStorageDetailsService.saveBatch(inOutStorageDetailsList);
|
|
|
|
|
|
- // 通过事业部id和出库id获取bom规格库存
|
|
|
- List<Inventory> inventoryList = getInventoryList(departmentId, warehouseId, bomSpecIdList);
|
|
|
-
|
|
|
// 通过出库id获取bom规格结存列表
|
|
|
Map<Long, List<InOutStorageDetails>> inOutStorageDetailsMap = getInOutStorageDetailsMap(warehouseId, bomSpecIdList);
|
|
|
|
|
|
- // 通过bom规格分组
|
|
|
- Map<Long, Inventory> map = inventoryList.stream().collect(Collectors.toMap(Inventory::getBomSpecId, Function.identity()));
|
|
|
|
|
|
for (InOutFun inOutFun : list) {
|
|
|
|
|
@@ -194,6 +186,13 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void exportExcel(InventorySelectDto dto) {
|
|
|
+ IWrapper<Inventory> wrapper = getDtoWrapper(dto);
|
|
|
+ List<InventoryVo> list = baseMapper.getList(wrapper);
|
|
|
+ ExcelUtil.export(response, list, InventoryVo.class);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 通过事业部id和出库id获取bom规格库存
|
|
|
*/
|
|
@@ -285,4 +284,29 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
|
|
|
return getBalanceUnitPrice(inOutStorageDetailsMap, inOutFun);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取查询条件
|
|
|
+ */
|
|
|
+ private IWrapper<Inventory> getDtoWrapper(InventorySelectDto dto) {
|
|
|
+ IWrapper<Inventory> wrapper = getWrapper();
|
|
|
+
|
|
|
+ wrapper.orderByDesc("i", Inventory::getId);
|
|
|
+ wrapper.eq("b", Bom::getBomClassifyId, dto.getBomClassifyId());
|
|
|
+ wrapper.like("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
+ wrapper.like("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
+ wrapper.eq("b", Bom::getSpecies, dto.getBomSpecies());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getBomChromatophore());
|
|
|
+ wrapper.eq("b", Bom::getEmbossingProcess, dto.getBomEmbossingProcess());
|
|
|
+ wrapper.eq("b", Bom::getFrontGrain, dto.getBomFrontGrain());
|
|
|
+ wrapper.eq("b", Bom::getReverseGrain, dto.getBomReverseGrain());
|
|
|
+ wrapper.like("bs", BomSpec::getColour, dto.getBomSpecColour());
|
|
|
+ wrapper.like("bs", BomSpec::getLength, dto.getBomSpecLength());
|
|
|
+ wrapper.like("bs", BomSpec::getWidth, dto.getBomSpecWidth());
|
|
|
+ wrapper.eq("i", Inventory::getWarehouseId, dto.getWarehouseId());
|
|
|
+ wrapper.eq("i", Inventory::getDepartmentId, dto.getDepartmentId());
|
|
|
+ wrapper.eq("i", InventoryBackup::getBackupDate, dto.getBackupDate());
|
|
|
+
|
|
|
+ return wrapper;
|
|
|
+ }
|
|
|
+
|
|
|
}
|