|
@@ -2,11 +2,11 @@ package com.galaxis.manatee.service;
|
|
|
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunSelfCostDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunWeekMemberHourDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunWorkHourDao;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberHourDO;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfWorkHourDO;
|
|
|
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunWorkHourDO;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.*;
|
|
|
import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
|
|
|
import com.galaxis.manatee.entity.chuanyun.dto.Filter;
|
|
|
import com.galaxis.manatee.manager.ChuanYunManager;
|
|
@@ -31,11 +31,15 @@ public class LogCheckService {
|
|
|
private final ChuanyunWorkHourDao chuanyunWorkHourDao;
|
|
|
private final ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao;
|
|
|
private final ChuanYunManager chuanYunManager;
|
|
|
+ private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
|
|
|
+ private final ChuanyunSelfCostDao chuanyunSelfCostDao;
|
|
|
|
|
|
- public LogCheckService(ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanYunManager chuanYunManager) {
|
|
|
+ public LogCheckService(ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanYunManager chuanYunManager, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao) {
|
|
|
this.chuanyunWorkHourDao = chuanyunWorkHourDao;
|
|
|
this.chuanyunSelfWorkHourDao = chuanyunSelfWorkHourDao;
|
|
|
this.chuanYunManager = chuanYunManager;
|
|
|
+ this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
|
|
|
+ this.chuanyunSelfCostDao = chuanyunSelfCostDao;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -72,9 +76,41 @@ public class LogCheckService {
|
|
|
* @throws Exception 用户Id为空异常
|
|
|
*/
|
|
|
public void checkWeekWorkHour(String userId) throws Exception {
|
|
|
- //@TODO
|
|
|
- //***
|
|
|
- //@TODO
|
|
|
+ if (StringUtils.isEmpty(userId)) {
|
|
|
+ throw new Exception("用户Id为空");
|
|
|
+ }
|
|
|
+ long start = System.currentTimeMillis();
|
|
|
+ log.info("开始核对标准化周工时");
|
|
|
+ List<ChuanyunWeekMemberHourDO> list = chuanyunWeekMemberHourDao.getWeekMemberHourByUserId(userId);
|
|
|
+ List<ChuanyunWeekMemberHourDO> oldlist = chuanyunWeekMemberHourDao.findByUserId(userId);
|
|
|
+ Map<String, Integer> map = new HashMap<>(list.size()+oldlist.size());
|
|
|
+
|
|
|
+ if (list.size()!=oldlist.size()){
|
|
|
+ for (ChuanyunWeekMemberHourDO chuanyunWeekMemberHourDO : list){
|
|
|
+ map.put(chuanyunWeekMemberHourDO.getUserId()+chuanyunWeekMemberHourDO.getProjectId()+chuanyunWeekMemberHourDO.getYear()+chuanyunWeekMemberHourDO.getWeek(),1);
|
|
|
+ }
|
|
|
+ for (ChuanyunWeekMemberHourDO chuanyunWeekMemberHourDO : oldlist){
|
|
|
+ Integer count = map.get(chuanyunWeekMemberHourDO.getUserId()+chuanyunWeekMemberHourDO.getProjectId()+chuanyunWeekMemberHourDO.getYear()+chuanyunWeekMemberHourDO.getWeek());
|
|
|
+ if (count==null){
|
|
|
+ chuanyunWeekMemberHourDao.delete(chuanyunWeekMemberHourDO);
|
|
|
+ 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());
|
|
|
+ var filter = Filter.instance(0, 1, true, "And", matchers);
|
|
|
+ var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, filter);
|
|
|
+ ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
+ List<ChuanyunProjectMemberWeekHourDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
+ });
|
|
|
+ chuanyunSaveDTO = chuanYunManager.delete(ChuanyunProjectMemberWeekHourDO.SCHEMA_CODE, result.get(0).getObjectId());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("核对耗时" + (System.currentTimeMillis() - start) + "毫秒");
|
|
|
updateChuanyunWeekWorkHour();
|
|
|
updateManateeWeekWorkHour();
|
|
|
}
|
|
@@ -89,9 +125,40 @@ public class LogCheckService {
|
|
|
* @throws Exception 用户Id为空异常
|
|
|
*/
|
|
|
public void checkMonthWorkHour(String userId) throws Exception {
|
|
|
- //@TODO
|
|
|
- //***
|
|
|
- //@TODO
|
|
|
+ if (StringUtils.isEmpty(userId)) {
|
|
|
+ throw new Exception("用户Id为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ long start = System.currentTimeMillis();
|
|
|
+ log.info("开始核对标准化月工时");
|
|
|
+ List<ChuanyunSelfWorkHourDO> list = chuanyunSelfWorkHourDao.getMonthProjectHourByUserId(userId);
|
|
|
+ List<ChuanyunSelfCostDO> costDOList = chuanyunSelfCostDao.findByUserId(userId);
|
|
|
+ if (list.size()!=costDOList.size()){
|
|
|
+ Map<String, Integer> map = new HashMap<>(list.size()+costDOList.size());
|
|
|
+ for (ChuanyunSelfWorkHourDO chuanyunSelfWorkHourDO : list){
|
|
|
+ map.put(chuanyunSelfWorkHourDO.getUserId()+chuanyunSelfWorkHourDO.getProjectId()+chuanyunSelfWorkHourDO.getDayLogDate().withDayOfMonth(1),1);
|
|
|
+ }
|
|
|
+ for (ChuanyunSelfCostDO chuanyunSelfCostDO : costDOList){
|
|
|
+ Integer count = map.get(chuanyunSelfCostDO.getUserId()+chuanyunSelfCostDO.getProjectId()+chuanyunSelfCostDO.getDayLogDate().withDayOfMonth(1));
|
|
|
+ if (count==null){
|
|
|
+ chuanyunSelfCostDao.delete(chuanyunSelfCostDO);
|
|
|
+ List<String> matchers = new ArrayList<>();
|
|
|
+ matchers.add("F0000003_2,"+chuanyunSelfCostDO.getProjectId());
|
|
|
+ matchers.add("F0000002_2,"+chuanyunSelfCostDO.getUserId());
|
|
|
+ matchers.add("F0000004_2,"+chuanyunSelfCostDO.getDayLogDate());
|
|
|
+ var filter = Filter.instance(0, 1, true, "And", matchers);
|
|
|
+ var chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunMemberMonthCostDO.SCHEMA_CODE, filter);
|
|
|
+ ChuanyunSaveDTO chuanyunSaveDTO;
|
|
|
+ if (chuanyunFindAllResponse.getReturnData() != null) {
|
|
|
+ List<ChuanyunMemberMonthCostDO> result = objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>() {
|
|
|
+ });
|
|
|
+ chuanyunSaveDTO = chuanYunManager.delete(ChuanyunMemberMonthCostDO.SCHEMA_CODE, result.get(0).getObjectId());
|
|
|
+ }
|
|
|
+ log.info(chuanyunSelfCostDO.getUserId()+"删除项目"+chuanyunSelfCostDO.getProjectId()+"时间为"+chuanyunSelfCostDO.getDayLogDate()+"月工时");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("核对耗时" + (System.currentTimeMillis() - start) + "毫秒");
|
|
|
updateChuanyunMonthWorkHour();
|
|
|
updateManateeMonthWorkHour();
|
|
|
}
|