|
@@ -231,7 +231,13 @@ public class ChuanyunProjectScheduledTask {
|
|
|
matchers.add("F0000002_2,"+chuanyunProjectDO.getProjectCode());
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunAdjustAccountDO.SCHEMA_CODE,filter);
|
|
|
- var adjustString=objectMapper.writeValueAsString(chuanyunAdjustAccountDO);
|
|
|
+ ChuanyunAdjustAccountDTO chuanyunAdjustAccountDTO = new ChuanyunAdjustAccountDTO();
|
|
|
+ chuanyunAdjustAccountDTO.setProjectCode(chuanyunProjectDO.getProjectCode());
|
|
|
+ chuanyunAdjustAccountDTO.setPersonDays(chuanyunAdjustAccountDO.getPersonDays());
|
|
|
+ chuanyunAdjustAccountDTO.setLaborCost(chuanyunAdjustAccountDO.getLaborCost());
|
|
|
+ chuanyunAdjustAccountDTO.setImplementationCosts(chuanyunAdjustAccountDO.getImplementationCosts());
|
|
|
+ chuanyunAdjustAccountDTO.setProjectId(chuanyunProjectDO.getObjectId());
|
|
|
+ var adjustString=objectMapper.writeValueAsString(chuanyunAdjustAccountDTO);
|
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
List<ChuanyunAdjustAccountDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
@@ -304,7 +310,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
//项目每人每天工时
|
|
|
List<ChuanyunPersonDaysDO> selfWorkHourList = chuanyunPersonDaysDao.getSelfWorkHour(projectId);
|
|
|
for (ChuanyunPersonDaysDO chuanyunPersonDaysDO : selfWorkHourList) {
|
|
|
- //项目总工时
|
|
|
+ //人员-项目总工时
|
|
|
ChuanyunPersonDaysDO totalWorkHour = chuanyunPersonDaysDao.getTotalWorkHour(chuanyunPersonDaysDO.getUserId(),projectId);
|
|
|
if (totalWorkHour != null && totalWorkHour.getHoursWorked().intValue()>0){
|
|
|
BigDecimal totalDays = (chuanyunPersonDaysDO.getHoursWorked().divide(totalWorkHour.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
|
|
@@ -346,17 +352,31 @@ public class ChuanyunProjectScheduledTask {
|
|
|
if(StringUtils.isEmpty(chuanyunMemberCostDO.getProjectId())||StringUtils.isEmpty(chuanyunMemberCostDO.getUserId())){
|
|
|
log.info("########"+chuanyunMemberCostDO+"");
|
|
|
}else{
|
|
|
+ //计算项目中每人人天
|
|
|
+ List<ChuanyunPersonDaysDO> personDaysList = chuanyunPersonDaysDao.getSelfUserWorkHour(chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getUserId());
|
|
|
+ BigDecimal standard = new BigDecimal(8);
|
|
|
+ BigDecimal personDays = new BigDecimal(0);
|
|
|
+ for (ChuanyunPersonDaysDO chuanyunPersonDaysDO : personDaysList) {
|
|
|
+ //人员-项目总工时
|
|
|
+ ChuanyunPersonDaysDO totalWorkHour = chuanyunPersonDaysDao.getTotalWorkHour(chuanyunPersonDaysDO.getUserId(),chuanyunMemberCostDO.getProjectId());
|
|
|
+ if (totalWorkHour != null && totalWorkHour.getHoursWorked().intValue()>0){
|
|
|
+ BigDecimal totalDays = (chuanyunPersonDaysDO.getHoursWorked().divide(totalWorkHour.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
|
|
|
+ personDays= personDays.add(totalDays);
|
|
|
+ }
|
|
|
+ }
|
|
|
ChuanyunMemberCostDO memberCostDO = new ChuanyunMemberCostDO();
|
|
|
memberCostDO.setCost(chuanyunMemberCostDO.getCost());
|
|
|
memberCostDO.setProjectType(chuanyunMemberCostDO.getProjectType());
|
|
|
memberCostDO.setProjectId(chuanyunMemberCostDO.getProjectId());
|
|
|
memberCostDO.setUserId(chuanyunMemberCostDO.getUserId());
|
|
|
memberCostDO.setTotalHour(chuanyunMemberCostDO.getTotalHour());
|
|
|
+ memberCostDO.setPersonDays(personDays);
|
|
|
ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectId(chuanyunMemberCostDO.getUserId(),chuanyunMemberCostDO.getProjectId());
|
|
|
if (oldCostDO !=null) {
|
|
|
chuanyunMemberCostDao.delete(oldCostDO);
|
|
|
}
|
|
|
chuanyunMemberCostDao.save(memberCostDO);
|
|
|
+
|
|
|
//更新氚云数据
|
|
|
try {
|
|
|
ChuanyunProjectMemberCostDTO chuanyunProjectMemberCostDTO = new ChuanyunProjectMemberCostDTO();
|
|
@@ -365,6 +385,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunProjectMemberCostDTO.setCost(chuanyunMemberCostDO.getCost());
|
|
|
chuanyunProjectMemberCostDTO.setWorkHour(chuanyunMemberCostDO.getTotalHour());
|
|
|
chuanyunProjectMemberCostDTO.setProjectType(chuanyunMemberCostDO.getProjectType());
|
|
|
+ chuanyunProjectMemberCostDTO.setPersonDays(personDays);
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000001_2,"+chuanyunMemberCostDO.getProjectId());
|
|
|
matchers.add("F0000002_2,"+chuanyunMemberCostDO.getUserId());
|
|
@@ -398,6 +419,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
projectCostDO.setCost(chuanyunProjectCostDO.getCost());
|
|
|
projectCostDO.setProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
projectCostDO.setTotalHour(chuanyunProjectCostDO.getTotalHour());
|
|
|
+ projectCostDO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
|
|
|
ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
if (oldProjectDO !=null) {
|
|
|
chuanyunProjectCostDao.delete(oldProjectDO);
|
|
@@ -409,6 +431,7 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
chuanyunProjectTotalCostDTO.setCost(chuanyunProjectCostDO.getCost());
|
|
|
chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
|
|
|
+ chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
@@ -470,6 +493,33 @@ public class ChuanyunProjectScheduledTask {
|
|
|
}
|
|
|
chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
|
|
|
// log.info("工时标准化新增成功");
|
|
|
+ //更新氚云数据
|
|
|
+
|
|
|
+ ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
|
|
|
+ chuanyunSelfWorkHourDTO.setProjectId(self.getProjectId());
|
|
|
+ chuanyunSelfWorkHourDTO.setUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
+ chuanyunSelfWorkHourDTO.setDayLogDate(self.getDayLogDate());
|
|
|
+ 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());
|
|
|
+ var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
+ var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE,filter);
|
|
|
+ var selfMonthString=objectMapper.writeValueAsString(chuanyunSelfWorkHourDTO);
|
|
|
+ ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
+ if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
|
+ List<ChuanyunMemberHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ ChuanyunMemberHourDO firstResult = result.get(0);
|
|
|
+ chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
|
|
|
+ }else {
|
|
|
+ chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberHourDO.SCHEMA_CODE,selfMonthString,true);
|
|
|
+ }
|
|
|
+ if(chuanyunSaveDTO.getSuccessful()){
|
|
|
+// log.info("新增工时标准化成功");
|
|
|
+ }else{
|
|
|
+ log.warn("新增工时标准化失败");
|
|
|
+ }
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
log.error(e.getMessage());
|
|
@@ -509,10 +559,10 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
|
chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
|
|
|
chuanyunSelfCostDO.setUserId(projectMonth.getUserId());
|
|
|
- DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-01 HH:mm:ss");
|
|
|
- String newDate = dateTimeFormatter.format(projectMonth.getDayLogDate());
|
|
|
- LocalDateTime dt = LocalDateTime.parse(newDate,df);
|
|
|
- chuanyunSelfCostDO.setDayLogDate(dt);
|
|
|
+// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-01 HH:mm:ss");
|
|
|
+// String newDate = dateTimeFormatter.format(projectMonth.getDayLogDate());
|
|
|
+// LocalDateTime dt = LocalDateTime.parse(newDate,df);
|
|
|
+ chuanyunSelfCostDO.setDayLogDate(projectMonth.getDayLogDate().withDayOfMonth(1));
|
|
|
chuanyunSelfCostDO.setTotalHour(projectMonth.getStandardWorkHour());
|
|
|
ChuanyunSelfCostDO oldSelfDO = chuanyunSelfCostDao.getOldSelfDO(chuanyunSelfCostDO.getUserId(),chuanyunSelfCostDO.getProjectId(),df.format(chuanyunSelfCostDO.getDayLogDate()));
|
|
|
if (oldSelfDO !=null) {
|
|
@@ -526,13 +576,13 @@ public class ChuanyunProjectScheduledTask {
|
|
|
chuanyunMemberMonthCostDTO.setProjectType(projectMonth.getProjectType());
|
|
|
chuanyunMemberMonthCostDTO.setUserId(projectMonth.getUserId());
|
|
|
chuanyunMemberMonthCostDTO.setMonthWorkHour(monthHour.getStandardWorkHour());
|
|
|
- chuanyunMemberMonthCostDTO.setDayLogDate(dt);
|
|
|
+ chuanyunMemberMonthCostDTO.setDayLogDate(projectMonth.getDayLogDate().withDayOfMonth(1));
|
|
|
chuanyunMemberMonthCostDTO.setWorkHour(projectMonth.getStandardWorkHour());
|
|
|
try {
|
|
|
List<String> matchers = new ArrayList<>();
|
|
|
matchers.add("F0000003_2,"+projectMonth.getProjectId());
|
|
|
matchers.add("F0000002_2,"+projectMonth.getUserId());
|
|
|
- matchers.add("F0000004_2,"+dt);
|
|
|
+ matchers.add("F0000004_2,"+projectMonth.getDayLogDate().withDayOfMonth(1));
|
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
|
|
|
var memberMonthString=objectMapper.writeValueAsString(chuanyunMemberMonthCostDTO);
|
|
@@ -636,6 +686,12 @@ class ChuanyunProjectMemberCostDTO {
|
|
|
*/
|
|
|
@JsonProperty("F0000004")
|
|
|
private BigDecimal cost;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 总人天
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000006")
|
|
|
+ private BigDecimal personDays;
|
|
|
}
|
|
|
|
|
|
@Data
|
|
@@ -664,4 +720,66 @@ class ChuanyunProjectTotalCostDTO{
|
|
|
*/
|
|
|
@JsonProperty("F0000002")
|
|
|
private BigDecimal cost;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 总人天
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000005")
|
|
|
+ private BigDecimal personDays;
|
|
|
}
|
|
|
+
|
|
|
+@Data
|
|
|
+class ChuanyunAdjustAccountDTO {
|
|
|
+ @JsonProperty("F0000002")
|
|
|
+ private String projectCode;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 核算实施人天
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000003")
|
|
|
+ private BigDecimal personDays;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 核算实施人力成本
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000004")
|
|
|
+ private BigDecimal laborCost;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 核算实施费用
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000005")
|
|
|
+ private BigDecimal implementationCosts;
|
|
|
+
|
|
|
+ /**
|
|
|
+ *核算实施总成本
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000006")
|
|
|
+ private BigDecimal totalImplementationCosts;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 项目
|
|
|
+ */
|
|
|
+ @JsonProperty("F0000007")
|
|
|
+ private String projectId;
|
|
|
+}
|
|
|
+
|
|
|
+@Data
|
|
|
+class ChuanyunSelfWorkHourDTO {
|
|
|
+
|
|
|
+ @JsonProperty("F0000002")
|
|
|
+ private String userId;
|
|
|
+
|
|
|
+ @JsonProperty("F0000001")
|
|
|
+ private String projectId;
|
|
|
+
|
|
|
+ @JsonProperty("F0000003")
|
|
|
+ @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
|
|
|
+ @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
|
|
|
+ private LocalDateTime dayLogDate;
|
|
|
+
|
|
|
+ @JsonProperty("F0000004")
|
|
|
+ private BigDecimal standardWorkHour;
|
|
|
+}
|
|
|
+
|