diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java index 82af987c23..d8e591ea31 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java @@ -33,11 +33,11 @@ import com.epmet.constant.DataSourceConstant; import com.epmet.dao.evaluationindex.screen.ScreenProjectDataDao; import com.epmet.dao.evaluationindex.screen.ScreenProjectImgDataDao; import com.epmet.dto.screen.ScreenProjectDataDTO; +import com.epmet.dto.screen.ScreenProjectImgDataDTO; import com.epmet.dto.screen.form.ScreenProjectDataInfoFormDTO; import com.epmet.dto.screencoll.ScreenCollFormDTO; import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryEntity; import com.epmet.entity.evaluationindex.screen.ScreenProjectDataEntity; -import com.epmet.entity.evaluationindex.screen.ScreenProjectImgDataEntity; import com.epmet.entity.stats.CustomerProjectCategoryDictEntity; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.OperCrmOpenFeignClient; @@ -47,6 +47,7 @@ import com.epmet.service.evaluationindex.screen.ScreenProjectCategoryService; import com.epmet.service.evaluationindex.screen.ScreenProjectDataService; import com.epmet.service.stats.CustomerProjectCategoryDictService; import com.github.pagehelper.PageHelper; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; @@ -56,7 +57,6 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -66,6 +66,7 @@ import java.util.stream.Collectors; * @author qu qu@elink-cn.com * @since v1.0.0 2021-02-23 */ +@Slf4j @Service @DataSource(value = DataSourceConstant.EVALUATION_INDEX) public class ScreenProjectDataServiceImpl extends BaseServiceImpl implements ScreenProjectDataService { @@ -136,76 +137,13 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl param) { - /*if (param.getIsFirst()) { - int affectedRows = baseDao.deleteByDateIdAndCustomerId(param.getCustomerId(), param.getDateId()); - while (affectedRows > 0) { - affectedRows = baseDao.deleteByDateIdAndCustomerId(param.getCustomerId(), param.getDateId()); - } - }*/ - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date today = new Date(); - List projectList = new ArrayList<>(); param.getDataList().forEach(item -> { String projectStatusCode = item.getProjectStatusCode(); //2021.3.8 epmet中,调用方传level,这边不再计算 - if(item.getProjectLevel() == null){ - //todo 动态获取超时时间 - //如果结案 结案时间立项时间; - if ("closed_case".equals(projectStatusCode)) { - Date createTime = item.getProjectCreateTime(); - Date closeCaseTime = item.getCloseCaseTime(); - - if (closeCaseTime.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 4) { - //如果结案时间-立项时间小于等于4天 未超期 level3 - item.setProjectLevel(3); - } else if (closeCaseTime.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 5) { - //如果结案时间-立项时间大于4天小于5天 即将超期 level2 - item.setProjectLevel(2); - } else { - //大于5天 已超期 level1 - item.setProjectLevel(1); - } - } else if ("pending".equals(projectStatusCode)) { - //如果处理中 当前时间-立项时间; - Date createTime = item.getProjectCreateTime(); - - if (today.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 4) { - //如果当前时间-立项时间小于等于4天 未超期 level3 - item.setProjectLevel(3); - } else if (today.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 5) { - //如果当前时间-立项时间大于4天小于5天 即将超期 level2 - item.setProjectLevel(2); - } else { - //大于5天 已超期 level1 - item.setProjectLevel(1); - } - } - } - //先删除该projectId对应的旧数据 - baseDao.deleteByProjectId(param.getCustomerId(), item.getProjectId()); - screenProjectImgDataDao.deleteByProjectId(param.getCustomerId(), item.getProjectId()); - - //如果orgType未知,获取一下 -// if ("unknown".equals(item.getOrgType())){ -// ScreenCustomerAgencyEntity screenCustomerAgencyEntity = agencyDao.selectById(item.getOrgId()); -// if (screenCustomerAgencyEntity != null){ -// item.setOrgType("agency"); -// }else { -// ScreenCustomerDeptEntity screenCustomerDeptEntity = deptDao.selectById(item.getOrgId()); -// if (screenCustomerDeptEntity!=null){ -// item.setOrgType("department"); -// }else { -// ScreenCustomerGridEntity screenCustomerGridEntity = gridDao.selectById(item.getOrgId()); -// if (screenCustomerGridEntity != null){ -// item.setOrgType("grid"); -// } -// } -// } -// } + setLevelByCreateTime(item, projectStatusCode); //插入项目表 ScreenProjectDataEntity screenProjectDataEntity = ConvertUtils.sourceToTarget(item, ScreenProjectDataEntity.class); @@ -215,23 +153,67 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl param, ScreenProjectDataInfoFormDTO item, ScreenProjectDataEntity screenProjectDataEntity) { + //先删除该projectId对应的旧数据 + baseDao.deleteByProjectId(param.getCustomerId(), item.getProjectId()); + screenProjectImgDataDao.deleteByProjectId(param.getCustomerId(), item.getProjectId()); + baseDao.insert(screenProjectDataEntity); + saveCategory(param.getCustomerId(), Collections.singletonList(screenProjectDataEntity)) + //插入该项目图片表 + String[] projectImgUrl = item.getProjectImgUrl(); + if (ArrayUtils.isNotEmpty(projectImgUrl)) { + List imgList = new ArrayList<>(); + for (int i = 0; i < projectImgUrl.length; i++) { + ScreenProjectImgDataDTO screenProjectImgDataEntity = new ScreenProjectImgDataDTO(); + screenProjectImgDataEntity.setCustomerId(param.getCustomerId()); + screenProjectImgDataEntity.setProjectId(item.getProjectId()); + screenProjectImgDataEntity.setProjectImgUrl(projectImgUrl[i]); + screenProjectImgDataEntity.setSort(i); + imgList.add(screenProjectImgDataEntity) + } + screenProjectImgDataDao.insertBatch(imgList); + } + } - saveCategory(param.getCustomerId(), projectList); + private void setLevelByCreateTime(ScreenProjectDataInfoFormDTO item, String projectStatusCode) { + if(item.getProjectLevel() == null){ + //todo 动态获取超时时间 + //如果结案 结案时间立项时间; + if ("closed_case".equals(projectStatusCode)) { + Date createTime = item.getProjectCreateTime(); + Date closeCaseTime = item.getCloseCaseTime(); + + if (closeCaseTime.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 4L) { + //如果结案时间-立项时间小于等于4天 未超期 level3 + item.setProjectLevel(3); + } else if (closeCaseTime.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 5L) { + //如果结案时间-立项时间大于4天小于5天 即将超期 level2 + item.setProjectLevel(2); + } else { + //大于5天 已超期 level1 + item.setProjectLevel(1); + } + } else if ("pending".equals(projectStatusCode)) { + //如果处理中 当前时间-立项时间; + Date createTime = item.getProjectCreateTime(); + Date today = new Date(); + if (today.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 4L) { + //如果当前时间-立项时间小于等于4天 未超期 level3 + item.setProjectLevel(3); + } else if (today.getTime() - createTime.getTime() <= 1000 * 60 * 60 * 24 * 5L) { + //如果当前时间-立项时间大于4天小于5天 即将超期 level2 + item.setProjectLevel(2); + } else { + //大于5天 已超期 level1 + item.setProjectLevel(1); + } + } + } } @@ -278,7 +260,7 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl 0) { + while (affectedRows > NumConstant.ZERO) { affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId, dateId); } List> partition = ListUtils.partition(meta, NumConstant.ONE_HUNDRED); @@ -359,32 +341,43 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl projectCategoryList = new ArrayList<>(); projectList.forEach(project -> { //分类为空不作处理 - if (StringUtils.isNotBlank(project.getCategoryCode())) { - List categoryList = Arrays.asList(project.getCategoryCode().split(StrConstant.COMMA)); - categoryList.forEach(category -> { - ScreenProjectCategoryEntity entity = new ScreenProjectCategoryEntity(); - entity.setCustomerId(customerId); - entity.setProjectId(project.getProjectId()); - entity.setOriginCategoryCode(category); - CustomerProjectCategoryDictEntity categoryEntity = customerProjectCategoryDictService.getByCategoryCode(customerId, category); - if (null != categoryEntity) { - // - if ("external".equals(categoryEntity.getCustomerType())) { - entity.setCategoryCode(categoryEntity.getEpmetCategoryCode()); - CustomerProjectCategoryDictEntity parent = customerProjectCategoryDictService.getByCategoryCode(parentCustomer.getData(), categoryEntity.getEpmetCategoryCode()); - entity.setParentCategoryCode(parent.getParentCategoryCode()); - entity.setLevel(parent.getLevel()); - } else { - entity.setCategoryCode(categoryEntity.getCategoryCode()); - entity.setParentCategoryCode(categoryEntity.getParentCategoryCode()); - entity.setLevel(categoryEntity.getLevel()); - } - } - projectCategoryList.add(entity); - }); + if (StringUtils.isBlank(project.getCategoryCode())) { + return; } + + List categoryList = Arrays.asList(project.getCategoryCode().split(StrConstant.COMMA)); + categoryList.forEach(category -> { + ScreenProjectCategoryEntity entity = new ScreenProjectCategoryEntity(); + entity.setCustomerId(customerId); + entity.setProjectId(project.getProjectId()); + entity.setOriginCategoryCode(category); + CustomerProjectCategoryDictEntity categoryEntity = customerProjectCategoryDictService.getByCategoryCode(customerId, category); + if (null != categoryEntity) { + log.error("customerId:{} categoryCode:{} is not exist in ProjectCategoryDict", customerId, category); + return; + } + if ("external".equals(categoryEntity.getCustomerType())) { + entity.setCategoryCode(categoryEntity.getEpmetCategoryCode()); + CustomerProjectCategoryDictEntity parent = customerProjectCategoryDictService.getByCategoryCode(parentCustomer.getData(), categoryEntity.getEpmetCategoryCode()); + entity.setParentCategoryCode(parent.getParentCategoryCode()); + entity.setLevel(parent.getLevel()); + } else { + entity.setCategoryCode(categoryEntity.getCategoryCode()); + entity.setParentCategoryCode(categoryEntity.getParentCategoryCode()); + entity.setLevel(categoryEntity.getLevel()); + } + projectCategoryList.add(entity); + //如果分类数据已经超过100了 就插入一批 + if (projectCategoryList.size() > NumConstant.ONE_HUNDRED){ + screenProjectCategoryService.insertBatch(projectCategoryList); + projectCategoryList.clear(); + } + }); }); - screenProjectCategoryService.insertBatch(projectCategoryList); + //如果不为空 则插入剩余的那一部分 + if (projectCategoryList.size() > NumConstant.ZERO){ + screenProjectCategoryService.insertBatch(projectCategoryList); + } } }