|
@@ -1,14 +1,22 @@
|
|
|
package com.jeeplus.modules.sg.budgetSpectaculars.service;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.jeeplus.common.utils.StringUtils;
|
|
|
import com.jeeplus.core.persistence.Page;
|
|
|
import com.jeeplus.core.service.CrudService;
|
|
|
import com.jeeplus.modules.sg.budgetSpectaculars.entity.*;
|
|
|
import com.jeeplus.modules.sg.budgetSpectaculars.mapper.ProjectBasicsMapper;
|
|
|
+import com.jeeplus.modules.sys.entity.User;
|
|
|
+import com.jeeplus.modules.sys.utils.UserUtils;
|
|
|
+import net.oschina.j2cache.CacheChannel;
|
|
|
+import net.oschina.j2cache.J2Cache;
|
|
|
+import net.oschina.j2cache.redis.RedisCacheProvider;
|
|
|
+import net.oschina.j2cache.redis.RedisClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import redis.clients.jedis.BinaryJedisCommands;
|
|
|
|
|
|
import java.text.Collator;
|
|
|
import java.util.*;
|
|
@@ -37,73 +45,60 @@ public class ProjectBasicsService extends CrudService<ProjectBasicsMapper, Proje
|
|
|
* @return
|
|
|
*/
|
|
|
@Transactional(readOnly = false)
|
|
|
- public String disposeBudgetExecuteInfo(List<BudgetExecuteInfo> budgetExecuteList,String year){
|
|
|
- List<ProjectBasicsInfo> projectBasicsList = Lists.newArrayList();
|
|
|
+ public Map<String,Object> disposeBudgetExecuteInfo(List<BudgetExecuteInfo> budgetExecuteList,String year){
|
|
|
+ Map<String,Object> map=new HashMap();
|
|
|
+ //获取当前登陆人
|
|
|
+ User user = UserUtils.getUser();
|
|
|
+ //获取当前时间戳
|
|
|
+ UUID uuid = UUID.randomUUID();
|
|
|
+ List<String> projectIdList = Lists.newArrayList();
|
|
|
+ List<String> repetitionProjectNumbers = Lists.newArrayList();
|
|
|
+
|
|
|
+ CacheChannel channel = J2Cache.getChannel();
|
|
|
+ RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
|
|
|
+ BinaryJedisCommands binaryJedisCommands = client.get();
|
|
|
//遍历综合查询表数据信息
|
|
|
for (BudgetExecuteInfo budgetExecuteInfo: budgetExecuteList) {
|
|
|
//如果国网项目编码为空则不进行记录
|
|
|
- if(StringUtils.isBlank(budgetExecuteInfo.getProjectNumber())){
|
|
|
+ if (StringUtils.isBlank(budgetExecuteInfo.getProjectNumber())) {
|
|
|
continue;
|
|
|
}
|
|
|
- //将综合查询中的部分数据添加到项目底表list中
|
|
|
- ProjectBasicsInfo projectBasicsInfo = new ProjectBasicsInfo();
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectType()) && StringUtils.isNotBlank(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- if("配网建设改造项目".equals(budgetExecuteInfo.getProjectType()) && "10KV(20KV)中低压配电建设与改造工程项目".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- projectBasicsInfo.setProjectType("配网资本项目");
|
|
|
- }else if("配网建设改造项目".equals(budgetExecuteInfo.getProjectType()) && "业扩配套工程".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- projectBasicsInfo.setProjectType("业扩资本项目");
|
|
|
- }else if("配网建设改造项目".equals(budgetExecuteInfo.getProjectType()) && "变电站出线配套10KV(20KV)工程项目".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- projectBasicsInfo.setProjectType("出线配套项目");
|
|
|
- }else if("配网专项成本".equals(budgetExecuteInfo.getProjectType()) && "Z701配网专项成本".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- projectBasicsInfo.setProjectType("配网成本项目");
|
|
|
- }else if("配网专项成本".equals(budgetExecuteInfo.getProjectType()) && "Z703业扩专项成本".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- projectBasicsInfo.setProjectType("业扩成本项目");
|
|
|
- }else if("配网专项成本".equals(budgetExecuteInfo.getProjectType()) && "Z702农网专项成本(主业)".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
- projectBasicsInfo.setProjectType("农网项目");
|
|
|
- }else{
|
|
|
- projectBasicsInfo.setProjectType("");
|
|
|
+ //获取所有项目编码
|
|
|
+ projectIdList.add(budgetExecuteInfo.getProjectNumber());
|
|
|
+ }
|
|
|
+ //查询数据库是否含有数据
|
|
|
+ List<String> repetitionProjectNumberList = mapper.getRepetitionProjectNumberList(projectIdList);
|
|
|
+ //如果数据库中存在部分或者所有的项目number的数据,则将这些数据在新增列中去除并暂存到redis中,之后对用户进行是否替换操作
|
|
|
+ if(repetitionProjectNumberList.size()>0){
|
|
|
+
|
|
|
+ for (String projectId: repetitionProjectNumberList) {
|
|
|
+ Iterator<BudgetExecuteInfo> it = budgetExecuteList.iterator();
|
|
|
+ while(it.hasNext()){
|
|
|
+ BudgetExecuteInfo info = it.next();
|
|
|
+ if(projectId.equals(info.getProjectNumber())){//判定是否相同
|
|
|
+ repetitionProjectNumbers.add(info.getProjectNumber());
|
|
|
+ String json= JSON.toJSONString(info);//将项目信息转换为json数据
|
|
|
+ //将json数据存储到redis中并设定一个过期时间(1天)
|
|
|
+ binaryJedisCommands.set((user.getId()+uuid+"projectImport"+info.getProjectNumber()).getBytes(),json.getBytes());
|
|
|
+ binaryJedisCommands.expire((user.getId()+uuid+"projectImport"+info.getProjectNumber()).getBytes(),86400);
|
|
|
+ it.remove();
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }else{
|
|
|
- projectBasicsInfo.setProjectType("");
|
|
|
- }
|
|
|
- //添加项目名称
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectName())){
|
|
|
- projectBasicsInfo.setProjectName(budgetExecuteInfo.getProjectName());
|
|
|
- }
|
|
|
- //添加国网项目编码
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectNumber())){
|
|
|
- projectBasicsInfo.setProjectNumber(budgetExecuteInfo.getProjectNumber());
|
|
|
- }
|
|
|
- //添加一级单位
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getFirstLevelUnit())){
|
|
|
- projectBasicsInfo.setFirstLevelUnit(budgetExecuteInfo.getFirstLevelUnit());
|
|
|
- }
|
|
|
- //添加二级单位
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getSecondLevelUnit())){
|
|
|
- projectBasicsInfo.setSecondLevelUnit(budgetExecuteInfo.getSecondLevelUnit());
|
|
|
- }
|
|
|
- //添加归口部门
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getRelevantDepartment())){
|
|
|
- projectBasicsInfo.setRelevantDepartment(budgetExecuteInfo.getRelevantDepartment());
|
|
|
- }
|
|
|
- //添加项目性质
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectProperty())){
|
|
|
- projectBasicsInfo.setProjectProperty(budgetExecuteInfo.getProjectProperty());
|
|
|
- }
|
|
|
- //添加结算送审日期
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectProperty())){
|
|
|
- projectBasicsInfo.setProjectProperty(budgetExecuteInfo.getProjectProperty());
|
|
|
}
|
|
|
- //添加结算审定日期
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectProperty())){
|
|
|
- projectBasicsInfo.setProjectProperty(budgetExecuteInfo.getProjectProperty());
|
|
|
- }
|
|
|
- //添加项目是否关闭
|
|
|
- if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectCloseTime())){
|
|
|
- projectBasicsInfo.setIfProjectClose("是");
|
|
|
- }else{
|
|
|
- projectBasicsInfo.setIfProjectClose("否");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<ProjectBasicsInfo> projectBasicsList = Lists.newArrayList();
|
|
|
+ //遍历综合查询表数据信息
|
|
|
+ for (BudgetExecuteInfo budgetExecuteInfo: budgetExecuteList) {
|
|
|
+ //如果国网项目编码为空则不进行记录
|
|
|
+ if(StringUtils.isBlank(budgetExecuteInfo.getProjectNumber())){
|
|
|
+ continue;
|
|
|
}
|
|
|
+ //数据处理
|
|
|
+ ProjectBasicsInfo projectBasicsInfo = disposeData(budgetExecuteInfo);
|
|
|
+
|
|
|
//将数据添加到list中
|
|
|
projectBasicsList.add(projectBasicsInfo);
|
|
|
|
|
@@ -113,7 +108,130 @@ public class ProjectBasicsService extends CrudService<ProjectBasicsMapper, Proje
|
|
|
info.setYear(year);
|
|
|
}
|
|
|
insertAllProjectBasicsInfo(projectBasicsList);
|
|
|
- return "";
|
|
|
+
|
|
|
+ if(repetitionProjectNumbers.size()>0){
|
|
|
+ String projectIdStr = String.join(",", repetitionProjectNumbers);
|
|
|
+ //将json数据存储到redis中并设定一个过期时间(1天)
|
|
|
+ binaryJedisCommands.set((user.getId()+uuid+"projectImportByNumber").getBytes(),projectIdStr.getBytes());
|
|
|
+ binaryJedisCommands.expire((user.getId()+uuid+"projectImportByNumber").getBytes(),86400);
|
|
|
+ }
|
|
|
+ map.put("uuid",uuid.toString());
|
|
|
+ map.put("repetitionProjectIds",repetitionProjectNumbers);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public Map<String,Object> repetitionSave(String uuid,String year){
|
|
|
+ Map<String,Object> map=new HashMap();
|
|
|
+ //获取当前登陆人
|
|
|
+ User user = UserUtils.getUser();
|
|
|
+ CacheChannel channel = J2Cache.getChannel();
|
|
|
+ RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
|
|
|
+ try {
|
|
|
+ BinaryJedisCommands binaryJedisCommands = client.get();
|
|
|
+ byte[] bytes = binaryJedisCommands.get((user.getId() + uuid + "projectImportByNumber").getBytes());
|
|
|
+ String projectIdStr = new String(bytes);
|
|
|
+ List<String> projectNumberList = Arrays.asList(projectIdStr.split(","));
|
|
|
+ List<ProjectBasicsInfo> projectBasicsList = Lists.newArrayList();
|
|
|
+ for (String projectNumber: projectNumberList) {
|
|
|
+ byte[] projectBytes = binaryJedisCommands.get((user.getId() + uuid + "projectImport"+projectNumber).getBytes());
|
|
|
+ String projectJson = new String(projectBytes);
|
|
|
+ BudgetExecuteInfo budgetExecuteInfo = JSON.parseObject(projectJson, BudgetExecuteInfo.class);
|
|
|
+ //数据处理
|
|
|
+ ProjectBasicsInfo projectBasicsInfo = disposeData(budgetExecuteInfo);
|
|
|
+
|
|
|
+ //将redis中的对应数据添加到list中
|
|
|
+ projectBasicsList.add(projectBasicsInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除原有数据信息
|
|
|
+ mapper.deleteByProjectNumber(projectNumberList);
|
|
|
+ //新增显得数据信息
|
|
|
+ for (ProjectBasicsInfo info: projectBasicsList) {
|
|
|
+ info.preInsert();
|
|
|
+ info.setYear(year);
|
|
|
+ }
|
|
|
+ insertAllProjectBasicsInfo(projectBasicsList);
|
|
|
+ for (String projectNumber: projectNumberList) {
|
|
|
+ binaryJedisCommands.del((user.getId() + uuid + "projectImport"+projectNumber).getBytes());
|
|
|
+ }
|
|
|
+ binaryJedisCommands.del((user.getId() + uuid + "projectImportByNumber").getBytes());
|
|
|
+ }catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ client.release();
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据处理
|
|
|
+ * @param budgetExecuteInfo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ProjectBasicsInfo disposeData(BudgetExecuteInfo budgetExecuteInfo){
|
|
|
+ //将综合查询中的部分数据添加到项目底表list中
|
|
|
+ ProjectBasicsInfo projectBasicsInfo = new ProjectBasicsInfo();
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectType()) && StringUtils.isNotBlank(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ if("配网建设改造项目".equals(budgetExecuteInfo.getProjectType()) && "10KV(20KV)中低压配电建设与改造工程项目".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ projectBasicsInfo.setProjectType("配网资本项目");
|
|
|
+ }else if("配网建设改造项目".equals(budgetExecuteInfo.getProjectType()) && "业扩配套工程".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ projectBasicsInfo.setProjectType("业扩资本项目");
|
|
|
+ }else if("配网建设改造项目".equals(budgetExecuteInfo.getProjectType()) && "变电站出线配套10KV(20KV)工程项目".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ projectBasicsInfo.setProjectType("出线配套项目");
|
|
|
+ }else if("配网专项成本".equals(budgetExecuteInfo.getProjectType()) && "Z701配网专项成本".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ projectBasicsInfo.setProjectType("配网成本项目");
|
|
|
+ }else if("配网专项成本".equals(budgetExecuteInfo.getProjectType()) && "Z703业扩专项成本".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ projectBasicsInfo.setProjectType("业扩成本项目");
|
|
|
+ }else if("配网专项成本".equals(budgetExecuteInfo.getProjectType()) && "Z702农网专项成本(主业)".equals(budgetExecuteInfo.getThirdlySlassify())){
|
|
|
+ projectBasicsInfo.setProjectType("农网项目");
|
|
|
+ }else{
|
|
|
+ projectBasicsInfo.setProjectType("");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ projectBasicsInfo.setProjectType("");
|
|
|
+ }
|
|
|
+ //添加项目名称
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectName())){
|
|
|
+ projectBasicsInfo.setProjectName(budgetExecuteInfo.getProjectName());
|
|
|
+ }
|
|
|
+ //添加国网项目编码
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectNumber())){
|
|
|
+ projectBasicsInfo.setProjectNumber(budgetExecuteInfo.getProjectNumber());
|
|
|
+ }
|
|
|
+ //添加一级单位
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getFirstLevelUnit())){
|
|
|
+ projectBasicsInfo.setFirstLevelUnit(budgetExecuteInfo.getFirstLevelUnit());
|
|
|
+ }
|
|
|
+ //添加二级单位
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getSecondLevelUnit())){
|
|
|
+ projectBasicsInfo.setSecondLevelUnit(budgetExecuteInfo.getSecondLevelUnit());
|
|
|
+ }
|
|
|
+ //添加归口部门
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getRelevantDepartment())){
|
|
|
+ projectBasicsInfo.setRelevantDepartment(budgetExecuteInfo.getRelevantDepartment());
|
|
|
+ }
|
|
|
+ //添加项目性质
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectProperty())){
|
|
|
+ projectBasicsInfo.setProjectProperty(budgetExecuteInfo.getProjectProperty());
|
|
|
+ }
|
|
|
+ //添加结算送审日期
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectProperty())){
|
|
|
+ projectBasicsInfo.setProjectProperty(budgetExecuteInfo.getProjectProperty());
|
|
|
+ }
|
|
|
+ //添加结算审定日期
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectProperty())){
|
|
|
+ projectBasicsInfo.setProjectProperty(budgetExecuteInfo.getProjectProperty());
|
|
|
+ }
|
|
|
+ //添加项目是否关闭
|
|
|
+ if(StringUtils.isNotBlank(budgetExecuteInfo.getProjectCloseTime())){
|
|
|
+ projectBasicsInfo.setIfProjectClose("是");
|
|
|
+ }else{
|
|
|
+ projectBasicsInfo.setIfProjectClose("否");
|
|
|
+ }
|
|
|
+ return projectBasicsInfo;
|
|
|
}
|
|
|
|
|
|
/**
|