|
@@ -155,6 +155,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
SubUserCustomMapper subUserCustomMapper;
|
|
|
@Resource
|
|
|
OperationRecordService operationRecordService;
|
|
|
+ @Resource
|
|
|
+ ProjectBasecostService projectBasecostService;
|
|
|
|
|
|
|
|
|
@Resource
|
|
@@ -195,7 +197,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//分页获取项目列表
|
|
|
@Override
|
|
|
public HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
|
|
|
- Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder, HttpServletRequest request) {
|
|
|
+ Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
try {
|
|
|
//通过公司id获取该公司所有的项目列表
|
|
@@ -241,13 +243,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
queryWrapper.like("project_name", keyword);
|
|
|
} else if (searchField == 2){
|
|
|
queryWrapper.like("project_code", keyword);
|
|
|
- }else if(searchField == 3){
|
|
|
- List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("job_number", keyword));
|
|
|
- if(userList.size()>0){
|
|
|
- queryWrapper.eq("incharger_id",userList.get(0).getId());
|
|
|
- }else queryWrapper.eq("incharger_id",0);
|
|
|
}
|
|
|
}
|
|
|
+ if(!StringUtils.isEmpty(inchagerId)){
|
|
|
+ queryWrapper.eq("incharger_id",inchagerId);
|
|
|
+ }
|
|
|
if (status != null && status != 0) {
|
|
|
queryWrapper.eq("status", status);
|
|
|
}
|
|
@@ -658,7 +658,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
timer.setProjectName(name);
|
|
|
projectTimerMapper.update(timer, new QueryWrapper<ProjectTimer>().eq("project_id", id));
|
|
|
if (projectBaseCostData != null) {
|
|
|
- List<ProjectBasecost> costList = updateProjectBaseCostData(projectBaseCostData, p.getId());
|
|
|
+ HttpRespMsg respMsg = updateProjectBaseCostData(projectBaseCostData, p.getId());
|
|
|
+ List<ProjectBasecost> costList = (List<ProjectBasecost>) respMsg.data;
|
|
|
+ if(costList==null){
|
|
|
+ return respMsg;
|
|
|
+ }
|
|
|
|
|
|
//如果不存在基线成本快照,则生成
|
|
|
List<EarningSnapshot> earningSnapshots = earningSnapshotMapper.selectList(new QueryWrapper<EarningSnapshot>().eq("project_id", p.getId()).orderByDesc("id").last("limit 1"));
|
|
@@ -871,17 +875,28 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
|
|
|
//更新项目的基线成本数据
|
|
|
- private List<ProjectBasecost> updateProjectBaseCostData(String data, Integer projectId) {
|
|
|
+ private HttpRespMsg updateProjectBaseCostData(String data, Integer projectId) {
|
|
|
+ HttpRespMsg httpRespMsg=new HttpRespMsg();
|
|
|
JSONArray array = JSONArray.parseArray(data);
|
|
|
- projectBasecostMapper.delete(new QueryWrapper<ProjectBasecost>().eq("project_id", projectId));
|
|
|
+ List<ProjectCurrentcost> projectCurrentcostList = projectCurrentcostMapper.selectList(new QueryWrapper<ProjectCurrentcost>().eq("project_id", projectId));
|
|
|
List<ProjectBasecost> costList = new ArrayList<>();
|
|
|
for (int i=0;i<array.size(); i++) {
|
|
|
ProjectBasecost projectBasecost = JSONObject.toJavaObject(array.getJSONObject(i), ProjectBasecost.class);
|
|
|
projectBasecost.setProjectId(projectId);
|
|
|
- projectBasecostMapper.insert(projectBasecost);
|
|
|
+ Optional<ProjectCurrentcost> first = projectCurrentcostList.stream().filter(pc -> pc.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ ProjectCurrentcost projectCurrentcost = first.get();
|
|
|
+ if(projectCurrentcost.getBaseAmount()>projectBasecost.getBaseAmount()){
|
|
|
+ httpRespMsg.setError("成本基线"+projectBasecost.getBaseName()+"预算小于当前基线预算");
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+ }
|
|
|
costList.add(projectBasecost);
|
|
|
}
|
|
|
- return costList;
|
|
|
+ projectBasecostMapper.delete(new QueryWrapper<ProjectBasecost>().eq("project_id", projectId));
|
|
|
+ projectBasecostService.saveBatch(costList);
|
|
|
+ httpRespMsg.data=costList;
|
|
|
+ return httpRespMsg;
|
|
|
}
|
|
|
|
|
|
private int getNotNullInt(Integer integer) {
|
|
@@ -1421,16 +1436,27 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
return msg;
|
|
|
}
|
|
|
//计算项目总成本
|
|
|
- projectBasecostMapper.delete(new QueryWrapper<ProjectBasecost>().eq("project_id", project.getId()));
|
|
|
JSONArray array = JSONArray.parseArray(baseCostData);
|
|
|
double totalBudget = 0;
|
|
|
+ List<ProjectCurrentcost> projectCurrentcostList = projectCurrentcostMapper.selectList(new QueryWrapper<ProjectCurrentcost>().eq("project_id", id));
|
|
|
+ List<ProjectBasecost> projectBasecostList=new ArrayList<>();
|
|
|
for (int i=0;i<array.size(); i++) {
|
|
|
JSONObject obj = array.getJSONObject(i);
|
|
|
ProjectBasecost cost = JSONObject.toJavaObject(obj, ProjectBasecost.class);
|
|
|
cost.setProjectId(project.getId());
|
|
|
- projectBasecostMapper.insert(cost);
|
|
|
+ Optional<ProjectCurrentcost> first = projectCurrentcostList.stream().filter(pc -> pc.getBaseId().equals(cost.getBaseId())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ ProjectCurrentcost projectCurrentcost = first.get();
|
|
|
+ if(projectCurrentcost.getBaseAmount()>cost.getBaseAmount()){
|
|
|
+ msg.setError("成本基线"+cost.getBaseName()+"预算小于当前基线预算");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ projectBasecostList.add(cost);
|
|
|
totalBudget += cost.getBaseAmount();
|
|
|
}
|
|
|
+ projectBasecostMapper.delete(new QueryWrapper<ProjectBasecost>().eq("project_id", project.getId()));
|
|
|
+ projectBasecostService.saveBatch(projectBasecostList);
|
|
|
project.setBudget(totalBudget);
|
|
|
projectMapper.updateById(project);
|
|
|
//增加基线快照
|
|
@@ -3533,7 +3559,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
userId = user.getId();
|
|
|
}
|
|
|
List<HashMap<String, Object>> list = projectMapper.getExportData(user.getCompanyId(), userId);
|
|
|
- HttpRespMsg projectPage = getProjectPage(null, null, null, null, null, null, null, null,null, null, null, request);
|
|
|
+ HttpRespMsg projectPage = getProjectPage(null, null, null, null, null, null, null, null,null, null, null,null, request);
|
|
|
Map<String,Object> resultMap= (Map<String, Object>) projectPage.data;
|
|
|
List<ProjectVO> projectVOList= (List<ProjectVO>) resultMap.get("records");
|
|
|
List<String> nameList= (List<String>) resultMap.get("nameList");
|