|
@@ -90,11 +90,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
public HttpRespMsg getProjectList(HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
try {
|
|
|
- //通过公司id获取该公司所有的项目列表
|
|
|
-// Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
|
|
|
-// httpRespMsg.data = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
|
|
|
- //现在是获取本人相关的项目列表
|
|
|
- httpRespMsg.data = projectMapper.getParticipatedProject(request.getHeader("Token"));
|
|
|
+ User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
+ if (user.getRole() == 0) {
|
|
|
+ //普通员工只能看本人相关的项目列表
|
|
|
+ httpRespMsg.data = projectMapper.getParticipatedProject(user.getId());
|
|
|
+ } else {
|
|
|
+ //其他的管理员,都可以看全部的
|
|
|
+ httpRespMsg.data = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
|
|
|
+ }
|
|
|
} catch (NullPointerException e) {
|
|
|
httpRespMsg.setError("验证失败");
|
|
|
return httpRespMsg;
|
|
@@ -176,9 +179,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
String planStartDate,
|
|
|
String planEndDate,
|
|
|
Integer level,
|
|
|
- Integer contractAmount,
|
|
|
+ Double contractAmount,
|
|
|
String projectBaseCostData,
|
|
|
- Integer budget,
|
|
|
+ Double budget,
|
|
|
Integer customerId,
|
|
|
HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
@@ -219,23 +222,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
if (projectMapper.insert(project) == 0) {
|
|
|
httpRespMsg.setError("操作失败");
|
|
|
} else {
|
|
|
- updateProjectBaseCostData(projectBaseCostData, project.getId());
|
|
|
-
|
|
|
- //创建项目涉及到基线成本数据,要填写到快照表中
|
|
|
- EarningSnapshot snapshot = new EarningSnapshot();
|
|
|
- snapshot.setProjectId(project.getId());
|
|
|
- snapshot.setContractAmount(project.getContractAmount());
|
|
|
- snapshot.setCostData(projectBaseCostData);
|
|
|
- snapshot.setCreatorId(user.getId());
|
|
|
- snapshot.setCreatorName(user.getName());
|
|
|
- snapshot.setCostTotal(budget);
|
|
|
-
|
|
|
- if (project.getContractAmount() == null || project.getContractAmount() == 0 ) {
|
|
|
- //无需处理
|
|
|
- } else {
|
|
|
- snapshot.setProfit(project.getContractAmount() - budget);
|
|
|
- snapshot.setProfitPercent(100.0*(project.getContractAmount() - budget)/project.getContractAmount());
|
|
|
- earningSnapshotMapper.insert(snapshot);
|
|
|
+ if (projectBaseCostData != null) {
|
|
|
+ System.out.println("projectBaseCostData===="+projectBaseCostData);
|
|
|
+ updateProjectBaseCostData(projectBaseCostData, project.getId());
|
|
|
+
|
|
|
+ //创建项目涉及到基线成本数据,要填写到快照表中
|
|
|
+ EarningSnapshot snapshot = new EarningSnapshot();
|
|
|
+ snapshot.setProjectId(project.getId());
|
|
|
+ snapshot.setContractAmount(project.getContractAmount());
|
|
|
+ snapshot.setCostData(projectBaseCostData);
|
|
|
+ snapshot.setCreatorId(user.getId());
|
|
|
+ snapshot.setCreatorName(user.getName());
|
|
|
+ snapshot.setCostTotal(budget);
|
|
|
+
|
|
|
+ if (project.getContractAmount() == null || project.getContractAmount() == 0 ) {
|
|
|
+ //无需处理
|
|
|
+ } else {
|
|
|
+ snapshot.setProfit(project.getContractAmount() - budget);
|
|
|
+ snapshot.setProfitPercent(100.0*(project.getContractAmount() - budget)/project.getContractAmount());
|
|
|
+ earningSnapshotMapper.insert(snapshot);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
id = project.getId();
|
|
@@ -275,56 +281,62 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
ProjectTimer timer = new ProjectTimer();
|
|
|
timer.setProjectName(name);
|
|
|
projectTimerMapper.update(timer, new QueryWrapper<ProjectTimer>().eq("project_id", id));
|
|
|
+ if (projectBaseCostData != null) {
|
|
|
+ List<ProjectBasecost> costList = updateProjectBaseCostData(projectBaseCostData, p.getId());
|
|
|
|
|
|
- List<ProjectBasecost> costList = updateProjectBaseCostData(projectBaseCostData, p.getId());
|
|
|
-
|
|
|
- //如果不存在基线成本快照,则生成
|
|
|
- List<EarningSnapshot> earningSnapshots = earningSnapshotMapper.selectList(new QueryWrapper<EarningSnapshot>().eq("project_id", p.getId()).orderByDesc("id").last("limit 1"));
|
|
|
- boolean shouldAdd = false;
|
|
|
- if (earningSnapshots.size() == 0) {
|
|
|
- shouldAdd = true;
|
|
|
- } else {
|
|
|
- //检查是否发生变化
|
|
|
- String data = earningSnapshots.get(0).getCostData();
|
|
|
- if (data == null) {
|
|
|
+ //如果不存在基线成本快照,则生成
|
|
|
+ List<EarningSnapshot> earningSnapshots = earningSnapshotMapper.selectList(new QueryWrapper<EarningSnapshot>().eq("project_id", p.getId()).orderByDesc("id").last("limit 1"));
|
|
|
+ boolean shouldAdd = false;
|
|
|
+ if (earningSnapshots.size() == 0) {
|
|
|
shouldAdd = true;
|
|
|
} else {
|
|
|
- JSONArray oldArray = JSONArray.parseArray(data);
|
|
|
- if (oldArray.size() != costList.size()) {
|
|
|
- //条目数量有变化,需要新增
|
|
|
+ //检查是否发生变化
|
|
|
+ String data = earningSnapshots.get(0).getCostData();
|
|
|
+ if (data == null) {
|
|
|
shouldAdd = true;
|
|
|
} else {
|
|
|
- for (int i=0; i<oldArray.size(); i++) {
|
|
|
- JSONObject jsonObject = oldArray.getJSONObject(i);
|
|
|
- ProjectBasecost projectBasecost = JSONObject.toJavaObject(jsonObject, ProjectBasecost.class);
|
|
|
- Optional<ProjectBasecost> first = costList.stream().filter(cost -> cost.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
|
|
|
- if (first.isPresent()) {
|
|
|
- if (!first.get().getBaseAmount().equals(projectBasecost.getBaseAmount())) {
|
|
|
+ JSONArray oldArray = JSONArray.parseArray(data);
|
|
|
+ if (oldArray.size() != costList.size()) {
|
|
|
+ //条目数量有变化,需要新增
|
|
|
+ shouldAdd = true;
|
|
|
+ } else {
|
|
|
+ for (int i=0; i<oldArray.size(); i++) {
|
|
|
+ JSONObject jsonObject = oldArray.getJSONObject(i);
|
|
|
+ ProjectBasecost projectBasecost = JSONObject.toJavaObject(jsonObject, ProjectBasecost.class);
|
|
|
+ Optional<ProjectBasecost> first = costList.stream().filter(cost -> cost.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ if (!first.get().getBaseAmount().equals(projectBasecost.getBaseAmount())) {
|
|
|
+ shouldAdd = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //有新增的条目,需要增加
|
|
|
shouldAdd = true;
|
|
|
break;
|
|
|
}
|
|
|
- } else {
|
|
|
- //有新增的条目,需要增加
|
|
|
- shouldAdd = true;
|
|
|
- break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ if (shouldAdd) {
|
|
|
+ EarningSnapshot record = new EarningSnapshot();
|
|
|
+ record.setProjectId(p.getId());
|
|
|
+ record.setCreatorId(user.getId());
|
|
|
+ record.setCreatorName(user.getName());
|
|
|
+ record.setContractAmount(p.getContractAmount());
|
|
|
+ record.setCostData(projectBaseCostData);
|
|
|
+ record.setCostTotal(p.getBudget());
|
|
|
+ record.setProfit(p.getContractAmount() - p.getBudget());
|
|
|
+ if (p.getContractAmount() == 0) {
|
|
|
+ record.setProfitPercent(0.0);
|
|
|
+ } else {
|
|
|
+ record.setProfitPercent(100.0*(p.getContractAmount() - p.getBudget())/p.getContractAmount());
|
|
|
+ }
|
|
|
+ earningSnapshotMapper.insert(record);
|
|
|
}
|
|
|
}
|
|
|
- if (shouldAdd) {
|
|
|
- EarningSnapshot record = new EarningSnapshot();
|
|
|
- record.setProjectId(p.getId());
|
|
|
- record.setCreatorId(user.getId());
|
|
|
- record.setCreatorName(user.getName());
|
|
|
- record.setContractAmount(p.getContractAmount());
|
|
|
- record.setCostData(projectBaseCostData);
|
|
|
- record.setCostTotal(p.getBudget());
|
|
|
- record.setProfit(p.getContractAmount() - p.getBudget());
|
|
|
- record.setProfitPercent(100.0*(p.getContractAmount() - p.getBudget())/p.getContractAmount());
|
|
|
- earningSnapshotMapper.insert(record);
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -588,7 +600,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//计算项目总成本
|
|
|
projectBasecostMapper.delete(new QueryWrapper<ProjectBasecost>().eq("project_id", project.getId()));
|
|
|
JSONArray array = JSONArray.parseArray(baseCostData);
|
|
|
- int totalBudget = 0;
|
|
|
+ double totalBudget = 0;
|
|
|
for (int i=0;i<array.size(); i++) {
|
|
|
JSONObject obj = array.getJSONObject(i);
|
|
|
ProjectBasecost cost = JSONObject.toJavaObject(obj, ProjectBasecost.class);
|
|
@@ -683,7 +695,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
String userId = request.getHeader("TOKEN");
|
|
|
Integer companyId = userMapper.selectById(userId).getCompanyId();
|
|
|
List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
|
|
|
-
|
|
|
+
|
|
|
return null;
|
|
|
}
|
|
|
|
|
@@ -1093,7 +1105,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
project.setPlanEndDate(LocalDate.parse(sdf.format(endDateCell.getDateCellValue()), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
|
}
|
|
|
if (amountCell !=null && !StringUtils.isEmpty(amountCell.getStringCellValue())) {
|
|
|
- project.setContractAmount(Integer.parseInt(amountCell.getStringCellValue()));
|
|
|
+ project.setContractAmount(Double.parseDouble(amountCell.getStringCellValue()));
|
|
|
}
|
|
|
|
|
|
projectMapper.insert(project);
|