|
@ -72,17 +72,27 @@ public class BmsCenterExtendServiceImpl extends ServiceImpl<BmsCenterExtendMappe |
|
|
if(targetCenter.getTargetCenterId().equals(param.getSourceCenterId())){ |
|
|
if(targetCenter.getTargetCenterId().equals(param.getSourceCenterId())){ |
|
|
Assert.throwEx("后继成本中心与当前成本中心相同"); |
|
|
Assert.throwEx("后继成本中心与当前成本中心相同"); |
|
|
} |
|
|
} |
|
|
boolean b = this.checkIsStop(type,targetCenter.getTargetCenterId()); |
|
|
|
|
|
if(b){ |
|
|
|
|
|
Assert.throwEx("部分后继成本中心已分配"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TbsCenterDto centerDto = centerDtoService.getCenterDto(type,centerId); |
|
|
TbsCenterDto centerDto = centerDtoService.getCenterDto(type,centerId); |
|
|
//停止时间
|
|
|
//停止时间
|
|
|
//LocalDateTime nowTime = LocalDateTime.now();
|
|
|
|
|
|
LocalDateTime nowTime = param.getExtendDate().atStartOfDay(); |
|
|
LocalDateTime nowTime = param.getExtendDate().atStartOfDay(); |
|
|
//当前节点
|
|
|
|
|
|
BmsCenterExtend currentCenter = new BmsCenterExtend(); |
|
|
|
|
|
|
|
|
BmsCenterExtend currentCenter; |
|
|
|
|
|
if(param.getId()!=null){ |
|
|
|
|
|
//代办更新,删除历史数据
|
|
|
|
|
|
LambdaQueryWrapper<BmsCenterExtend> rmLqw1 = new LambdaQueryWrapper<>(); |
|
|
|
|
|
rmLqw1.eq(BmsCenterExtend::getSourceId,param.getId()); |
|
|
|
|
|
this.remove(rmLqw1); |
|
|
|
|
|
|
|
|
|
|
|
currentCenter = this.getById(param.getId()); |
|
|
|
|
|
currentCenter.setStopTime(nowTime); |
|
|
|
|
|
this.updateById(currentCenter); |
|
|
|
|
|
}else { |
|
|
|
|
|
//代办新增
|
|
|
|
|
|
currentCenter = new BmsCenterExtend(); |
|
|
currentCenter.setSourceId(0L); |
|
|
currentCenter.setSourceId(0L); |
|
|
currentCenter.setCenterType(type); |
|
|
currentCenter.setCenterType(type); |
|
|
currentCenter.setPathIds("0"); |
|
|
currentCenter.setPathIds("0"); |
|
@ -94,22 +104,8 @@ public class BmsCenterExtendServiceImpl extends ServiceImpl<BmsCenterExtendMappe |
|
|
currentCenter.setStopFlag(1); |
|
|
currentCenter.setStopFlag(1); |
|
|
currentCenter.setWeightRate(n100); |
|
|
currentCenter.setWeightRate(n100); |
|
|
this.save(currentCenter); |
|
|
this.save(currentCenter); |
|
|
//历史分摊节点
|
|
|
|
|
|
LambdaQueryWrapper<BmsCenterExtend> lqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getCenterType,param.getType()); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getCenterId,param.getSourceCenterId()); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getStopFlag,0); |
|
|
|
|
|
List<BmsCenterExtend> sourcesCenterList = this.list(lqw); |
|
|
|
|
|
List<BmsCenterExtend> updList = this.list(lqw); |
|
|
|
|
|
for (BmsCenterExtend sourceCenter : sourcesCenterList) { |
|
|
|
|
|
if(sourceCenter.getStopFlag()==0){ |
|
|
|
|
|
BmsCenterExtend centerExtend = new BmsCenterExtend(); |
|
|
|
|
|
centerExtend.setId(sourceCenter.getId()); |
|
|
|
|
|
centerExtend.setStopFlag(1); |
|
|
|
|
|
centerExtend.setStopTime(nowTime); |
|
|
|
|
|
updList.add(centerExtend); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//新的继承节点
|
|
|
//新的继承节点
|
|
|
for (BmsCenterExtendBo.Item targetCenter : targetCenters) { |
|
|
for (BmsCenterExtendBo.Item targetCenter : targetCenters) { |
|
|
TbsCenterDto centerDto2 = centerDtoService.getCenterDto(currentCenter.getCenterType(),targetCenter.getTargetCenterId()); |
|
|
TbsCenterDto centerDto2 = centerDtoService.getCenterDto(currentCenter.getCenterType(),targetCenter.getTargetCenterId()); |
|
@ -127,68 +123,10 @@ public class BmsCenterExtendServiceImpl extends ServiceImpl<BmsCenterExtendMappe |
|
|
currentChildCenter.setStopFlag(0); |
|
|
currentChildCenter.setStopFlag(0); |
|
|
currentChildCenter.setWeightRate(weightRate); |
|
|
currentChildCenter.setWeightRate(weightRate); |
|
|
this.save(currentChildCenter); |
|
|
this.save(currentChildCenter); |
|
|
|
|
|
//保持后继人员
|
|
|
this.toSaveExtendUser( currentCenter, targetCenter.getUserList(), centerDto2, currentChildCenter.getId()); |
|
|
this.toSaveExtendUser( currentCenter, targetCenter.getUserList(), centerDto2, currentChildCenter.getId()); |
|
|
} |
|
|
} |
|
|
this.updateBatchById(updList); |
|
|
|
|
|
|
|
|
|
|
|
return currentCenter; |
|
|
return currentCenter; |
|
|
|
|
|
|
|
|
/*//校验
|
|
|
|
|
|
String type = param.getType(); |
|
|
|
|
|
String centerId = param.getSourceCenterId(); |
|
|
|
|
|
BigDecimal n100 = new BigDecimal("100"); |
|
|
|
|
|
List<BmsCenterExtendBo.Item> targetCenters = param.getTargetCenters(); |
|
|
|
|
|
BigDecimal totalRate = BigDecimal.ZERO; |
|
|
|
|
|
for (BmsCenterExtendBo.Item center : targetCenters) { |
|
|
|
|
|
totalRate=totalRate.add(center.getWeightRate()); |
|
|
|
|
|
} |
|
|
|
|
|
if(totalRate.compareTo(n100)!=0){ |
|
|
|
|
|
Assert.throwEx("权重合计必须百分百"); |
|
|
|
|
|
} |
|
|
|
|
|
if (this.checkIsStop(type,centerId)){ |
|
|
|
|
|
Assert.throwEx("当前成本中心已分配"); |
|
|
|
|
|
} |
|
|
|
|
|
TbsCenterDto centerDto = centerDtoService.getCenterDto(type,centerId); |
|
|
|
|
|
//停止时间
|
|
|
|
|
|
LocalDateTime nowTime = LocalDateTime.now(); |
|
|
|
|
|
//当前节点
|
|
|
|
|
|
BmsCenterExtend currentCenter = new BmsCenterExtend(); |
|
|
|
|
|
currentCenter.setSourceId(0L); |
|
|
|
|
|
currentCenter.setCenterType(type); |
|
|
|
|
|
currentCenter.setPathIds("0"); |
|
|
|
|
|
currentCenter.setCenterId(centerId); |
|
|
|
|
|
currentCenter.setCenterCode(centerDto.getCenterCode()); |
|
|
|
|
|
currentCenter.setCenterName(centerDto.getCenterName()); |
|
|
|
|
|
currentCenter.setStartTime(centerDto.getCreateTime()); |
|
|
|
|
|
currentCenter.setStopTime(nowTime); |
|
|
|
|
|
currentCenter.setStopFlag(1); |
|
|
|
|
|
currentCenter.setWeightRate(n100); |
|
|
|
|
|
this.save(currentCenter); |
|
|
|
|
|
//历史分摊节点
|
|
|
|
|
|
LambdaQueryWrapper<BmsCenterExtend> lqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getCenterType,param.getType()); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getCenterId,param.getSourceCenterId()); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getStopFlag,0); |
|
|
|
|
|
List<BmsCenterExtend> sourcesCenterList = this.list(lqw); |
|
|
|
|
|
|
|
|
|
|
|
sourcesCenterList.add(currentCenter); |
|
|
|
|
|
|
|
|
|
|
|
List<BmsCenterExtend> newList = new ArrayList<>(); |
|
|
|
|
|
List<BmsCenterExtend> updList = new ArrayList<>(); |
|
|
|
|
|
for (BmsCenterExtend sourceCenter : sourcesCenterList) { |
|
|
|
|
|
newList.addAll(buildCenterExtend(sourceCenter,targetCenters,nowTime)); |
|
|
|
|
|
if(sourceCenter.getStopFlag()==0){ |
|
|
|
|
|
BmsCenterExtend centerExtend = new BmsCenterExtend(); |
|
|
|
|
|
centerExtend.setId(sourceCenter.getId()); |
|
|
|
|
|
centerExtend.setStopFlag(1); |
|
|
|
|
|
centerExtend.setStopTime(nowTime); |
|
|
|
|
|
updList.add(centerExtend); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(updList)){ |
|
|
|
|
|
this.updateBatchById(updList); |
|
|
|
|
|
} |
|
|
|
|
|
this.saveBatch(newList);*/ |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void toSaveExtendUser(BmsCenterExtend currentCenter, List<BmsCenterExtendBo.AllocationUser> userList, TbsCenterDto centerDto2, Long childExtendId) { |
|
|
private void toSaveExtendUser(BmsCenterExtend currentCenter, List<BmsCenterExtendBo.AllocationUser> userList, TbsCenterDto centerDto2, Long childExtendId) { |
|
@ -218,110 +156,6 @@ public class BmsCenterExtendServiceImpl extends ServiceImpl<BmsCenterExtendMappe |
|
|
centerExtendUserService.saveBatch(extendUserList); |
|
|
centerExtendUserService.saveBatch(extendUserList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private List<BmsCenterExtend> buildCenterExtend(BmsCenterExtend sourceCenter,List<BmsCenterExtendBo.Item> targetCenters,LocalDateTime nowTime) { |
|
|
|
|
|
BigDecimal n100 = new BigDecimal("100"); |
|
|
|
|
|
List<BmsCenterExtend> newList = new ArrayList<>(); |
|
|
|
|
|
for (BmsCenterExtendBo.Item targetCenter : targetCenters) { |
|
|
|
|
|
TbsCenterDto centerDto = centerDtoService.getCenterDto(sourceCenter.getCenterType(),targetCenter.getTargetCenterId()); |
|
|
|
|
|
BigDecimal weightRate = sourceCenter.getWeightRate() |
|
|
|
|
|
.multiply(sourceCenter.getWeightRate()) |
|
|
|
|
|
.divide(n100); |
|
|
|
|
|
BmsCenterExtend currentCenter = new BmsCenterExtend(); |
|
|
|
|
|
currentCenter.setSourceId(sourceCenter.getId()); |
|
|
|
|
|
currentCenter.setCenterType(sourceCenter.getCenterType()); |
|
|
|
|
|
currentCenter.setPathIds(sourceCenter.getPathIds()+"_"+sourceCenter.getId()); |
|
|
|
|
|
currentCenter.setCenterId(centerDto.getId()); |
|
|
|
|
|
currentCenter.setCenterCode(centerDto.getCenterCode()); |
|
|
|
|
|
currentCenter.setCenterName(centerDto.getCenterName()); |
|
|
|
|
|
currentCenter.setStartTime(nowTime); |
|
|
|
|
|
currentCenter.setStopFlag(0); |
|
|
|
|
|
currentCenter.setWeightRate(weightRate); |
|
|
|
|
|
newList.add(currentCenter); |
|
|
|
|
|
} |
|
|
|
|
|
return newList; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
|
public void allocation4Update(BmsCenterExtendBo param) { |
|
|
|
|
|
String type = param.getType(); |
|
|
|
|
|
String centerId = param.getSourceCenterId(); |
|
|
|
|
|
BigDecimal n100 = new BigDecimal("100"); |
|
|
|
|
|
List<BmsCenterExtendBo.Item> targetCenters = param.getTargetCenters(); |
|
|
|
|
|
BigDecimal totalRate = BigDecimal.ZERO; |
|
|
|
|
|
for (BmsCenterExtendBo.Item center : targetCenters) { |
|
|
|
|
|
totalRate=totalRate.add(center.getWeightRate()); |
|
|
|
|
|
} |
|
|
|
|
|
if(totalRate.compareTo(n100)!=0){ |
|
|
|
|
|
Assert.throwEx("权重合计必须百分百"); |
|
|
|
|
|
} |
|
|
|
|
|
for (BmsCenterExtendBo.Item targetCenter : targetCenters) { |
|
|
|
|
|
if(targetCenter.getTargetCenterId().equals(param.getSourceCenterId())){ |
|
|
|
|
|
Assert.throwEx("后继成本中心与当前成本中心相同"); |
|
|
|
|
|
} |
|
|
|
|
|
boolean b = this.checkIsStop(type,targetCenter.getTargetCenterId()); |
|
|
|
|
|
if(b){ |
|
|
|
|
|
Assert.throwEx("部分后继成本中心已分配"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
List<BmsCenterExtendBo.Item> saveExtendBo = targetCenters.stream().filter(a->a.getId()==null).collect(Collectors.toList()); |
|
|
|
|
|
List<BmsCenterExtendBo.Item> updExtendBo = targetCenters.stream().filter(a->a.getId()!=null).collect(Collectors.toList()); |
|
|
|
|
|
List<Long> updateIds = targetCenters.stream().filter(a->a.getId()!=null).map(BmsCenterExtendBo.Item::getId).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
LocalDateTime nowTime = param.getExtendDate().atStartOfDay(); |
|
|
|
|
|
//更新被继承成本
|
|
|
|
|
|
BmsCenterExtend currentCenter = this.getById(param.getId()); |
|
|
|
|
|
currentCenter.setStopTime(nowTime); |
|
|
|
|
|
this.updateById(currentCenter); |
|
|
|
|
|
//移除
|
|
|
|
|
|
LambdaQueryWrapper<BmsCenterExtend> dellqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
dellqw.eq(BmsCenterExtend::getCenterType,param.getType()); |
|
|
|
|
|
dellqw.eq(BmsCenterExtend::getSourceId,param.getId()); |
|
|
|
|
|
dellqw.notIn(BmsCenterExtend::getId,updateIds); |
|
|
|
|
|
this.remove(dellqw); |
|
|
|
|
|
//新增
|
|
|
|
|
|
for (BmsCenterExtendBo.Item item : saveExtendBo) { |
|
|
|
|
|
//校验是否可添加
|
|
|
|
|
|
if (this.checkIsStop(currentCenter.getCenterType(),item.getTargetCenterId())){ |
|
|
|
|
|
Assert.throwEx("新增的后继成本中心已被停用,请重新选择"); |
|
|
|
|
|
} |
|
|
|
|
|
TbsCenterDto centerDto2 = centerDtoService.getCenterDto(type,centerId); |
|
|
|
|
|
BmsCenterExtend currentChildCenter = new BmsCenterExtend(); |
|
|
|
|
|
currentChildCenter.setSourceId(currentCenter.getId()); |
|
|
|
|
|
currentChildCenter.setCenterType(currentCenter.getCenterType()); |
|
|
|
|
|
currentChildCenter.setPathIds(currentCenter.getPathIds()+"_"+currentCenter.getId()); |
|
|
|
|
|
currentChildCenter.setCenterId(centerDto2.getId()); |
|
|
|
|
|
currentChildCenter.setCenterCode(centerDto2.getCenterCode()); |
|
|
|
|
|
currentChildCenter.setCenterName(centerDto2.getCenterName()); |
|
|
|
|
|
currentChildCenter.setStartTime(currentCenter.getStopTime()); |
|
|
|
|
|
currentChildCenter.setStopFlag(0); |
|
|
|
|
|
currentChildCenter.setWeightRate(item.getWeightRate()); |
|
|
|
|
|
this.save(currentChildCenter); |
|
|
|
|
|
this.toSaveExtendUser( currentCenter, item.getUserList(), centerDto2, currentChildCenter.getId()); |
|
|
|
|
|
} |
|
|
|
|
|
//更新
|
|
|
|
|
|
LambdaQueryWrapper<BmsCenterExtend> lqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw.eq(BmsCenterExtend::getCenterType,param.getType()); |
|
|
|
|
|
lqw.in(BmsCenterExtend::getId,updateIds); |
|
|
|
|
|
List<BmsCenterExtend> sourcesCenterList = this.list(lqw); |
|
|
|
|
|
for (BmsCenterExtend centerExtend : sourcesCenterList) { |
|
|
|
|
|
for (BmsCenterExtendBo.Item item : updExtendBo) { |
|
|
|
|
|
if(centerExtend.getId().equals(item.getId())){ |
|
|
|
|
|
//匹配更新
|
|
|
|
|
|
centerExtend.setWeightRate(item.getWeightRate()); |
|
|
|
|
|
centerExtend.setStartTime(nowTime); |
|
|
|
|
|
this.updateById(centerExtend); |
|
|
|
|
|
LambdaQueryWrapper<BmsCenterExtendUser> delUsrLqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
delUsrLqw.eq(BmsCenterExtendUser::getChildExtId,centerExtend.getId()); |
|
|
|
|
|
centerExtendUserService.remove(delUsrLqw); |
|
|
|
|
|
//重新保存
|
|
|
|
|
|
TbsCenterDto centerDto2 = centerDtoService.getCenterDto(type,item.getTargetCenterId()); |
|
|
|
|
|
this.toSaveExtendUser( currentCenter, item.getUserList(), centerDto2, centerExtend.getId()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|