package com.whyc.service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.ProjectArchiveManageMapper; import com.whyc.mapper.ProjectManageMapper; import com.whyc.pojo.DeviceManage; import com.whyc.pojo.ProjectArchiveManage; import com.whyc.pojo.ProjectManage; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @Service public class ProjectProcessManageService { @Autowired DataSourceTransactionManager dataSourceTransactionManager; @Autowired TransactionDefinition transactionDefinition; @Resource private ProjectManageMapper projectManageMapper; @Resource private ProjectArchiveManageMapper projectArchiveManageMapper; public Response> searchAll() { Response> response = new Response<>(); List projectManages = projectManageMapper.searchAll(); response.setCode(1); response.setData(projectManages); return response; } /** * 根据筛选条件 * * @param pageNum * @param pageSize * @param projectManage * @return */ public Response> searchByCondition(int pageNum, int pageSize, ProjectManage projectManage) { PageHelper.startPage(pageNum, pageSize); List projectManages = projectManageMapper.searchByCondition(projectManage); PageInfo projectManagePageInfo = new PageInfo<>(projectManages); return new Response>().set(1, projectManagePageInfo); } /** * 新建项目 * * @param pm * @return */ public Response add(ProjectManage pm) { Response response = new Response<>(); pm.setProNameCode(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); pm.setProState(1);//项目状态 进行中 pm.setProProgress(1);//项目进度 立项 Integer num = projectManageMapper.checkUniqueId(pm); if (num > 0) { return response.setMsg(0, "添加失败,pro_name_code重复"); } boolean bl; TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); try { bl = projectManageMapper.insert(pm) > 0; if (bl) { ArrayList list = pm.getFileList(); if (null != list) { Date proUploadDate = new Date(); for (int i = 0; i < list.size(); i++) { ProjectArchiveManage pam = new ProjectArchiveManage(); pam.setProNum(pm.getProNum()); pam.setProName(pm.getProName()); pam.setProNameCode(pm.getProNameCode());//唯一,可对应多个文件 pam.setProSort(pm.getProSort()); String path = list.get(i); pam.setProFilePath(path); String[] split = path.split("_"); int rexIdex = split[1].lastIndexOf("."); pam.setProDocumentName(split[1].substring(0, rexIdex)); pam.setProDocumentFormat(split[1].substring(rexIdex + 1)); pam.setProUploadDate(proUploadDate); projectArchiveManageMapper.insert(pam); } } } } catch (Exception e) { e.printStackTrace(); dataSourceTransactionManager.rollback(transactionStatus); //事务回滚 return response.setMsg(0, "添加失败"); } if (bl) { dataSourceTransactionManager.commit(transactionStatus); //手动提交 response.setMsg(1, "添加成功"); } else { dataSourceTransactionManager.rollback(transactionStatus); //事务回滚 response.setMsg(0, "添加失败"); } return response; } /** * 项目过程管理/己确认、未确认阶段 * * @param projectManage * @return */ public Response searchManageStateByCondition(ProjectManage projectManage) { Response response = new Response<>(); try { ProjectManage pm = projectManageMapper.searchManageStateByCondition(projectManage); List pams = projectArchiveManageMapper.searchByConditionDocumentPath(projectManage); HashMap map = new HashMap<>(); map.put("pm", pm); ArrayList list = new ArrayList<>(); if (null != pams) { for (int i = 0; i < pams.size(); i++) { ProjectArchiveManage pam = pams.get(i); HashMap mapDoc = new HashMap<>(); mapDoc.put("name", pam.getProDocumentName()); mapDoc.put("url", pam.getProFilePath()); list.add(mapDoc); } } map.put("mapDoc", list); response.setCode(1); response.setMsg(1, "查询成功"); response.setData(map); } catch (Exception e) { e.printStackTrace(); return response.setMsg(0, "查询失败"); } return response; } /** * 项目进度确认 * 未归档可以修改更新,归档后不能修改 * * @param pm * @return */ public Response updateManageState(ProjectManage pm) { Response response = new Response<>(); boolean bl; TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); try { bl = projectManageMapper.updateManageState(pm) > 0; ArrayList fileList = pm.getFileList(); if (bl && null != fileList) { for (int i = 0; i < fileList.size(); i++) { String filePath = fileList.get(i); Boolean fileExist = projectArchiveManageMapper.checkFileExist(filePath) > 0; if (!fileExist) { ProjectArchiveManage pam = new ProjectArchiveManage(); pam.setProNum(pm.getProNum()); pam.setProName(pm.getProName()); pam.setProNameCode(pm.getProNameCode());//唯一 pam.setProSort(pm.getProSort()); pam.setProFilePath(filePath); pam.setProUploadDate(new Date()); String[] split = filePath.split("_"); int rexIdex = split[1].lastIndexOf("."); pam.setProDocumentName(split[1].substring(0, rexIdex)); pam.setProDocumentFormat(split[1].substring(rexIdex + 1)); projectArchiveManageMapper.insert(pam); } } } } catch (Exception e) { e.printStackTrace(); dataSourceTransactionManager.rollback(transactionStatus); return response.setMsg(0, "更新失败"); } if (bl) { response.setMsg(1, "更新成功"); dataSourceTransactionManager.commit(transactionStatus); } else { response.setMsg(0, "更新失败"); dataSourceTransactionManager.rollback(transactionStatus); } return response; } /** * 项目进度管理 * 项目进度(1-6 立项、审批、研究、结题、验收、归档) * * @param progress * @return */ public Response updateProjectProgress(ProjectManage progress) { Response response = new Response<>(); progress.setProArchiveDate(new Date()); boolean bl = projectManageMapper.updateProjectProgress(progress) > 0; if (bl) { projectArchiveManageMapper.updateProjectProgress(progress);//有文档材料就增加归档时间 response.setMsg(1, "更新成功"); } else { response.setMsg(0, "更新失败"); } return response; } }