package cn.com.goldenwater.dcproj.controller.importex; import cn.com.goldenwater.core.web.BaseController; import cn.com.goldenwater.core.web.BaseResponse; import cn.com.goldenwater.dcproj.dao.BisInspRsvrProjectDao; import cn.com.goldenwater.dcproj.dao.BisInspSafeExtManageDao; import cn.com.goldenwater.dcproj.model.BisInspRsvrProject; import cn.com.goldenwater.dcproj.model.BisInspSafeExtManage; import cn.com.goldenwater.dcproj.param.BisInspRsvrProjectParam; import cn.com.goldenwater.dcproj.param.BisInspSafeExtManageParam; import cn.com.goldenwater.dcproj.service.BisInspRsvrRgstrService; import cn.com.goldenwater.id.util.UuidUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Api(value = "Data 水库工程实体数据同步", tags = "Data 水库工程实体数据同步") @RestController @RequestMapping("") public class InitDataController extends BaseController { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspSafeExtManageDao bisInspSafeExtManageDao; @Autowired private BisInspRsvrProjectDao bisInspRsvrProjectDao; @Autowired private BisInspRsvrRgstrService bisInspRsvrRgstrService; @Autowired private RedisTemplate redisTemplate; @ApiOperation("水库工程实体数据导入") @RequestMapping(value = "/initData", method = RequestMethod.GET) @Transactional public BaseResponse> pblmsList_v2() { redisTemplate.opsForValue().set("safeSyncTime", ""); Map params = new HashMap<>(); logger.info("数据迁移,将安全运行中涉及到工程实体的数据迁移到工程实体"); BisInspSafeExtManageParam safeExtManageParam = new BisInspSafeExtManageParam(); //分页处理,防止数据量过大撑爆内存 Integer total = bisInspSafeExtManageDao.selectNewCount(); int pageNum = total % 500 == 0 ? total / 500 : (total / 500) + 1; String desc = "需要更新的数据条数-->" + total + "共分为" + pageNum + "次导入"; StringBuffer buffer = new StringBuffer(); for (int i = 0; i < pageNum; i++) { String updateTime = (String) redisTemplate.opsForValue().get("safeSyncTime"); if (StringUtils.isNotBlank(updateTime)) { try { Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(updateTime); safeExtManageParam.setUpdateTime(date); } catch (ParseException e) { e.printStackTrace(); } } safeExtManageParam.setPageNum(500); List inspSafeExtManages = bisInspSafeExtManageDao.findRsvrProjectList(safeExtManageParam); logger.info("第" + (i + 1) + "需要迁移的数据条数——————>" + inspSafeExtManages.size()); buffer.append("第" + (i + 1) + "需要迁移的数据条数——————>" + inspSafeExtManages.size()); if (inspSafeExtManages != null && !inspSafeExtManages.isEmpty()) { BisInspSafeExtManage maxInspSafe = inspSafeExtManages.get(inspSafeExtManages.size() - 1); Date updateDate = maxInspSafe.getUpdateTime(); updateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateDate); redisTemplate.opsForValue().set("safeSyncTime", updateTime); for (BisInspSafeExtManage safeExtManage : inspSafeExtManages) { BisInspRsvrProject rsvrProject = new BisInspRsvrProject(); rsvrProject.setRgstrId(safeExtManage.getRgstrId()); rsvrProject.setId(UuidUtil.uuid()); rsvrProject.setUpdateTime(safeExtManage.getUpdateTime()); rsvrProject.setCreateTime(safeExtManage.getCreateTime()); rsvrProject.setDiskRunInfo(safeExtManage.getDikeHasLeak()); rsvrProject.setFsltdzInfo(safeExtManage.getHavFlLowLimLev()); rsvrProject.setHasExtDamSafeAppr(safeExtManage.getExtDamSafeAppr()); rsvrProject.setHasSetMainFl(safeExtManage.getHasSetMainFl()); rsvrProject.setHasSetPourFl(safeExtManage.getHasSetPourFl()); rsvrProject.setIfReinForce(safeExtManage.getIfReinForce()); rsvrProject.setIsMainFlNormal(safeExtManage.getIsMainFlNormal()); rsvrProject.setStatus(safeExtManage.getStatus()); rsvrProject.setReverOrgName(safeExtManage.getReverOrgName()); rsvrProject.setReverOrg(safeExtManage.getReverOrg()); rsvrProject.setReinForceRun(safeExtManage.getIfComplateAcc()); rsvrProject.setWaterRunInfo(safeExtManage.getRetainRegular()); rsvrProject.setNotReinForce(safeExtManage.getNoReinForceReson()); rsvrProject.setRecPersId(safeExtManage.getRecPersId()); rsvrProject.setPoorCountry(safeExtManage.getPoorCountry()); rsvrProject.setPourFyIsNormal(safeExtManage.getPourFyIsNormal()); rsvrProject.setRecPers2(safeExtManage.getRecPers2()); rsvrProject.setRecPersId(safeExtManage.getRecPersId()); rsvrProject.setExtDamSafeAppr(safeExtManage.getDamSafeApprNote()); //已经存在则不操作 //最后更改督查表状态 BisInspRsvrProjectParam rsvrProjectParam = new BisInspRsvrProjectParam(); rsvrProjectParam.setRgstrId(safeExtManage.getRgstrId()); BisInspRsvrProject inspRsvrProject = bisInspRsvrProjectDao.getBy(rsvrProjectParam); if (inspRsvrProject == null) { bisInspRsvrProjectDao.insert(rsvrProject); bisInspRsvrRgstrService.updateRsvr(safeExtManage.getRgstrId(), safeExtManage.getStatus(), "project"); } else { bisInspRsvrProjectDao.update(rsvrProject); } } } } params.put("size", desc); params.put("step", buffer.toString()); return buildSuccessResponse(params); } }