|
@@ -22,6 +22,7 @@ import org.springframework.beans.BeanUtils;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
@@ -110,13 +111,13 @@ public class WorkHourStatistics {
|
|
ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getDayWorkHour(chuanyunUserCompanyDO.getUserId(),self.getDayLogDate());
|
|
ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getDayWorkHour(chuanyunUserCompanyDO.getUserId(),self.getDayLogDate());
|
|
//工时标准化
|
|
//工时标准化
|
|
if (chuanyunWorkHourDO != null) {
|
|
if (chuanyunWorkHourDO != null) {
|
|
- if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<0) {
|
|
|
|
|
|
+ if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<=0) {
|
|
chuanyunSelfWorkHourDO.setStandardWorkHour(self.getHoursWorked());
|
|
chuanyunSelfWorkHourDO.setStandardWorkHour(self.getHoursWorked());
|
|
}else {
|
|
}else {
|
|
BigDecimal personDays = (self.getHoursWorked().divide(chuanyunWorkHourDO.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
|
|
BigDecimal personDays = (self.getHoursWorked().divide(chuanyunWorkHourDO.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
|
|
chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
|
|
chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
|
|
}
|
|
}
|
|
- ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO1 = chuanyunSelfWorkHourDao.findByUserIdAndAndProjectIdAndAndDayLogDate(chuanyunUserCompanyDO.getUserId(),ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())?ChuanYunConstant.PRODUCTION_PROJECT_ID:self.getProjectId(),self.getDayLogDate());
|
|
|
|
|
|
+ ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO1 = chuanyunSelfWorkHourDao.findByUserIdAndAndProjectIdAndAndDayLogDateAndProjectType(chuanyunUserCompanyDO.getUserId(),ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())?ChuanYunConstant.PRODUCTION_PROJECT_ID:self.getProjectId(),self.getDayLogDate(),self.getProjectType());
|
|
if (chuanyunSelfWorkHourDO1!=null) {
|
|
if (chuanyunSelfWorkHourDO1!=null) {
|
|
chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
|
|
chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
|
|
}
|
|
}
|
|
@@ -136,8 +137,7 @@ public class WorkHourStatistics {
|
|
@Scheduled(fixedDelay = 3600000L)
|
|
@Scheduled(fixedDelay = 3600000L)
|
|
private void standardWeeklyWorkHour() {
|
|
private void standardWeeklyWorkHour() {
|
|
long start=Instant.now().getEpochSecond();
|
|
long start=Instant.now().getEpochSecond();
|
|
- //删除数据库中审批中的数据,防止重复记录工时
|
|
|
|
-// chuanyunWeekMemberHourDao.deleteAllByStatus("2");
|
|
|
|
|
|
+
|
|
//更新数据库
|
|
//更新数据库
|
|
log.info("开始周工时标准化");
|
|
log.info("开始周工时标准化");
|
|
List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
|
|
List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
|
|
@@ -156,6 +156,13 @@ public class WorkHourStatistics {
|
|
chuanyunWeekMemberHourDao.delete(oldWeekHour);
|
|
chuanyunWeekMemberHourDao.delete(oldWeekHour);
|
|
}
|
|
}
|
|
chuanyunWeekMemberHourDao.save(weekMemberHourDO);
|
|
chuanyunWeekMemberHourDao.save(weekMemberHourDO);
|
|
|
|
+ //搜索是否还有处于审批中的数据
|
|
|
|
+ ChuanyunWeekMemberHourDO processWeekHour = chuanyunWeekMemberHourDao.getProcessWeekHour(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getProjectType());
|
|
|
|
+ if (processWeekHour == null){
|
|
|
|
+ chuanyunWeekMemberHourDao.deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getYear(),chuanyunWeekMemberHourDO.getWeek(),"2",chuanyunWeekMemberHourDO.getProjectType());
|
|
|
|
+ //同时删除氚云钟数据
|
|
|
|
+ deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,"F0000007","F0000001",chuanyunWeekMemberHourDO.getProjectId(),"F0000002",chuanyunWeekMemberHourDO.getUserId(),"F0000008",chuanyunWeekMemberHourDO.getYear(),"","","F0000006",chuanyunWeekMemberHourDO.getWeek(),"F0000003",chuanyunWeekMemberHourDO.getProjectType());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
});
|
|
});
|
|
log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
@@ -192,9 +199,10 @@ public class WorkHourStatistics {
|
|
private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
//删除上一次状态为审核中,但本次已经审核通过的数据
|
|
//删除上一次状态为审核中,但本次已经审核通过的数据
|
|
chuanyunSelfCostDao.findAllByStatusAndUserId(ChuanYunConstant.IN_PROCESS,chuanyunUserCompanyDO.getUserId()).forEach(chuanyunSelfCostDO -> {
|
|
chuanyunSelfCostDao.findAllByStatusAndUserId(ChuanYunConstant.IN_PROCESS,chuanyunUserCompanyDO.getUserId()).forEach(chuanyunSelfCostDO -> {
|
|
- List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList=chuanyunSelfWorkHourDao.findAllByUserIdAndProjectIdAndStatusAndDayLogDateBetween(
|
|
|
|
|
|
+ List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList=chuanyunSelfWorkHourDao.findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(
|
|
chuanyunSelfCostDO.getUserId(),
|
|
chuanyunSelfCostDO.getUserId(),
|
|
chuanyunSelfCostDO.getProjectId(),
|
|
chuanyunSelfCostDO.getProjectId(),
|
|
|
|
+ chuanyunSelfCostDO.getProjectType(),
|
|
ChuanYunConstant.IN_PROCESS,
|
|
ChuanYunConstant.IN_PROCESS,
|
|
chuanyunSelfCostDO.getDayLogDate(),
|
|
chuanyunSelfCostDO.getDayLogDate(),
|
|
chuanyunSelfCostDO.getDayLogDate().plusMonths(1L));
|
|
chuanyunSelfCostDO.getDayLogDate().plusMonths(1L));
|
|
@@ -207,6 +215,7 @@ public class WorkHourStatistics {
|
|
matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
matchers.add("F0000009_2,"+ChuanYunConstant.IN_PROCESS);
|
|
matchers.add("F0000009_2,"+ChuanYunConstant.IN_PROCESS);
|
|
matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
|
|
+ matchers.add("F0000008_2,"+chuanyunSelfCostDO.getProjectType());
|
|
matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
try {
|
|
try {
|
|
@@ -236,7 +245,9 @@ public class WorkHourStatistics {
|
|
|
|
|
|
ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
|
|
ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
|
|
chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
|
|
chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
|
|
- chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
|
|
|
|
|
|
+ if (monthHour!=null){
|
|
|
|
+ chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
|
|
|
|
+ }
|
|
chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
|
|
chuanyunSelfCostDO.setProjectType(projectMonth.getProjectType());
|
|
chuanyunSelfCostDO.setUserId(projectMonth.getUserId());
|
|
chuanyunSelfCostDO.setUserId(projectMonth.getUserId());
|
|
@@ -245,6 +256,7 @@ public class WorkHourStatistics {
|
|
chuanyunSelfCostDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
|
|
chuanyunSelfCostDO.setDepartmentId(chuanyunUserCompanyDO.getDepartmentId());
|
|
ChuanyunSelfCostDO oldSelfDO = chuanyunSelfCostDao.getOldSelfDO(chuanyunSelfCostDO.getUserId(),
|
|
ChuanyunSelfCostDO oldSelfDO = chuanyunSelfCostDao.getOldSelfDO(chuanyunSelfCostDO.getUserId(),
|
|
chuanyunSelfCostDO.getProjectId(),
|
|
chuanyunSelfCostDO.getProjectId(),
|
|
|
|
+ chuanyunSelfCostDO.getProjectType(),
|
|
df.format(chuanyunSelfCostDO.getDayLogDate()),
|
|
df.format(chuanyunSelfCostDO.getDayLogDate()),
|
|
projectMonth.getStatus());
|
|
projectMonth.getStatus());
|
|
if (oldSelfDO !=null) {
|
|
if (oldSelfDO !=null) {
|
|
@@ -405,6 +417,7 @@ public class WorkHourStatistics {
|
|
matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
matchers.add("F0000009_2,"+chuanyunSelfCostDO.getStatus());
|
|
matchers.add("F0000009_2,"+chuanyunSelfCostDO.getStatus());
|
|
matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
|
|
+ matchers.add("F0000008_2,"+chuanyunSelfCostDO.getProjectType());
|
|
matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
var filter= Filter.instance(0,1,true,"And",matchers);
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
|
|
@@ -436,12 +449,28 @@ public class WorkHourStatistics {
|
|
/**
|
|
/**
|
|
* 删除状态为审核中数据
|
|
* 删除状态为审核中数据
|
|
* @param schemaCode
|
|
* @param schemaCode
|
|
- * @param buttonCode
|
|
|
|
|
|
+ * @param
|
|
*/
|
|
*/
|
|
- public void deleteExamineStatus(String schemaCode,String buttonCode) {
|
|
|
|
|
|
+ public void deleteExamineStatus(String schemaCode,String statusCode,String projectCode,String projectId,String userCode,String userId,String yearCode,String year,String monthCode,String month,String weekCode,String week,String typeCode,String projectType) {
|
|
try {
|
|
try {
|
|
List<String> matchers = new ArrayList<>();
|
|
List<String> matchers = new ArrayList<>();
|
|
- matchers.add(buttonCode+"_2,"+"2");
|
|
|
|
|
|
+ matchers.add(statusCode+"_2,"+"2");
|
|
|
|
+ matchers.add(projectCode+"_2,"+projectId);
|
|
|
|
+ if (!StringUtils.isEmpty(userId)){
|
|
|
|
+ matchers.add(userCode+"_2,"+userId);
|
|
|
|
+ }
|
|
|
|
+ if (!StringUtils.isEmpty(year)){
|
|
|
|
+ matchers.add(yearCode+"_2,"+year);
|
|
|
|
+ }
|
|
|
|
+ if (!StringUtils.isEmpty(month)){
|
|
|
|
+ matchers.add(monthCode+"_2,"+month);
|
|
|
|
+ }
|
|
|
|
+ if (!StringUtils.isEmpty(week)){
|
|
|
|
+ matchers.add(weekCode+"_2,"+week);
|
|
|
|
+ }
|
|
|
|
+ if (!StringUtils.isEmpty(projectType)){
|
|
|
|
+ matchers.add(typeCode+"_2,"+projectType);
|
|
|
|
+ }
|
|
var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
|
|
var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
|
|
var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
|
|
if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
@@ -449,7 +478,7 @@ public class WorkHourStatistics {
|
|
result.forEach(basicDO -> {
|
|
result.forEach(basicDO -> {
|
|
ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
|
|
ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
|
|
if(chuanyunSaveDTO.getSuccessful()){
|
|
if(chuanyunSaveDTO.getSuccessful()){
|
|
- log.info("删除状态为审核中数据成功");
|
|
|
|
|
|
+// log.info("删除状态为审核中数据成功");
|
|
}else{
|
|
}else{
|
|
log.warn("删除状态为审核中数据失败");
|
|
log.warn("删除状态为审核中数据失败");
|
|
}
|
|
}
|