|
@@ -0,0 +1,118 @@
|
|
|
+package com.galaxis.manatee.task;
|
|
|
+
|
|
|
+import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunGroupProjectDao;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunHisrotyDayWorkHourDao;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunHisrotyDayWorkHourDO;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfWorkHourDO;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
|
+import com.galaxis.manatee.manager.ChuanYunManager;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class HistoryDayWorkHourStatistics {
|
|
|
+
|
|
|
+ private final Integer pageSize=100;
|
|
|
+ private final ChuanYunManager chuanYunManager;
|
|
|
+ private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
|
+ private final ChuanyunGroupProjectDao chuanyunGroupProjectDao;
|
|
|
+ private final ChuanyunHisrotyDayWorkHourDao chuanyunHisrotyDayWorkHourDao;
|
|
|
+
|
|
|
+ public HistoryDayWorkHourStatistics(ChuanYunManager chuanYunManager, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunHisrotyDayWorkHourDao chuanyunHisrotyDayWorkHourDao) {
|
|
|
+ this.chuanYunManager = chuanYunManager;
|
|
|
+ this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
|
+ this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
|
|
|
+ this.chuanyunHisrotyDayWorkHourDao = chuanyunHisrotyDayWorkHourDao;
|
|
|
+ }
|
|
|
+
|
|
|
+// @Scheduled(fixedDelay = 3600000L)
|
|
|
+ private void getDataFromChuanyun() {
|
|
|
+ updateHistoryDayWorkHour();
|
|
|
+ standardDayWorkHour();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateHistoryDayWorkHour(){
|
|
|
+ var objectMapper=new ObjectMapper();
|
|
|
+ var start=0;
|
|
|
+ var totalCount=0L;
|
|
|
+ var flag=true;
|
|
|
+ while (flag){
|
|
|
+ try{
|
|
|
+ //从氚云查询数据
|
|
|
+ var filter= Filter.instance(start,start+pageSize,true);
|
|
|
+ var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunHisrotyDayWorkHourDO.SCHEMA_CODE,filter);
|
|
|
+ if(chuanyunFindAllResponse.getReturnData()==null){
|
|
|
+ flag=false;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
|
|
|
+ start+=pageSize;
|
|
|
+ }else{
|
|
|
+ flag=false;
|
|
|
+ }
|
|
|
+ List<ChuanyunHisrotyDayWorkHourDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ result.forEach(chuanyunHisrotyDayWorkHourDO -> {
|
|
|
+
|
|
|
+ log.warn(chuanyunHisrotyDayWorkHourDO.toString());
|
|
|
+ chuanyunHisrotyDayWorkHourDO.setUserId(chuanyunHisrotyDayWorkHourDO.getUserIdObject().getObjectId());
|
|
|
+ if (!StringUtils.isBlank(chuanyunHisrotyDayWorkHourDO.getProjectId())){
|
|
|
+ chuanyunHisrotyDayWorkHourDO.setProjectType(chuanyunGroupProjectDao.findByObjectId(chuanyunHisrotyDayWorkHourDO.getProjectId()).getProjectType());
|
|
|
+ }
|
|
|
+// List<ChuanyunHisrotyDayWorkHourDO> oldHisrotyDayWorkHourDO = chuanyunHisrotyDayWorkHourDao.findByUserIdAndProjectIdAndAndDayLogDate(chuanyunHisrotyDayWorkHourDO.getUserId(),chuanyunHisrotyDayWorkHourDO.getProjectId(),chuanyunHisrotyDayWorkHourDO.getDayLogDate());
|
|
|
+// if (oldHisrotyDayWorkHourDO.size()>0){
|
|
|
+// oldHisrotyDayWorkHourDO.forEach(chuanyunHisrotyDayWorkHourDO1 -> {
|
|
|
+// chuanyunHisrotyDayWorkHourDao.delete(chuanyunHisrotyDayWorkHourDO1);
|
|
|
+// });
|
|
|
+// }
|
|
|
+
|
|
|
+ });
|
|
|
+ chuanyunHisrotyDayWorkHourDao.saveAll(result);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error(e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void standardDayWorkHour(){
|
|
|
+ BigDecimal standard = new BigDecimal(8);
|
|
|
+ BigDecimal zero = new BigDecimal(0);
|
|
|
+ List<ChuanyunHisrotyDayWorkHourDO> list = chuanyunHisrotyDayWorkHourDao.findDayHour();
|
|
|
+ list.forEach(chuanyunHisrotyDayWorkHourDO -> {
|
|
|
+ ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO = new ChuanyunSelfWorkHourDO();
|
|
|
+ chuanyunSelfWorkHourDO.setUserId(chuanyunHisrotyDayWorkHourDO.getUserId());
|
|
|
+ chuanyunSelfWorkHourDO.setProjectId(chuanyunHisrotyDayWorkHourDO.getProjectId());
|
|
|
+ chuanyunSelfWorkHourDO.setDayLogDate(chuanyunHisrotyDayWorkHourDO.getDayLogDate());
|
|
|
+ chuanyunSelfWorkHourDO.setStatus("1");
|
|
|
+ chuanyunSelfWorkHourDO.setProjectType(chuanyunHisrotyDayWorkHourDO.getProjectType());
|
|
|
+ ChuanyunHisrotyDayWorkHourDO totalDayHour = chuanyunHisrotyDayWorkHourDao.findTotalDayHour(chuanyunHisrotyDayWorkHourDO.getUserId(),chuanyunHisrotyDayWorkHourDO.getDayLogDate());
|
|
|
+ log.warn(chuanyunHisrotyDayWorkHourDO.toString());
|
|
|
+ if (totalDayHour != null){
|
|
|
+ if (chuanyunHisrotyDayWorkHourDO.getWorkHour().compareTo(standard)<=0){
|
|
|
+ chuanyunSelfWorkHourDO.setStandardWorkHour(chuanyunHisrotyDayWorkHourDO.getWorkHour());
|
|
|
+ }else {
|
|
|
+ if (totalDayHour.getWorkHour().compareTo(zero)==1){
|
|
|
+ BigDecimal personDays = (chuanyunHisrotyDayWorkHourDO.getWorkHour().divide(totalDayHour.getWorkHour(), 2, RoundingMode.HALF_UP)).multiply(standard);
|
|
|
+ chuanyunSelfWorkHourDO.setStandardWorkHour(personDays);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+// ChuanyunSelfWorkHourDO oldSelfWorkHourDO = chuanyunSelfWorkHourDao.findByUserIdAndProjectIdAndDayLogDateAndProjectTypeAndStatus(chuanyunHisrotyDayWorkHourDO.getUserId(),chuanyunHisrotyDayWorkHourDO.getProjectId(),chuanyunHisrotyDayWorkHourDO.getDayLogDate(),chuanyunHisrotyDayWorkHourDO.getProjectType(),chuanyunHisrotyDayWorkHourDO.getStatus().toString());
|
|
|
+// if (oldSelfWorkHourDO!=null){
|
|
|
+// chuanyunSelfWorkHourDao.delete(oldSelfWorkHourDO);
|
|
|
+// }
|
|
|
+ chuanyunSelfWorkHourDao.save(chuanyunSelfWorkHourDO);
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|