package cn.com.goldenwater.dcproj.service.impl.tac; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.*; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.utils.BeanUtil; import cn.com.goldenwater.id.util.UuidUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; /** * @author lune * @date 2020-5-28 */ @Service @Transactional public class DataMigrationServiceImpl extends AbstractCrudService implements DataMigrationService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private TacProvincePblmInfoDao tacProvincePblmInfoDao; @Autowired private TacPblmInfoDao tacPblmInfoDao; @Autowired private GwComFileDao gwComFileDao; @Autowired private OlBisInspOrgDao olBisInspOrgDao; @Autowired private TacProvincePlanTaskDao tacProvincePlanTaskDao; @Autowired private TacPawpRgstrDao tacPawpRgstrDao; @Autowired private TacPblmSubjectDao tacPblmSubjectDao; @Autowired private GwComFileService gwComFileService; @Autowired private TacObjSubjectService objSubjectService; @Autowired private TacPblmInfoService tacPblmInfoService; @Autowired private DataMigrationDao dataMigrationDao; @Autowired private TacProvincePlanProcessDao tacProvincePlanProcessDao; public DataMigrationServiceImpl(TacProvincePblmInfoDao tacProvincePblmInfoDao) { super(tacProvincePblmInfoDao); this.tacProvincePblmInfoDao = tacProvincePblmInfoDao; } @Override public boolean newplan1() { try{ // 1、查询浙江省现有工程信息; List pawpRgstr = dataMigrationDao.findPawpRgstr(); // 2、获取新阶段的第一阶段; // 提交后问题录入初始阶段,初始为开始状态 TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam(); tacProvincePlanProcessParam.setOrgId("036"); tacProvincePlanProcessParam.setPrvId("0");//上一步id为0表示当前为起始位置 TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessDao.getBy(tacProvincePlanProcessParam); // 机构定制阶段流程 if (tacProvincePlanProcess == null) { logger.info("无新阶段"); return false; } // 3、循环工程信息, for (TacPawpRgstr tacPawpRgstr : pawpRgstr) { //提交下一段阶段记录入库 OlBisInspOrg olBisInspOrg = olBisInspOrgDao.get(tacProvincePlanProcess.getOrgId()); String taskId = getProcessTaskId(tacPawpRgstr.getId(), tacPawpRgstr.getPersId(), olBisInspOrg.getOrgNm(), tacProvincePlanProcess, "1"); // 查询旧阶段最后阶段的工程问题以及资源; List comFileList = null; TacProvincePblmInfo tacProvincePblmInfo = null; TacPblmInfoParam tacPblmInfoParam = new TacPblmInfoParam(); tacPblmInfoParam.setRgstrId(tacPawpRgstr.getId() + "_5"); tacPblmInfoParam.setProvince("330000000000"); List TacPblmInfoList = tacPblmInfoDao.findList(tacPblmInfoParam); //相关专业是第一次提交时返回稽察对象的新增的提交记录id // 5,根据问题数据以及问题佐证材料以及阶段id入库新阶段问题表数据; for (TacPblmInfo pblmInfo : TacPblmInfoList) { tacProvincePblmInfo = new TacProvincePblmInfo(); BeanUtil.copyObject1(pblmInfo, tacProvincePblmInfo); tacProvincePblmInfo.setRgstrId(tacPawpRgstr.getId());//稽察工程登记表 tacProvincePblmInfo.setTaskId(taskId);//问题所属阶段id String uuid = UuidUtil.uuid(); tacProvincePblmInfo.setStepId(tacProvincePlanProcess.getNowId());//问题所属阶段为提交当前阶段 tacProvincePblmInfo.setId(uuid); tacProvincePblmInfo.setUptm(new Date()); tacProvincePblmInfo.setIntm(new Date()); tacProvincePblmInfo.setState("0");//新增对应阶段问题状态为0 tacProvincePblmInfo.setOldPblmId(pblmInfo.getId());//保存原问题id tacProvincePblmInfoDao.insert(tacProvincePblmInfo); //问题第一次提交时,稽察阶段问题对应多个单位主体性质入库 //复制稽察问题相关责任主体列表 TacPblmSubjectParam subjectParam = new TacPblmSubjectParam(); subjectParam.setPblmId(pblmInfo.getId()); List subjectList = tacPblmSubjectDao.findList(subjectParam); tacPblmInfoService.addPblmSubject(pblmInfo.getSubjectNames(), pblmInfo.getSubjectIds(), subjectList, tacProvincePblmInfo.getId()); // tacPblmInfoService.addPblmSubject(pblmInfo.getSubjectNames(),pblmInfo.getSubjectIds(),pblmInfo.getPblmSubjectList(), tacProvincePblmInfo.getId()); //至下一阶段的新增问题资源重新保存 comFileList = gwComFileDao.findFileByBiz(pblmInfo.getId()); if (comFileList != null && !comFileList.isEmpty()) { for (GwComFile gwComFile : comFileList) { gwComFile.setId(UuidUtil.uuid()); gwComFile.setBizId(uuid); gwComFileDao.insert(gwComFile); } } comFileList = null; } TacPawpRgstr tacPawpRgstrnew=new TacPawpRgstr(); tacPawpRgstrnew.setTaskId(taskId);//更新当前稽察对象当前阶段 tacPawpRgstrnew.setId(tacPawpRgstr.getId()); tacPawpRgstrDao.update(tacPawpRgstrnew); } return true; }catch (Exception e){ e.printStackTrace(); return false; } } @Override public boolean planProcess2(String nextId) { // 1、查询浙江省现有工程信息; List pawpRgstr = dataMigrationDao.findPawpRgstr(); // 2、获取新阶段的第一阶段; // 提交后问题录入新阶段 TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam(); tacProvincePlanProcessParam.setOrgId("036"); tacProvincePlanProcessParam.setNowId(nextId);//上一步id为0表示当前为起始位置,下一步id为1时表示为开始位置 TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessDao.getBy(tacProvincePlanProcessParam); // 机构定制阶段流程 if (tacProvincePlanProcess == null) { logger.info("无此阶段"); return false; } // 3、循环工程信息, for (TacPawpRgstr tacPawpRgstr : pawpRgstr) { //查询下一阶段记录是否存在,若不存在则新增阶段记录,存在则不能重复提交到下一阶段 TacProvincePlanTaskParam provincePlanTaskParam = new TacProvincePlanTaskParam(); provincePlanTaskParam.setNowId(nextId); provincePlanTaskParam.setRgstrId(tacPawpRgstr.getId()); provincePlanTaskParam.setOrgId("036"); TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskDao.getBy(provincePlanTaskParam); if (tacProvincePlanTask != null) { logger.info("当前阶段问题已经提交,请不要重复提交!!"); return false; } //根据稽察对象的当前阶段记录,查询阶段记录表中该阶段记录。 tacProvincePlanTask = tacProvincePlanTaskDao.get(tacPawpRgstr.getTaskId()); if(!tacProvincePlanProcess.getPrvId().equals(tacProvincePlanTask.getNowId())){ logger.info("当前阶段问题已经提交,请不要重复提交!!"); return false; } OlBisInspOrg olBisInspOrg = olBisInspOrgDao.get(tacProvincePlanProcess.getOrgId()); String taskId = getProcessTaskId(tacPawpRgstr.getId(), tacPawpRgstr.getPersId(), olBisInspOrg.getOrgNm(), tacProvincePlanProcess, "1"); // 查询旧阶段最后阶段的工程问题以及资源; List comFileList = null; TacProvincePblmInfo tacProvincePblmInfo = null; //查询当前阶段问题清单 TacProvincePblmInfoParam tacPblmInfoParam = new TacProvincePblmInfoParam(); tacPblmInfoParam.setRgstrId(tacPawpRgstr.getId()); tacPblmInfoParam.setTaskId(tacPawpRgstr.getTaskId());//稽察对象对应的阶段记录taskId tacPblmInfoParam.setProvince(tacProvincePlanProcess.getAdCode()); List tacPblmInfoList = tacProvincePblmInfoDao.findList(tacPblmInfoParam); //相关专业是第一次提交时返回稽察对象的新增的提交记录id //5,根据问题数据以及问题佐证材料以及阶段id入库新阶段问题表数据; for (TacProvincePblmInfo pblmInfo : tacPblmInfoList) { //新增当前阶段记录下问题清单至提交的下一段阶段 comFileList=gwComFileDao.findFileByBiz(pblmInfo.getId()); //问题修改意见资源 String uuid=UuidUtil.uuid(); pblmInfo.setTaskId(taskId); pblmInfo.setIntm(new Date()); pblmInfo.setStepId(tacProvincePlanProcess.getNowId());//记录问题对应提交的下一阶段id pblmInfo.setOldPblmId(pblmInfo.getId());//保存上一阶段的问题id pblmInfo.setUptm(new Date()); pblmInfo.setId(uuid); pblmInfo.setState("0");//提交的阶段问题状态为0 tacProvincePblmInfoDao.insert(pblmInfo); //阶段问题提交到下一个阶段时,稽察阶段问题对应多个单位主体性质入库 //复制稽察问题相关责任主体列表 TacPblmSubjectParam subjectParam = new TacPblmSubjectParam(); subjectParam.setPblmId(pblmInfo.getId()); List subjectList = tacPblmSubjectDao.findList(subjectParam); tacPblmInfoService.addPblmSubject(pblmInfo.getSubjectNames(),pblmInfo.getSubjectIds(),subjectList,pblmInfo.getId()); // tacPblmInfoService.addPblmSubject(pblmInfo.getSubjectNames(),pblmInfo.getSubjectIds(),pblmInfo.getPblmSubjectList(),pblmInfo.getId()); if(comFileList!=null &&!comFileList.isEmpty()){ for(GwComFile gwComFile:comFileList){ gwComFile.setId(UuidUtil.uuid()); gwComFile.setBizId(pblmInfo.getId()); gwComFileDao.insert(gwComFile); } } //问题修改理由取证资源传至下一阶段 comFileList=null; } TacPawpRgstr tacPawpRgstrnew=new TacPawpRgstr(); tacPawpRgstrnew.setTaskId(taskId);//更新当前稽察对象当前阶段 tacPawpRgstrnew.setId(tacPawpRgstr.getId()); tacPawpRgstrDao.update(tacPawpRgstrnew); } return true; } private String getProcessTaskId(String rgstrId, String persId, String orgName, TacProvincePlanProcess tacProvincePlanProcess, String state) { // 添加提交记录,记住提交记录的流程为哪个阶段 TacProvincePlanTask tacProvincePlanTask = new TacProvincePlanTask(); tacProvincePlanTask.setRgstrId(rgstrId); String taskId = UuidUtil.uuid(); tacProvincePlanTask.setId(taskId); tacProvincePlanTask.setIntm(new Date()); tacProvincePlanTask.setState(state);//问题第一次提交审核,根据专业提交问题至初始阶段,状态为1,驳回为0,提交为1 tacProvincePlanTask.setPersId(persId); tacProvincePlanTask.setRgstrId(rgstrId); tacProvincePlanTask.setNowStep(tacProvincePlanProcess.getNowStep()); tacProvincePlanTask.setNowId(tacProvincePlanProcess.getNowId()); tacProvincePlanTask.setOrgId(tacProvincePlanProcess.getOrgId()); tacProvincePlanTask.setOrgName(orgName); tacProvincePlanTask.setDataStat("1");//数据状态为1 tacProvincePlanTaskDao.insert(tacProvincePlanTask); return taskId; } }