Commit ec98a0ca authored by 刘帅's avatar 刘帅

Merge remote-tracking branch 'origin/dev_repair'

parents 34fb2562 1c796318
......@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Collection;
......@@ -124,6 +125,12 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
baseMapper.delete(lqw);
// 汇总原总工时
//总工时均分
BigDecimal hour = formProject.getStandardManHour().divide(
BigDecimal.valueOf(bo.getDispatchIdList().size()), 1, RoundingMode.HALF_DOWN
);
BigDecimal totalHour = hour.multiply(BigDecimal.valueOf(bo.getDispatchIdList().size()));
BigDecimal lostHour = formProject.getStandardManHour().subtract(totalHour);
// 批量新增派工人员列表
List<ErpRepairFormProjectDispatch> collect = bo.getDispatchIdList().stream().map(item -> {
ErpRepairFormProjectDispatch projectDispatch = new ErpRepairFormProjectDispatch();
......@@ -140,17 +147,20 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
projectDispatch.setMaintainUserName(userVo.getName());
projectDispatch.setMaintainJobNumber(userVo.getJobNumber());
projectDispatch.setMaintainUserState(userVo.getState());
BigDecimal hour = formProject.getStandardManHour().divide(
BigDecimal.valueOf(bo.getDispatchIdList().size()), 2, RoundingMode.HALF_UP
);
projectDispatch.setDispatchManHour(hour);
projectDispatch.setActualManHour(hour);
// projectDispatch.setDeductManHour(hour);
// 汇总实际总工时
formProject.setActualTime(hour);
return projectDispatch;
}).collect(Collectors.toList());
//处理最后一个
if (bo.getDispatchIdList().size() > 1) {
ErpRepairFormProjectDispatch projectDispatch = collect.get(collect.size() - 1);
projectDispatch.setDispatchManHour(projectDispatch.getDispatchManHour().add(lostHour));
projectDispatch.setActualManHour(hour);
}
formProject.setIsDispatch(IsEnableStatus.YES.getCode());
formProject.setActualTime(formProject.getStandardManHour());
projectMapper.updateById(formProject);
return baseMapper.insertBatch(collect);
}
......@@ -167,14 +177,7 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
projectDispatch.setDeductManHour(bo.getDeductManHour());
boolean flag = baseMapper.updateById(projectDispatch) > 0;
List<ErpRepairFormProjectDispatch> formProjectDispatches = baseMapper.selectList(Wrappers.<ErpRepairFormProjectDispatch>lambdaQuery()
.eq(ErpRepairFormProjectDispatch::getRepairFormProjectId, projectDispatch.getRepairFormProjectId()));
//计算总工时
BigDecimal reduce = formProjectDispatches.stream().map(ErpRepairFormProjectDispatch::getActualManHour).reduce(BigDecimal.ZERO, BigDecimal::add);
ErpRepairFormProject project = new ErpRepairFormProject();
project.setId(projectDispatch.getRepairFormProjectId());
project.setActualTime(reduce);
projectMapper.updateById(project);
updateFormProject(projectDispatch.getRepairFormProjectId());
return flag;
}
......@@ -216,10 +219,34 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
* 批量删除报修单-报修项目-派工
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
Iterator<Long> iterator = ids.iterator();
Long id = iterator.hasNext() ? iterator.next() : null;
ErpRepairFormProjectDispatch projectDispatch = baseMapper.selectById(id);
boolean flag = baseMapper.deleteBatchIds(ids) > 0;
updateFormProject(projectDispatch.getRepairFormProjectId());
return flag;
}
/**
* 更新报修单-报修项目实际时间
* @param projectId
*/
private void updateFormProject(Long projectId){
List<ErpRepairFormProjectDispatch> formProjectDispatches = baseMapper.selectList(Wrappers.<ErpRepairFormProjectDispatch>lambdaQuery()
.eq(ErpRepairFormProjectDispatch::getRepairFormProjectId, projectId));
//计算总工时
BigDecimal reduce = formProjectDispatches.stream().map(ErpRepairFormProjectDispatch::getActualManHour).reduce(BigDecimal.ZERO, BigDecimal::add);
ErpRepairFormProject project = new ErpRepairFormProject();
project.setId(projectId);
project.setActualTime(reduce);
projectMapper.updateById(project);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment