|
@@ -331,15 +331,15 @@ public class ChuanyunProjectScheduledTask {
|
|
|
var page = 0;
|
|
|
while(flag) {
|
|
|
var pageable= PageRequest.of(page,pageSize);
|
|
|
- var chuanyunUserCompanyDOS = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
|
|
|
- if (page<=chuanyunUserCompanyDOS.getTotalPages()){
|
|
|
+ var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
|
|
|
+ if (page<=chuanyunUserCompanyList.getTotalPages()){
|
|
|
page += 1;
|
|
|
}else {
|
|
|
flag = false;
|
|
|
break;
|
|
|
}
|
|
|
//逐个将员工每天工时进行统计汇总
|
|
|
- List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyDOS.getContent();
|
|
|
+ List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
|
|
|
userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
|
|
|
//工时标准化
|
|
|
standardHour(chuanyunUserCompanyDO);
|
|
@@ -353,6 +353,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
log.info("########"+chuanyunMemberCostDO+"");
|
|
|
}else{
|
|
|
//计算项目中每人人天
|
|
|
+ //TODO 计算人天是不是可以直接用总工时除8来计算
|
|
|
List<ChuanyunPersonDaysDO> personDaysList = chuanyunPersonDaysDao.getSelfUserWorkHour(chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getUserId());
|
|
|
BigDecimal standard = new BigDecimal(8);
|
|
|
BigDecimal personDays = new BigDecimal(0);
|
|
@@ -370,8 +371,9 @@ public class ChuanyunProjectScheduledTask {
|
|
|
memberCostDO.setProjectId(chuanyunMemberCostDO.getProjectId());
|
|
|
memberCostDO.setUserId(chuanyunMemberCostDO.getUserId());
|
|
|
memberCostDO.setTotalHour(chuanyunMemberCostDO.getTotalHour());
|
|
|
+ memberCostDO.setStatus(chuanyunMemberCostDO.getStatus());
|
|
|
memberCostDO.setPersonDays(personDays);
|
|
|
- ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectId(chuanyunMemberCostDO.getUserId(),chuanyunMemberCostDO.getProjectId());
|
|
|
+ ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectIdAndStatus(chuanyunMemberCostDO.getUserId(),chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getStatus());
|
|
|
if (oldCostDO !=null) {
|
|
|
chuanyunMemberCostDao.delete(oldCostDO);
|
|
|
}
|
|
@@ -385,9 +387,11 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunProjectMemberCostDTO.setCost(chuanyunMemberCostDO.getCost());
|
|
|
chuanyunProjectMemberCostDTO.setWorkHour(chuanyunMemberCostDO.getTotalHour());
|
|
|
chuanyunProjectMemberCostDTO.setProjectType(chuanyunMemberCostDO.getProjectType());
|
|
|
+ chuanyunProjectMemberCostDTO.setStatus(chuanyunMemberCostDO.getStatus());
|
|
|
chuanyunProjectMemberCostDTO.setPersonDays(personDays);
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000001_2,"+chuanyunMemberCostDO.getProjectId());
|
|
|
+ matchers.add("F0000007_2,"+chuanyunMemberCostDO.getStatus());
|
|
|
matchers.add("F0000002_2,"+chuanyunMemberCostDO.getUserId());
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectMemberCostDO.SCHEMA_CODE,filter);
|
|
@@ -417,8 +421,10 @@ public class ChuanyunProjectScheduledTask {
|
|
|
list1.forEach(chuanyunProjectCostDO -> {
|
|
|
ChuanyunProjectCostDO projectCostDO = new ChuanyunProjectCostDO();
|
|
|
projectCostDO.setCost(chuanyunProjectCostDO.getCost());
|
|
|
+ projectCostDO.setProjectType(chuanyunProjectCostDO.getProjectType());
|
|
|
projectCostDO.setProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
projectCostDO.setTotalHour(chuanyunProjectCostDO.getTotalHour());
|
|
|
+ projectCostDO.setStatus(chuanyunProjectCostDO.getStatus());
|
|
|
projectCostDO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
|
|
|
ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
if (oldProjectDO !=null) {
|
|
@@ -430,10 +436,12 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
|
|
|
chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
chuanyunProjectTotalCostDTO.setCost(chuanyunProjectCostDO.getCost());
|
|
|
+ chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
|
|
|
chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
|
|
|
chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
|
|
|
+ matchers.add("F0000006_2,"+chuanyunProjectCostDO.getStatus());
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectTotalCostDO.SCHEMA_CODE,filter);
|
|
|
var projectTotalString=objectMapper.writeValueAsString(chuanyunProjectTotalCostDTO);
|
|
@@ -469,6 +477,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
selfList.forEach(self->{
|
|
|
try{
|
|
|
ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
|
|
|
+ chuanyunSelfWorkHourDO.setStatus(self.getStatus());
|
|
|
chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
|
|
|
if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
|
|
@@ -499,11 +508,15 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunSelfWorkHourDTO.setProjectId(self.getProjectId());
|
|
|
chuanyunSelfWorkHourDTO.setUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
chuanyunSelfWorkHourDTO.setDayLogDate(self.getDayLogDate());
|
|
|
+ chuanyunSelfWorkHourDTO.setProjectType(self.getProjectType());
|
|
|
+ chuanyunSelfWorkHourDTO.setStatus(self.getStatus());
|
|
|
chuanyunSelfWorkHourDTO.setStandardWorkHour(chuanyunSelfWorkHourDO.getStandardWorkHour());
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000001_2,"+self.getProjectId());
|
|
|
matchers.add("F0000002_2,"+chuanyunUserCompanyDO.getUserId());
|
|
|
matchers.add("F0000003_2,"+self.getDayLogDate());
|
|
|
+ matchers.add("F0000005_2,"+self.getProjectType());
|
|
|
+ matchers.add("F0000006_2,"+self.getStatus());
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE,filter);
|
|
|
var selfMonthString=objectMapper.writeValueAsString(chuanyunSelfWorkHourDTO);
|
|
@@ -516,7 +529,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberHourDO.SCHEMA_CODE,selfMonthString,true);
|
|
|
}
|
|
|
if(chuanyunSaveDTO.getSuccessful()){
|
|
|
-// log.info("新增工时标准化成功");
|
|
|
+ log.info("新增工时标准化成功");
|
|
|
}else{
|
|
|
log.warn("新增工时标准化失败");
|
|
|
}
|
|
@@ -539,8 +552,8 @@ public class ChuanyunProjectScheduledTask {
|
|
|
List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHour(chuanyunUserCompanyDO.getUserId());
|
|
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
list.forEach(projectMonth->{
|
|
|
- //获取人员月度标准工时汇总
|
|
|
- ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()));
|
|
|
+ //获取人员-月度-相同工时状态标准工时汇总
|
|
|
+ ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()),projectMonth.getStatus());
|
|
|
|
|
|
//获取人员月度工资信息
|
|
|
//TODO 张曦铭的薪资信息同步之后需要使用U9中的数据更新薪资信息
|
|
@@ -555,6 +568,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunSelfCostDO.setCost(BigDecimal.ZERO);
|
|
|
chuanyunMemberMonthCostDTO.setCost(BigDecimal.ZERO);
|
|
|
}
|
|
|
+ chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
|
|
|
chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
|
|
|
chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
|
chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
|
|
@@ -574,6 +588,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
//更新氚云数据
|
|
|
chuanyunMemberMonthCostDTO.setProjectId(projectMonth.getProjectId());
|
|
|
chuanyunMemberMonthCostDTO.setProjectType(projectMonth.getProjectType());
|
|
|
+ chuanyunMemberMonthCostDTO.setStatus(projectMonth.getStatus());
|
|
|
chuanyunMemberMonthCostDTO.setUserId(projectMonth.getUserId());
|
|
|
chuanyunMemberMonthCostDTO.setMonthWorkHour(monthHour.getStandardWorkHour());
|
|
|
chuanyunMemberMonthCostDTO.setDayLogDate(projectMonth.getDayLogDate().withDayOfMonth(1));
|
|
@@ -581,6 +596,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
try {
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000003_2,"+projectMonth.getProjectId());
|
|
|
+ matchers.add("F0000009_2,"+projectMonth.getStatus());
|
|
|
matchers.add("F0000002_2,"+projectMonth.getUserId());
|
|
|
matchers.add("F0000004_2,"+projectMonth.getDayLogDate().withDayOfMonth(1));
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
@@ -595,7 +611,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberMonthCostDO.SCHEMA_CODE,memberMonthString,true);
|
|
|
}
|
|
|
if(chuanyunSaveDTO.getSuccessful()){
|
|
|
-// log.info("新增项目成员月度成本汇总成功");
|
|
|
+ log.info("新增项目成员月度成本汇总成功");
|
|
|
}else{
|
|
|
log.warn("新增项目成员月度成本汇总失败");
|
|
|
}
|
|
@@ -622,6 +638,12 @@ class ChuanyunMemberMonthCostDTO{
|
|
|
private String projectType;
|
|
|
|
|
|
/**
|
|
|
+ * 日志流程状态
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000009")
|
|
|
+ private String status;
|
|
|
+
|
|
|
+ /**
|
|
|
* 用户ID
|
|
|
*/
|
|
|
@JsonProperty("F0000002")
|
|
@@ -692,8 +714,17 @@ class ChuanyunProjectMemberCostDTO {
|
|
|
*/
|
|
|
@JsonProperty("F0000006")
|
|
|
private BigDecimal personDays;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 工时状态
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000007")
|
|
|
+ private String status;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 项目汇总工时
|
|
|
+ */
|
|
|
@Data
|
|
|
class ChuanyunProjectTotalCostDTO{
|
|
|
|
|
@@ -726,6 +757,12 @@ class ChuanyunProjectTotalCostDTO{
|
|
|
*/
|
|
|
@JsonProperty("F0000005")
|
|
|
private BigDecimal personDays;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 工时状态
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000006")
|
|
|
+ private String status;
|
|
|
}
|
|
|
|
|
|
@Data
|
|
@@ -733,7 +770,6 @@ class ChuanyunAdjustAccountDTO {
|
|
|
@JsonProperty("F0000002")
|
|
|
private String projectCode;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 核算实施人天
|
|
|
*/
|
|
@@ -765,6 +801,9 @@ class ChuanyunAdjustAccountDTO {
|
|
|
private String projectId;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 工时标准化更新数据
|
|
|
+ */
|
|
|
@Data
|
|
|
class ChuanyunSelfWorkHourDTO {
|
|
|
|
|
@@ -774,6 +813,18 @@ class ChuanyunSelfWorkHourDTO {
|
|
|
@JsonProperty("F0000001")
|
|
|
private String projectId;
|
|
|
|
|
|
+ /**
|
|
|
+ * 项目类型
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000005")
|
|
|
+ private String projectType;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 流程状态
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000006")
|
|
|
+ private String status;
|
|
|
+
|
|
|
@JsonProperty("F0000003")
|
|
|
@JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
|
|
|
@JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
|