|
|
@ -38,110 +38,27 @@ public class TesFaMstrServiceImpl implements TesFaMstrService { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private TeaTaskSubMapper teaTaskSubMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private FixedAssetsMapper fixedAssetsMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void synchronizeData() { |
|
|
|
log.debug("===============================固定资产QAD同步数据==============================="); |
|
|
|
log.info("===============================固定资产QAD同步数据==============================="); |
|
|
|
List<TeaTaskSubDO> tasks = getTeaTaskSubDOS(); |
|
|
|
if (tasks.isEmpty()) { |
|
|
|
log.info("TesFaMstrService.SynchronizeData:没有需要同步的数据"); |
|
|
|
return; |
|
|
|
} |
|
|
|
List<String> taskIds = tasks.stream().map(TeaTaskSubDO::getTaskID).filter(Objects::nonNull).toList(); |
|
|
|
if (taskIds.isEmpty()) { |
|
|
|
log.info("TesFaMstrService.SynchronizeData:TaskId不存在"); |
|
|
|
return; |
|
|
|
} |
|
|
|
List<TesFaMstrDO> tesFaMstrDOS = getTesFaMstrDOS(taskIds); |
|
|
|
|
|
|
|
if (tesFaMstrDOS.isEmpty()) { |
|
|
|
log.info("TesFaMstrService.SynchronizeData:tesFaMstrDOS 资产集合不存在"); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
int taskStatus = 2; |
|
|
|
String failedInfo = "success"; |
|
|
|
LocalDateTime updateTime = LocalDateTime.now(); |
|
|
|
try { |
|
|
|
Map<String, List<TesFaMstrDO>> map = tesFaMstrDOS.stream().collect(Collectors.groupingBy(TesFaMstrDO::getFixedAssetId)); |
|
|
|
Map<String, Long> fixedAssetsMap = fixedAssetsMapper.selectList( |
|
|
|
new LambdaQueryWrapper<FixedAssetsDO>() |
|
|
|
.in(FixedAssetsDO::getNumber, map.keySet()) |
|
|
|
.eq(FixedAssetsDO::getCategory, "1") |
|
|
|
).stream().collect(Collectors.toMap(FixedAssetsDO::getNumber, FixedAssetsDO::getId)); |
|
|
|
List<FixedAssetsDO> saveList = map.values().stream() |
|
|
|
.map(item -> item.stream().sorted(Comparator.comparing(TesFaMstrDO::getCreateTime).reversed()).toList().get(0)) |
|
|
|
.map(item -> { |
|
|
|
FixedAssetsDO fixedAssetsDO = new FixedAssetsDO(); |
|
|
|
String fixedAssetId = item.getFixedAssetId(); |
|
|
|
Long id = fixedAssetsMap.get(fixedAssetId); |
|
|
|
if (id != null) { |
|
|
|
fixedAssetsDO.setId(id); |
|
|
|
} |
|
|
|
fixedAssetsDO.setCategory("1"); |
|
|
|
// 编号
|
|
|
|
fixedAssetsDO.setNumber(fixedAssetId); |
|
|
|
// 名称
|
|
|
|
fixedAssetsDO.setName(item.getFixedAssetName()); |
|
|
|
// 库位编号
|
|
|
|
fixedAssetsDO.setLocationNumber(item.getLocation()); |
|
|
|
// 投入使用时间
|
|
|
|
fixedAssetsDO.setBeginUseDate(item.getFixedAssetStart()); |
|
|
|
// 期间费用科目描述
|
|
|
|
fixedAssetsDO.setCostSubjectDesc(item.getExpenseName()); |
|
|
|
// 供应商编号
|
|
|
|
fixedAssetsDO.setSupplierNumber(item.getSupplier()); |
|
|
|
// 制造商
|
|
|
|
fixedAssetsDO.setManufacturer(item.getManufacture()); |
|
|
|
// 单位
|
|
|
|
fixedAssetsDO.setUnit(item.getUm()); |
|
|
|
// 数量
|
|
|
|
fixedAssetsDO.setQty(item.getQuantity()); |
|
|
|
fixedAssetsDO.setSourceType("QAD"); |
|
|
|
return fixedAssetsDO; |
|
|
|
}).toList(); |
|
|
|
fixedAssetsMapper.saveOrUpdateBatch(saveList); |
|
|
|
} catch (Exception e) { |
|
|
|
taskStatus = 3; |
|
|
|
failedInfo = e.getMessage(); |
|
|
|
} |
|
|
|
public void findQadDataList() { |
|
|
|
|
|
|
|
for (TeaTaskSubDO task : tasks) { |
|
|
|
task.setTaskState(taskStatus); |
|
|
|
task.setFailedInfo(failedInfo); |
|
|
|
task.setUpdateTime(updateTime); |
|
|
|
task.setUpdateUser("BJSYS"); |
|
|
|
} |
|
|
|
updateTask(tasks); |
|
|
|
} |
|
|
|
@DS(DataSourceEnum.SQL_SERVER_All) |
|
|
|
private List<TesFaMstrDO> getTesFaMstrDOS(List<String> taskIds) { |
|
|
|
List<TesFaMstrDO> tesFaMstrDOS = tesFaMstrMapper.selectList( |
|
|
|
new LambdaQueryWrapper<TesFaMstrDO>() |
|
|
|
.in(TesFaMstrDO::getTaskid, taskIds) |
|
|
|
); |
|
|
|
return tesFaMstrDOS; |
|
|
|
@Override |
|
|
|
public void updateQadDataList(List<TeaTaskSubDO> list) { |
|
|
|
if (!list.isEmpty()) { |
|
|
|
teaTaskSubMapper.updateBatch(list); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@DS(DataSourceEnum.SQL_SERVER_All) |
|
|
|
private List<TeaTaskSubDO> getTeaTaskSubDOS() { |
|
|
|
List<TeaTaskSubDO> tasks = teaTaskSubMapper.selectList( |
|
|
|
new LambdaQueryWrapper<TeaTaskSubDO>() |
|
|
|
.eq(TeaTaskSubDO::getTableName, "TES_FA_MSTR") |
|
|
|
.eq(TeaTaskSubDO::getCreator, "QAD") |
|
|
|
.eq(TeaTaskSubDO::getSubscriber, "BJSYS") |
|
|
|
.in(TeaTaskSubDO::getTaskState, 0, 3) |
|
|
|
); |
|
|
|
return tasks; |
|
|
|
@Override |
|
|
|
public List<TeaTaskSubDO> getTeaTaskSubDOS() { |
|
|
|
return teaTaskSubMapper.findTaskList2(); |
|
|
|
} |
|
|
|
|
|
|
|
@DS(DataSourceEnum.SQL_SERVER_All) |
|
|
|
private void updateTask(List<TeaTaskSubDO> tasks) { |
|
|
|
if (!tasks.isEmpty()) { |
|
|
|
teaTaskSubMapper.updateBatch(tasks); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public List<TesFaMstrDO> getTesFaMstrDOS(List<String> taskIds) { |
|
|
|
return tesFaMstrMapper.findListByTaskIds(taskIds); |
|
|
|
} |
|
|
|
} |
|
|
|