From 5df53dd3482b38ef38c39635657b65b8f1efe9de Mon Sep 17 00:00:00 2001 From: chenlw <874313221@qq.com> Date: Fri, 21 Oct 2016 09:02:46 +0800 Subject: [PATCH] =?UTF-8?q?preData=E7=9A=84=E4=B8=9A=E5=8A=A1=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CodeServiceImpl.java | 2 +- .../service/impl/PreDataInfoServiceImpl.java | 270 ++++++++++++++++++ 2 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 src/com/platform/service/impl/PreDataInfoServiceImpl.java diff --git a/src/com/platform/service/impl/CodeServiceImpl.java b/src/com/platform/service/impl/CodeServiceImpl.java index efda3f22..43fcd012 100644 --- a/src/com/platform/service/impl/CodeServiceImpl.java +++ b/src/com/platform/service/impl/CodeServiceImpl.java @@ -30,7 +30,7 @@ public class CodeServiceImpl implements ICodeService { List result = null; try { result = new ArrayList(); - result = systemCodeDao.findSubSystem(sys); + result = systemCodeDao.findSubSystemByCode(sys); } catch (Exception e) { // TODO: handle exception } diff --git a/src/com/platform/service/impl/PreDataInfoServiceImpl.java b/src/com/platform/service/impl/PreDataInfoServiceImpl.java new file mode 100644 index 00000000..47a67c88 --- /dev/null +++ b/src/com/platform/service/impl/PreDataInfoServiceImpl.java @@ -0,0 +1,270 @@ +package com.platform.service.impl; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.stereotype.Service; + +import com.platform.utils.BeanCopy; +import com.platform.utils.Constant; +import com.platform.utils.DateForm; +import com.platform.dao.IRegionalismCodeDao; +import com.platform.dao.ISystemCodeDao; +import com.platform.dao.PreDataInfoDao; +import com.platform.dao.VolumeDao; +import com.platform.entities.PagerOptions; +import com.platform.entities.PreDataInfo; +import com.platform.entities.PreDataInfoFull; +import com.platform.entities.RegionalismEntity; +import com.platform.entities.SystemEntity; +import com.platform.service.IPreDataInfoService; +import com.platform.utils.excelUtils.ExcelOperation; + +@Service(value = "preDataInfoService") +public class PreDataInfoServiceImpl implements IPreDataInfoService { + + @Resource(name = "preDataInfoDao") + private PreDataInfoDao preDataInfoDao; + + @Resource(name = "systemCodeDao") + private ISystemCodeDao systemCodeDao; + + @Resource(name = "regionalismCodeDao") + private IRegionalismCodeDao regionalismCodeDao; + + @Override + public List findAll() throws Exception { + List result = preDataInfoDao.findAll(); + return result; + } + + @Override + public Map importExcel(List paths) throws Exception { + Map map = new HashMap(); + List errArea = new ArrayList(); + // 待增加的 + List all2Insert = new ArrayList(); + // 待修改的 + List all2Update = new ArrayList(); + //excel读出的 所有 + List all = new ArrayList(); + //excel读出的 所有修改操作的数据 + List list4Update = new ArrayList(); + //excel读出的 所有新增地区操作的数据 + List list4AddArea = new ArrayList(); + //excel读出的 所有新增系统操作的数据 + List list4AddSystem = new ArrayList(); + for (String filePath : paths) { + File f = new File(filePath); + if (!f.exists()) { + continue; + } + Date d = new Date(); + XSSFWorkbook workbook = null; + try { + workbook = new XSSFWorkbook(f); + //excel数据 --> java bean + List subPreData = ExcelOperation.readExcel4Update(workbook, Constant.EXCEL_TEMPLATE_INIT_ROW, PreDataInfo.class); + if (null != subPreData && subPreData.size() > 0) { + //是否是 同一个县区的 系统--是则 加入 + boolean isSameArea = true; + String areaCode = subPreData.get(0).getAreaCode(); + for (PreDataInfo preDataInfo : subPreData) { + if (!areaCode.equals(preDataInfo.getAreaCode())) { + isSameArea = false; + errArea.add(areaCode); + break; + } + } + if (isSameArea) { + all.addAll(subPreData); + } + } + } catch (IllegalArgumentException + | IllegalAccessException | InstantiationException | InvalidFormatException | IOException e) { + e.printStackTrace(); + } + + } + //根据 操作 类别 分类(修改, 新增行政区划,新增信息系统) + if (all.size() > 0) { + for (PreDataInfo preDataInfo : all) { + + switch (preDataInfo.getIsupdate()) { + case Constant.preDataInfo_add_system: + list4AddSystem.add(preDataInfo); + break; + + case Constant.preDataInfo_add_area: + list4AddArea.add(preDataInfo); + break; + + case Constant.preDataInfo_update: + list4Update.add(preDataInfo); + break; + + default: + break; + } + } + } + // 查系统 是否没有-(没有则在 pre_data_info添加新系统): + if (list4AddSystem.size() > 0) { + this.AddSystem(list4AddSystem); + List sysNames = new ArrayList(); + for (PreDataInfo preDataInfo : list4AddSystem) { + sysNames.add(preDataInfo.getSysName()); + } + List listSystem = systemCodeDao.findByName(sysNames); + Map syscodeMap = new HashMap(); + for (SystemEntity systemEntity : listSystem) { + syscodeMap.put(systemEntity.getSystemName(), String.valueOf(systemEntity.getCode())); + } + for ( PreDataInfo systemEntity : list4AddSystem) { + PreDataInfoFull systemFull = new PreDataInfoFull(); + BeanCopy.copyBean(systemEntity, systemFull); + systemFull.setSysCode(syscodeMap.get(systemFull.getSysName())); + systemFull.setUpdateTime(DateForm.date2StringBysecond(new Date())); + all2Insert.add(systemFull); + } + } + //TODO 去掉 已经导入的系统。。(例如 excel反复导入) + //在 pre_data_info表中 新增 操作为(新增信息系统)的系统 + if (all2Insert.size() > 0) { + preDataInfoDao.insertBatch(all2Insert); + } + // 查 地区 是否没有-(没有则添加新地区): + if (list4AddArea.size() > 0) { + this.addArea(list4AddArea); + } + //在 pre_data_info表中 新增 操作为(新增行政区划)的系统 + List allAreaInsert = new ArrayList(); + List sysNamesArea = new ArrayList(); + for (PreDataInfo preDataInfo : list4AddArea) { + sysNamesArea.add(preDataInfo.getSysName()); + } + //查询系统的code。 + List listSystem = systemCodeDao.findByName(sysNamesArea); + Map syscodeMap = new HashMap(); + for (SystemEntity systemEntity : listSystem) { + syscodeMap.put(systemEntity.getSystemName(), String.valueOf(systemEntity.getCode())); + } + for (PreDataInfo preDataInfo : list4AddArea) { + PreDataInfoFull areaFull = new PreDataInfoFull(); + BeanCopy.copyBean(preDataInfo, areaFull); + areaFull.setSysCode(syscodeMap.get(areaFull.getSysName())); + areaFull.setUpdateTime(DateForm.date2StringBysecond(new Date())); + allAreaInsert.add(areaFull); + } + //TODO 去掉 已经导入的系统。。(例如 excel反复导入) + //在 pre_data_info表中 新增 操作为(新增行政区划)的系统 + if (allAreaInsert.size() > 0) { + preDataInfoDao.insertBatch(allAreaInsert); + } + + //在 pre_data_info表中 更新 操作为 (修改) 的系统 + List allUpdate = new ArrayList(); + // 查询系统 code + for (PreDataInfo preDataInfo : list4Update) { + sysNamesArea.add(preDataInfo.getSysName()); + } + //查询系统的code。 + List listSystem4Update = systemCodeDao.findByName(sysNamesArea); + for (SystemEntity systemEntity : listSystem4Update) { + syscodeMap.put(systemEntity.getSystemName(), String.valueOf(systemEntity.getCode())); + } + for (PreDataInfo preUpdate : list4Update) { + PreDataInfoFull UpdateFull = new PreDataInfoFull(); + BeanCopy.copyBean(preUpdate, UpdateFull); + UpdateFull.setSysCode(syscodeMap.get(UpdateFull.getSysName())); + UpdateFull.setUpdateTime(DateForm.date2StringBysecond(new Date())); + allUpdate.add(UpdateFull); + } + for (PreDataInfoFull preEntity : allUpdate) { + preDataInfoDao.update(preEntity); + } + return map; + } + + /** 给system_info增加新系统 + * @param list4AddSystem + * @return + * @throws Exception + */ + private int AddSystem(List list4AddSystem) throws Exception { + int insertNum = 0; + // 查系统 是否没有-(没有则添加新系统): + List sysNames = new ArrayList(); + for (PreDataInfo preDataInfo : list4AddSystem) { + sysNames.add(preDataInfo.getSysName()); + } + // 判断-是否存在该系统 + if (sysNames.size() > 0) { + //数据库 已存在的 系统 + List listSystem = systemCodeDao.findByName(sysNames); + List existSysNames = new ArrayList(); + if (null != listSystem) { + for ( SystemEntity systemEntity : listSystem) { + existSysNames.add(systemEntity.getSystemName()); + } + sysNames.removeAll(existSysNames); + } + ////数据库 不存在的 系统-(添加新系统) + if (sysNames.size() > 0) { + insertNum = systemCodeDao.insertBatch(sysNames); + } + } + return insertNum; + } + + /** 新增地区 + * @param list4AddArea 待新增地区的列表 + * @return + * @throws Exception + */ + private int addArea(List list4AddArea)throws Exception { + int insertNum = 0; + List areacodeList = new ArrayList(); + Map areaMap = new HashMap(); + for (PreDataInfo preDataInfo : list4AddArea) { + areacodeList.add(preDataInfo.getAreaCode()); + RegionalismEntity region = new RegionalismEntity(); + region.setCode(preDataInfo.getAreaCode()); + region.setCityName(preDataInfo.getCityName()); + region.setDistrictName(preDataInfo.getDistrictName()); + areaMap.put(region.getCode(), region); + } + List existEntity = regionalismCodeDao.findExistRegionalism(areacodeList); + for (RegionalismEntity regionalismEntity : existEntity) { + areaMap.remove(regionalismEntity.getCode()); + } + //新增 地区 + if (areaMap.size() > 0) { + List insert2Regionalism = new ArrayList(); + for ( String key : areaMap.keySet()) { + insert2Regionalism.add(areaMap.get(key)); + } + insertNum = regionalismCodeDao.insertBatch(insert2Regionalism); + } + + return insertNum; + } + + + @Override + public List findByParam(PagerOptions op) { + List result = preDataInfoDao.getLimitedDataInfoEntities(op); + return result; + } + +}