|
|
@@ -17,6 +17,7 @@ import com.siwei.apply.service.JsgcghxkService;
|
|
|
import com.siwei.apply.service.NodeAttachmentService;
|
|
|
import com.siwei.apply.service.zrzysite.IZrzysiteCommonService;
|
|
|
import com.siwei.apply.utils.ServiceFileUtil;
|
|
|
+import com.siwei.common.core.exception.ServiceException;
|
|
|
import com.siwei.common.core.utils.DateUtils;
|
|
|
import com.siwei.common.core.utils.StringUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -43,7 +44,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
private JsgcghxkMapper jsgcghxkMapper;
|
|
|
|
|
|
|
|
|
-
|
|
|
@Autowired
|
|
|
private JsgcghxkService jsgcghxkService;
|
|
|
|
|
|
@@ -71,18 +71,57 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
return zrzysiteConstructMapper.selectCount(filterVo);
|
|
|
}
|
|
|
|
|
|
+ private final SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD);
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 手动同步当前环节数据
|
|
|
+ * @param projectId
|
|
|
+ * @param nodeTableName
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void syncCurrentNodeInfo(String projectId,String nodeTableName) {
|
|
|
+ Project project = projectMapper.get(projectId);
|
|
|
+ if(Objects.isNull(project) || StringUtils.isBlank(project.getCode())){
|
|
|
+ throw new ServiceException("当前项目不具备同步条件,请检查项目代码是否存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ZrzysiteConstruct> constructList = zrzysiteConstructMapper.selectByXmdmList(new ArrayList<>(Collections.singleton(project.getCode())));
|
|
|
+ if (CollectionUtils.isEmpty(constructList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Jsgcghxk> JsgcghxkList = jsgcghxkMapper.get(projectId);
|
|
|
+ Map<String,String> resSourceIdMap = JsgcghxkList.stream().filter(obj -> StringUtils.isNotBlank(obj.getSourceId())).collect(Collectors.toMap(Jsgcghxk::getSourceId, BaseId::getId));
|
|
|
+ //找出需要更新的节点id
|
|
|
+ List<String> needUpdateNodeIdList = JsgcghxkList.stream().filter(s->StringUtils.isBlank(s.getSourceId())).map(BaseId::getId).collect(Collectors.toList());
|
|
|
+ String addNodeId = "";
|
|
|
+ for (ZrzysiteConstruct construct : constructList) {
|
|
|
+ String needUpdateNodeId = "";
|
|
|
+ if(resSourceIdMap.containsKey(construct.getSqbh())){
|
|
|
+ needUpdateNodeId = resSourceIdMap.get(construct.getSqbh());
|
|
|
+ }else if (!needUpdateNodeIdList.isEmpty()) { // 取出头部元素并从集合删除
|
|
|
+ needUpdateNodeId = needUpdateNodeIdList.remove(0);
|
|
|
+ }
|
|
|
+ addOrUpdatToTable(construct,projectId,needUpdateNodeId);
|
|
|
+ //这里进行文件处理
|
|
|
+ getNodeAttachment(projectId,addNodeId,construct.getSqbh(),AloneWorkFlowEnum.NODE_5.getName());
|
|
|
+ }//end for
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 同步工程建设数据
|
|
|
* @param sqbh
|
|
|
+ *
|
|
|
+ * 1.查询所有的项目数据,及当前节点数据,(不存在的,未上链的。)
|
|
|
+ * 2.遍历这些数据,从Oracle中,根据项目号进行查询。
|
|
|
+ * 3.如果查到一条数据,然后进行入库一系列的操作。
|
|
|
+ * 4.不进行上链,上链操作,通过其他定时任务完成。
|
|
|
*/
|
|
|
@Override
|
|
|
public void syncConstructInfo(String sqbh) {
|
|
|
- /**
|
|
|
- * 1.查询所有的项目数据,及当前节点数据,不存在的,未上链的。
|
|
|
- * 2.遍历这些数据,从Oracle中,根据项目号进行查询。
|
|
|
- * 3.如果查到一条数据,然后进行入库一系列的操作。
|
|
|
- * 4.不进行上链,上链操作,通过其他定时任务完成。
|
|
|
- */
|
|
|
|
|
|
// 批量查询所有 项目名称,项目代码,workflow表中是否存在。如果存在,则不处理,如果不存在则处理。
|
|
|
List<Project> constructProjectList = projectMapper.getZrzysiteProjectList("t_jsgcghxk");
|
|
|
@@ -97,7 +136,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
Map<String, List<ZrzysiteConstruct>> codeToConstructMap = constructList.stream()
|
|
|
.collect(Collectors.groupingBy(ZrzysiteConstruct::getXmdm));
|
|
|
|
|
|
-
|
|
|
LinkedHashMap<Project, List<ZrzysiteConstruct>> zrzysiteConstructMap = new LinkedHashMap<>();
|
|
|
for (Project project : constructProjectList) {
|
|
|
List<ZrzysiteConstruct> items = codeToConstructMap.getOrDefault(project.getCode(), new ArrayList<>());
|
|
|
@@ -105,10 +143,10 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
zrzysiteConstructMap.put(project, items);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
log.info("到这里来了");
|
|
|
addConstructInfoToDataBase(zrzysiteConstructMap);
|
|
|
}
|
|
|
+ log.info("当前批次执行完毕");
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -118,7 +156,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
* @param zrzysiteConstructMap
|
|
|
*/
|
|
|
public void addConstructInfoToDataBase(Map<Project, List<ZrzysiteConstruct>> zrzysiteConstructMap) {
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
for (Map.Entry<Project, List<ZrzysiteConstruct>> entry : zrzysiteConstructMap.entrySet()) {
|
|
|
Project project = entry.getKey();
|
|
|
List<ZrzysiteConstruct> constructList = entry.getValue();
|
|
|
@@ -128,7 +165,10 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
String projectId = project.getId();
|
|
|
//来源类型。1.节点不存在的项目。2.节点存在的项目
|
|
|
String sourceType = project.getCreatorId();
|
|
|
- if("2".equals(sourceType)){ //修改和新增的情况
|
|
|
+
|
|
|
+ String addNodeId = "";
|
|
|
+ if("2".equals(sourceType)){
|
|
|
+ //修改和新增的情况
|
|
|
List<Jsgcghxk> JsgcghxkList = jsgcghxkMapper.get(projectId);
|
|
|
//1.如果有一个节点已经上链,直接外层跳过
|
|
|
Optional<Jsgcghxk> hasOnchainRes = JsgcghxkList.stream().filter(Jsgcghxk::getHasOnchain).findFirst();
|
|
|
@@ -152,7 +192,6 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
//找出需要更新的节点id
|
|
|
List<String> needUpdateNodeIdList = JsgcghxkList.stream().filter(s->StringUtils.isBlank(s.getSourceId())).map(BaseId::getId).collect(Collectors.toList());
|
|
|
|
|
|
- String addNodeId = "";
|
|
|
for (ZrzysiteConstruct construct : constructList) {
|
|
|
String needUpdateNodeId = "";
|
|
|
// 取出头部元素并从集合删除
|
|
|
@@ -160,63 +199,53 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
needUpdateNodeId = needUpdateNodeIdList.remove(0);
|
|
|
}
|
|
|
|
|
|
- if(StringUtils.isNotBlank(needUpdateNodeId)){
|
|
|
- JsgcghxkUpdateVo jsgcghxkUpdateVo = new JsgcghxkUpdateVo();
|
|
|
- jsgcghxkUpdateVo.setId(needUpdateNodeId);
|
|
|
- jsgcghxkUpdateVo.setProjectId(projectId);
|
|
|
- jsgcghxkUpdateVo.setYddw(construct.getYdwz());
|
|
|
- jsgcghxkUpdateVo.setYddw(construct.getXddw());
|
|
|
- jsgcghxkUpdateVo.setJsgm(construct.getJsgm());
|
|
|
- jsgcghxkUpdateVo.setZsbh(construct.getZsbh());
|
|
|
- jsgcghxkUpdateVo.setFzjg(construct.getFadw());
|
|
|
- jsgcghxkUpdateVo.setSourceId(construct.getSqbh());
|
|
|
- jsgcghxkService.update(jsgcghxkUpdateVo);
|
|
|
- addNodeId = needUpdateNodeId;
|
|
|
- }else {
|
|
|
- JsgcghxkVo vo = new JsgcghxkVo();
|
|
|
- vo.setProjectId(projectId);
|
|
|
- vo.setYdwz(construct.getYdwz());
|
|
|
- vo.setYddw(construct.getXddw());
|
|
|
- vo.setJsgm(construct.getJsgm());
|
|
|
- vo.setZsbh(construct.getZsbh());
|
|
|
- vo.setFzjg(construct.getFadw());
|
|
|
- vo.setSourceId(construct.getSqbh());
|
|
|
- if (construct.getFzrq() != null) {
|
|
|
- vo.setFzDate(sdf.format(construct.getFzrq()));
|
|
|
- }
|
|
|
- addNodeId = jsgcghxkService.add(vo);
|
|
|
- }
|
|
|
+ addNodeId = addOrUpdatToTable(construct,projectId,needUpdateNodeId);
|
|
|
//这里进行文件处理
|
|
|
getNodeAttachment(projectId,addNodeId,construct.getSqbh(),AloneWorkFlowEnum.NODE_5.getName());
|
|
|
}//end for
|
|
|
-
|
|
|
}else if("1".equals(sourceType)){ //只存在新增情况
|
|
|
for (ZrzysiteConstruct construct : constructList) {
|
|
|
- JsgcghxkVo vo = new JsgcghxkVo();
|
|
|
- vo.setProjectId(projectId);
|
|
|
- vo.setYdwz(construct.getYdwz());
|
|
|
- vo.setYddw(construct.getXddw());
|
|
|
- vo.setJsgm(construct.getJsgm());
|
|
|
- vo.setZsbh(construct.getZsbh());
|
|
|
- vo.setFzjg(construct.getFadw());
|
|
|
- vo.setSourceId(construct.getSqbh());
|
|
|
- if (construct.getFzrq() != null) {
|
|
|
- vo.setFzDate(sdf.format(construct.getFzrq()));
|
|
|
- }
|
|
|
- String addNodeId = jsgcghxkService.add(vo);
|
|
|
+ addNodeId = addOrUpdatToTable(construct,projectId,"");
|
|
|
//这里进行文件处理
|
|
|
getNodeAttachment(projectId,addNodeId,construct.getSqbh(),AloneWorkFlowEnum.NODE_5.getName());
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
}// end for
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ public String addOrUpdatToTable(ZrzysiteConstruct construct,String projectId,String needUpdateNodeId) {
|
|
|
+ String addNodeId = "";
|
|
|
+ if(StringUtils.isNotBlank(needUpdateNodeId)){
|
|
|
+ JsgcghxkUpdateVo jsgcghxkUpdateVo = new JsgcghxkUpdateVo();
|
|
|
+ jsgcghxkUpdateVo.setId(needUpdateNodeId);
|
|
|
+ jsgcghxkUpdateVo.setProjectId(projectId);
|
|
|
+ jsgcghxkUpdateVo.setYddw(construct.getYdwz());
|
|
|
+ jsgcghxkUpdateVo.setYddw(construct.getXddw());
|
|
|
+ jsgcghxkUpdateVo.setJsgm(construct.getJsgm());
|
|
|
+ jsgcghxkUpdateVo.setZsbh(construct.getZsbh());
|
|
|
+ jsgcghxkUpdateVo.setFzjg(construct.getFadw());
|
|
|
+ jsgcghxkUpdateVo.setSourceId(construct.getSqbh());
|
|
|
+ jsgcghxkService.update(jsgcghxkUpdateVo);
|
|
|
+ addNodeId = needUpdateNodeId;
|
|
|
+ }else {
|
|
|
+ JsgcghxkVo vo = new JsgcghxkVo();
|
|
|
+ vo.setProjectId(projectId);
|
|
|
+ vo.setYdwz(construct.getYdwz());
|
|
|
+ vo.setYddw(construct.getXddw());
|
|
|
+ vo.setJsgm(construct.getJsgm());
|
|
|
+ vo.setZsbh(construct.getZsbh());
|
|
|
+ vo.setFzjg(construct.getFadw());
|
|
|
+ vo.setSourceId(construct.getSqbh());
|
|
|
+ if (construct.getFzrq() != null) {
|
|
|
+ vo.setFzDate(sdf.format(construct.getFzrq()));
|
|
|
+ }
|
|
|
+ addNodeId = jsgcghxkService.add(vo);
|
|
|
+ }
|
|
|
+ return addNodeId;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
@@ -240,11 +269,8 @@ public class ZrzysiteCommonServiceImpl implements IZrzysiteCommonService {
|
|
|
List<ZrzysiteAttachment> zrzysiteAttachmentList = zrzysiteAttachmentMapper.selectByApplyinstId(sourceId);
|
|
|
//这里增加一个方法,把文件下载下来
|
|
|
|
|
|
- //先创建一个跟路径
|
|
|
- //fileDownLoadPath = ServiceFileUtil.createDirectory(nodeName);
|
|
|
-
|
|
|
if (CollectionUtils.isNotEmpty(zrzysiteAttachmentList)) {
|
|
|
- String[] subDirectoryNameArr = zrzysiteAttachmentList.stream().map(s->s.getClmc()).collect(Collectors.toSet()).toArray(new String[0]);
|
|
|
+ String[] subDirectoryNameArr = zrzysiteAttachmentList.stream().map(ZrzysiteAttachment::getClmc).distinct().toArray(String[]::new);
|
|
|
//先删除相关目录
|
|
|
for(String subDirectoryName : subDirectoryNameArr){
|
|
|
ServiceFileUtil.deleteDirectory(subDirectoryName);
|