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.dto.TacProvincePblmInfoDto; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.TacPblmSubjectParam; import cn.com.goldenwater.dcproj.param.TacProvincePblmInfoParam; import cn.com.goldenwater.dcproj.param.TacProvincePlanTaskParam; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.BeanUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; 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 TacProvincePblmInfoServiceImpl extends AbstractCrudService implements TacProvincePblmInfoService { @Autowired private TacProvincePblmInfoDao tacProvincePblmInfoDao; @Autowired private GwComFileDao gwComFileDao; @Autowired private OlBisInspOrgDao olBisInspOrgDao; @Autowired private TacProvincePlanTaskDao tacProvincePlanTaskDao; @Autowired private TacPawpRgstrDao tacPawpRgstrDao; @Autowired private TacPblmSubjectDao tacPblmSubjectDao; @Autowired private TacProvincePlanDictService tacProvincePlanDictService; @Autowired private GwComFileService gwComFileService; @Autowired private TacObjSubjectService objSubjectService; @Autowired private TacPblmInfoService tacPblmInfoService; @Autowired private BisInspAllRlationPersService bisInspAllRlationPersService; public TacProvincePblmInfoServiceImpl(TacProvincePblmInfoDao tacProvincePblmInfoDao) { super(tacProvincePblmInfoDao); this.tacProvincePblmInfoDao = tacProvincePblmInfoDao; } @Override public String addPlan(List tacPblmInfoList, TacProvincePlanProcess tacProvincePlanProcess, String rgstrId, String persId) { OlBisInspOrg olBisInspOrg = olBisInspOrgDao.get(tacProvincePlanProcess.getOrgId()); //保存提交记录 String taskId = addTask(rgstrId, persId, olBisInspOrg.getOrgNm(), tacProvincePlanProcess, "1"); TacProvincePblmInfo tacProvincePblmInfo = null; Date date = new Date(); List comFileList = null; for (TacPblmInfo pblmInfo : tacPblmInfoList) {//新增问题列表保存至下一阶段 tacProvincePblmInfo = new TacProvincePblmInfo(); BeanUtil.copyObject1(pblmInfo, tacProvincePblmInfo);//复制对象 tacProvincePblmInfo.setTaskId(taskId);//问题所属阶段id String uuid = UuidUtil.uuid(); tacProvincePblmInfo.setStepId(tacProvincePlanProcess.getNowId());//问题所属阶段为提交当前阶段 tacProvincePblmInfo.setId(uuid); tacProvincePblmInfo.setUptm(date); // tacProvincePblmInfo.setIntm(date); tacProvincePblmInfo.setState("0");//新增对应阶段问题状态为0 tacProvincePblmInfo.setOldPblmId(pblmInfo.getId());//保存原问题id //问题修改理由对应资源 String pblmRevisionProofUuid = UuidUtil.uuid(); tacProvincePblmInfo.setPblmRevisionProof(pblmRevisionProofUuid); tacProvincePblmInfoDao.insert(tacProvincePblmInfo); //问题第一次提交时,稽察阶段问题对应多个单位主体性质入库 //复制稽察问题相关责任主体列表 TacPblmSubjectParam subjectParam = new TacPblmSubjectParam(); subjectParam.setPblmId(pblmInfo.getId()); List subjectList = tacPblmSubjectDao.findList(subjectParam); tacPblmInfoService.addPblmSubject(tacProvincePblmInfo.getSubjectNames(), tacProvincePblmInfo.getSubjectIds(), subjectList, tacProvincePblmInfo.getId()); //至下一阶段的新增问题资源重新保存 comFileList = gwComFileDao.findFileByBiz(pblmInfo.getId()); addComFiles(comFileList, uuid); comFileList = null; } return taskId; } @Override public void addTaskLabel(String taskId, String rgstrId, String state) { TacPawpRgstr tacPawpRgstr = new TacPawpRgstr(); tacPawpRgstr.setState(state);//state为null,则保留稽察对象保留状态为4(专家提交到助理) tacPawpRgstr.setTaskId(taskId);//更新当前稽察对象当前阶段 tacPawpRgstr.setId(rgstrId); tacPawpRgstr.setUptm(new Date()); tacPawpRgstrDao.update(tacPawpRgstr); } private String addTask(String rgstrId, String persId, String orgName, TacProvincePlanProcess tacProvincePlanProcess, String state) { TacPawpRgstr tacPawpRgstr = tacPawpRgstrDao.get(rgstrId); if (StringUtils.isNotBlank(tacPawpRgstr.getTaskId())) { //相关专业不是第一次提交时返回稽察对象的提交记录 TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskDao.get(tacPawpRgstr.getTaskId()); if (tacProvincePlanTask != null) { return tacPawpRgstr.getTaskId(); } } //相关专业是第一次提交时返回稽察对象的新增的提交记录id return getProcessTaskId(rgstrId, persId, orgName, tacProvincePlanProcess, state); } 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; } @Override public void addComFiles(List comFileList, String pblmId) { if (comFileList != null && !comFileList.isEmpty()) { for (GwComFile gwComFile : comFileList) { gwComFile.setId(UuidUtil.uuid()); gwComFile.setBizId(pblmId); gwComFileDao.insert(gwComFile); } } } @Override public int updatePblmInfoList(TacProvincePblmInfoDto dto) { if (dto == null) { return 0; } if (dto.getList() != null) { dto.getList().forEach(tacPblmInfo -> { tacPblmInfo.setIfCasePblm(dto.getIfCasePblm()); tacProvincePblmInfoDao.update(tacPblmInfo); }); } return 1; } @Override public void addProcessPlan(List tacPblmInfoList, TacProvincePlanProcess tacProvincePlanProcess, String rgstrId, String currentPersId, String state) { // 阶段之间提交 OlBisInspOrg olBisInspOrg = olBisInspOrgDao.get(tacProvincePlanProcess.getOrgId()); String taskId = getProcessTaskId(rgstrId, currentPersId, olBisInspOrg.getOrgNm(), tacProvincePlanProcess, state); Date date = new Date(); List comFileList = null; List RevisionProofFileList = null; for (TacProvincePblmInfo pblmInfo : tacPblmInfoList) { //新增当前阶段记录下问题清单至提交的下一段阶段 comFileList = gwComFileDao.findFileByBiz(pblmInfo.getId()); //问题修改意见资源 RevisionProofFileList = gwComFileDao.findFileByBiz(pblmInfo.getPblmRevisionProof()); String uuid = UuidUtil.uuid(); pblmInfo.setTaskId(taskId); pblmInfo.setIntm(date); pblmInfo.setStepId(tacProvincePlanProcess.getNowId());//记录问题对应提交的下一阶段id pblmInfo.setOldPblmId(pblmInfo.getId());//保存上一阶段的问题id pblmInfo.setUptm(date); pblmInfo.setId(uuid); pblmInfo.setState("0");//提交的阶段问题状态为0 //问题修改理由取证资源id String pblmRevisionProofUuid = UuidUtil.uuid(); pblmInfo.setPblmRevisionProof(pblmRevisionProofUuid); tacProvincePblmInfoDao.insert(pblmInfo); //阶段问题提交到下一个阶段时,稽察阶段问题对应多个单位主体性质入库 TacPblmSubjectParam subjectParam = new TacPblmSubjectParam(); subjectParam.setPblmId(pblmInfo.getOldPblmId()); List subjectList = tacPblmSubjectDao.findList(subjectParam); tacPblmInfoService.addPblmSubject(pblmInfo.getSubjectNames(), pblmInfo.getSubjectIds(), subjectList, pblmInfo.getId()); addComFiles(comFileList, uuid); //问题修改理由取证资源传至下一阶段 addComFiles(RevisionProofFileList, pblmRevisionProofUuid); comFileList = null; RevisionProofFileList = null; } //修改稽察对象所阶段信息。 addTaskLabel(taskId, rgstrId, ""); } @Override public void updatePblm(TacProvincePblmInfo tacProvincePblmInfo) { TacPblmSubjectParam subjectParam = new TacPblmSubjectParam(); subjectParam.setPblmId(tacProvincePblmInfo.getId()); tacPblmSubjectDao.deleteBy(subjectParam); if (tacProvincePblmInfo.getGwComFileList() != null && tacProvincePblmInfo.getGwComFileList().size() > 0) { tacProvincePblmInfo.setHasVedio("1"); } else { tacProvincePblmInfo.setHasVedio("0"); } //如果 复核状态不为空记录人员ID和姓名 if (StringUtils.isNotBlank(tacProvincePblmInfo.getPblmMendState())) { BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.get(tacProvincePblmInfo.getPblmMendPersId()); //tacProvincePblmInfo.setPblmMendTm(new Date()); tacProvincePblmInfo.setPblmMendPersNm(bisInspAllRlationPers.getPersName()); } tacProvincePblmInfoDao.update(tacProvincePblmInfo); tacPblmInfoService.addPblmSubject(tacProvincePblmInfo.getSubjectNames(), tacProvincePblmInfo.getSubjectIds(), tacProvincePblmInfo.getPblmSubjectList(), tacProvincePblmInfo.getId()); gwComFileService.updateBiz(tacProvincePblmInfo.getGwComFileList(), tacProvincePblmInfo.getId()); } @Override public void insertPblm(TacProvincePblmInfo tacProvincePblmInfo) { if (tacProvincePblmInfo.getGwComFileList() != null && tacProvincePblmInfo.getGwComFileList().size() > 0) { tacProvincePblmInfo.setHasVedio("1"); } else { tacProvincePblmInfo.setHasVedio("0"); } tacProvincePblmInfo.setState("0"); tacProvincePblmInfo.setObjType("8"); tacProvincePblmInfoDao.insert(tacProvincePblmInfo); tacPblmInfoService.addPblmSubject(tacProvincePblmInfo.getSubjectNames(), tacProvincePblmInfo.getSubjectIds(), tacProvincePblmInfo.getPblmSubjectList(), tacProvincePblmInfo.getId()); gwComFileService.updateBiz(tacProvincePblmInfo.getGwComFileList(), tacProvincePblmInfo.getId()); } @Override public void updateProcess(List tacPblmInfoList, TacProvincePlanProcess tacProvincePlanProcess, String currentPersId, String rgstrId) { TacProvincePblmInfo tacProvincePblmInfoOld = null; TacProvincePlanTaskParam tacProvincePlanTaskParam = new TacProvincePlanTaskParam(); tacProvincePlanTaskParam.setOrgId(tacProvincePlanProcess.getOrgId()); tacProvincePlanTaskParam.setNowId(tacProvincePlanProcess.getNowId()); tacProvincePlanTaskParam.setRgstrId(rgstrId); TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskDao.getBy(tacProvincePlanTaskParam); for (TacProvincePblmInfo tacProvincePblmInfo : tacPblmInfoList) { tacProvincePblmInfoOld = new TacProvincePblmInfo(); BeanUtil.copyObject1(tacProvincePblmInfo, tacProvincePblmInfoOld); //旧版id就是上一层级的问题id if (StringUtils.isBlank(tacProvincePblmInfo.getOldPblmId())) { continue; } tacProvincePblmInfoOld.setId(tacProvincePblmInfo.getOldPblmId()); tacProvincePblmInfoOld.setState("1"); tacProvincePblmInfoOld.setStepId(tacProvincePlanProcess.getNowId()); tacProvincePblmInfoOld.setTaskId(tacProvincePlanTask.getId()); tacProvincePblmInfoDao.update(tacProvincePblmInfoOld); } TacPawpRgstr tacPawpRgstr = new TacPawpRgstr(); tacPawpRgstr.setId(rgstrId); tacPawpRgstr.setTaskId(tacProvincePlanTask.getId());//上一步的任务 tacPawpRgstrDao.update(tacPawpRgstr); tacProvincePlanTask.setState("1"); tacProvincePlanTaskDao.update(tacProvincePlanTask); } @Override public void rollbackProcess(List tacPblmInfoList, TacProvincePlanProcess tacProvincePlanProcess, TacProvincePlanTask tacProvincePlanTask, String currentPersId, String rgstrId) { TacProvincePblmInfo tacProvincePblmInfoOld = null; for (TacProvincePblmInfo tacProvincePblmInfo : tacPblmInfoList) { tacProvincePblmInfoOld = new TacProvincePblmInfo(); BeanUtil.copyObject1(tacProvincePblmInfo, tacProvincePblmInfoOld); //当前问题上一阶段问题id(当前阶段添加问题需要驳回到上一阶段),之前版本程序无上一阶段问题id则丢弃) // if(StringUtils.isBlank(tacProvincePblmInfo.getOldPblmId())){ // continue; // } // 当前阶段问题驳回,须将当前阶段所有问题都驳回。 // tacProvincePblmInfoOld.setId(UuidUtil.uuid()); tacProvincePblmInfoOld.setState("1"); tacProvincePblmInfoOld.setStepId(tacProvincePlanProcess.getNowId()); tacProvincePblmInfoOld.setTaskId(tacProvincePlanTask.getId()); tacProvincePblmInfoDao.update(tacProvincePblmInfoOld); } TacPawpRgstr tacPawpRgstr = new TacPawpRgstr(); tacPawpRgstr.setId(rgstrId); tacPawpRgstr.setTaskId(tacProvincePlanTask.getId());//上一步的任务 tacPawpRgstrDao.update(tacPawpRgstr); tacProvincePlanTask.setState("1"); tacProvincePlanTaskDao.update(tacProvincePlanTask); } @Override public PageInfo findPageJieduanInfo(TacProvincePblmInfoParam tacProvincePblmInfoParam) { PageHelper.startPage(tacProvincePblmInfoParam.getPageNum(), tacProvincePblmInfoParam.getPageSize()); List list = tacProvincePblmInfoDao.findPageJieduanInfo(tacProvincePblmInfoParam); for (TacProvincePblmInfo tacProvincePblmInfo : list ) { TacPblmSubjectParam subjectParam = new TacPblmSubjectParam(); subjectParam.setPblmId(tacProvincePblmInfo.getId()); List subjectList = tacPblmSubjectDao.findList(subjectParam); String unitNms = ""; for (TacPblmSubject t : subjectList ) { unitNms += t.getUnitNm() + ","; } if (unitNms.length() > 0) { unitNms = unitNms.substring(0, unitNms.length() - 1); } tacProvincePblmInfo.setSubjectNames(unitNms); } return new PageInfo(list); } @Override public PageInfo finalResults(TacProvincePblmInfoParam tacProvincePblmInfoParam) { //得到当前省份最终阶段 String nowId = tacProvincePlanDictService.getJcStepId(tacProvincePblmInfoParam.getOrgId()); if (StringUtils.isBlank(nowId)) { return new PageInfo<>(null); } if (StringUtils.isNotBlank(tacProvincePblmInfoParam.getProvince())) { tacProvincePblmInfoParam.setAdCode(AdLevelUtil.getAddvcd(tacProvincePblmInfoParam.getProvince())); } tacProvincePblmInfoParam.setStepId(nowId); PageHelper.startPage(tacProvincePblmInfoParam.getPageNum(), tacProvincePblmInfoParam.getPageSize()); List list = tacProvincePblmInfoDao.finalResults(tacProvincePblmInfoParam); return new PageInfo<>(list); } }