| 
							
								 | 
							
							package com.platform.service.impl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							import java.util.ArrayList;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import java.util.Date;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import java.util.List;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import java.util.regex.Matcher;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import java.util.regex.Pattern;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							import javax.annotation.Resource;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							import org.springframework.scheduling.annotation.Scheduled;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import org.springframework.stereotype.Component;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import org.springframework.stereotype.Service;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.dao.DataInfoDao;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.dao.DataInfoMoveTmpDao;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.entities.DataInfoEntity;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.entities.DataInfoEntityMoveTmp;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.glusterfs.CheckoutMD5;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.glusterfs.CopyData;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.glusterfs.RemoveData;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.glusterfs.ShowData;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.service.IMoveDataService;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.utils.Bean2MapUtils;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.utils.Constant;
 | 
						
						
						
						
							 | 
							
								 | 
							
							import com.platform.utils.DateForm;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							@Component
 | 
						
						
						
						
							 | 
							
								 | 
							
							@Service(value = "moveDataService")
 | 
						
						
						
						
							 | 
							
								 | 
							
							public class MoveDataServiceImpl implements IMoveDataService{
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Resource(name = "dataInfoDao")
 | 
						
						
						
						
							 | 
							
								 | 
							
								private DataInfoDao dataInfoDao;
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								private RemoveData removeservice = new RemoveData();
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								/**
 | 
						
						
						
						
							 | 
							
								 | 
							
								 * 迁移
 | 
						
						
						
						
							 | 
							
								 | 
							
								 */
 | 
						
						
						
						
							 | 
							
								 | 
							
								CopyData copy = new CopyData();
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								/**
 | 
						
						
						
						
							 | 
							
								 | 
							
								 * MD5校验
 | 
						
						
						
						
							 | 
							
								 | 
							
								 */
 | 
						
						
						
						
							 | 
							
								 | 
							
								CheckoutMD5 check = new CheckoutMD5();
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Resource(name = "dataInfoMoveTmpDao")
 | 
						
						
						
						
							 | 
							
								 | 
							
								private DataInfoMoveTmpDao dataInfoMoveTmpDao;
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								/**
 | 
						
						
						
						
							 | 
							
								 | 
							
								 * 查看数据
 | 
						
						
						
						
							 | 
							
								 | 
							
								 */
 | 
						
						
						
						
							 | 
							
								 | 
							
								ShowData show = new ShowData();
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Override
 | 
						
						
						
						
							 | 
							
								 | 
							
								public boolean moveData(List<DataInfoEntity> data, String dstPath) throws Exception {
 | 
						
						
						
						
							 | 
							
								 | 
							
									boolean isSuccess = false;
 | 
						
						
						
						
							 | 
							
								 | 
							
									String tailPath = "";
 | 
						
						
						
						
							 | 
							
								 | 
							
									if (null != data) {
 | 
						
						
						
						
							 | 
							
								 | 
							
										//XXX/320198_16/1,or XXX/320122KFQ_15/1 ---> /320198_16/1, or /320122KFQ_15/1
 | 
						
						
						
						
							 | 
							
								 | 
							
										List<DataInfoEntityMoveTmp> exist = dataInfoMoveTmpDao.findAll();
 | 
						
						
						
						
							 | 
							
								 | 
							
										List<String> existIds = new ArrayList<String>();
 | 
						
						
						
						
							 | 
							
								 | 
							
										if (null != exist) {
 | 
						
						
						
						
							 | 
							
								 | 
							
											for (DataInfoEntityMoveTmp dataInfoEntityMoveTmp : exist) {
 | 
						
						
						
						
							 | 
							
								 | 
							
												if ("0".equals(dataInfoEntityMoveTmp.getCompleteStatus()) || "1".equals(dataInfoEntityMoveTmp.getCompleteStatus())) {
 | 
						
						
						
						
							 | 
							
								 | 
							
													if (null != dataInfoEntityMoveTmp.getDataPath()) {
 | 
						
						
						
						
							 | 
							
								 | 
							
														existIds.add(dataInfoEntityMoveTmp.getDataPath());
 | 
						
						
						
						
							 | 
							
								 | 
							
													}
 | 
						
						
						
						
							 | 
							
								 | 
							
												}
 | 
						
						
						
						
							 | 
							
								 | 
							
											}
 | 
						
						
						
						
							 | 
							
								 | 
							
										}
 | 
						
						
						
						
							 | 
							
								 | 
							
										Pattern pattern = Pattern.compile("\\/\\d+[a-z]*[A-Z]*_\\d+\\/\\d*\\/*$");
 | 
						
						
						
						
							 | 
							
								 | 
							
										// 末尾 含有 /
 | 
						
						
						
						
							 | 
							
								 | 
							
										Pattern pattern2 = Pattern.compile("\\/$");
 | 
						
						
						
						
							 | 
							
								 | 
							
										Matcher matcher2 = pattern2.matcher(dstPath);
 | 
						
						
						
						
							 | 
							
								 | 
							
										//去掉 最后 的 / 符合
 | 
						
						
						
						
							 | 
							
								 | 
							
										if (matcher2.find()) {
 | 
						
						
						
						
							 | 
							
								 | 
							
											dstPath = dstPath.substring(0, dstPath.length()-1);
 | 
						
						
						
						
							 | 
							
								 | 
							
										}
 | 
						
						
						
						
							 | 
							
								 | 
							
										List<DataInfoEntityMoveTmp> moveList = new ArrayList<DataInfoEntityMoveTmp>();
 | 
						
						
						
						
							 | 
							
								 | 
							
										for (DataInfoEntity dataInfoEntity : data) {
 | 
						
						
						
						
							 | 
							
								 | 
							
											if (existIds.contains(dataInfoEntity.getDataPath())) {
 | 
						
						
						
						
							 | 
							
								 | 
							
												continue;
 | 
						
						
						
						
							 | 
							
								 | 
							
											}
 | 
						
						
						
						
							 | 
							
								 | 
							
											//TODO 正则:取出 data 的后面 的 路径,eg: XXX/320198_16/1,or XXX/320122KFQ_15/1)
 | 
						
						
						
						
							 | 
							
								 | 
							
											Matcher matcher = pattern.matcher(dataInfoEntity.getDataPath());
 | 
						
						
						
						
							 | 
							
								 | 
							
											// tailPath 第一个字符是  /  符号取尾:"\\/\\d+[a-z]*[A-Z]*_\\d+\\/\\d*\\/*$"
 | 
						
						
						
						
							 | 
							
								 | 
							
											if (matcher.find()) {
 | 
						
						
						
						
							 | 
							
								 | 
							
												tailPath = matcher.group();
 | 
						
						
						
						
							 | 
							
								 | 
							
											}
 | 
						
						
						
						
							 | 
							
								 | 
							
											String finalDestPath = dstPath + tailPath;
 | 
						
						
						
						
							 | 
							
								 | 
							
											Matcher matchertmp2 = pattern2.matcher(finalDestPath);
 | 
						
						
						
						
							 | 
							
								 | 
							
											//去掉 最后 的 / 符合
 | 
						
						
						
						
							 | 
							
								 | 
							
											if (!matchertmp2.find()) {
 | 
						
						
						
						
							 | 
							
								 | 
							
												finalDestPath = finalDestPath + "/";
 | 
						
						
						
						
							 | 
							
								 | 
							
											}
 | 
						
						
						
						
							 | 
							
								 | 
							
											DataInfoEntityMoveTmp dataMove = new DataInfoEntityMoveTmp();
 | 
						
						
						
						
							 | 
							
								 | 
							
											dataMove.setSystemCode(dataInfoEntity.getSystemCode());
 | 
						
						
						
						
							 | 
							
								 | 
							
											dataMove.setRegionalismCode(dataInfoEntity.getRegionalismCode());
 | 
						
						
						
						
							 | 
							
								 | 
							
											dataMove.setDstPath(finalDestPath);
 | 
						
						
						
						
							 | 
							
								 | 
							
											dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
 | 
						
						
						
						
							 | 
							
								 | 
							
											dataMove.setFkid(dataInfoEntity.getId());
 | 
						
						
						
						
							 | 
							
								 | 
							
											moveList.add(dataMove);
 | 
						
						
						
						
							 | 
							
								 | 
							
										}
 | 
						
						
						
						
							 | 
							
								 | 
							
										if (moveList.size() > 0) {
 | 
						
						
						
						
							 | 
							
								 | 
							
											dataInfoMoveTmpDao.insertBatch(moveList);
 | 
						
						
						
						
							 | 
							
								 | 
							
											isSuccess = true;
 | 
						
						
						
						
							 | 
							
								 | 
							
										}
 | 
						
						
						
						
							 | 
							
								 | 
							
									}
 | 
						
						
						
						
							 | 
							
								 | 
							
									return isSuccess;
 | 
						
						
						
						
							 | 
							
								 | 
							
								}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Override
 | 
						
						
						
						
							 | 
							
								 | 
							
								public List<DataInfoEntityMoveTmp> findAll() throws Exception {
 | 
						
						
						
						
							 | 
							
								 | 
							
									List<DataInfoEntityMoveTmp> result = new ArrayList<DataInfoEntityMoveTmp>();
 | 
						
						
						
						
							 | 
							
								 | 
							
									try {
 | 
						
						
						
						
							 | 
							
								 | 
							
										result = dataInfoMoveTmpDao.findAll();
 | 
						
						
						
						
							 | 
							
								 | 
							
										
 | 
						
						
						
						
							 | 
							
								 | 
							
									} catch (Exception e) {
 | 
						
						
						
						
							 | 
							
								 | 
							
										System.err.println(e);
 | 
						
						
						
						
							 | 
							
								 | 
							
									}
 | 
						
						
						
						
							 | 
							
								 | 
							
									return result;
 | 
						
						
						
						
							 | 
							
								 | 
							
								}
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Override
 | 
						
						
						
						
							 | 
							
								 | 
							
								public int delete(DataInfoEntityMoveTmp dataMove) throws Exception {
 | 
						
						
						
						
							 | 
							
								 | 
							
									if ("1".equals(dataMove.getCompleteStatus())) {
 | 
						
						
						
						
							 | 
							
								 | 
							
										removeservice.deleteFolder(dataMove.getDstPath());
 | 
						
						
						
						
							 | 
							
								 | 
							
									}
 | 
						
						
						
						
							 | 
							
								 | 
							
									int result = dataInfoMoveTmpDao.remove(dataMove.getId());
 | 
						
						
						
						
							 | 
							
								 | 
							
									return result;
 | 
						
						
						
						
							 | 
							
								 | 
							
								}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Override
 | 
						
						
						
						
							 | 
							
								 | 
							
								public int save(DataInfoEntityMoveTmp data) throws Exception {
 | 
						
						
						
						
							 | 
							
								 | 
							
									dataInfoMoveTmpDao.save(data);
 | 
						
						
						
						
							 | 
							
								 | 
							
									return 0;
 | 
						
						
						
						
							 | 
							
								 | 
							
								}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Override
 | 
						
						
						
						
							 | 
							
								 | 
							
								public int insertBatch(List<DataInfoEntityMoveTmp> list) throws Exception {
 | 
						
						
						
						
							 | 
							
								 | 
							
									// TODO Auto-generated method stub
 | 
						
						
						
						
							 | 
							
								 | 
							
									return 0;
 | 
						
						
						
						
							 | 
							
								 | 
							
								}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
								@Override
 | 
						
						
						
						
							 | 
							
								 | 
							
								public int update(DataInfoEntityMoveTmp data) throws Exception {
 | 
						
						
						
						
							 | 
							
								 | 
							
									int result = dataInfoMoveTmpDao.update(data);
 | 
						
						
						
						
							 | 
							
								 | 
							
									return result;
 | 
						
						
						
						
							 | 
							
								 | 
							
								}
 | 
						
						
						
						
							 | 
							
								 | 
							
								
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 |