|
@@ -14,13 +14,13 @@ import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
|
|
import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
import com.galaxis.manatee.exception.BigSizeException;
|
|
import com.galaxis.manatee.exception.BigSizeException;
|
|
import com.galaxis.manatee.manager.ChuanYunManager;
|
|
import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
|
+import com.galaxis.manatee.service.LogService;
|
|
import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
|
|
import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
|
|
import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
|
|
import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
|
|
import lombok.Data;
|
|
import lombok.Data;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.BeanUtils;
|
|
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.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
@@ -30,9 +30,7 @@ import java.time.Instant;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
-import java.util.HashMap;
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
-import java.util.Map;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author zcj
|
|
* @author zcj
|
|
@@ -42,170 +40,78 @@ import java.util.Map;
|
|
@Service
|
|
@Service
|
|
@Slf4j
|
|
@Slf4j
|
|
public class WorkHourStatistics {
|
|
public class WorkHourStatistics {
|
|
- private final ObjectMapper objectMapper=new ObjectMapper();
|
|
|
|
|
|
+ private final ObjectMapper objectMapper = new ObjectMapper();
|
|
private final ChuanYunManager chuanYunManager;
|
|
private final ChuanYunManager chuanYunManager;
|
|
private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
|
|
private final ChuanyunUserCompanyDao chuanyunUserCompanyDao;
|
|
private final ChuanyunWorkHourDao chuanyunWorkHourDao;
|
|
private final ChuanyunWorkHourDao chuanyunWorkHourDao;
|
|
private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
private final ChuanyunSelfCostDao chuanyunSelfCostDao;
|
|
private final ChuanyunSelfCostDao chuanyunSelfCostDao;
|
|
private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
- private final ChuanyunProjectCostDao chuanyunProjectCostDao;
|
|
|
|
private final ChuanyunMemberCostDao chuanyunMemberCostDao;
|
|
private final ChuanyunMemberCostDao chuanyunMemberCostDao;
|
|
|
|
+ private final LogService logService;
|
|
|
|
|
|
- public WorkHourStatistics(ChuanYunManager chuanYunManager, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunProjectCostDao chuanyunProjectCostDao, ChuanyunMemberCostDao chuanyunMemberCostDao) {
|
|
|
|
|
|
+ public WorkHourStatistics(ChuanYunManager chuanYunManager, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunMemberCostDao chuanyunMemberCostDao, LogService logService) {
|
|
this.chuanYunManager = chuanYunManager;
|
|
this.chuanYunManager = chuanYunManager;
|
|
this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
|
|
this.chuanyunUserCompanyDao = chuanyunUserCompanyDao;
|
|
this.chuanyunWorkHourDao = chuanyunWorkHourDao;
|
|
this.chuanyunWorkHourDao = chuanyunWorkHourDao;
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
this.chuanyunSelfCostDao = chuanyunSelfCostDao;
|
|
this.chuanyunSelfCostDao = chuanyunSelfCostDao;
|
|
this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
- this.chuanyunProjectCostDao = chuanyunProjectCostDao;
|
|
|
|
this.chuanyunMemberCostDao = chuanyunMemberCostDao;
|
|
this.chuanyunMemberCostDao = chuanyunMemberCostDao;
|
|
|
|
+ this.logService = logService;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
- @Scheduled(fixedDelay = 432000000L)
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 更新所有项目工时
|
|
|
|
+ */
|
|
|
|
+ // @Scheduled(fixedDelay = 432000000L)
|
|
public void updateHour() {
|
|
public void updateHour() {
|
|
|
|
+ //每日工时标准化
|
|
standardWorkHour();
|
|
standardWorkHour();
|
|
standardWeeklyWorkHour();
|
|
standardWeeklyWorkHour();
|
|
standardMonthlyWorkHour();
|
|
standardMonthlyWorkHour();
|
|
// projectMemberHour();
|
|
// projectMemberHour();
|
|
-// quitStandradHour();
|
|
|
|
|
|
+ //离职人员工时标准化
|
|
|
|
+// quitStandardHour();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 每日工时标准化
|
|
* 每日工时标准化
|
|
*/
|
|
*/
|
|
private void standardWorkHour() {
|
|
private void standardWorkHour() {
|
|
- var flag = true;
|
|
|
|
var pageSize = 20;
|
|
var pageSize = 20;
|
|
var page = 0;
|
|
var page = 0;
|
|
- long startTime=Instant.now().getEpochSecond();
|
|
|
|
- while(flag) {
|
|
|
|
- var pageable= PageRequest.of(page,pageSize);
|
|
|
|
- var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
|
|
|
|
- if (page<=chuanyunUserCompanyList.getTotalPages()){
|
|
|
|
|
|
+ while (true) {
|
|
|
|
+ var pageable = PageRequest.of(page, pageSize);
|
|
|
|
+ var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1, pageable);
|
|
|
|
+ if (page <= chuanyunUserCompanyList.getTotalPages()) {
|
|
page += 1;
|
|
page += 1;
|
|
//逐个将员工每天工时进行统计汇总
|
|
//逐个将员工每天工时进行统计汇总
|
|
List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
|
|
List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
|
|
userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
|
|
userCompanyDOList.forEach(chuanyunUserCompanyDO -> {
|
|
- long start= Instant.now().getEpochSecond();
|
|
|
|
|
|
+ long start = Instant.now().getEpochSecond();
|
|
//工时标准化
|
|
//工时标准化
|
|
- standardHour(chuanyunUserCompanyDO);
|
|
|
|
- log.info("每日工时标准化"+chuanyunUserCompanyDO.getUserName()+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
|
|
|
+ logService.standardHour(chuanyunUserCompanyDO,false);
|
|
|
|
+ log.info("每日工时标准化" + chuanyunUserCompanyDO.getUserName() + (Instant.now().getEpochSecond() - start) + "秒");
|
|
updateChuanyunStandardWorkHour(chuanyunUserCompanyDO);
|
|
updateChuanyunStandardWorkHour(chuanyunUserCompanyDO);
|
|
});
|
|
});
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-// log.info("每日工时标准化"+(Instant.now().getEpochSecond()-startTime)+"秒");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 员工单日、各个项目工时标准化,并保存
|
|
|
|
- * @param chuanyunUserCompanyDO 员工信息
|
|
|
|
- */
|
|
|
|
- private void standardHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
|
|
- if (!StringUtils.isEmpty(chuanyunUserCompanyDO.getUserId())){
|
|
|
|
- //每人每个项目每天工时
|
|
|
|
- List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getSelfWorkHour(chuanyunUserCompanyDO.getUserId());
|
|
|
|
- //删除多余每日工时
|
|
|
|
- List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.findByUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
|
- compareDayWorkHour(selfList,list);
|
|
|
|
- //更新
|
|
|
|
- selfList.forEach(self->{
|
|
|
|
- try{
|
|
|
|
- ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
|
|
|
|
- chuanyunSelfWorkHourDO.setStatus(self.getStatus());
|
|
|
|
- chuanyunSelfWorkHourDO.setDepartmentName(self.getDepartmentName());
|
|
|
|
- chuanyunSelfWorkHourDO.setUserId(chuanyunUserCompanyDO.getUserId());
|
|
|
|
- chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
|
|
|
|
- if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
|
|
|
|
- chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
|
|
|
|
- }else{
|
|
|
|
- chuanyunSelfWorkHourDO.setProjectId(self.getProjectId());
|
|
|
|
- }
|
|
|
|
- chuanyunSelfWorkHourDO.setDayLogDate(self.getDayLogDate());
|
|
|
|
- //每人每天工时
|
|
|
|
- ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getDayWorkHour(chuanyunUserCompanyDO.getUserId(),self.getDayLogDate());
|
|
|
|
- //工时标准化
|
|
|
|
- if (chuanyunWorkHourDO != null) {
|
|
|
|
- BigDecimal standard = new BigDecimal(8);
|
|
|
|
- if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<=0) {
|
|
|
|
- chuanyunSelfWorkHourDO.setStandardWorkHour(self.getHoursWorked());
|
|
|
|
- }else {
|
|
|
|
- BigDecimal personDays = (self.getHoursWorked().divide(chuanyunWorkHourDO.getHoursWorked(), 2, RoundingMode.HALF_UP)).multiply(standard);
|
|
|
|
- chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
|
|
|
|
- }
|
|
|
|
- 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) {
|
|
|
|
- chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
|
|
|
|
- }
|
|
|
|
- chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
|
|
|
|
- }
|
|
|
|
- }catch (Exception e){
|
|
|
|
- log.error(e.getMessage());
|
|
|
|
- log.error(""+self);
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 删除多余每日工时
|
|
|
|
- * @param selfList
|
|
|
|
- * @param list
|
|
|
|
- */
|
|
|
|
- private void compareDayWorkHour(List<ChuanyunWorkHourDO> selfList,List<ChuanyunSelfWorkHourDO> list){
|
|
|
|
- Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
|
- List<ChuanyunSelfWorkHourDO> surplusList = new ArrayList<>();
|
|
|
|
- //判断工时是否有撤回
|
|
|
|
- if (!(selfList.size()==list.size())){
|
|
|
|
- for (ChuanyunWorkHourDO chuanyunWorkHourDO : selfList){
|
|
|
|
- map.put(chuanyunWorkHourDO.getUserId()+chuanyunWorkHourDO.getProjectId()+chuanyunWorkHourDO.getDayLogDate(),1);
|
|
|
|
- }
|
|
|
|
- //比较是否有撤回工时
|
|
|
|
- for (ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO : list){
|
|
|
|
- Integer count = map.get(chuanyunSelfWorkHourDO.getUserId()+chuanyunSelfWorkHourDO.getProjectId()+chuanyunSelfWorkHourDO.getDayLogDate());
|
|
|
|
- if (count==null){
|
|
|
|
- try{
|
|
|
|
- //删除数据库日工时
|
|
|
|
- chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO);
|
|
|
|
- //删除氚云日工时
|
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
|
- matchers.add("F0000001_2,"+chuanyunSelfWorkHourDO.getProjectId());
|
|
|
|
- matchers.add("F0000002_2,"+chuanyunSelfWorkHourDO.getUserId());
|
|
|
|
- matchers.add("F0000003_2,"+chuanyunSelfWorkHourDO.getDayLogDate());
|
|
|
|
- var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
|
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberHourDO.SCHEMA_CODE,filter);
|
|
|
|
- ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
|
|
- List<ChuanyunMemberHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
|
- chuanyunSaveDTO = chuanYunManager.delete(ChuanyunMemberHourDO.SCHEMA_CODE,result.get(0).getObjectId());
|
|
|
|
- }
|
|
|
|
- log.info(chuanyunSelfWorkHourDO.getUserId()+"删除"+chuanyunSelfWorkHourDO.getDayLogDate()+"位于"+chuanyunSelfWorkHourDO.getProjectId()+"工时");
|
|
|
|
- }catch(Exception e){
|
|
|
|
- e.printStackTrace();
|
|
|
|
- log.error(e.getMessage());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 人员-项目-周度工时汇总
|
|
* 人员-项目-周度工时汇总
|
|
*/
|
|
*/
|
|
private void standardWeeklyWorkHour() {
|
|
private void standardWeeklyWorkHour() {
|
|
- long start=Instant.now().getEpochSecond();
|
|
|
|
|
|
+ long start = Instant.now().getEpochSecond();
|
|
//更新数据库
|
|
//更新数据库
|
|
log.info("开始周工时标准化");
|
|
log.info("开始周工时标准化");
|
|
List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
|
|
List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHour();
|
|
list.forEach(chuanyunWeekMemberHourDO -> {
|
|
list.forEach(chuanyunWeekMemberHourDO -> {
|
|
- try{
|
|
|
|
- if (chuanyunWeekMemberHourDO!=null){
|
|
|
|
|
|
+ try {
|
|
|
|
+ if (chuanyunWeekMemberHourDO != null) {
|
|
ChuanyunWeekMemberHourDO weekMemberHourDO = new ChuanyunWeekMemberHourDO();
|
|
ChuanyunWeekMemberHourDO weekMemberHourDO = new ChuanyunWeekMemberHourDO();
|
|
weekMemberHourDO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
|
|
weekMemberHourDO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
|
|
weekMemberHourDO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
|
|
weekMemberHourDO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
|
|
@@ -214,24 +120,24 @@ public class WorkHourStatistics {
|
|
weekMemberHourDO.setUserId(chuanyunWeekMemberHourDO.getUserId());
|
|
weekMemberHourDO.setUserId(chuanyunWeekMemberHourDO.getUserId());
|
|
weekMemberHourDO.setYear(chuanyunWeekMemberHourDO.getYear());
|
|
weekMemberHourDO.setYear(chuanyunWeekMemberHourDO.getYear());
|
|
weekMemberHourDO.setWeek(chuanyunWeekMemberHourDO.getWeek());
|
|
weekMemberHourDO.setWeek(chuanyunWeekMemberHourDO.getWeek());
|
|
- ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectTypeAndYear(chuanyunWeekMemberHourDO.getProjectId(),chuanyunWeekMemberHourDO.getUserId(),chuanyunWeekMemberHourDO.getWeek(),chuanyunWeekMemberHourDO.getStatus(),chuanyunWeekMemberHourDO.getProjectType(),chuanyunWeekMemberHourDO.getYear());
|
|
|
|
|
|
+ ChuanyunWeekMemberHourDO oldWeekHour = chuanyunWeekMemberHourDao.findByProjectIdAndUserIdAndWeekAndStatusAndProjectTypeAndYear(chuanyunWeekMemberHourDO.getProjectId(), chuanyunWeekMemberHourDO.getUserId(), chuanyunWeekMemberHourDO.getWeek(), chuanyunWeekMemberHourDO.getStatus(), chuanyunWeekMemberHourDO.getProjectType(), chuanyunWeekMemberHourDO.getYear());
|
|
if (oldWeekHour != null) {
|
|
if (oldWeekHour != null) {
|
|
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());
|
|
|
|
|
|
+ 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());
|
|
|
|
|
|
+ deleteExamineStatus(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, "F0000007", "F0000001", chuanyunWeekMemberHourDO.getProjectId(), "F0000002", chuanyunWeekMemberHourDO.getUserId(), "F0000008", chuanyunWeekMemberHourDO.getYear(), "", "", "F0000006", chuanyunWeekMemberHourDO.getWeek(), "F0000003", chuanyunWeekMemberHourDO.getProjectType());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }catch (Exception e){
|
|
|
|
- log.error(e.getMessage()+"周工时标准化异常");
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error(e.getMessage() + "周工时标准化异常");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- log.info("周工时标准化"+(Instant.now().getEpochSecond()-start)+"秒");
|
|
|
|
|
|
+ log.info("周工时标准化" + (Instant.now().getEpochSecond() - start) + "秒");
|
|
updateChuanyunWeekHour();
|
|
updateChuanyunWeekHour();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -243,31 +149,31 @@ public class WorkHourStatistics {
|
|
var pageSize = 20;
|
|
var pageSize = 20;
|
|
var page = 0;
|
|
var page = 0;
|
|
log.info("开始月工时标准化");
|
|
log.info("开始月工时标准化");
|
|
- while(flag) {
|
|
|
|
- var pageable= PageRequest.of(page,pageSize);
|
|
|
|
- var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1,pageable);
|
|
|
|
- if (page<=chuanyunUserCompanyList.getTotalPages()){
|
|
|
|
|
|
+ while (flag) {
|
|
|
|
+ var pageable = PageRequest.of(page, pageSize);
|
|
|
|
+ var chuanyunUserCompanyList = chuanyunUserCompanyDao.findAllByStatus(1, pageable);
|
|
|
|
+ if (page <= chuanyunUserCompanyList.getTotalPages()) {
|
|
page += 1;
|
|
page += 1;
|
|
List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
|
|
List<ChuanyunUserCompanyDO> userCompanyDOList = chuanyunUserCompanyList.getContent();
|
|
//单项目单人单月成本
|
|
//单项目单人单月成本
|
|
userCompanyDOList.forEach(this::standardMonthlyHour);
|
|
userCompanyDOList.forEach(this::standardMonthlyHour);
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
flag = false;
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
updateChuanyunMonthHour();
|
|
updateChuanyunMonthHour();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 员工每月、各个项目标准工时会职工
|
|
* 员工每月、各个项目标准工时会职工
|
|
|
|
+ *
|
|
* @param chuanyunUserCompanyDO 员工信息
|
|
* @param chuanyunUserCompanyDO 员工信息
|
|
*/
|
|
*/
|
|
private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
private void standardMonthlyHour(ChuanyunUserCompanyDO chuanyunUserCompanyDO) {
|
|
- log.info(chuanyunUserCompanyDO.getUserName()+"月工时更新");
|
|
|
|
|
|
+ log.info(chuanyunUserCompanyDO.getUserName() + "月工时更新");
|
|
//删除上一次状态为审核中,但本次已经审核通过的数据
|
|
//删除上一次状态为审核中,但本次已经审核通过的数据
|
|
- chuanyunSelfCostDao.findAllByStatusAndUserId(ChuanYunConstant.IN_PROCESS,chuanyunUserCompanyDO.getUserId()).forEach(chuanyunSelfCostDO -> {
|
|
|
|
- List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList=chuanyunSelfWorkHourDao.findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(
|
|
|
|
|
|
+ chuanyunSelfCostDao.findAllByStatusAndUserId(ChuanYunConstant.IN_PROCESS, chuanyunUserCompanyDO.getUserId()).forEach(chuanyunSelfCostDO -> {
|
|
|
|
+ List<ChuanyunSelfWorkHourDO> chuanyunSelfWorkHourList = chuanyunSelfWorkHourDao.findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(
|
|
chuanyunSelfCostDO.getUserId(),
|
|
chuanyunSelfCostDO.getUserId(),
|
|
chuanyunSelfCostDO.getProjectId(),
|
|
chuanyunSelfCostDO.getProjectId(),
|
|
chuanyunSelfCostDO.getProjectType(),
|
|
chuanyunSelfCostDO.getProjectType(),
|
|
@@ -275,26 +181,27 @@ public class WorkHourStatistics {
|
|
chuanyunSelfCostDO.getDayLogDate(),
|
|
chuanyunSelfCostDO.getDayLogDate(),
|
|
chuanyunSelfCostDO.getDayLogDate().plusMonths(1L));
|
|
chuanyunSelfCostDO.getDayLogDate().plusMonths(1L));
|
|
//如果没有仍在审批中的每日工时,则将该月、该项目的审核中的月工时统计删除,manatee数据库与氚云
|
|
//如果没有仍在审批中的每日工时,则将该月、该项目的审核中的月工时统计删除,manatee数据库与氚云
|
|
- if(chuanyunSelfWorkHourList.size()==0){
|
|
|
|
|
|
+ if (chuanyunSelfWorkHourList.size() == 0) {
|
|
//删除manatee中的在审核工时
|
|
//删除manatee中的在审核工时
|
|
chuanyunSelfCostDao.delete(chuanyunSelfCostDO);
|
|
chuanyunSelfCostDao.delete(chuanyunSelfCostDO);
|
|
//删除氚云中的在审核工时
|
|
//删除氚云中的在审核工时
|
|
List<String> matchers = new ArrayList<>();
|
|
List<String> matchers = new ArrayList<>();
|
|
- matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
|
|
- matchers.add("F0000009_2,"+ChuanYunConstant.IN_PROCESS);
|
|
|
|
- matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
|
|
- matchers.add("F0000008_2,"+chuanyunSelfCostDO.getProjectType());
|
|
|
|
- matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
|
|
- var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
|
|
|
+ matchers.add("F0000003_2," + chuanyunSelfCostDO.getProjectId());
|
|
|
|
+ matchers.add("F0000009_2," + ChuanYunConstant.IN_PROCESS);
|
|
|
|
+ matchers.add("F0000002_2," + chuanyunSelfCostDO.getUserId());
|
|
|
|
+ matchers.add("F0000008_2," + chuanyunSelfCostDO.getProjectType());
|
|
|
|
+ matchers.add("F0000004_2," + chuanyunSelfCostDO.getDayLogDate());
|
|
|
|
+ var filter = Filter.instance(0, 1, true, "And", matchers);
|
|
try {
|
|
try {
|
|
- ChuanyunFindAllBizDTO<Object> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
|
|
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
|
|
- List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
|
|
|
+ ChuanyunFindAllBizDTO<Object> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE, filter);
|
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
|
+ List<ChuanyunMemberMonthCostDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
|
+ });
|
|
result.forEach(chuanyunMemberMonthCostDO -> {
|
|
result.forEach(chuanyunMemberMonthCostDO -> {
|
|
- try{
|
|
|
|
- chuanYunManager.delete(ChuanyunMemberMonthCostDO.SCHEMA_CODE,chuanyunMemberMonthCostDO.getObjectId());
|
|
|
|
- }catch (Exception e){
|
|
|
|
- log.error("逐条删除失败"+e.getMessage());
|
|
|
|
|
|
+ try {
|
|
|
|
+ chuanYunManager.delete(ChuanyunMemberMonthCostDO.SCHEMA_CODE, chuanyunMemberMonthCostDO.getObjectId());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("逐条删除失败" + e.getMessage());
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -307,12 +214,12 @@ public class WorkHourStatistics {
|
|
//每月每项目工时,按月-项目-用户分组统计标准工时
|
|
//每月每项目工时,按月-项目-用户分组统计标准工时
|
|
List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHour(chuanyunUserCompanyDO.getUserId());
|
|
List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHour(chuanyunUserCompanyDO.getUserId());
|
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
- list.forEach(projectMonth->{
|
|
|
|
|
|
+ list.forEach(projectMonth -> {
|
|
//获取人员-月度-相同工时状态标准工时汇总
|
|
//获取人员-月度-相同工时状态标准工时汇总
|
|
- ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(),df.format(projectMonth.getDayLogDate()),projectMonth.getStatus());
|
|
|
|
|
|
+ ChuanyunSelfWorkHourDO monthHour = chuanyunSelfWorkHourDao.getMonthHour(projectMonth.getUserId(), df.format(projectMonth.getDayLogDate()), projectMonth.getStatus());
|
|
ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
|
|
ChuanyunSelfCostDO chuanyunSelfCostDO = new ChuanyunSelfCostDO();
|
|
chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
|
|
chuanyunSelfCostDO.setStatus(projectMonth.getStatus());
|
|
- if (monthHour!=null){
|
|
|
|
|
|
+ if (monthHour != null) {
|
|
chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
|
|
chuanyunSelfCostDO.setMonthlyTotalHour(monthHour.getStandardWorkHour());
|
|
}
|
|
}
|
|
chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
chuanyunSelfCostDO.setProjectId(projectMonth.getProjectId());
|
|
@@ -326,7 +233,7 @@ public class WorkHourStatistics {
|
|
chuanyunSelfCostDO.getProjectType(),
|
|
chuanyunSelfCostDO.getProjectType(),
|
|
df.format(chuanyunSelfCostDO.getDayLogDate()),
|
|
df.format(chuanyunSelfCostDO.getDayLogDate()),
|
|
projectMonth.getStatus());
|
|
projectMonth.getStatus());
|
|
- if (oldSelfDO !=null) {
|
|
|
|
|
|
+ if (oldSelfDO != null) {
|
|
chuanyunSelfCostDao.delete(oldSelfDO);
|
|
chuanyunSelfCostDao.delete(oldSelfDO);
|
|
}
|
|
}
|
|
chuanyunSelfCostDao.save(chuanyunSelfCostDO);
|
|
chuanyunSelfCostDao.save(chuanyunSelfCostDO);
|
|
@@ -336,84 +243,71 @@ public class WorkHourStatistics {
|
|
/**
|
|
/**
|
|
* 定时更新氚云数据
|
|
* 定时更新氚云数据
|
|
*/
|
|
*/
|
|
- private void updateChuanyunStandardWorkHour(ChuanyunUserCompanyDO oldChuanyunUserCompanyDO){
|
|
|
|
- var flag = true;
|
|
|
|
- var pageSize = 20;
|
|
|
|
- var page = 0;
|
|
|
|
-// log.info("开始更新日工时汇总");
|
|
|
|
- long startTime=Instant.now().getEpochSecond();
|
|
|
|
-// while(flag) {
|
|
|
|
-// var pageable= PageRequest.of(page,pageSize);
|
|
|
|
-// var updateList=chuanyunSelfWorkHourDao.findAll(pageable);
|
|
|
|
-// if (page<=updateList.getTotalPages()){
|
|
|
|
-// page += 1;
|
|
|
|
- var updateList=chuanyunSelfWorkHourDao.findByUserId(oldChuanyunUserCompanyDO.getUserId());
|
|
|
|
- updateList.forEach(chuanyunSelfWorkHourDO -> {
|
|
|
|
- try{
|
|
|
|
- String departmentId=chuanyunUserCompanyDao.findAllByUserId(chuanyunSelfWorkHourDO.getUserId()).get(0).getDepartmentId();
|
|
|
|
- ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
|
|
|
|
- BeanUtils.copyProperties(chuanyunSelfWorkHourDO,chuanyunSelfWorkHourDTO);
|
|
|
|
- chuanyunSelfWorkHourDTO.setDepartmentId(departmentId);
|
|
|
|
- ChuanyunUserCompanyDO chuanyunUserCompanyDO =chuanyunUserCompanyDao.findByUserId(chuanyunSelfWorkHourDO.getUserId());
|
|
|
|
- if (chuanyunUserCompanyDO!=null){
|
|
|
|
- chuanyunSelfWorkHourDTO.setUserName(chuanyunUserCompanyDO.getUserName());
|
|
|
|
- chuanyunSelfWorkHourDTO.setBg(chuanyunUserCompanyDO.getBg());
|
|
|
|
- }else{
|
|
|
|
- chuanyunSelfWorkHourDTO.setUserName(chuanyunSelfWorkHourDTO.getUserId());
|
|
|
|
- chuanyunSelfWorkHourDTO.setBg("IBG");
|
|
|
|
- }
|
|
|
|
- chuanyunSelfWorkHourDTO.setDepartmentName(chuanyunSelfWorkHourDO.getDepartmentName());
|
|
|
|
- List<String> matchers = new ArrayList<>();
|
|
|
|
- matchers.add("F0000001_2,"+chuanyunSelfWorkHourDO.getProjectId());
|
|
|
|
- matchers.add("F0000002_2,"+chuanyunSelfWorkHourDO.getUserId());
|
|
|
|
- matchers.add("F0000003_2,"+chuanyunSelfWorkHourDO.getDayLogDate());
|
|
|
|
- matchers.add("F0000005_2,"+chuanyunSelfWorkHourDO.getProjectType());
|
|
|
|
|
|
+ private void updateChuanyunStandardWorkHour(ChuanyunUserCompanyDO oldChuanyunUserCompanyDO) {
|
|
|
|
+ long startTime = Instant.now().getEpochSecond();
|
|
|
|
+ var updateList = chuanyunSelfWorkHourDao.findByUserId(oldChuanyunUserCompanyDO.getUserId());
|
|
|
|
+ updateList.forEach(chuanyunSelfWorkHourDO -> {
|
|
|
|
+ try {
|
|
|
|
+ String departmentId = chuanyunUserCompanyDao.findAllByUserId(chuanyunSelfWorkHourDO.getUserId()).get(0).getDepartmentId();
|
|
|
|
+ ChuanyunSelfWorkHourDTO chuanyunSelfWorkHourDTO = new ChuanyunSelfWorkHourDTO();
|
|
|
|
+ BeanUtils.copyProperties(chuanyunSelfWorkHourDO, chuanyunSelfWorkHourDTO);
|
|
|
|
+ chuanyunSelfWorkHourDTO.setDepartmentId(departmentId);
|
|
|
|
+ ChuanyunUserCompanyDO chuanyunUserCompanyDO = chuanyunUserCompanyDao.findByUserId(chuanyunSelfWorkHourDO.getUserId());
|
|
|
|
+ if (chuanyunUserCompanyDO != null) {
|
|
|
|
+ chuanyunSelfWorkHourDTO.setUserName(chuanyunUserCompanyDO.getUserName());
|
|
|
|
+ chuanyunSelfWorkHourDTO.setBg(chuanyunUserCompanyDO.getBg());
|
|
|
|
+ } else {
|
|
|
|
+ chuanyunSelfWorkHourDTO.setUserName(chuanyunSelfWorkHourDTO.getUserId());
|
|
|
|
+ chuanyunSelfWorkHourDTO.setBg("IBG");
|
|
|
|
+ }
|
|
|
|
+ chuanyunSelfWorkHourDTO.setDepartmentName(chuanyunSelfWorkHourDO.getDepartmentName());
|
|
|
|
+ List<String> matchers = new ArrayList<>();
|
|
|
|
+ matchers.add("F0000001_2," + chuanyunSelfWorkHourDO.getProjectId());
|
|
|
|
+ matchers.add("F0000002_2," + chuanyunSelfWorkHourDO.getUserId());
|
|
|
|
+ matchers.add("F0000003_2," + chuanyunSelfWorkHourDO.getDayLogDate());
|
|
|
|
+ matchers.add("F0000005_2," + chuanyunSelfWorkHourDO.getProjectType());
|
|
// matchers.add("F0000006_2,"+self.getStatus());
|
|
// 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);
|
|
|
|
- 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.warn("新增工时标准化失败");
|
|
|
|
- }
|
|
|
|
- }catch (Exception e){
|
|
|
|
- e.printStackTrace();
|
|
|
|
- log.warn("更新标准工时异常");
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-// }else {
|
|
|
|
-// //流程执行完
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
- log.info(oldChuanyunUserCompanyDO.getUserName()+"氚云日工时更新花费"+(Instant.now().getEpochSecond()-startTime)+"秒");
|
|
|
|
|
|
+ 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.warn("新增工时标准化失败");
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ log.warn("更新标准工时异常");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ log.info(oldChuanyunUserCompanyDO.getUserName() + "氚云日工时更新花费" + (Instant.now().getEpochSecond() - startTime) + "秒");
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 人员-项目-周度工时汇总,更新氚云数据
|
|
* 人员-项目-周度工时汇总,更新氚云数据
|
|
*/
|
|
*/
|
|
- private void updateChuanyunWeekHour(){
|
|
|
|
|
|
+ private void updateChuanyunWeekHour() {
|
|
var flag = true;
|
|
var flag = true;
|
|
var pageSize = 20;
|
|
var pageSize = 20;
|
|
var page = 0;
|
|
var page = 0;
|
|
log.info("开始更新周工时汇总");
|
|
log.info("开始更新周工时汇总");
|
|
- long startTime=Instant.now().getEpochSecond();
|
|
|
|
- while(flag) {
|
|
|
|
|
|
+ long startTime = Instant.now().getEpochSecond();
|
|
|
|
+ while (flag) {
|
|
var pageable = PageRequest.of(page, pageSize);
|
|
var pageable = PageRequest.of(page, pageSize);
|
|
var updateList = chuanyunWeekMemberHourDao.findAll(pageable);
|
|
var updateList = chuanyunWeekMemberHourDao.findAll(pageable);
|
|
- if (page<=updateList.getTotalPages()){
|
|
|
|
|
|
+ if (page <= updateList.getTotalPages()) {
|
|
page += 1;
|
|
page += 1;
|
|
updateList.getContent().forEach(chuanyunWeekMemberHourDO -> {
|
|
updateList.getContent().forEach(chuanyunWeekMemberHourDO -> {
|
|
//更新氚云
|
|
//更新氚云
|
|
try {
|
|
try {
|
|
- String departmentId=chuanyunUserCompanyDao.findAllByUserId(chuanyunWeekMemberHourDO.getUserId()).get(0).getDepartmentId();
|
|
|
|
|
|
+ String departmentId = chuanyunUserCompanyDao.findAllByUserId(chuanyunWeekMemberHourDO.getUserId()).get(0).getDepartmentId();
|
|
BigDecimal standard = new BigDecimal(8);
|
|
BigDecimal standard = new BigDecimal(8);
|
|
ChuanyunProjectMemberWeekHourDTO chuanyunProjectMemberWeekHourDTO = new ChuanyunProjectMemberWeekHourDTO();
|
|
ChuanyunProjectMemberWeekHourDTO chuanyunProjectMemberWeekHourDTO = new ChuanyunProjectMemberWeekHourDTO();
|
|
chuanyunProjectMemberWeekHourDTO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
|
|
chuanyunProjectMemberWeekHourDTO.setProjectId(chuanyunWeekMemberHourDO.getProjectId());
|
|
@@ -421,57 +315,58 @@ public class WorkHourStatistics {
|
|
chuanyunProjectMemberWeekHourDTO.setWeek(chuanyunWeekMemberHourDO.getWeek());
|
|
chuanyunProjectMemberWeekHourDTO.setWeek(chuanyunWeekMemberHourDO.getWeek());
|
|
chuanyunProjectMemberWeekHourDTO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
|
|
chuanyunProjectMemberWeekHourDTO.setProjectType(chuanyunWeekMemberHourDO.getProjectType());
|
|
chuanyunProjectMemberWeekHourDTO.setTotalHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
|
|
chuanyunProjectMemberWeekHourDTO.setTotalHour(chuanyunWeekMemberHourDO.getStandardWorkHour());
|
|
- chuanyunProjectMemberWeekHourDTO.setPersonDays(chuanyunWeekMemberHourDO.getStandardWorkHour().divide(standard,2,RoundingMode.HALF_UP));
|
|
|
|
|
|
+ chuanyunProjectMemberWeekHourDTO.setPersonDays(chuanyunWeekMemberHourDO.getStandardWorkHour().divide(standard, 2, RoundingMode.HALF_UP));
|
|
chuanyunProjectMemberWeekHourDTO.setHourStatus(chuanyunWeekMemberHourDO.getStatus());
|
|
chuanyunProjectMemberWeekHourDTO.setHourStatus(chuanyunWeekMemberHourDO.getStatus());
|
|
chuanyunProjectMemberWeekHourDTO.setYear(chuanyunWeekMemberHourDO.getYear());
|
|
chuanyunProjectMemberWeekHourDTO.setYear(chuanyunWeekMemberHourDO.getYear());
|
|
chuanyunProjectMemberWeekHourDTO.setDepartmentId(departmentId);
|
|
chuanyunProjectMemberWeekHourDTO.setDepartmentId(departmentId);
|
|
|
|
|
|
List<String> matchers = new ArrayList<>();
|
|
List<String> matchers = new ArrayList<>();
|
|
- matchers.add("F0000001_2,"+chuanyunWeekMemberHourDO.getProjectId());
|
|
|
|
- matchers.add("F0000002_2,"+chuanyunWeekMemberHourDO.getUserId());
|
|
|
|
- matchers.add("F0000006_2,"+chuanyunWeekMemberHourDO.getWeek());
|
|
|
|
- matchers.add("F0000008_2,"+chuanyunWeekMemberHourDO.getYear());
|
|
|
|
- matchers.add("F0000003_2,"+chuanyunWeekMemberHourDO.getProjectType());
|
|
|
|
- matchers.add("F0000007_2,"+chuanyunWeekMemberHourDO.getStatus());
|
|
|
|
- var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
|
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,filter);
|
|
|
|
- var selfMonthString=objectMapper.writeValueAsString(chuanyunProjectMemberWeekHourDTO);
|
|
|
|
|
|
+ matchers.add("F0000001_2," + chuanyunWeekMemberHourDO.getProjectId());
|
|
|
|
+ matchers.add("F0000002_2," + chuanyunWeekMemberHourDO.getUserId());
|
|
|
|
+ matchers.add("F0000006_2," + chuanyunWeekMemberHourDO.getWeek());
|
|
|
|
+ matchers.add("F0000008_2," + chuanyunWeekMemberHourDO.getYear());
|
|
|
|
+ matchers.add("F0000003_2," + chuanyunWeekMemberHourDO.getProjectType());
|
|
|
|
+ matchers.add("F0000007_2," + chuanyunWeekMemberHourDO.getStatus());
|
|
|
|
+ var filter = Filter.instance(0, 1, true, "And", matchers);
|
|
|
|
+ var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, filter);
|
|
|
|
+ var selfMonthString = objectMapper.writeValueAsString(chuanyunProjectMemberWeekHourDTO);
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null) {
|
|
|
|
- List<ChuanyunProjectMemberWeekHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
|
+ List<ChuanyunProjectMemberWeekHourDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
|
+ });
|
|
ChuanyunProjectMemberWeekHourDO firstResult = result.get(0);
|
|
ChuanyunProjectMemberWeekHourDO firstResult = result.get(0);
|
|
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,firstResult.getObjectId(),selfMonthString);
|
|
|
|
- }else {
|
|
|
|
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE,selfMonthString,true);
|
|
|
|
|
|
+ chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, firstResult.getObjectId(), selfMonthString);
|
|
|
|
+ } else {
|
|
|
|
+ chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, selfMonthString, true);
|
|
}
|
|
}
|
|
- if(!chuanyunSaveDTO.getSuccessful()){
|
|
|
|
|
|
+ if (!chuanyunSaveDTO.getSuccessful()) {
|
|
log.warn("新增人员项目周度工时失败");
|
|
log.warn("新增人员项目周度工时失败");
|
|
}
|
|
}
|
|
} catch (JsonProcessingException | BigSizeException e) {
|
|
} catch (JsonProcessingException | BigSizeException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
//流程执行完
|
|
//流程执行完
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- log.info("周工时更新花费"+(Instant.now().getEpochSecond()-startTime));
|
|
|
|
|
|
+ log.info("周工时更新花费" + (Instant.now().getEpochSecond() - startTime));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 人员-项目-月度工时汇总,更新氚云数据
|
|
* 人员-项目-月度工时汇总,更新氚云数据
|
|
*/
|
|
*/
|
|
- private void updateChuanyunMonthHour(){
|
|
|
|
|
|
+ private void updateChuanyunMonthHour() {
|
|
var flag = true;
|
|
var flag = true;
|
|
var pageSize = 20;
|
|
var pageSize = 20;
|
|
var page = 0;
|
|
var page = 0;
|
|
log.info("开始更新月工时汇总");
|
|
log.info("开始更新月工时汇总");
|
|
- long startTime=Instant.now().getEpochSecond();
|
|
|
|
- while(flag) {
|
|
|
|
|
|
+ long startTime = Instant.now().getEpochSecond();
|
|
|
|
+ while (flag) {
|
|
var pageable = PageRequest.of(page, pageSize);
|
|
var pageable = PageRequest.of(page, pageSize);
|
|
var updateList = chuanyunSelfCostDao.findAll(pageable);
|
|
var updateList = chuanyunSelfCostDao.findAll(pageable);
|
|
- if (page<=updateList.getTotalPages()){
|
|
|
|
|
|
+ if (page <= updateList.getTotalPages()) {
|
|
page += 1;
|
|
page += 1;
|
|
updateList.getContent().forEach(chuanyunSelfCostDO -> {
|
|
updateList.getContent().forEach(chuanyunSelfCostDO -> {
|
|
ChuanyunMemberMonthCostDTO chuanyunMemberMonthCostDTO = new ChuanyunMemberMonthCostDTO();
|
|
ChuanyunMemberMonthCostDTO chuanyunMemberMonthCostDTO = new ChuanyunMemberMonthCostDTO();
|
|
@@ -485,64 +380,43 @@ public class WorkHourStatistics {
|
|
chuanyunMemberMonthCostDTO.setDayLogDate(chuanyunSelfCostDO.getDayLogDate());
|
|
chuanyunMemberMonthCostDTO.setDayLogDate(chuanyunSelfCostDO.getDayLogDate());
|
|
chuanyunMemberMonthCostDTO.setWorkHour(chuanyunSelfCostDO.getTotalHour());
|
|
chuanyunMemberMonthCostDTO.setWorkHour(chuanyunSelfCostDO.getTotalHour());
|
|
chuanyunMemberMonthCostDTO.setDepartmentId(chuanyunSelfCostDO.getDepartmentId());
|
|
chuanyunMemberMonthCostDTO.setDepartmentId(chuanyunSelfCostDO.getDepartmentId());
|
|
- if (!StringUtils.isEmpty(chuanyunSelfCostDO.getProjectId())){
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(chuanyunSelfCostDO.getProjectId())) {
|
|
try {
|
|
try {
|
|
List<String> matchers = new ArrayList<>();
|
|
List<String> matchers = new ArrayList<>();
|
|
- matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
|
|
- matchers.add("F0000009_2,"+chuanyunSelfCostDO.getStatus());
|
|
|
|
- matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
|
|
- matchers.add("F0000008_2,"+chuanyunSelfCostDO.getProjectType());
|
|
|
|
- matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
|
|
- var filter= Filter.instance(0,1,true,"And",matchers);
|
|
|
|
- var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE,filter);
|
|
|
|
- var memberMonthString=objectMapper.writeValueAsString(chuanyunMemberMonthCostDTO);
|
|
|
|
|
|
+ matchers.add("F0000003_2," + chuanyunSelfCostDO.getProjectId());
|
|
|
|
+ matchers.add("F0000009_2," + chuanyunSelfCostDO.getStatus());
|
|
|
|
+ matchers.add("F0000002_2," + chuanyunSelfCostDO.getUserId());
|
|
|
|
+ matchers.add("F0000008_2," + chuanyunSelfCostDO.getProjectType());
|
|
|
|
+ matchers.add("F0000004_2," + chuanyunSelfCostDO.getDayLogDate());
|
|
|
|
+ var filter = Filter.instance(0, 1, true, "And", matchers);
|
|
|
|
+ var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE, filter);
|
|
|
|
+ var memberMonthString = objectMapper.writeValueAsString(chuanyunMemberMonthCostDTO);
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
|
|
- List<ChuanyunMemberMonthCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
|
+ List<ChuanyunMemberMonthCostDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
|
+ });
|
|
ChuanyunMemberMonthCostDO firstResult = result.get(0);
|
|
ChuanyunMemberMonthCostDO firstResult = result.get(0);
|
|
- chuanyunSaveDTO =chuanYunManager.update(ChuanyunMemberMonthCostDO.SCHEMA_CODE,firstResult.getObjectId(),memberMonthString);
|
|
|
|
- }else {
|
|
|
|
- chuanyunSaveDTO =chuanYunManager.save(ChuanyunMemberMonthCostDO.SCHEMA_CODE,memberMonthString,true);
|
|
|
|
|
|
+ chuanyunSaveDTO = chuanYunManager.update(ChuanyunMemberMonthCostDO.SCHEMA_CODE, firstResult.getObjectId(), memberMonthString);
|
|
|
|
+ } else {
|
|
|
|
+ chuanyunSaveDTO = chuanYunManager.save(ChuanyunMemberMonthCostDO.SCHEMA_CODE, memberMonthString, true);
|
|
}
|
|
}
|
|
- if(!chuanyunSaveDTO.getSuccessful()){
|
|
|
|
|
|
+ if (!chuanyunSaveDTO.getSuccessful()) {
|
|
log.warn("新增项目成员月度工时汇总失败");
|
|
log.warn("新增项目成员月度工时汇总失败");
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
- log.warn("########"+chuanyunSelfCostDO+"");
|
|
|
|
|
|
+ log.warn("########" + chuanyunSelfCostDO + "");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
//流程执行完
|
|
//流程执行完
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- log.info("月工时更新花费"+(Instant.now().getEpochSecond()-startTime));
|
|
|
|
|
|
+ log.info("月工时更新花费" + (Instant.now().getEpochSecond() - startTime));
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-// private void projectHistoryHour(){
|
|
|
|
-// List<ChuanyunProjectCostDO> list = chuanyunProjectCostDao.getHistoryProjectCost();
|
|
|
|
-// list.forEach(chuanyunProjectCostDO -> {
|
|
|
|
-// ChuanyunProjectScheduledTask.ProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ChuanyunProjectScheduledTask.ProjectTotalCostDTO();
|
|
|
|
-// chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
|
|
|
|
-// chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
|
|
|
|
-// chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
|
|
|
|
-// chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
|
|
|
|
-// chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
|
|
|
|
-// try {
|
|
|
|
-// var projectTotalString=objectMapper.writeValueAsString(chuanyunProjectTotalCostDTO);
|
|
|
|
-// ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectTotalCostDO.SCHEMA_CODE,projectTotalString,true);
|
|
|
|
-// if(chuanyunSaveDTO.getSuccessful()){
|
|
|
|
-// log.warn("新增项目成本汇总成功");
|
|
|
|
-// }
|
|
|
|
-// } catch (BigSizeException | JsonProcessingException e) {
|
|
|
|
-// e.printStackTrace();
|
|
|
|
-// }
|
|
|
|
-// });
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 人员项目工时汇总
|
|
* 人员项目工时汇总
|
|
*/
|
|
*/
|
|
@@ -551,16 +425,16 @@ public class WorkHourStatistics {
|
|
list.forEach(chuanyunMemberCostDO -> {
|
|
list.forEach(chuanyunMemberCostDO -> {
|
|
if (StringUtils.isEmpty(chuanyunMemberCostDO.getProjectId())) {
|
|
if (StringUtils.isEmpty(chuanyunMemberCostDO.getProjectId())) {
|
|
BigDecimal standard = new BigDecimal(8);
|
|
BigDecimal standard = new BigDecimal(8);
|
|
- ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectIdAndProjectTypeAndStatus(chuanyunMemberCostDO.getUserId(),chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getProjectType(),chuanyunMemberCostDO.getStatus());
|
|
|
|
- if (oldCostDO !=null) {
|
|
|
|
|
|
+ ChuanyunMemberCostDO oldCostDO = chuanyunMemberCostDao.findByUserIdAndProjectIdAndProjectTypeAndStatus(chuanyunMemberCostDO.getUserId(), chuanyunMemberCostDO.getProjectId(), chuanyunMemberCostDO.getProjectType(), chuanyunMemberCostDO.getStatus());
|
|
|
|
+ if (oldCostDO != null) {
|
|
chuanyunMemberCostDao.delete(oldCostDO);
|
|
chuanyunMemberCostDao.delete(oldCostDO);
|
|
}
|
|
}
|
|
chuanyunMemberCostDao.save(chuanyunMemberCostDO);
|
|
chuanyunMemberCostDao.save(chuanyunMemberCostDO);
|
|
//搜索是否有审批中数据
|
|
//搜索是否有审批中数据
|
|
- ChuanyunMemberCostDO processdo = chuanyunMemberCostDao.getProcessProjectMemberCost(chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getProjectType(),chuanyunMemberCostDO.getUserId());
|
|
|
|
- if (processdo==null){
|
|
|
|
- chuanyunMemberCostDao.deleteByProjectIdAndUserIdAndProjectTypeAndStatus(chuanyunMemberCostDO.getProjectId(),chuanyunMemberCostDO.getUserId(),chuanyunMemberCostDO.getProjectType(),"2");
|
|
|
|
- deleteExamineStatus(ChuanyunProjectMemberCostDO.SCHEMA_CODE,"F0000007","F0000001",chuanyunMemberCostDO.getProjectId(),"F0000002",chuanyunMemberCostDO.getUserId(),"","","","","","","F0000005",chuanyunMemberCostDO.getProjectType());
|
|
|
|
|
|
+ ChuanyunMemberCostDO processdo = chuanyunMemberCostDao.getProcessProjectMemberCost(chuanyunMemberCostDO.getProjectId(), chuanyunMemberCostDO.getProjectType(), chuanyunMemberCostDO.getUserId());
|
|
|
|
+ if (processdo == null) {
|
|
|
|
+ chuanyunMemberCostDao.deleteByProjectIdAndUserIdAndProjectTypeAndStatus(chuanyunMemberCostDO.getProjectId(), chuanyunMemberCostDO.getUserId(), chuanyunMemberCostDO.getProjectType(), "2");
|
|
|
|
+ deleteExamineStatus(ChuanyunProjectMemberCostDO.SCHEMA_CODE, "F0000007", "F0000001", chuanyunMemberCostDO.getProjectId(), "F0000002", chuanyunMemberCostDO.getUserId(), "", "", "", "", "", "", "F0000005", chuanyunMemberCostDO.getProjectType());
|
|
}
|
|
}
|
|
//更新氚云数据
|
|
//更新氚云数据
|
|
try {
|
|
try {
|
|
@@ -572,67 +446,63 @@ public class WorkHourStatistics {
|
|
chuanyunProjectMemberCostDTO.setStatus(chuanyunMemberCostDO.getStatus());
|
|
chuanyunProjectMemberCostDTO.setStatus(chuanyunMemberCostDO.getStatus());
|
|
chuanyunProjectMemberCostDTO.setPersonDays(chuanyunMemberCostDO.getPersonDays());
|
|
chuanyunProjectMemberCostDTO.setPersonDays(chuanyunMemberCostDO.getPersonDays());
|
|
List<String> matchers = new ArrayList<>();
|
|
List<String> matchers = new ArrayList<>();
|
|
- matchers.add("F0000001_2,"+chuanyunMemberCostDO.getProjectId());
|
|
|
|
- matchers.add("F0000005_2,"+chuanyunMemberCostDO.getProjectType());
|
|
|
|
- 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);
|
|
|
|
- var projectMemberString =objectMapper.writeValueAsString(chuanyunProjectMemberCostDTO);
|
|
|
|
|
|
+ matchers.add("F0000001_2," + chuanyunMemberCostDO.getProjectId());
|
|
|
|
+ matchers.add("F0000005_2," + chuanyunMemberCostDO.getProjectType());
|
|
|
|
+ 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);
|
|
|
|
+ var projectMemberString = objectMapper.writeValueAsString(chuanyunProjectMemberCostDTO);
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
ChuanyunSaveDTO chuanyunSaveDTO;
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null) {
|
|
|
|
- List<ChuanyunProjectMemberCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
|
+ List<ChuanyunProjectMemberCostDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
|
+ });
|
|
ChuanyunProjectMemberCostDO oldProjectMemberCostDO = result.get(0);
|
|
ChuanyunProjectMemberCostDO oldProjectMemberCostDO = result.get(0);
|
|
- chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberCostDO.SCHEMA_CODE,oldProjectMemberCostDO.getObjectId(), projectMemberString);
|
|
|
|
- }else {
|
|
|
|
- chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberCostDO.SCHEMA_CODE, projectMemberString,true);
|
|
|
|
|
|
+ chuanyunSaveDTO = chuanYunManager.update(ChuanyunProjectMemberCostDO.SCHEMA_CODE, oldProjectMemberCostDO.getObjectId(), projectMemberString);
|
|
|
|
+ } else {
|
|
|
|
+ chuanyunSaveDTO = chuanYunManager.save(ChuanyunProjectMemberCostDO.SCHEMA_CODE, projectMemberString, true);
|
|
}
|
|
}
|
|
- if(!chuanyunSaveDTO.getSuccessful()){
|
|
|
|
|
|
+ if (!chuanyunSaveDTO.getSuccessful()) {
|
|
log.warn("新增项目成员工时汇总失败");
|
|
log.warn("新增项目成员工时汇总失败");
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
log.info("新增项目成员工时汇总成功");
|
|
log.info("新增项目成员工时汇总成功");
|
|
}
|
|
}
|
|
} catch (JsonProcessingException | BigSizeException e) {
|
|
} catch (JsonProcessingException | BigSizeException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
- log.warn("########"+chuanyunMemberCostDO+"");
|
|
|
|
|
|
+ log.warn("########" + chuanyunMemberCostDO + "");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 项目工时汇总
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
* 离职人员工时标准化
|
|
* 离职人员工时标准化
|
|
*/
|
|
*/
|
|
- private void quitStandradHour() {
|
|
|
|
|
|
+ private void quitStandardHour() {
|
|
List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getQuitSelfWorkHour();
|
|
List<ChuanyunWorkHourDO> selfList = chuanyunWorkHourDao.getQuitSelfWorkHour();
|
|
selfList.forEach(self -> {
|
|
selfList.forEach(self -> {
|
|
BigDecimal standard = new BigDecimal(8);
|
|
BigDecimal standard = new BigDecimal(8);
|
|
- if (self!=null){
|
|
|
|
|
|
+ if (self != null) {
|
|
ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
|
|
ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
|
|
chuanyunSelfWorkHourDO.setStatus(self.getStatus());
|
|
chuanyunSelfWorkHourDO.setStatus(self.getStatus());
|
|
chuanyunSelfWorkHourDO.setUserId(self.getUserId());
|
|
chuanyunSelfWorkHourDO.setUserId(self.getUserId());
|
|
chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
|
|
chuanyunSelfWorkHourDO.setProjectType(self.getProjectType());
|
|
- if(ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())){
|
|
|
|
|
|
+ if (ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())) {
|
|
chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
|
|
chuanyunSelfWorkHourDO.setProjectId(ChuanYunConstant.PRODUCTION_PROJECT_ID);
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
chuanyunSelfWorkHourDO.setProjectId(self.getProjectId());
|
|
chuanyunSelfWorkHourDO.setProjectId(self.getProjectId());
|
|
}
|
|
}
|
|
chuanyunSelfWorkHourDO.setDayLogDate(self.getDayLogDate());
|
|
chuanyunSelfWorkHourDO.setDayLogDate(self.getDayLogDate());
|
|
- ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getQuitDayWorkHour(self.getUserId(),self.getDayLogDate());
|
|
|
|
- if (chuanyunWorkHourDO!=null){
|
|
|
|
- if (chuanyunWorkHourDO.getHoursWorked().compareTo(standard)<=0) {
|
|
|
|
|
|
+ ChuanyunWorkHourDO chuanyunWorkHourDO = chuanyunWorkHourDao.getQuitDayWorkHour(self.getUserId(), self.getDayLogDate());
|
|
|
|
+ if (chuanyunWorkHourDO != null) {
|
|
|
|
+ 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.findByUserIdAndAndProjectIdAndAndDayLogDateAndProjectType(self.getUserId(),ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType())?ChuanYunConstant.PRODUCTION_PROJECT_ID:self.getProjectId(),self.getDayLogDate(),self.getProjectType());
|
|
|
|
- if (chuanyunSelfWorkHourDO1!=null){
|
|
|
|
|
|
+ ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO1 = chuanyunSelfWorkHourDao.findByUserIdAndAndProjectIdAndAndDayLogDateAndProjectType(self.getUserId(), ChuanYunConstant.PRODUCTION_PROJECT.equals(self.getProjectType()) ? ChuanYunConstant.PRODUCTION_PROJECT_ID : self.getProjectId(), self.getDayLogDate(), self.getProjectType());
|
|
|
|
+ if (chuanyunSelfWorkHourDO1 != null) {
|
|
chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
|
|
chuanyunSelfWorkHourDao.delete(chuanyunSelfWorkHourDO1);
|
|
}
|
|
}
|
|
chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
|
|
chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
|
|
@@ -640,56 +510,57 @@ public class WorkHourStatistics {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- log.info("离职人员工时标准化完成"+selfList.size());
|
|
|
|
|
|
+ log.info("离职人员工时标准化完成" + selfList.size());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 删除状态为审核中数据
|
|
* 删除状态为审核中数据
|
|
|
|
+ *
|
|
* @param schemaCode
|
|
* @param schemaCode
|
|
* @param
|
|
* @param
|
|
*/
|
|
*/
|
|
- 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) {
|
|
|
|
|
|
+ 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(statusCode+"_2,"+"2");
|
|
|
|
- matchers.add(projectCode+"_2,"+projectId);
|
|
|
|
- if (!StringUtils.isEmpty(userId)){
|
|
|
|
- matchers.add(userCode+"_2,"+userId);
|
|
|
|
|
|
+ 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(year)) {
|
|
|
|
+ matchers.add(yearCode + "_2," + year);
|
|
}
|
|
}
|
|
- if (!StringUtils.isEmpty(month)){
|
|
|
|
- matchers.add(monthCode+"_2,"+month);
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(month)) {
|
|
|
|
+ matchers.add(monthCode + "_2," + month);
|
|
}
|
|
}
|
|
- if (!StringUtils.isEmpty(week)){
|
|
|
|
- matchers.add(weekCode+"_2,"+week);
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(week)) {
|
|
|
|
+ matchers.add(weekCode + "_2," + week);
|
|
}
|
|
}
|
|
- if (!StringUtils.isEmpty(projectType)){
|
|
|
|
- matchers.add(typeCode+"_2,"+projectType);
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(projectType)) {
|
|
|
|
+ matchers.add(typeCode + "_2," + projectType);
|
|
}
|
|
}
|
|
- var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
|
|
|
|
- var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
|
|
|
|
- if (chuanyunFindAllResponse.getReturnData()!=null){
|
|
|
|
- List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
|
|
|
+ var filter = Filter.instance(0, Integer.MAX_VALUE, true, "And", matchers);
|
|
|
|
+ var chuanyunFindAllResponse = chuanYunManager.findAll(schemaCode, filter);
|
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
|
+ List<ChuanyunCommonDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
|
+ });
|
|
result.forEach(basicDO -> {
|
|
result.forEach(basicDO -> {
|
|
- ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
|
|
|
|
- if(chuanyunSaveDTO.getSuccessful()){
|
|
|
|
|
|
+ ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode, basicDO.getObjectId());
|
|
|
|
+ if (chuanyunSaveDTO.getSuccessful()) {
|
|
// log.info("删除状态为审核中数据成功");
|
|
// log.info("删除状态为审核中数据成功");
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
log.warn("删除状态为审核中数据失败");
|
|
log.warn("删除状态为审核中数据失败");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
- }catch (Exception e) {
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
log.error(e.getMessage());
|
|
log.error(e.getMessage());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Data
|
|
@Data
|
|
- static
|
|
|
|
- class ChuanyunProjectMemberCostDTO {
|
|
|
|
|
|
+ static class ChuanyunProjectMemberCostDTO {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 项目ID
|
|
* 项目ID
|
|
@@ -732,8 +603,7 @@ public class WorkHourStatistics {
|
|
* 人员项目周度工时
|
|
* 人员项目周度工时
|
|
*/
|
|
*/
|
|
@Data
|
|
@Data
|
|
- static
|
|
|
|
- class ChuanyunProjectMemberWeekHourDTO{
|
|
|
|
|
|
+ static class ChuanyunProjectMemberWeekHourDTO {
|
|
|
|
|
|
@JsonProperty("F0000001")
|
|
@JsonProperty("F0000001")
|
|
private String projectId;
|
|
private String projectId;
|
|
@@ -770,8 +640,7 @@ public class WorkHourStatistics {
|
|
* 工时标准化更新数据
|
|
* 工时标准化更新数据
|
|
*/
|
|
*/
|
|
@Data
|
|
@Data
|
|
- static
|
|
|
|
- class ChuanyunSelfWorkHourDTO {
|
|
|
|
|
|
+ static class ChuanyunSelfWorkHourDTO {
|
|
|
|
|
|
@JsonProperty("F0000002")
|
|
@JsonProperty("F0000002")
|
|
private String userId;
|
|
private String userId;
|
|
@@ -816,8 +685,7 @@ public class WorkHourStatistics {
|
|
}
|
|
}
|
|
|
|
|
|
@Data
|
|
@Data
|
|
- static
|
|
|
|
- class ChuanyunMemberMonthCostDTO{
|
|
|
|
|
|
+ static class ChuanyunMemberMonthCostDTO {
|
|
/**
|
|
/**
|
|
* 项目ID
|
|
* 项目ID
|
|
*/
|
|
*/
|