板材、配件导入重复代码移除、代码规范修正

This commit is contained in:
gaoqr
2025-03-28 15:32:11 +08:00
parent d72d6961aa
commit cf110a3c37
2 changed files with 124 additions and 83 deletions
@@ -13,7 +13,9 @@ import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsCadPage
import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsImportExcelVO; import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsImportExcelVO;
import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsPageReqVO; import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsPageReqVO;
import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsSaveReqVO; import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsSaveReqVO;
import com.cf.imes.module.executor.controller.admin.manage.plate.vo.plate.PlateImportExcelVO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO; import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.mysql.orderParts.PartsBatchMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.PartsBatchMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper;
import com.cf.imes.module.executor.enums.manage.parts.CategoryEnum; import com.cf.imes.module.executor.enums.manage.parts.CategoryEnum;
@@ -275,54 +277,25 @@ public class PartsServiceImpl implements PartsService {
for (List<PartsImportExcelVO> batch : batches) { for (List<PartsImportExcelVO> batch : batches) {
threadPoolTaskExecutor.submit(() -> { threadPoolTaskExecutor.submit(() -> {
threadPoolTaskExecutor.submit(() -> { try {
try { // 子线程同步主线程的多数据源
// 子线程同步主线程的多数据源 DynamicDataSourceContextHolder.push(peek);
DynamicDataSourceContextHolder.push(peek);
List<String> goodsIds = batch.stream().map(PartsImportExcelVO::getGoodsId).collect(Collectors.toList()); List<String> goodsIds = batch.stream().map(PartsImportExcelVO::getGoodsId).collect(Collectors.toList());
Map<String, PartsDO> partsMap = partsMapper.selectList( Map<String, PartsDO> partsMap = partsMapper.selectList(
new LambdaQueryWrapper<PartsDO>().in(PartsDO::getGoodsId, goodsIds).eq(PartsDO::getOrganId, organId)) new LambdaQueryWrapper<PartsDO>().in(PartsDO::getGoodsId, goodsIds).eq(PartsDO::getOrganId, organId))
.stream().collect(Collectors.toMap(PartsDO::getGoodsId, p -> p)); .stream().collect(Collectors.toMap(PartsDO::getGoodsId, p -> p));
for (PartsImportExcelVO importPart : batch) { // 整理到insertLis、updateList
PartsDO existPlate = partsMap.get(importPart.getGoodsId()); doBatch(batch, partsMap, organId, isUpdateSupport, insertList, updateList);
if (existPlate == null) { } catch (Exception e) {
PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class).setOrganId(organId); boolean b = hasError.get();
partsDO.setIsComposite(ObjectUtil.isNull(partsDO.getIsComposite()) ? false : partsDO.getIsComposite()) if (!b) {
.setCategory(getEmpty(partsDO.getCategory())) hasError.set(true);
.setSubparts(getEmpty(partsDO.getType()))
.setColor(getEmpty(partsDO.getColor()))
.setFactory(getEmpty(partsDO.getFactory()))
.setRemark(getEmpty(partsDO.getRemark()))
.setBrand(getEmpty(partsDO.getBrand()))
.setModel(getEmpty(partsDO.getModel()))
.setSpec(getEmpty(partsDO.getSpec()))
.setMaterial(getEmpty(partsDO.getMaterial()))
.setLength(getZeroDouble(partsDO.getLength()))
.setWidth(getZeroDouble(partsDO.getWidth()))
.setThickness(getZeroDouble(partsDO.getThickness()))
.setPrice(getZeroDouble(partsDO.getPrice()))
.setUnit(getEmpty(partsDO.getUnit()))
.setOrganId(organId)
.setDeleted(false);
insertList.add(partsDO);
} else if (!isUpdateSupport) {
PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class)
.setOrganId(organId)
.setId(existPlate.getId());
updateList.add(partsDO);
}
}
} catch (Exception e) {
boolean b = hasError.get();
if (!b) {
hasError.set(true);
}
} finally {
latch.countDown(); // 任务完成,计数器减1
} }
}); } finally {
latch.countDown(); // 任务完成,计数器减1
}
}); });
} }
@@ -336,6 +309,49 @@ public class PartsServiceImpl implements PartsService {
return hasError.get(); return hasError.get();
} }
/**
* 遍历批次列表,存在更新,不存在新增
*
* @param batch
* @param partsMap 已经存在goodsId的part map
* @param organId
* @param isUpdateSupport
* @param insertList
* @param updateList
*/
private void doBatch(List<PartsImportExcelVO> batch, Map<String, PartsDO> partsMap, Long organId,
boolean isUpdateSupport, List<PartsDO> insertList, List<PartsDO> updateList) {
for (PartsImportExcelVO importPart : batch) {
PartsDO existPlate = partsMap.get(importPart.getGoodsId());
if (existPlate == null) {
PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class).setOrganId(organId);
partsDO.setIsComposite(getDefaultFalse(partsDO.getIsComposite()))
.setCategory(getEmpty(partsDO.getCategory()))
.setSubparts(getEmpty(partsDO.getType()))
.setColor(getEmpty(partsDO.getColor()))
.setFactory(getEmpty(partsDO.getFactory()))
.setRemark(getEmpty(partsDO.getRemark()))
.setBrand(getEmpty(partsDO.getBrand()))
.setModel(getEmpty(partsDO.getModel()))
.setSpec(getEmpty(partsDO.getSpec()))
.setMaterial(getEmpty(partsDO.getMaterial()))
.setLength(getZeroDouble(partsDO.getLength()))
.setWidth(getZeroDouble(partsDO.getWidth()))
.setThickness(getZeroDouble(partsDO.getThickness()))
.setPrice(getZeroDouble(partsDO.getPrice()))
.setUnit(getEmpty(partsDO.getUnit()))
.setOrganId(organId)
.setDeleted(false);
insertList.add(partsDO);
} else if (!isUpdateSupport) {
PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class)
.setOrganId(organId)
.setId(existPlate.getId());
updateList.add(partsDO);
}
}
}
/** /**
* 每batchSize条数据处理一次DO * 每batchSize条数据处理一次DO
* *
@@ -394,6 +410,16 @@ public class PartsServiceImpl implements PartsService {
return ObjectUtil.defaultIfNull(value, 0.0); return ObjectUtil.defaultIfNull(value, 0.0);
} }
/**
* value为空返回false
*
* @param value
* @return
*/
private Boolean getDefaultFalse(Boolean value) {
return ObjectUtil.defaultIfNull(value, false);
}
@Override @Override
public List<PartsDO> getPartAll(String category) { public List<PartsDO> getPartAll(String category) {
return partsMapper.getAllByOrganId(OrganContextHolder.getOrganId(), category); return partsMapper.getAllByOrganId(OrganContextHolder.getOrganId(), category);
@@ -209,44 +209,26 @@ public class PlateManageServiceImpl implements PlateManageService {
for (List<PlateImportExcelVO> batch : batches) { for (List<PlateImportExcelVO> batch : batches) {
threadPoolTaskExecutor.submit(() -> { threadPoolTaskExecutor.submit(() -> {
threadPoolTaskExecutor.submit(() -> { try {
try { // 子线程同步主线程的多数据源
// 子线程同步主线程的多数据源 DynamicDataSourceContextHolder.push(peek);
DynamicDataSourceContextHolder.push(peek);
List<String> goodsIds = batch.stream().map(PlateImportExcelVO::getGoodsId).collect(Collectors.toList()); List<String> goodsIds = batch.stream().map(PlateImportExcelVO::getGoodsId).collect(Collectors.toList());
Map<String, PlateGoodDO> plateGoodMap = plateGoodMapper.selectList( Map<String, PlateGoodDO> plateGoodMap = plateGoodMapper.selectList(
new LambdaQueryWrapper<PlateGoodDO>().in(PlateGoodDO::getGoodsId, goodsIds).eq(PlateGoodDO::getOrganId, organId)) new LambdaQueryWrapper<PlateGoodDO>().in(PlateGoodDO::getGoodsId, goodsIds).eq(PlateGoodDO::getOrganId, organId))
.stream().collect(Collectors.toMap(PlateGoodDO::getGoodsId, p -> p)); .stream().collect(Collectors.toMap(PlateGoodDO::getGoodsId, p -> p));
for (PlateImportExcelVO importPart : batch) { // 整理到insertLis、updateList
PlateGoodDO existPlate = plateGoodMap.get(importPart.getGoodsId()); doBatch(batch, plateGoodMap, organId, isUpdateSupport, insertList, updateList);
if (existPlate == null) {
PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class).setOrganId(organId); } catch (Exception e) {
plateGoodDO.setColorBlack(EMPTY_STRING) boolean b = hasError.get();
.setBrand(EMPTY_STRING) if (!b) {
.setSpec(getEmpty(plateGoodDO.getSpec())) hasError.set(true);
.setRemark(getEmpty(plateGoodDO.getRemark()))
.setTexture(ObjectUtil.isNull(plateGoodDO.getTexture()) ? false : plateGoodDO.getTexture())
.setOrganId(organId)
.setDeleted(false);
insertList.add(plateGoodDO);
} else if (!isUpdateSupport) {
PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class)
.setOrganId(organId)
.setId(existPlate.getId());
updateList.add(plateGoodDO);
}
}
} catch (Exception e) {
boolean b = hasError.get();
if (!b) {
hasError.set(true);
}
} finally {
latch.countDown(); // 任务完成,计数器减1
} }
}); } finally {
latch.countDown(); // 任务完成,计数器减1
}
}); });
} }
@@ -260,6 +242,39 @@ public class PlateManageServiceImpl implements PlateManageService {
return hasError.get(); return hasError.get();
} }
/**
* 遍历批次列表,存在更新,不存在新增
*
* @param batch
* @param plateGoodMap 已经存在goodsId的plate map
* @param organId
* @param isUpdateSupport
* @param insertList
* @param updateList
*/
private void doBatch(List<PlateImportExcelVO> batch, Map<String, PlateGoodDO> plateGoodMap, Long organId,
boolean isUpdateSupport, List<PlateGoodDO> insertList, List<PlateGoodDO> updateList) {
for (PlateImportExcelVO importPart : batch) {
PlateGoodDO existPlate = plateGoodMap.get(importPart.getGoodsId());
if (existPlate == null) {
PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class).setOrganId(organId);
plateGoodDO.setColorBlack(EMPTY_STRING)
.setBrand(EMPTY_STRING)
.setSpec(getEmpty(plateGoodDO.getSpec()))
.setRemark(getEmpty(plateGoodDO.getRemark()))
.setTexture(getDefaultFalse(plateGoodDO.getTexture()))
.setOrganId(organId)
.setDeleted(false);
insertList.add(plateGoodDO);
} else if (!isUpdateSupport) {
PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class)
.setOrganId(organId)
.setId(existPlate.getId());
updateList.add(plateGoodDO);
}
}
}
/** /**
* 每batchSize条数据处理一次DO * 每batchSize条数据处理一次DO
* *
@@ -309,13 +324,13 @@ public class PlateManageServiceImpl implements PlateManageService {
} }
/** /**
* value为空返回0.0 * value为空返回false
* *
* @param value * @param value
* @return * @return
*/ */
private double getZeroDouble(Double value) { private Boolean getDefaultFalse(Boolean value) {
return ObjectUtil.defaultIfNull(value, 0.0); return ObjectUtil.defaultIfNull(value, false);
} }
@Override @Override