Commit 1c796318 authored by 张昊飞's avatar 张昊飞

保修单详情修改

parent 3839c385
...@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
...@@ -124,6 +125,12 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr ...@@ -124,6 +125,12 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
baseMapper.delete(lqw); 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 -> { List<ErpRepairFormProjectDispatch> collect = bo.getDispatchIdList().stream().map(item -> {
ErpRepairFormProjectDispatch projectDispatch = new ErpRepairFormProjectDispatch(); ErpRepairFormProjectDispatch projectDispatch = new ErpRepairFormProjectDispatch();
...@@ -140,17 +147,20 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr ...@@ -140,17 +147,20 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
projectDispatch.setMaintainUserName(userVo.getName()); projectDispatch.setMaintainUserName(userVo.getName());
projectDispatch.setMaintainJobNumber(userVo.getJobNumber()); projectDispatch.setMaintainJobNumber(userVo.getJobNumber());
projectDispatch.setMaintainUserState(userVo.getState()); projectDispatch.setMaintainUserState(userVo.getState());
BigDecimal hour = formProject.getStandardManHour().divide(
BigDecimal.valueOf(bo.getDispatchIdList().size()), 2, RoundingMode.HALF_UP
);
projectDispatch.setDispatchManHour(hour); projectDispatch.setDispatchManHour(hour);
projectDispatch.setActualManHour(hour); projectDispatch.setActualManHour(hour);
// projectDispatch.setDeductManHour(hour); // projectDispatch.setDeductManHour(hour);
// 汇总实际总工时
formProject.setActualTime(hour);
return projectDispatch; return projectDispatch;
}).collect(Collectors.toList()); }).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.setIsDispatch(IsEnableStatus.YES.getCode());
formProject.setActualTime(formProject.getStandardManHour());
projectMapper.updateById(formProject); projectMapper.updateById(formProject);
return baseMapper.insertBatch(collect); return baseMapper.insertBatch(collect);
} }
...@@ -167,14 +177,7 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr ...@@ -167,14 +177,7 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
projectDispatch.setDeductManHour(bo.getDeductManHour()); projectDispatch.setDeductManHour(bo.getDeductManHour());
boolean flag = baseMapper.updateById(projectDispatch) > 0; boolean flag = baseMapper.updateById(projectDispatch) > 0;
List<ErpRepairFormProjectDispatch> formProjectDispatches = baseMapper.selectList(Wrappers.<ErpRepairFormProjectDispatch>lambdaQuery() updateFormProject(projectDispatch.getRepairFormProjectId());
.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);
return flag; return flag;
} }
...@@ -216,10 +219,34 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr ...@@ -216,10 +219,34 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr
* 批量删除报修单-报修项目-派工 * 批量删除报修单-报修项目-派工
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验 //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