@@ -0,0 +1,21 @@
+/**
+ * Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.project.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.project.entity.Archivedirectory;
+import java.util.List;
+ * 归档目录DAO接口
+ * @author 姚儒彬
+ * @version 2017-10-11
+@MyBatisDao
+public interface ArchivedirectoryDao extends CrudDao<Archivedirectory> {
+ public List<Archivedirectory> getbidInformationById(String id);
+}
@@ -0,0 +1,19 @@
+import com.jeeplus.modules.project.entity.BidInformation;
+ * 标段信息DAO接口
+public interface BidInformationDao extends CrudDao<BidInformation> {
@@ -0,0 +1,31 @@
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.project.entity.Projectgeneral;
+import com.jeeplus.modules.project.entity.ProjectEvaluationRecord;
+import com.jeeplus.modules.project.entity.Workprojectgroup;
+import com.jeeplus.modules.project.entity.Project;
+ * 项目表DAO接口
+ * @author fgy
+ * @version 2017-10-12
+public interface ProjectDao extends CrudDao<Project> {
+ public List<WorkClientLinkman> findListByentrustCompany(WorkClientLinkman entrustCompany);
+ public List<WorkContractInfo> findListBycontractInfo(WorkContractInfo contractInfo);
+ public List<Projectgeneral> findListByprojectGeneral(Projectgeneral projectGeneral);
+ public List<WorkClientLinkman> findListByworkClientLinkman(WorkClientLinkman workClientLinkman);
+ public List<ProjectEvaluationRecord> findListByprojectEvaluationRecord(ProjectEvaluationRecord projectEvaluationRecord);
+ public List<Workprojectgroup> findListByworkprojectgroup(Workprojectgroup workprojectgroup);
@@ -0,0 +1,32 @@
+import com.jeeplus.modules.project.entity.ProjectDepositManagement;
+ * 保证金管理DAO接口
+ * @author yangfan
+public interface ProjectDepositManagementDao extends CrudDao<ProjectDepositManagement> {
+ /**
+ * 更新流程实例ID
+ * @param projectDepositManagement
+ * @return
+ public int updateProcessInstanceId(ProjectDepositManagement projectDepositManagement);
+ * 根据流程实例ID获取Leave
+ * @param processInstanceId
+ public ProjectDepositManagement getByProcessInstanceId(String processInstanceId);
+ * 招标代理评价记录表DAO接口
+ * @author liuw
+public interface ProjectEvaluationRecordDao extends CrudDao<ProjectEvaluationRecord> {
+ * 项目概况DAO接口
+public interface ProjectgeneralDao extends CrudDao<Projectgeneral> {
+ * 项目组信息表DAO接口
+public interface WorkprojectgroupDao extends CrudDao<Workprojectgroup> {
@@ -0,0 +1,77 @@
+package com.jeeplus.modules.project.entity;
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+ * 归档目录Entity
+public class Archivedirectory extends DataEntity<Archivedirectory> {
+ private static final long serialVersionUID = 1L;
+ private int seq; //序号
+ private String name; // 名称
+ private String number; // 数量
+ private String pageNumber; // 页码
+ private String bidInformationId; // 标段信息表主键
+ public Archivedirectory() {
+ super();
+ }
+ public Archivedirectory(String id){
+ super(id);
+ @ExcelField(title="序号", align=2, sort=7)
+ public int getSeq() {
+ return seq;
+ public void setSeq(int seq) {
+ this.seq = seq;
+ @ExcelField(title="名称", align=2, sort=7)
+ public String getName() {
+ return name;
+ public void setName(String name) {
+ this.name = name;
+ @ExcelField(title="数量", align=2, sort=8)
+ public String getNumber() {
+ return number;
+ public void setNumber(String number) {
+ this.number = number;
+ @ExcelField(title="页码", align=2, sort=9)
+ public String getPageNumber() {
+ return pageNumber;
+ public void setPageNumber(String pageNumber) {
+ this.pageNumber = pageNumber;
+ @ExcelField(title="标段信息表主键", align=2, sort=10)
+ public String getBidInformationId() {
+ return bidInformationId;
+ public void setBidInformationId(String bidInformationId) {
+ this.bidInformationId = bidInformationId;
@@ -0,0 +1,205 @@
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.Collections3;
+import com.jeeplus.common.utils.IdGen;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.work.entity.report.WorkReportRecord;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
+ * 标段信息Entity
+public class BidInformation extends DataEntity<BidInformation> {
+ private String bidOpeningTime; // 开标时间
+ private String winningBidNumber; // 中标通知书编号
+ private String centralInvestmentOnline; // 中央投资网是否上传(0否,1是)
+ private String tendereeArchives; // 招标人是否承存档(0否,1是)
+ private String paperArchiving; // 纸质归档(0否,1是)
+ private String timeOfWinningBid; // 中标通知书发放时间
+ private String filingTime; // 备案时间
+ private String firstAcceptanceTime; // 首次接收时间
+ private String finalArchivingTime; // 最终归档时间
+ private String processInstanceId; // 流程实例ID
+ private String status; // 归档状态
+ private String projectId; // 项目表主键
+ private Project project; //项目表
+ private Workprojectgroup workprojectgroup; //项目组信息表
+ private WorkClientInfo workClientInfo; //客户信息表
+ private Archivedirectory archivedirectory; //归档目录表
+ private List<Archivedirectory> archivedirectoryList = Lists.newArrayList();
+ public BidInformation() {
+ public BidInformation(String id){
+ @ExcelField(title="开标时间", align=2, sort=7)
+ public String getBidOpeningTime() {
+ return bidOpeningTime;
+ public void setBidOpeningTime(String bidOpeningTime) {
+ this.bidOpeningTime = bidOpeningTime;
+ @ExcelField(title="中标通知书编号", align=2, sort=8)
+ public String getWinningBidNumber() {
+ return winningBidNumber;
+ public void setWinningBidNumber(String winningBidNumber) {
+ this.winningBidNumber = winningBidNumber;
+ @ExcelField(title="中央投资网是否上传(0否,1是)", dictType="", align=2, sort=9)
+ public String getCentralInvestmentOnline() {
+ return centralInvestmentOnline;
+ public void setCentralInvestmentOnline(String centralInvestmentOnline) {
+ this.centralInvestmentOnline = centralInvestmentOnline;
+ @ExcelField(title="招标人是否承存档(0否,1是)", dictType="", align=2, sort=10)
+ public String getTendereeArchives() {
+ return tendereeArchives;
+ public void setTendereeArchives(String tendereeArchives) {
+ this.tendereeArchives = tendereeArchives;
+ @ExcelField(title="纸质归档(0否,1是)", dictType="", align=2, sort=11)
+ public String getPaperArchiving() {
+ return paperArchiving;
+ public void setPaperArchiving(String paperArchiving) {
+ this.paperArchiving = paperArchiving;
+ @ExcelField(title="中标通知书发放时间", align=2, sort=12)
+ public String getTimeOfWinningBid() {
+ return timeOfWinningBid;
+ public void setTimeOfWinningBid(String timeOfWinningBid) {
+ this.timeOfWinningBid = timeOfWinningBid;
+ @ExcelField(title="备案时间", align=2, sort=13)
+ public String getFilingTime() {
+ return filingTime;
+ public void setFilingTime(String filingTime) {
+ this.filingTime = filingTime;
+ @ExcelField(title="首次接收时间", align=2, sort=14)
+ public String getFirstAcceptanceTime() {
+ return firstAcceptanceTime;
+ public void setFirstAcceptanceTime(String firstAcceptanceTime) {
+ this.firstAcceptanceTime = firstAcceptanceTime;
+ @ExcelField(title="最终归档时间", align=2, sort=15)
+ public String getFinalArchivingTime() {
+ return finalArchivingTime;
+ public void setFinalArchivingTime(String finalArchivingTime) {
+ this.finalArchivingTime = finalArchivingTime;
+ @ExcelField(title="流程实例ID", align=2, sort=16)
+ public String getProcessInstanceId() {
+ return processInstanceId;
+ public void setProcessInstanceId(String processInstanceId) {
+ this.processInstanceId = processInstanceId;
+ @ExcelField(title="归档状态", align=2, sort=17)
+ public String getStatus() {
+ return status;
+ public void setStatus(String status) {
+ this.status = status;
+ @ExcelField(title="项目表主键", align=2, sort=18)
+ public String getProjectId() {
+ return projectId;
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ @ExcelField(title="项目信息", align=2, sort=19)
+ public Project getProject() {
+ return project;
+ public void setProject(Project project) {
+ this.project = project;
+ @ExcelField(title="项目组信息", align=2, sort=20)
+ public Workprojectgroup getWorkprojectgroup() {
+ return workprojectgroup;
+ public void setWorkprojectgroup(Workprojectgroup workprojectgroup) {
+ this.workprojectgroup = workprojectgroup;
+ @ExcelField(title="客户信息表", align=2, sort=21)
+ public WorkClientInfo getWorkClientInfo() {
+ return workClientInfo;
+ public void setWorkClientInfo(WorkClientInfo workClientInfo) {
+ this.workClientInfo = workClientInfo;
+ @ExcelField(title="归档目录表", align=2, sort=22)
+ public Archivedirectory getArchivedirectory() {
+ return archivedirectory;
+ public void setArchivedirectory(Archivedirectory archivedirectory) {
+ this.archivedirectory = archivedirectory;
+ public List<Archivedirectory> getArchivedirectoryList() {
+ return archivedirectoryList;
+ public void setArchivedirectoryList(List<Archivedirectory> archivedirectoryList) {
+ this.archivedirectoryList = archivedirectoryList;
@@ -0,0 +1,154 @@
+import javax.validation.constraints.NotNull;
+ * 项目表Entity
+public class Project extends DataEntity<Project> {
+ private String status; // 项目状态(0:项目登记、1:项目评标、2:项目归档)
+ private String projectNumber; // 项目编号
+ private String projectName; // 项目名称
+ private String tendereeType; // 招标方式(0:直接发包:1:”竞争性谈判、2:公开招标、3:邀请招标、4:其他)
+ private String batch; // 批次
+ private String investmentAmounts; // 投资额
+ private WorkClientLinkman entrustCompany; // 委托单位
+ private WorkContractInfo contractInfo; // 合同信息
+ private Projectgeneral projectGeneral; // 项目概况
+ private WorkClientLinkman workClientLinkman; // 投标单位
+ private ProjectEvaluationRecord projectEvaluationRecord; // 评标记录
+ private Workprojectgroup workprojectgroup; // 项目组信息
+ public Project() {
+ public Project(String id){
+ @ExcelField(title="项目状态(0:项目登记、1:项目评标、2:项目归档)", dictType="", align=2, sort=1)
+ @ExcelField(title="项目编号", align=2, sort=2)
+ public String getProjectNumber() {
+ return projectNumber;
+ public void setProjectNumber(String projectNumber) {
+ this.projectNumber = projectNumber;
+ @ExcelField(title="项目名称", align=2, sort=3)
+ public String getProjectName() {
+ return projectName;
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ @ExcelField(title="招标方式(0:直接发包:1:”竞争性谈判、2:公开招标、3:邀请招标、4:其他)", dictType="", align=2, sort=4)
+ public String getTendereeType() {
+ return tendereeType;
+ public void setTendereeType(String tendereeType) {
+ this.tendereeType = tendereeType;
+ @ExcelField(title="批次", align=2, sort=5)
+ public String getBatch() {
+ return batch;
+ public void setBatch(String batch) {
+ this.batch = batch;
+ @ExcelField(title="投资额", align=2, sort=6)
+ public String getInvestmentAmounts() {
+ return investmentAmounts;
+ public void setInvestmentAmounts(String investmentAmounts) {
+ this.investmentAmounts = investmentAmounts;
+ @NotNull(message="委托单位不能为空")
+ @ExcelField(title="委托单位", align=2, sort=7)
+ public WorkClientLinkman getEntrustCompany() {
+ return entrustCompany;
+ public void setEntrustCompany(WorkClientLinkman entrustCompany) {
+ this.entrustCompany = entrustCompany;
+ @ExcelField(title="合同信息", align=2, sort=8)
+ public WorkContractInfo getContractInfo() {
+ return contractInfo;
+ public void setContractInfo(WorkContractInfo contractInfo) {
+ this.contractInfo = contractInfo;
+ @ExcelField(title="项目概况", align=2, sort=9)
+ public Projectgeneral getProjectGeneral() {
+ return projectGeneral;
+ public void setProjectGeneral(Projectgeneral projectGeneral) {
+ this.projectGeneral = projectGeneral;
+ @ExcelField(title="投标单位", align=2, sort=10)
+ public WorkClientLinkman getWorkClientLinkman() {
+ return workClientLinkman;
+ public void setWorkClientLinkman(WorkClientLinkman workClientLinkman) {
+ this.workClientLinkman = workClientLinkman;
+ @ExcelField(title="评标记录", align=2, sort=11)
+ public ProjectEvaluationRecord getProjectEvaluationRecord() {
+ return projectEvaluationRecord;
+ public void setProjectEvaluationRecord(ProjectEvaluationRecord projectEvaluationRecord) {
+ this.projectEvaluationRecord = projectEvaluationRecord;
+ @ExcelField(title="项目组信息", align=2, sort=12)
@@ -0,0 +1,231 @@
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.persistence.ActEntity;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.hibernate.validator.constraints.Length;
+import java.util.Date;
+import java.util.Map;
+ * 保证金管理Entity
+public class ProjectDepositManagement extends ActEntity<ProjectDepositManagement> {
+ private String depositAmount; // 保证金金额
+ private String projectId; // 项目主键
+ private String status; // 状态
+ private String processInstanceId; // 实例流程id
+ private Project project; // 项目名称
+ private String clientName; // 递交单位
+ private String clientId; // 递交单位
+ private Date openbidTime; // 开标时间
+ private String name;
+ private String ids;
+ private String idNames;
+ public String getClientId() {
+ return clientId;
+ public void setClientId(String clientId) {
+ this.clientId = clientId;
+ public String getClientName() {
+ return clientName;
+ public void setClientName(String clientName) {
+ this.clientName = clientName;
+ public Date getOpenbidTime() {
+ return openbidTime;
+ public void setOpenbidTime(Date openbidTime) {
+ this.openbidTime = openbidTime;
+ @ExcelField(title="项目信息", align=2, sort=6)
+ public ProjectDepositManagement() {
+ public ProjectDepositManagement(String id){
+ @ExcelField(title="保证金金额", align=2, sort=7)
+ public String getDepositAmount() {
+ return depositAmount;
+ public void setDepositAmount(String depositAmount) {
+ this.depositAmount = depositAmount;
+ @ExcelField(title="项目主键", align=2, sort=8)
+ @ExcelField(title="状态", align=2, sort=9)
+ // -- 临时属性 --//
+ // 流程任务
+ private Task task;
+ private Map<String, Object> variables;
+ // 运行中的流程实例
+ private ProcessInstance processInstance;
+ // 历史的流程实例
+ private HistoricProcessInstance historicProcessInstance;
+ // 流程定义
+ private ProcessDefinition processDefinition;
+ public User getUser() {
+ return createBy;
+ public void setUser(User user) {
+ this.createBy = user;
+ public Task getTask() {
+ return task;
+ public void setTask(Task task) {
+ this.task = task;
+ public Map<String, Object> getVariables() {
+ return variables;
+ public void setVariables(Map<String, Object> variables) {
+ this.variables = variables;
+ public ProcessInstance getProcessInstance() {
+ return processInstance;
+ public void setProcessInstance(ProcessInstance processInstance) {
+ this.processInstance = processInstance;
+ public HistoricProcessInstance getHistoricProcessInstance() {
+ return historicProcessInstance;
+ public void setHistoricProcessInstance(HistoricProcessInstance historicProcessInstance) {
+ this.historicProcessInstance = historicProcessInstance;
+ public ProcessDefinition getProcessDefinition() {
+ return processDefinition;
+ public void setProcessDefinition(ProcessDefinition processDefinition) {
+ this.processDefinition = processDefinition;
+ public String getIds() {
+ List<String> idList = Lists.newArrayList();
+ if (StringUtils.isNotBlank(ids)) {
+ String ss = ids.trim().replace(" ", ",").replace(" ", ",").replace(",", ",").replace("'", "");
+ for (String s : ss.split(",")) {
+ // if(s.matches("\\d*")) {
+ idList.add("'" + s + "'");
+ // }
+ return StringUtils.join(idList, ",");
+ public void setIds(String ids) {
+ this.ids = ids;
+ public String getIdNames() {
+ if (StringUtils.isNotBlank(idNames)) {
+ String ss = idNames.trim().replace(" ", ",").replace(" ", ",").replace(",", ",").replace("'", "");
+ public void setIdNames(String idNames) {
+ this.idNames = idNames;
@@ -0,0 +1,121 @@
+ * 招标代理评价记录表Entity
+public class ProjectEvaluationRecord extends DataEntity<ProjectEvaluationRecord> {
+ private String clientId; // 中标单位
+ private String bidsuccessMoney; // 中标金额
+ private String duration; // 工期
+ private String projectManager; // 中标项目经理
+ private Date openbidMime; // 开标时间
+ private String openbidPlace; // 开标地点
+ private Date assessbidTime; // 评标时间
+ private String assessbidPlace; // 评标地点
+ public ProjectEvaluationRecord() {
+ public ProjectEvaluationRecord(String id){
+ @ExcelField(title="中标单位", align=2, sort=7)
+ @ExcelField(title="中标金额", align=2, sort=8)
+ public String getBidsuccessMoney() {
+ return bidsuccessMoney;
+ public void setBidsuccessMoney(String bidsuccessMoney) {
+ this.bidsuccessMoney = bidsuccessMoney;
+ @ExcelField(title="工期", align=2, sort=9)
+ public String getDuration() {
+ return duration;
+ public void setDuration(String duration) {
+ this.duration = duration;
+ @ExcelField(title="中标项目经理", align=2, sort=10)
+ public String getProjectManager() {
+ return projectManager;
+ public void setProjectManager(String projectManager) {
+ this.projectManager = projectManager;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ExcelField(title="开标时间", align=2, sort=11)
+ public Date getOpenbidMime() {
+ return openbidMime;
+ public void setOpenbidMime(Date openbidMime) {
+ this.openbidMime = openbidMime;
+ @ExcelField(title="开标地点", align=2, sort=12)
+ public String getOpenbidPlace() {
+ return openbidPlace;
+ public void setOpenbidPlace(String openbidPlace) {
+ this.openbidPlace = openbidPlace;
+ @ExcelField(title="评标时间", align=2, sort=13)
+ public Date getAssessbidTime() {
+ return assessbidTime;
+ public void setAssessbidTime(Date assessbidTime) {
+ this.assessbidTime = assessbidTime;
+ @ExcelField(title="评标地点", align=2, sort=14)
+ public String getAssessbidPlace() {
+ return assessbidPlace;
+ public void setAssessbidPlace(String assessbidPlace) {
+ this.assessbidPlace = assessbidPlace;
+ @ExcelField(title="项目主键", align=2, sort=15)
@@ -0,0 +1,187 @@
+ * 项目概况Entity
+public class Projectgeneral extends DataEntity<Projectgeneral> {
+ private String demandDepartment; // 需求部门
+ private String projectType; // 工程类型(0机电、1房建、2市政、3交通、4政府采购、5其他)
+ private String constructionSite; // 建设地点
+ private String supervisionUnit; // 监督单位
+ private String serviceClassification; // 服务分类
+ private String fundAttribute; // 资金属性
+ private String assetNature; // 资产性质
+ private String tenderScope; // 招标范围
+ private String onlineBidding; // 是否网上招投标(0否,1是)
+ private String evaluationExpert; // 是否录入评标专家(0否,1是)
+ private String priceCeiling; // 最高限价(0否,1是)
+ private String bidPriceOrBidControlPrice; // 标底或招标控制价(0否,1是)
+ private String bidPriceOrBidControlPriceMoney; // 标底或招标控制价(元)
+ private String bidEvaluationOfficer; // 评标委员会负责人
+ private String bidEvaluationStaff; // 与评标活动有关工作人员
+ public Projectgeneral() {
+ public Projectgeneral(String id){
+ @ExcelField(title="需求部门", align=2, sort=7)
+ public String getDemandDepartment() {
+ return demandDepartment;
+ public void setDemandDepartment(String demandDepartment) {
+ this.demandDepartment = demandDepartment;
+ @ExcelField(title="工程类型(0机电、1房建、2市政、3交通、4政府采购、5其他)", dictType="", align=2, sort=8)
+ public String getProjectType() {
+ return projectType;
+ public void setProjectType(String projectType) {
+ this.projectType = projectType;
+ @ExcelField(title="建设地点", align=2, sort=9)
+ public String getConstructionSite() {
+ return constructionSite;
+ public void setConstructionSite(String constructionSite) {
+ this.constructionSite = constructionSite;
+ @ExcelField(title="监督单位", align=2, sort=10)
+ public String getSupervisionUnit() {
+ return supervisionUnit;
+ public void setSupervisionUnit(String supervisionUnit) {
+ this.supervisionUnit = supervisionUnit;
+ @ExcelField(title="服务分类", align=2, sort=11)
+ public String getServiceClassification() {
+ return serviceClassification;
+ public void setServiceClassification(String serviceClassification) {
+ this.serviceClassification = serviceClassification;
+ @ExcelField(title="资金属性", align=2, sort=12)
+ public String getFundAttribute() {
+ return fundAttribute;
+ public void setFundAttribute(String fundAttribute) {
+ this.fundAttribute = fundAttribute;
+ @ExcelField(title="资产性质", align=2, sort=13)
+ public String getAssetNature() {
+ return assetNature;
+ public void setAssetNature(String assetNature) {
+ this.assetNature = assetNature;
+ @ExcelField(title="招标范围", align=2, sort=14)
+ public String getTenderScope() {
+ return tenderScope;
+ public void setTenderScope(String tenderScope) {
+ this.tenderScope = tenderScope;
+ @ExcelField(title="是否网上招投标(0否,1是)", dictType="", align=2, sort=15)
+ public String getOnlineBidding() {
+ return onlineBidding;
+ public void setOnlineBidding(String onlineBidding) {
+ this.onlineBidding = onlineBidding;
+ @ExcelField(title="是否录入评标专家(0否,1是)", dictType="", align=2, sort=16)
+ public String getEvaluationExpert() {
+ return evaluationExpert;
+ public void setEvaluationExpert(String evaluationExpert) {
+ this.evaluationExpert = evaluationExpert;
+ @ExcelField(title="最高限价(0否,1是)", dictType="", align=2, sort=17)
+ public String getPriceCeiling() {
+ return priceCeiling;
+ public void setPriceCeiling(String priceCeiling) {
+ this.priceCeiling = priceCeiling;
+ @ExcelField(title="标底或招标控制价(0否,1是)", dictType="", align=2, sort=18)
+ public String getBidPriceOrBidControlPrice() {
+ return bidPriceOrBidControlPrice;
+ public void setBidPriceOrBidControlPrice(String bidPriceOrBidControlPrice) {
+ this.bidPriceOrBidControlPrice = bidPriceOrBidControlPrice;
+ @ExcelField(title="标底或招标控制价(元)", align=2, sort=19)
+ public String getBidPriceOrBidControlPriceMoney() {
+ return bidPriceOrBidControlPriceMoney;
+ public void setBidPriceOrBidControlPriceMoney(String bidPriceOrBidControlPriceMoney) {
+ this.bidPriceOrBidControlPriceMoney = bidPriceOrBidControlPriceMoney;
+ @ExcelField(title="评标委员会负责人", align=2, sort=20)
+ public String getBidEvaluationOfficer() {
+ return bidEvaluationOfficer;
+ public void setBidEvaluationOfficer(String bidEvaluationOfficer) {
+ this.bidEvaluationOfficer = bidEvaluationOfficer;
+ @ExcelField(title="与评标活动有关工作人员", align=2, sort=21)
+ public String getBidEvaluationStaff() {
+ return bidEvaluationStaff;
+ public void setBidEvaluationStaff(String bidEvaluationStaff) {
+ this.bidEvaluationStaff = bidEvaluationStaff;
+ @ExcelField(title="项目主键", align=2, sort=22)
@@ -0,0 +1,67 @@
+ * 项目组信息表Entity
+public class Workprojectgroup extends DataEntity<Workprojectgroup> {
+ private String leader; // 项目组负责人
+ private String memberIds; // 项目组成员
+ private String listPreparation; // 清单编制
+ public Workprojectgroup() {
+ public Workprojectgroup(String id){
+ @ExcelField(title="项目组负责人", align=2, sort=7)
+ public String getLeader() {
+ return leader;
+ public void setLeader(String leader) {
+ this.leader = leader;
+ @ExcelField(title="项目组成员", align=2, sort=8)
+ public String getMemberIds() {
+ return memberIds;
+ public void setMemberIds(String memberIds) {
+ this.memberIds = memberIds;
+ @ExcelField(title="清单编制", align=2, sort=9)
+ public String getListPreparation() {
+ return listPreparation;
+ public void setListPreparation(String listPreparation) {
+ this.listPreparation = listPreparation;
+ @ExcelField(title="项目主键", align=2, sort=10)
@@ -0,0 +1,56 @@
+package com.jeeplus.modules.project.service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.modules.project.dao.ArchivedirectoryDao;
+ * 归档目录Service
+@Service
+@Transactional(readOnly = true)
+public class ArchivedirectoryService extends CrudService<ArchivedirectoryDao, Archivedirectory> {
+ public Archivedirectory get(String id) {
+ return super.get(id);
+ public List<Archivedirectory> findList(Archivedirectory archivedirectory) {
+ return super.findList(archivedirectory);
+ public Page<Archivedirectory> findPage(Page<Archivedirectory> page, Archivedirectory archivedirectory) {
+ return super.findPage(page, archivedirectory);
+ @Transactional(readOnly = false)
+ public void save(Archivedirectory archivedirectory) {
+ super.save(archivedirectory);
+ public void delete(Archivedirectory archivedirectory) {
+ super.delete(archivedirectory);
+ @Autowired
+ private ArchivedirectoryDao archivedirectoryDao;
+ public List<Archivedirectory> getbidInformationById(String id) {
+ return archivedirectoryDao.getbidInformationById(id);
@@ -0,0 +1,50 @@
+import com.jeeplus.modules.project.dao.BidInformationDao;
+ * 标段信息Service
+public class BidInformationService extends CrudService<BidInformationDao, BidInformation> {
+ public BidInformation get(String id) {
+ public List<BidInformation> findList(BidInformation bidInformation) {
+ return super.findList(bidInformation);
+ public Page<BidInformation> findPage(Page<BidInformation> page, BidInformation bidInformation) {
+ return super.findPage(page, bidInformation);
+ public void save(BidInformation bidInformation) {
+ super.save(bidInformation);
+ public void delete(BidInformation bidInformation) {
+ super.delete(bidInformation);
@@ -0,0 +1,115 @@
+import com.google.common.collect.Maps;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.act.utils.ActUtils;
+import com.jeeplus.modules.oa.entity.Leave;
+import com.jeeplus.modules.sys.dao.UserDao;
+import com.jeeplus.modules.workapprovalcopy.service.ApprovalCopyService;
+import org.activiti.engine.*;
+import com.jeeplus.modules.project.dao.ProjectDepositManagementDao;
+ * 保证金管理Service
+public class ProjectDepositManagementService extends CrudService<ProjectDepositManagementDao, ProjectDepositManagement> {
+ private ProjectDepositManagementDao projectDepositManagementDao;
+ private RuntimeService runtimeService;
+ protected TaskService taskService;
+ protected HistoryService historyService;
+ protected RepositoryService repositoryService;
+ private IdentityService identityService;
+ private UserDao userDao;
+ private ApprovalCopyService approvalCopyService;
+ private ActTaskService actTaskService;
+ public ProjectDepositManagement get(String id) {
+ public List<ProjectDepositManagement> findList(ProjectDepositManagement projectDepositManagement) {
+ return super.findList(projectDepositManagement);
+ public Page<ProjectDepositManagement> findPage(Page<ProjectDepositManagement> page, ProjectDepositManagement projectDepositManagement) {
+ projectDepositManagement.setPage(page);
+ List<ProjectDepositManagement> list = dao.findList(projectDepositManagement);
+ page.setList(list);
+ return page;
+ * 启动流程
+ * @param
+ public void startProcessInstanceByKey(ProjectDepositManagement projectDepositManagement, Map<String, Object> variables) {
+ // 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中
+ identityService.setAuthenticatedUserId(projectDepositManagement.getCurrentUser().getId());
+ // 启动流程
+ String businessKey = projectDepositManagement.getId().toString();
+ variables.put("type", "deposit");
+ variables.put("busId", businessKey);
+ variables.put("title", projectDepositManagement.getRemarks());//设置标题;
+ ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(ActUtils.PD_DEPOSIT[0], businessKey, variables);
+ projectDepositManagement.setProcessInstance(processInstance);
+ // 更新流程实例ID
+ projectDepositManagement.setProcessInstanceId(processInstance.getId());
+ projectDepositManagementDao.updateProcessInstanceId(projectDepositManagement);
+ projectDepositManagement.setStatus("2");
+ projectDepositManagement.preUpdate();
+ projectDepositManagementDao.update(projectDepositManagement);
+ public void save(ProjectDepositManagement projectDepositManagement) {
+ super.save(projectDepositManagement);
+ public void delete(ProjectDepositManagement projectDepositManagement) {
+ super.delete(projectDepositManagement);
+ * 获取流程详细Leave
+ @SuppressWarnings("unchecked")
+ public ProjectDepositManagement getByProcessInstanceId(String processInstanceId) {
+ ProjectDepositManagement projectDepositManagement = projectDepositManagementDao.getByProcessInstanceId(processInstanceId);
+ return projectDepositManagement;
+import com.jeeplus.modules.project.dao.ProjectEvaluationRecordDao;
+ * 招标代理评价记录表Service
+public class ProjectEvaluationRecordService extends CrudService<ProjectEvaluationRecordDao, ProjectEvaluationRecord> {
+ public ProjectEvaluationRecord get(String id) {
+ public List<ProjectEvaluationRecord> findList(ProjectEvaluationRecord projectEvaluationRecord) {
+ return super.findList(projectEvaluationRecord);
+ public Page<ProjectEvaluationRecord> findPage(Page<ProjectEvaluationRecord> page, ProjectEvaluationRecord projectEvaluationRecord) {
+ return super.findPage(page, projectEvaluationRecord);
+ public void save(ProjectEvaluationRecord projectEvaluationRecord) {
+ super.save(projectEvaluationRecord);
+ public void delete(ProjectEvaluationRecord projectEvaluationRecord) {
+ super.delete(projectEvaluationRecord);
@@ -0,0 +1,85 @@
+import com.jeeplus.modules.project.dao.ProjectDao;
+ * 项目表Service
+public class ProjectService extends CrudService<ProjectDao, Project> {
+ public Project get(String id) {
+ public List<Project> findList(Project project) {
+ return super.findList(project);
+ public Page<Project> findPage(Page<Project> page, Project project) {
+ return super.findPage(page, project);
+ public void save(Project project) {
+ super.save(project);
+ public void delete(Project project) {
+ super.delete(project);
+ public Page<WorkClientLinkman> findPageByentrustCompany(Page<WorkClientLinkman> page, WorkClientLinkman entrustCompany) {
+ entrustCompany.setPage(page);
+ page.setList(dao.findListByentrustCompany(entrustCompany));
+ public Page<WorkContractInfo> findPageBycontractInfo(Page<WorkContractInfo> page, WorkContractInfo contractInfo) {
+ contractInfo.setPage(page);
+ page.setList(dao.findListBycontractInfo(contractInfo));
+ public Page<Projectgeneral> findPageByprojectGeneral(Page<Projectgeneral> page, Projectgeneral projectGeneral) {
+ projectGeneral.setPage(page);
+ page.setList(dao.findListByprojectGeneral(projectGeneral));
+ public Page<WorkClientLinkman> findPageByworkClientLinkman(Page<WorkClientLinkman> page, WorkClientLinkman workClientLinkman) {
+ workClientLinkman.setPage(page);
+ page.setList(dao.findListByworkClientLinkman(workClientLinkman));
+ public Page<ProjectEvaluationRecord> findPageByprojectEvaluationRecord(Page<ProjectEvaluationRecord> page, ProjectEvaluationRecord projectEvaluationRecord) {
+ projectEvaluationRecord.setPage(page);
+ page.setList(dao.findListByprojectEvaluationRecord(projectEvaluationRecord));
+ public Page<Workprojectgroup> findPageByworkprojectgroup(Page<Workprojectgroup> page, Workprojectgroup workprojectgroup) {
+ workprojectgroup.setPage(page);
+ page.setList(dao.findListByworkprojectgroup(workprojectgroup));
+import com.jeeplus.modules.project.dao.ProjectgeneralDao;
+ * 项目概况Service
+public class ProjectgeneralService extends CrudService<ProjectgeneralDao, Projectgeneral> {
+ public Projectgeneral get(String id) {
+ public List<Projectgeneral> findList(Projectgeneral projectgeneral) {
+ return super.findList(projectgeneral);
+ public Page<Projectgeneral> findPage(Page<Projectgeneral> page, Projectgeneral projectgeneral) {
+ return super.findPage(page, projectgeneral);
+ public void save(Projectgeneral projectgeneral) {
+ super.save(projectgeneral);
+ public void delete(Projectgeneral projectgeneral) {
+ super.delete(projectgeneral);
+import com.jeeplus.modules.project.dao.WorkprojectgroupDao;
+ * 项目组信息表Service
+public class WorkprojectgroupService extends CrudService<WorkprojectgroupDao, Workprojectgroup> {
+ public Workprojectgroup get(String id) {
+ public List<Workprojectgroup> findList(Workprojectgroup workprojectgroup) {
+ return super.findList(workprojectgroup);
+ public Page<Workprojectgroup> findPage(Page<Workprojectgroup> page, Workprojectgroup workprojectgroup) {
+ return super.findPage(page, workprojectgroup);
+ public void save(Workprojectgroup workprojectgroup) {
+ super.save(workprojectgroup);
+ public void delete(Workprojectgroup workprojectgroup) {
+ super.delete(workprojectgroup);
@@ -0,0 +1,202 @@
+package com.jeeplus.modules.project.web;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.ConstraintViolationException;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.modules.project.service.ArchivedirectoryService;
+ * 归档目录Controller
+@Controller
+@RequestMapping(value = "${adminPath}/project/archivedirectory")
+public class ArchivedirectoryController extends BaseController {
+ private ArchivedirectoryService archivedirectoryService;
+ @ModelAttribute
+ public Archivedirectory get(@RequestParam(required=false) String id) {
+ Archivedirectory entity = null;
+ if (StringUtils.isNotBlank(id)){
+ entity = archivedirectoryService.get(id);
+ if (entity == null){
+ entity = new Archivedirectory();
+ return entity;
+ * 归档目录列表页面
+ @RequiresPermissions("project:archivedirectory:list")
+ @RequestMapping(value = {"list", ""})
+ public String list(Archivedirectory archivedirectory, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Archivedirectory> page = archivedirectoryService.findPage(new Page<Archivedirectory>(request, response), archivedirectory);
+ model.addAttribute("page", page);
+ return "modules/project/archivedirectoryList";
+ * 查看,增加,编辑归档目录表单页面
+ @RequiresPermissions(value={"project:archivedirectory:view","project:archivedirectory:add","project:archivedirectory:edit"},logical=Logical.OR)
+ @RequestMapping(value = "form")
+ public String form(Archivedirectory archivedirectory, Model model,String bidInformationId) {
+ archivedirectory.setBidInformationId(bidInformationId);
+ model.addAttribute("archivedirectory", archivedirectory);
+ return "modules/project/archivedirectoryForm";
+ * 查看归档目录表单页面
+ @RequiresPermissions(value={"project:archivedirectory:view"},logical=Logical.OR)
+ @RequestMapping(value = "forms")
+ public String forms(Archivedirectory archivedirectory, Model model,String bidInformationId) {
+ return "modules/project/archivedirectoryForms";
+ * 保存归档目录
+ @RequiresPermissions(value={"project:archivedirectory:add","project:archivedirectory:edit"},logical=Logical.OR)
+ @RequestMapping(value = "save")
+ public String save(Archivedirectory archivedirectory, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, archivedirectory)){
+ return form(archivedirectory, model,"");
+ archivedirectoryService.save(archivedirectory);//保存
+ addMessage(redirectAttributes, "保存归档目录成功");
+ return "redirect:"+Global.getAdminPath()+"/project/archivedirectory/?repage";
+ * 删除归档目录
+ @RequiresPermissions("project:archivedirectory:del")
+ @RequestMapping(value = "delete")
+ public String delete(Archivedirectory archivedirectory, RedirectAttributes redirectAttributes) {
+ archivedirectoryService.delete(archivedirectory);
+ addMessage(redirectAttributes, "删除归档目录成功");
+ * 批量删除归档目录
+ @RequestMapping(value = "deleteAll")
+ public String deleteAll(String ids, RedirectAttributes redirectAttributes) {
+ String idArray[] =ids.split(",");
+ for(String id : idArray){
+ archivedirectoryService.delete(archivedirectoryService.get(id));
+ * 导出excel文件
+ @RequiresPermissions("project:archivedirectory:export")
+ @RequestMapping(value = "export", method=RequestMethod.POST)
+ public String exportFile(Archivedirectory archivedirectory, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ try {
+ String fileName = "归档目录"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<Archivedirectory> page = archivedirectoryService.findPage(new Page<Archivedirectory>(request, response, -1), archivedirectory);
+ new ExportExcel("归档目录", Archivedirectory.class).setDataList(page.getList()).write(response, fileName).dispose();
+ return null;
+ } catch (Exception e) {
+ addMessage(redirectAttributes, "导出归档目录记录失败!失败信息:"+e.getMessage());
+ * 导入Excel数据
+ @RequiresPermissions("project:archivedirectory:import")
+ @RequestMapping(value = "import", method=RequestMethod.POST)
+ public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+ int successNum = 0;
+ int failureNum = 0;
+ StringBuilder failureMsg = new StringBuilder();
+ ImportExcel ei = new ImportExcel(file, 1, 0);
+ List<Archivedirectory> list = ei.getDataList(Archivedirectory.class);
+ for (Archivedirectory archivedirectory : list){
+ try{
+ archivedirectoryService.save(archivedirectory);
+ successNum++;
+ }catch(ConstraintViolationException ex){
+ failureNum++;
+ }catch (Exception ex) {
+ if (failureNum>0){
+ failureMsg.insert(0, ",失败 "+failureNum+" 条归档目录记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条归档目录记录"+failureMsg);
+ addMessage(redirectAttributes, "导入归档目录失败!失败信息:"+e.getMessage());
+ * 下载导入归档目录数据模板
+ @RequestMapping(value = "import/template")
+ public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "归档目录数据导入模板.xlsx";
+ List<Archivedirectory> list = Lists.newArrayList();
+ new ExportExcel("归档目录数据", Archivedirectory.class, 1).setDataList(list).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
@@ -0,0 +1,223 @@
+import java.util.ArrayList;
+import java.util.HashMap;
+import com.jeeplus.modules.project.service.BidInformationService;
+ * 标段信息Controller
+@RequestMapping(value = "${adminPath}/project/bidInformation")
+public class BidInformationController extends BaseController {
+ private BidInformationService bidInformationService;
+ public BidInformation get(@RequestParam(required=false) String id) {
+ BidInformation entity = null;
+ entity = bidInformationService.get(id);
+ entity = new BidInformation();
+ * 标段信息列表页面
+ @RequiresPermissions("project:bidInformation:list")
+ public String list(BidInformation bidInformation, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<BidInformation> page = bidInformationService.findPage(new Page<BidInformation>(request, response), bidInformation);
+ System.out.print("page----------------------------page++"+page.getList());
+ return "modules/project/bidInformationList";
+ * 查看,增加,编辑标段信息表单页面
+ @RequiresPermissions(value={"project:bidInformation:view","project:bidInformation:add","project:bidInformation:edit"},logical=Logical.OR)
+ public String form(BidInformation bidInformation, Model model,String id) {
+ bidInformation = bidInformationService.get(id);
+ List<Archivedirectory> archivedirectoryList = archivedirectoryService.getbidInformationById(id);
+ System.out.println("------------------------archivedirectoryList-----------"+archivedirectoryList);
+ model.addAttribute("archivedirectoryList", archivedirectoryList);
+ model.addAttribute("bidInformation", bidInformation);
+ return "modules/project/bidInformationForm";
+ * 查看标段信息表单页面
+ @RequiresPermissions(value={"project:bidInformation:view"},logical=Logical.OR)
+ public String forms(BidInformation bidInformation, Model model,String id) {
+ return "modules/project/bidInformationForms";
+ * 保存标段信息
+ @RequiresPermissions(value={"project:bidInformation:add","project:bidInformation:edit"},logical=Logical.OR)
+ public String save(BidInformation bidInformation, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, bidInformation)){
+ return form(bidInformation, model,"");
+ if(!bidInformation.getIsNewRecord()){//编辑表单保存
+ BidInformation t = bidInformationService.get(bidInformation.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(bidInformation, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ bidInformationService.save(t);//保存
+ }else{//新增表单保存
+ bidInformationService.save(bidInformation);//保存
+ addMessage(redirectAttributes, "保存标段信息成功");
+ return "redirect:"+Global.getAdminPath()+"/project/bidInformation/?repage";
+ * 删除标段信息
+ @RequiresPermissions("project:bidInformation:del")
+ public String delete(BidInformation bidInformation, RedirectAttributes redirectAttributes) {
+ bidInformationService.delete(bidInformation);
+ addMessage(redirectAttributes, "删除标段信息成功");
+ * 批量删除标段信息
+ bidInformationService.delete(bidInformationService.get(id));
+ @RequiresPermissions("project:bidInformation:export")
+ public String exportFile(BidInformation bidInformation, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "标段信息"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<BidInformation> page = bidInformationService.findPage(new Page<BidInformation>(request, response, -1), bidInformation);
+ new ExportExcel("标段信息", BidInformation.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出标段信息记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("project:bidInformation:import")
+ List<BidInformation> list = ei.getDataList(BidInformation.class);
+ for (BidInformation bidInformation : list){
+ bidInformationService.save(bidInformation);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条标段信息记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条标段信息记录"+failureMsg);
+ addMessage(redirectAttributes, "导入标段信息失败!失败信息:"+e.getMessage());
+ * 下载导入标段信息数据模板
+ String fileName = "标段信息数据导入模板.xlsx";
+ List<BidInformation> list = Lists.newArrayList();
+ new ExportExcel("标段信息数据", BidInformation.class, 1).setDataList(list).write(response, fileName).dispose();
@@ -0,0 +1,395 @@
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.project.service.ProjectService;
+ * 项目表Controller
+@RequestMapping(value = "${adminPath}/project/project")
+public class ProjectController extends BaseController {
+ private WorkContractInfoService workContractInfoService;
+ private ProjectService projectService;
+ public Project get(@RequestParam(required=false) String id) {
+ Project entity = null;
+ entity = projectService.get(id);
+ entity = new Project();
+ * 项目列表页面
+ @RequiresPermissions("project:project:list")
+ public String list(Project project, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Project> page = projectService.findPage(new Page<Project>(request, response), project);
+ return "modules/project/projectList";
+ * 查看,增加,编辑项目表单页面
+ @RequiresPermissions(value={"project:project:view","project:project:add","project:project:edit"},logical=Logical.OR)
+ public String form(Project project, Model model,@RequestParam(value = "readAttr",required = false)String readAttr) {
+ model.addAttribute("disabled",readAttr==null||"".equals(readAttr)?"":"disabled");
+ model.addAttribute("project", project);
+ return "modules/project/projectForm";
+ * 保存项目
+ @RequiresPermissions(value={"project:project:add","project:project:edit"},logical=Logical.OR)
+ public String save(Project project, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, project)){
+ return form(project, model,"");
+ if(!project.getIsNewRecord()){//编辑表单保存
+ Project t = projectService.get(project.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(project, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectService.save(t);//保存
+ projectService.save(project);//保存
+ addMessage(redirectAttributes, "保存项目成功");
+ return "redirect:"+Global.getAdminPath()+"/project/project/?repage";
+ * 删除项目
+ @RequiresPermissions("project:project:del")
+ public String delete(Project project, RedirectAttributes redirectAttributes) {
+ projectService.delete(project);
+ addMessage(redirectAttributes, "删除项目成功");
+ * 批量删除项目
+ projectService.delete(projectService.get(id));
+ * 选择项目
+ @RequestMapping(value = "selectProject")
+ public String selectbiddingCompany(Project project, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+ fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+ searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+ searchKey = URLDecoder.decode(searchKey, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ model.addAttribute("labelNames", fieldLabels.split("\\|"));
+ model.addAttribute("labelValues", fieldKeys.split("\\|"));
+ model.addAttribute("fieldLabels", fieldLabels);
+ model.addAttribute("fieldKeys", fieldKeys);
+ model.addAttribute("url", url);
+ model.addAttribute("searchLabel", searchLabel);
+ model.addAttribute("searchKey", searchKey);
+ model.addAttribute("obj", project);
+ return "modules/sys/gridselectproject";
+ @RequiresPermissions("project:project:export")
+ public String exportFile(Project project, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "项目"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<Project> page = projectService.findPage(new Page<Project>(request, response, -1), project);
+ new ExportExcel("项目", Project.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出项目记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("project:project:import")
+ List<Project> list = ei.getDataList(Project.class);
+ for (Project project : list){
+ projectService.save(project);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条项目记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条项目记录"+failureMsg);
+ addMessage(redirectAttributes, "导入项目失败!失败信息:"+e.getMessage());
+ * 下载导入项目数据模板
+ String fileName = "项目数据导入模板.xlsx";
+ List<Project> list = Lists.newArrayList();
+ new ExportExcel("项目数据", Project.class, 1).setDataList(list).write(response, fileName).dispose();
+ * 选择委托单位
+ @RequestMapping(value = "selectentrustCompany")
+ public String selectentrustCompany(WorkClientLinkman entrustCompany, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<WorkClientLinkman> page = projectService.findPageByentrustCompany(new Page<WorkClientLinkman>(request, response), entrustCompany);
+ model.addAttribute("obj", entrustCompany);
+ * 选择合同信息
+ @RequestMapping(value = "selectcontractInfo")
+ public String selectcontractInfo(WorkContractInfo contractInfo, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<WorkContractInfo> page = projectService.findPageBycontractInfo(new Page<WorkContractInfo>(request, response), contractInfo);
+ model.addAttribute("obj", contractInfo);
+ return "modules/sys/project_contractSelect";
+ * 根据 合同信息 的id,查询该条合同的具体数据
+ * @param contractInfoId
+ @RequestMapping("/getSelectedContractInfoById")
+ public String getSelectedContractInfoById(String contractInfoId,Model model){
+ WorkContractInfo workContractInfo = workContractInfoService.get(contractInfoId);
+ model.addAttribute("selectedContractInfoId",workContractInfo.getId()) ;
+ * 选择项目概况
+ @RequestMapping(value = "selectprojectGeneral")
+ public String selectprojectGeneral(Projectgeneral projectGeneral, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Projectgeneral> page = projectService.findPageByprojectGeneral(new Page<Projectgeneral>(request, response), projectGeneral);
+ model.addAttribute("obj", projectGeneral);
+ return "modules/sys/gridselect";
+ * 选择投标单位
+ @RequestMapping(value = "selectworkClientLinkman")
+ public String selectworkClientLinkman(WorkClientLinkman workClientLinkman, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<WorkClientLinkman> page = projectService.findPageByworkClientLinkman(new Page<WorkClientLinkman>(request, response), workClientLinkman);
+ model.addAttribute("obj", workClientLinkman);
+ * 选择评标记录
+ @RequestMapping(value = "selectprojectEvaluationRecord")
+ public String selectprojectEvaluationRecord(ProjectEvaluationRecord projectEvaluationRecord, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectEvaluationRecord> page = projectService.findPageByprojectEvaluationRecord(new Page<ProjectEvaluationRecord>(request, response), projectEvaluationRecord);
+ model.addAttribute("obj", projectEvaluationRecord);
+ * 选择项目组信息
+ @RequestMapping(value = "selectworkprojectgroup")
+ public String selectworkprojectgroup(Workprojectgroup workprojectgroup, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Workprojectgroup> page = projectService.findPageByworkprojectgroup(new Page<Workprojectgroup>(request, response), workprojectgroup);
+ model.addAttribute("obj", workprojectgroup);
@@ -0,0 +1,236 @@
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.Role;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.project.service.ProjectDepositManagementService;
+ * 保证金管理Controller
+@RequestMapping(value = "${adminPath}/project/projectDepositManagement")
+public class ProjectDepositManagementController extends BaseController {
+ private ProjectDepositManagementService projectDepositManagementService;
+ public ProjectDepositManagement get(@RequestParam(required=false) String id) {
+ ProjectDepositManagement entity = null;
+ entity = projectDepositManagementService.get(id);
+ entity = new ProjectDepositManagement();
+ * 保证金管理列表页面
+ @RequiresPermissions("project:projectDepositManagement:list")
+ public String list(ProjectDepositManagement projectDepositManagement, HttpServletRequest request, HttpServletResponse response, Model model) {
+ //projectDepositManagement.setStatus("123");
+ Page<ProjectDepositManagement> page = projectDepositManagementService.findPage(new Page<ProjectDepositManagement>(request, response), projectDepositManagement);
+ ProjectDepositManagement pro = new ProjectDepositManagement();
+ if (page.getList()!=null && page.getList().size()>0){
+ pro = page.getList().get(0);
+ model.addAttribute("userId", pro==null||pro.getCreateBy()==null?"":pro.getCreateBy().getId());
+ Role role = UserUtils.getSelectRole().get(0);
+ model.addAttribute("role", role);
+ return "modules/project/projectDepositManagementList";
+ * 查看,增加,编辑保证金管理表单页面
+ @RequiresPermissions(value={"project:projectDepositManagement:view","project:projectDepositManagement:add","project:projectDepositManagement:edit"},logical=Logical.OR)
+ public String form(ProjectDepositManagement projectDepositManagement, Model model) {
+ if(StringUtils.isNotBlank(projectDepositManagement.getName()) && projectDepositManagement.getName().equals("view")){
+ model.addAttribute("disabled","disabled");
+ model.addAttribute("status","view");
+ }else if(StringUtils.isNotBlank(projectDepositManagement.getName()) && projectDepositManagement.getName().equals("edit")){
+ model.addAttribute("status","edit");
+ model.addAttribute("projectDepositManagement", projectDepositManagement);
+ return "modules/project/projectDepositManagementForm";
+ @RequestMapping(value = "formArrival")
+ public String formArrival(ProjectDepositManagement projectDepositManagement, Model model, RedirectAttributes redirectAttributes) {
+ Map<String, Object> variables = Maps.newHashMap();
+ StringBuffer buffer = DateUtils.getByEnnme(role.getEnname());
+ buffer.append("cw");
+ variables.put("enname",buffer.toString());
+ projectDepositManagementService.startProcessInstanceByKey(projectDepositManagement,variables);
+ addMessage(redirectAttributes, "保证金到账确认成功");
+ return "redirect:"+Global.getAdminPath()+"/project/projectDepositManagement/?repage";
+ * 保存保证金管理
+ @RequiresPermissions(value={"project:projectDepositManagement:add","project:projectDepositManagement:edit"},logical=Logical.OR)
+ public String save(ProjectDepositManagement projectDepositManagement, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectDepositManagement)){
+ return form(projectDepositManagement, model);
+ if(!projectDepositManagement.getIsNewRecord()){//编辑表单保存
+ ProjectDepositManagement t = projectDepositManagementService.get(projectDepositManagement.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectDepositManagement, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectDepositManagementService.save(t);//保存
+ projectDepositManagement.setStatus("1");
+ projectDepositManagementService.save(projectDepositManagement);//保存
+ addMessage(redirectAttributes, "保存保证金管理成功");
+ * 删除保证金管理
+ @RequiresPermissions("project:projectDepositManagement:del")
+ public String delete(ProjectDepositManagement projectDepositManagement, RedirectAttributes redirectAttributes) {
+ projectDepositManagementService.delete(projectDepositManagement);
+ addMessage(redirectAttributes, "删除保证金管理成功");
+ * 批量删除保证金管理
+ projectDepositManagementService.delete(projectDepositManagementService.get(id));
+ @RequiresPermissions("project:projectDepositManagement:export")
+ public String exportFile(ProjectDepositManagement projectDepositManagement, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "保证金管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectDepositManagement> page = projectDepositManagementService.findPage(new Page<ProjectDepositManagement>(request, response, -1), projectDepositManagement);
+ new ExportExcel("保证金管理", ProjectDepositManagement.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出保证金管理记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("project:projectDepositManagement:import")
+ List<ProjectDepositManagement> list = ei.getDataList(ProjectDepositManagement.class);
+ for (ProjectDepositManagement projectDepositManagement : list){
+ projectDepositManagementService.save(projectDepositManagement);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条保证金管理记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条保证金管理记录"+failureMsg);
+ addMessage(redirectAttributes, "导入保证金管理失败!失败信息:"+e.getMessage());
+ * 下载导入保证金管理数据模板
+ String fileName = "保证金管理数据导入模板.xlsx";
+ List<ProjectDepositManagement> list = Lists.newArrayList();
+ new ExportExcel("保证金管理数据", ProjectDepositManagement.class, 1).setDataList(list).write(response, fileName).dispose();
@@ -0,0 +1,194 @@
+@RequestMapping(value = "${adminPath}/project/projectDepositReturn")
+public class ProjectDepositReturnController extends BaseController {
+ @RequiresPermissions("project:projectDepositReturn:list")
+ return "modules/project/projectDepositReturnList";
+ @RequiresPermissions(value={"project:projectDepositReturn:view","project:projectDepositReturn:add","project:projectDepositReturn:edit"},logical=Logical.OR)
+ return "modules/project/projectDepositReturnForm";
+ @RequiresPermissions(value={"project:projectDepositReturn:add","project:projectDepositReturn:edit"},logical=Logical.OR)
+ return "redirect:"+Global.getAdminPath()+"/project/projectDepositReturn/?repage";
+ @RequiresPermissions("project:projectDepositReturn:del")
+ @RequiresPermissions("project:projectDepositReturn:export")
+ @RequiresPermissions("project:projectDepositReturn:import")
@@ -0,0 +1,196 @@
+import com.jeeplus.modules.project.service.ProjectEvaluationRecordService;
+ * 招标代理评价记录表Controller
+@RequestMapping(value = "${adminPath}/project/projectEvaluationRecord")
+public class ProjectEvaluationRecordController extends BaseController {
+ private ProjectEvaluationRecordService projectEvaluationRecordService;
+ public ProjectEvaluationRecord get(@RequestParam(required=false) String id) {
+ ProjectEvaluationRecord entity = null;
+ entity = projectEvaluationRecordService.get(id);
+ entity = new ProjectEvaluationRecord();
+ * 招标代理评价记录表列表页面
+ @RequiresPermissions("project:projectEvaluationRecord:list")
+ public String list(ProjectEvaluationRecord projectEvaluationRecord, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectEvaluationRecord> page = projectEvaluationRecordService.findPage(new Page<ProjectEvaluationRecord>(request, response), projectEvaluationRecord);
+ return "modules/project/projectEvaluationRecordList";
+ * 查看,增加,编辑招标代理评价记录表表单页面
+ @RequiresPermissions(value={"project:projectEvaluationRecord:view","project:projectEvaluationRecord:add","project:projectEvaluationRecord:edit"},logical=Logical.OR)
+ public String form(ProjectEvaluationRecord projectEvaluationRecord, Model model) {
+ model.addAttribute("projectEvaluationRecord", projectEvaluationRecord);
+ return "modules/project/projectEvaluationRecordForm";
+ * 保存招标代理评价记录表
+ @RequiresPermissions(value={"project:projectEvaluationRecord:add","project:projectEvaluationRecord:edit"},logical=Logical.OR)
+ public String save(ProjectEvaluationRecord projectEvaluationRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectEvaluationRecord)){
+ return form(projectEvaluationRecord, model);
+ if(!projectEvaluationRecord.getIsNewRecord()){//编辑表单保存
+ ProjectEvaluationRecord t = projectEvaluationRecordService.get(projectEvaluationRecord.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectEvaluationRecord, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectEvaluationRecordService.save(t);//保存
+ projectEvaluationRecordService.save(projectEvaluationRecord);//保存
+ addMessage(redirectAttributes, "保存招标代理评价记录表成功");
+ return "redirect:"+Global.getAdminPath()+"/project/projectEvaluationRecord/?repage";
+ * 删除招标代理评价记录表
+ @RequiresPermissions("project:projectEvaluationRecord:del")
+ public String delete(ProjectEvaluationRecord projectEvaluationRecord, RedirectAttributes redirectAttributes) {
+ projectEvaluationRecordService.delete(projectEvaluationRecord);
+ addMessage(redirectAttributes, "删除招标代理评价记录表成功");
+ * 批量删除招标代理评价记录表
+ projectEvaluationRecordService.delete(projectEvaluationRecordService.get(id));
+ @RequiresPermissions("project:projectEvaluationRecord:export")
+ public String exportFile(ProjectEvaluationRecord projectEvaluationRecord, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "招标代理评价记录表"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectEvaluationRecord> page = projectEvaluationRecordService.findPage(new Page<ProjectEvaluationRecord>(request, response, -1), projectEvaluationRecord);
+ new ExportExcel("招标代理评价记录表", ProjectEvaluationRecord.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出招标代理评价记录表记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("project:projectEvaluationRecord:import")
+ List<ProjectEvaluationRecord> list = ei.getDataList(ProjectEvaluationRecord.class);
+ for (ProjectEvaluationRecord projectEvaluationRecord : list){
+ projectEvaluationRecordService.save(projectEvaluationRecord);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条招标代理评价记录表记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条招标代理评价记录表记录"+failureMsg);
+ addMessage(redirectAttributes, "导入招标代理评价记录表失败!失败信息:"+e.getMessage());
+ * 下载导入招标代理评价记录表数据模板
+ String fileName = "招标代理评价记录表数据导入模板.xlsx";
+ List<ProjectEvaluationRecord> list = Lists.newArrayList();
+ new ExportExcel("招标代理评价记录表数据", ProjectEvaluationRecord.class, 1).setDataList(list).write(response, fileName).dispose();
@@ -0,0 +1,197 @@
+import com.jeeplus.modules.project.service.ProjectgeneralService;
+ * 项目概况Controller
+@RequestMapping(value = "${adminPath}/project/projectgeneral")
+public class ProjectgeneralController extends BaseController {
+ private ProjectgeneralService projectgeneralService;
+ public Projectgeneral get(@RequestParam(required=false) String id) {
+ Projectgeneral entity = null;
+ entity = projectgeneralService.get(id);
+ entity = new Projectgeneral();
+ * 项目概况列表页面
+ @RequiresPermissions("project:projectgeneral:list")
+ public String list(Projectgeneral projectgeneral, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Projectgeneral> page = projectgeneralService.findPage(new Page<Projectgeneral>(request, response), projectgeneral);
+ return "modules/project/projectgeneralList";
+ * 查看,增加,编辑项目概况表单页面
+ @RequiresPermissions(value={"project:projectgeneral:view","project:projectgeneral:add","project:projectgeneral:edit"},logical=Logical.OR)
+ public String form(Projectgeneral projectgeneral, Model model) {
+ model.addAttribute("projectgeneral", projectgeneral);
+ return "modules/project/projectgeneralForm";
+ * 保存项目概况
+ @RequiresPermissions(value={"project:projectgeneral:add","project:projectgeneral:edit"},logical=Logical.OR)
+ public String save(Projectgeneral projectgeneral, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectgeneral)){
+ return form(projectgeneral, model);
+ if(!projectgeneral.getIsNewRecord()){//编辑表单保存
+ Projectgeneral t = projectgeneralService.get(projectgeneral.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectgeneral, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectgeneralService.save(t);//保存
+ projectgeneralService.save(projectgeneral);//保存
+ addMessage(redirectAttributes, "保存项目概况成功");
+ return "redirect:"+Global.getAdminPath()+"/project/projectgeneral/?repage";
+ * 删除项目概况
+ @RequiresPermissions("project:projectgeneral:del")
+ public String delete(Projectgeneral projectgeneral, RedirectAttributes redirectAttributes) {
+ projectgeneralService.delete(projectgeneral);
+ addMessage(redirectAttributes, "删除项目概况成功");
+ * 批量删除项目概况
+ projectgeneralService.delete(projectgeneralService.get(id));
+ @RequiresPermissions("project:projectgeneral:export")
+ public String exportFile(Projectgeneral projectgeneral, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "项目概况"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<Projectgeneral> page = projectgeneralService.findPage(new Page<Projectgeneral>(request, response, -1), projectgeneral);
+ new ExportExcel("项目概况", Projectgeneral.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出项目概况记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("project:projectgeneral:import")
+ List<Projectgeneral> list = ei.getDataList(Projectgeneral.class);
+ for (Projectgeneral projectgeneral : list){
+ projectgeneralService.save(projectgeneral);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条项目概况记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条项目概况记录"+failureMsg);
+ addMessage(redirectAttributes, "导入项目概况失败!失败信息:"+e.getMessage());
+ * 下载导入项目概况数据模板
+ public String importFileTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "项目概况数据导入模板.xlsx";
+ List<Projectgeneral> list = Lists.newArrayList();
+ new ExportExcel("项目概况数据", Projectgeneral.class, 1).setDataList(list).write(response, fileName,request.getHeader("USER-AGENT")).dispose();
+import com.jeeplus.modules.project.service.WorkprojectgroupService;
+ * 项目组信息表Controller
+@RequestMapping(value = "${adminPath}/project/workprojectgroup")
+public class WorkprojectgroupController extends BaseController {
+ private WorkprojectgroupService workprojectgroupService;
+ public Workprojectgroup get(@RequestParam(required=false) String id) {
+ Workprojectgroup entity = null;
+ entity = workprojectgroupService.get(id);
+ entity = new Workprojectgroup();
+ * 项目组信息表列表页面
+ @RequiresPermissions("project:workprojectgroup:list")
+ public String list(Workprojectgroup workprojectgroup, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Workprojectgroup> page = workprojectgroupService.findPage(new Page<Workprojectgroup>(request, response), workprojectgroup);
+ return "modules/project/workprojectgroupList";
+ * 查看,增加,编辑项目组信息表表单页面
+ @RequiresPermissions(value={"project:workprojectgroup:view","project:workprojectgroup:add","project:workprojectgroup:edit"},logical=Logical.OR)
+ public String form(Workprojectgroup workprojectgroup, Model model) {
+ model.addAttribute("workprojectgroup", workprojectgroup);
+ return "modules/project/workprojectgroupForm";
+ * 保存项目组信息表
+ @RequiresPermissions(value={"project:workprojectgroup:add","project:workprojectgroup:edit"},logical=Logical.OR)
+ public String save(Workprojectgroup workprojectgroup, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, workprojectgroup)){
+ return form(workprojectgroup, model);
+ if(!workprojectgroup.getIsNewRecord()){//编辑表单保存
+ Workprojectgroup t = workprojectgroupService.get(workprojectgroup.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(workprojectgroup, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ workprojectgroupService.save(t);//保存
+ workprojectgroupService.save(workprojectgroup);//保存
+ addMessage(redirectAttributes, "保存项目组信息表成功");
+ return "redirect:"+Global.getAdminPath()+"/project/workprojectgroup/?repage";
+ * 删除项目组信息表
+ @RequiresPermissions("project:workprojectgroup:del")
+ public String delete(Workprojectgroup workprojectgroup, RedirectAttributes redirectAttributes) {
+ workprojectgroupService.delete(workprojectgroup);
+ addMessage(redirectAttributes, "删除项目组信息表成功");
+ * 批量删除项目组信息表
+ workprojectgroupService.delete(workprojectgroupService.get(id));
+ @RequiresPermissions("project:workprojectgroup:export")
+ public String exportFile(Workprojectgroup workprojectgroup, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "项目组信息表"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<Workprojectgroup> page = workprojectgroupService.findPage(new Page<Workprojectgroup>(request, response, -1), workprojectgroup);
+ new ExportExcel("项目组信息表", Workprojectgroup.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出项目组信息表记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("project:workprojectgroup:import")
+ List<Workprojectgroup> list = ei.getDataList(Workprojectgroup.class);
+ for (Workprojectgroup workprojectgroup : list){
+ workprojectgroupService.save(workprojectgroup);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条项目组信息表记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条项目组信息表记录"+failureMsg);
+ addMessage(redirectAttributes, "导入项目组信息表失败!失败信息:"+e.getMessage());
+ * 下载导入项目组信息表数据模板
+ String fileName = "项目组信息表数据导入模板.xlsx";
+ List<Workprojectgroup> list = Lists.newArrayList();
+ new ExportExcel("项目组信息表数据", Workprojectgroup.class, 1).setDataList(list).write(response, fileName).dispose();
@@ -0,0 +1,26 @@
+package com.jeeplus.modules.projectcontentinfo.dao;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import org.apache.ibatis.annotations.Param;
+ * 依据性资料DAO接口
+ * @author 杨帆
+ * @version 2018-06-05
+public interface ProjectBasedDataDao extends CrudDao<ProjectBasedData> {
+ ProjectBasedData getNumber(ProjectBasedData projectBasedData);
+ List<ProjectBasedData> findReportBased(@Param("reportId") String reportId, @Param("type") String type);
+ List<ProjectBasedData> queryListByContentId(String contentId);
@@ -0,0 +1,24 @@
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentDataRelevance;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+ * 工作内容管理DAO接口
+ * @version 2018-06-04
+public interface ProjectContentChangeDao extends CrudDao<Projectcontentinfo> {
+ List<Projectcontentinfo> getByInfoId(@Param("infoId")String infoId);
+ int deleteChange(Projectcontentinfo projectcontentinfo);
+ int saveProjectContentDataRelevanceInfo(ProjectContentDataRelevance projectContentDataRelevance);
@@ -0,0 +1,35 @@
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+ * 工作内容详情DAO接口
+public interface ProjectContentDataDao extends CrudDao<ProjectContentData> {
+ Integer querySerialNum(ProjectContentData projectContentData);
+ int deleteBasedData(@Param("contentId") String contentId, @Param("basedId") String basedId);
+ void deleteReportDataInfo(@Param("contentId") String contentId, @Param("reportId") String reportId,@Param("type") String type);
+ void saveReportContent(@Param("contentId") String contentId, @Param("reportId") String reportId,@Param("type") String type);
+ void deleteReportDataMenu(@Param("linkId") String linkId,@Param("projectId") String projectId,@Param("reportId") String reportId);
+ void batchInsertBaseData(HashMap<String, Object> map);
+ void deleteBasedByContentId(String contentId);
+ List<ProjectContentData> findReportContent(@Param("reportId") String reportId,@Param("type") String type);
+ Integer countByBaseId(String basedId);
+ String findByLinkId(@Param("contentId") String contentId,@Param("projectId") String projectId);
@@ -0,0 +1,69 @@
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+ * 报告详情DAO接口
+public interface ProjectReportChangeDao extends CrudDao<ProjectReportData> {
+ ProjectReportData getNumber(ProjectReportData projectReportData);
+ public int changeProjectReportData(ProjectReportData projectReportData);
+ public int changeBerforProjectReportData(ProjectReportData projectReportData);
+ ProjectReportData findByBefore(ProjectReportData projectReportData);
+ * 修改作废信息
+ * @param projectReportData
+ public int saveInvalid(ProjectReportData projectReportData);
+ public int updateProcessInstanceId(ProjectReportData projectReportData);
+ * 根据流程实例ID获取WorkReimbursement
+ public ProjectReportData getByProcessInstanceId(String processInstanceId);
+ public int updateInvalidProcessInstanceId(ProjectReportData projectReportData);
+ public void deleteReportDataInfo(@Param("reportId") String reportId);
+ public void deleteReportDataBased(@Param("reportId") String reportId);
+ public void deleteContentChange(@Param("infoId") String infoId);
+ public ProjectReportData getByInvalidProcessInstanceId(String processInstanceId);
+ public void deleteTree(ProjectReportData projectReportData);
+ void reportNumber(@Param("reportId") String reportId,@Param("number") String number);
@@ -0,0 +1,22 @@
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportDataCompany;
+public interface ProjectReportDataCompanyDao extends CrudDao<ProjectReportDataCompany> {
@@ -0,0 +1,74 @@
+public interface ProjectReportDataDao extends CrudDao<ProjectReportData> {
+ ProjectReportData getNoInvalid(@Param("id") String id);
+ int updateFileStatus(ProjectReportData projectReportData);
+ List<ProjectReportData> findInvalidList(ProjectReportData projectReportData);
+ List<ProjectReportData> findInfoList(ProjectReportData projectReportData);
+ List<ProjectReportData> findInfoListByStatus(ProjectReportData projectReportData);
+ public void deleteReportDataInfo( @Param("reportId") String reportId);
+ public void deleteReportDataBased( @Param("reportId") String reportId);
+ public String getChangeId(@Param("id") String id);
+ * @param invalidProcessInstanceId
+ public ProjectReportData getByInvalidProcessInstanceId(String invalidProcessInstanceId);
+ void reportNumber(@Param("reportId") String reportId,@Param("number") String number,@Param("url") String url);
+ int updateUpId(@Param("id")String id,@Param("upId")String upId);
+ List<ProjectReportData> findByProjectId(String projectId);
+ ProjectReportData findByNum(String number);
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportDataInfo;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportDataOffice;
+public interface ProjectReportDataInfoDao extends CrudDao<ProjectReportDataInfo> {
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportDataMonth;
+public interface ProjectReportDataMonthDao extends CrudDao<ProjectReportDataMonth> {
+ List<ProjectReportDataMonth> findByCompanyList(ProjectReportDataMonth projectReportDataMonth);
+ List<ProjectReportDataMonth> findByOfficeList(ProjectReportDataMonth projectReportDataMonth);
+import com.jeeplus.modules.workreimbursementcount.entity.WorkInvoiceOffice;
+public interface ProjectReportDataOfficeDao extends CrudDao<ProjectReportDataOffice> {
+ ProjectReportDataOffice findOfficeListSum(ProjectReportDataOffice workInvoiceOffice);
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
+ * 报告归档DAO接口
+ * @version 2018-06-22
+public interface ProjectReportRecordDao extends CrudDao<ProjectReportRecord> {
+ public String getNumber(@Param("reportId") String reportId);
+ public int updateProcessInstanceId(ProjectReportRecord workReimbursement);
+ public ProjectReportRecord getByProcessInstanceId(String processInstanceId);
@@ -0,0 +1,42 @@
+public interface ProjectcontentinfoDao extends CrudDao<Projectcontentinfo> {
+ Projectcontentinfo findByType(Projectcontentinfo projectcontentinfo);
+ Projectcontentinfo getByInfoId(@Param("infoId")String infoId);
+ Projectcontentinfo findByInfoId(Projectcontentinfo projectcontentinfo);
+ List<Projectcontentinfo> findListByProject(Projectcontentinfo projectcontentinfo);
+ List<Projectcontentinfo> findByParentIds(@Param("projectId")String projectId,@Param("parentId")String parentId);
+ List<Projectcontentinfo> findListByProjectAndType(Projectcontentinfo projectcontentinfo);
+ List<Projectcontentinfo> findListByProjectAndTypes(Projectcontentinfo projectcontentinfo);
+ List<Projectcontentinfo> findListByProjectAndDictType(Projectcontentinfo projectcontentinfo);
+ List<Projectcontentinfo> findListByProjectType(Projectcontentinfo projectcontentinfo);
+ void deleteInfoId(Projectcontentinfo projectcontentinfo);
+ Integer queryMaxSort(Projectcontentinfo projectcontentinfo);
+ List<Projectcontentinfo> findListByParentSelective(Projectcontentinfo projectcontentinfo);
+ void deleteByParentAndLinkId(Projectcontentinfo projectcontentinfo);
+ void deleteInfosByParent(String parentIds);
+ void updateByLinkId(@Param("linkId")String linkId,@Param("dataName")String dataName);
+ List<Projectcontentinfo> findType(@Param("projectId")String projectId,@Param("type")String type);
@@ -0,0 +1,169 @@
+package com.jeeplus.modules.projectcontentinfo.entity;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.sys.entity.Workattachment;
+ * 依据性资料Entity
+public class ProjectBasedData extends DataEntity<ProjectBasedData> {
+ private String companyId; // 公司id
+ private String officeId; // 部门id
+ private String name; // 资料名称
+ private String number; // 资料编号
+ private String type; // 资料类别
+ private String provider; // 资料提供者
+ private Date provideDate; // 提供日期
+ private ProjectRecords project; // 项目id
+ private String uploadEnvironment; // 上传环节
+ private User uploadUser; // 上传人
+ @JsonFormat(pattern="yyyy-MM-dd")
+ private Date uploadDate; // 上传日期
+ private List<Workattachment> workAttachments;
+ private Date startDate;
+ private Date endDate;
+ private String typeLabel;
+ public ProjectBasedData() {
+ public ProjectBasedData(String id){
+ public String getCompanyId() {
+ return companyId;
+ public void setCompanyId(String companyId) {
+ this.companyId = companyId;
+ public String getOfficeId() {
+ return officeId;
+ public void setOfficeId(String officeId) {
+ this.officeId = officeId;
+ public String getType() {
+ return type;
+ public void setType(String type) {
+ this.type = type;
+ public String getProvider() {
+ return provider;
+ public void setProvider(String provider) {
+ this.provider = provider;
+ public ProjectRecords getProject() {
+ public void setProject(ProjectRecords project) {
+ public String getUploadEnvironment() {
+ return uploadEnvironment;
+ public void setUploadEnvironment(String uploadEnvironment) {
+ this.uploadEnvironment = uploadEnvironment;
+ public User getUploadUser() {
+ return uploadUser;
+ public void setUploadUser(User uploadUser) {
+ this.uploadUser = uploadUser;
+ public Date getProvideDate() {
+ return provideDate;
+ public void setProvideDate(Date provideDate) {
+ this.provideDate = provideDate;
+ public Date getUploadDate() {
+ return uploadDate;
+ public void setUploadDate(Date uploadDate) {
+ this.uploadDate = uploadDate;
+ public List<Workattachment> getWorkAttachments() {
+ return workAttachments;
+ public void setWorkAttachments(List<Workattachment> workAttachments) {
+ this.workAttachments = workAttachments;
+ public Date getStartDate() {
+ return startDate;
+ public void setStartDate(Date startDate) {
+ this.startDate = startDate;
+ public Date getEndDate() {
+ return endDate;
+ public void setEndDate(Date endDate) {
+ this.endDate = endDate;
+ public String getTypeLabel() {
+ return typeLabel;
+ public void setTypeLabel(String typeLabel) {
+ this.typeLabel = typeLabel;
@@ -0,0 +1,192 @@
+import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
+ * 工作内容详情Entity
+public class ProjectContentData extends DataEntity<ProjectContentData> {
+ private String name; // 工作内容名称
+ private String number; // 工作内容编号
+ private String type; // 工作内容类型
+ private User master; // 负责人
+ private String contentDetailsId; // 内容详情id
+ private String contentDetail;
+ private List detailObject;
+ private Integer parentType;
+ private String extId;
+ private List<ProjectControlTable> projectControlTableList;
+ private List<ProjectBasedData> projectBasedDataList;
+ public List getDetailObject() {
+ return detailObject;
+ public void setDetailObject(List detailObject) {
+ this.detailObject = detailObject;
+ public ProjectContentData() {
+ public ProjectContentData(String id){
+ @ExcelField(title="公司id", align=2, sort=7)
+ @ExcelField(title="部门id", align=2, sort=8)
+ @ExcelField(title="工作内容名称", align=2, sort=10)
+ @ExcelField(title="工作内容编号", align=2, sort=11)
+ @ExcelField(title="工作内容类型", align=2, sort=12)
+ public User getMaster() {
+ return master;
+ public void setMaster(User master) {
+ this.master = master;
+ @ExcelField(title="内容详情id", align=2, sort=14)
+ public String getContentDetailsId() {
+ return contentDetailsId;
+ public void setContentDetailsId(String contentDetailsId) {
+ this.contentDetailsId = contentDetailsId;
+ public String getContentDetail() {
+ return contentDetail;
+ public void setContentDetail(String contentDetail) {
+ this.contentDetail = contentDetail;
+ public void setParentType(Integer parentType) {
+ this.parentType = parentType;
+ public Integer getParentType() {
+ return parentType;
+ public String getExtId() {
+ return extId;
+ public void setExtId(String extId) {
+ this.extId = extId;
+ public List<ProjectControlTable> getProjectControlTableList() {
+ return projectControlTableList;
+ public void setProjectControlTableList(List<ProjectControlTable> projectControlTableList) {
+ this.projectControlTableList = projectControlTableList;
+ public List<ProjectBasedData> getProjectBasedDataList() {
+ return projectBasedDataList;
+ public void setProjectBasedDataList(List<ProjectBasedData> projectBasedDataList) {
+ this.projectBasedDataList = projectBasedDataList;
@@ -0,0 +1,27 @@
+ * 合同id、动态合同id关联表
+ * @author 徐滕
+ * @version 2020-03-25
+public class ProjectContentDataRelevance {
+ private String projectContentId;
+ private String projectContentDynamicId;
+ public String getProjectContentId() {
+ return projectContentId;
+ public void setProjectContentId(String projectContentId) {
+ this.projectContentId = projectContentId;
+ public String getProjectContentDynamicId() {
+ return projectContentDynamicId;
+ public void setProjectContentDynamicId(String projectContentDynamicId) {
+ this.projectContentDynamicId = projectContentDynamicId;
@@ -0,0 +1,59 @@
+import org.apache.poi.ss.formula.functions.T;
+import java.math.BigDecimal;
+ * 项目合同数据修改展示信息表
+public class ProjectContractContentAlterData extends DataEntity<T> {
+ private BigDecimal reviewAmt;
+ private BigDecimal setAmt;
+ private String contentId;
+ private String typeName;
+ public BigDecimal getReviewAmt() {
+ return reviewAmt;
+ public void setReviewAmt(BigDecimal reviewAmt) {
+ this.reviewAmt = reviewAmt;
+ public BigDecimal getSetAmt() {
+ return setAmt;
+ public void setSetAmt(BigDecimal setAmt) {
+ this.setAmt = setAmt;
+ public String getContentId() {
+ return contentId;
+ public void setContentId(String contentId) {
+ this.contentId = contentId;
+ public String getTypeName() {
+ return typeName;
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
@@ -0,0 +1,564 @@
+import com.jeeplus.modules.workcontent.entity.WorkContentType;
+import com.jeeplus.modules.workcontent.web.WorkContentTypeController;
+import com.jeeplus.modules.workreview.entity.WorkReviewAudit;
+import com.jeeplus.modules.workreview.entity.WorkReviewStandard;
+ * 报告详情Entity
+public class ProjectReportData extends ActEntity<ProjectReportData> {
+ private String officeName; // 部门id
+ private String name; // 报告名称
+ private String number; // 报告编号
+ private String achievementType; // 成功类型
+ private String reviewStandard; // 复核标准
+ private User signCostOne; // 签字造价师一
+ private User signCostTwo; // 签字造价师二
+ private Date reportDate; // 报告日期
+ private String fileStatus; // 归档状态
+ private String status; // 报告状态 1待归档 2已归档
+ private String invalidStatus; // 报告作废状态
+ private String processInstanceId; // 流程实例编号
+ private String invalidProcessInstanceId; // 流程实例编号
+ private String home;
+ private List<ProjectContentData> projectContentDataList;
+ private List<WorkReviewAudit> projectReviewList;
+ private String reportId;
+ private String numberPath;
+ public String getNumberPath() {
+ return numberPath;
+ public void setNumberPath(String numberPath) {
+ this.numberPath = numberPath;
+ private ProjectReportData beforeEntity;
+ private Integer beforeCount;
+ private String clientName;
+ private String contractNum;
+ private String contractName;
+ private String projectMaster;
+ private String projectMasterId;
+ private Date createStartDate;
+ private Date createEndDate;
+ private Date createDate;
+ private String projectName;
+ private String projectNum;
+ private String signCostOneName;
+ private String signCostTwoName;
+ private String masterName;
+ private String upId;
+ private Double reviewFee; //送审价
+ private Double approvalFee; //审定价
+ private Double contractFee; //合同价
+ private Double verifyFee; //核增核减额
+ private Double verifyRate; //核增核减率
+ private Double consultFee; //咨询标的额
+ private Double buildingFee; //土建额
+ private Double installFee; //安装额
+ public String getUpId() {
+ return upId;
+ public void setUpId(String upId) {
+ this.upId = upId;
+ public String getReportType() {
+ return reportType;
+ public void setReportType(String reportType) {
+ this.reportType = reportType;
+ private String reportType; // 签章类型 电子章/实体章
+ public ProjectReportData() {
+ public ProjectReportData(String id){
+ @Override
+ public void setCreateDate(Date createDate) {
+ this.createDate = createDate;
+ @ExcelField(title="报告编号", align=2, sort=1)
+ @ExcelField(title="报告名称", align=2, sort=2)
+ @ExcelField(title="工作内容类型", align=2, sort=3)
+ return WorkContentTypeController.getContentTypeName(this.type,"");
+ @ExcelField(title="成果类型", align=2, sort=4,mainDictType = "achievement_type")
+ public String getAchievementType() {
+ return achievementType;
+ public User getSignCostOne() {
+ return signCostOne;
+ @ExcelField(title="签字造价师一", align=2, sort=5)
+ public String getSignCostOneName() {
+ return this.signCostOne.getName();
+ @ExcelField(title="签字造价师二", align=2, sort=6)
+ public String getSignCostTwoName() {
+ return this.signCostTwo.getName();
+ public User getSignCostTwo() {
+ return signCostTwo;
+ @ExcelField(title="复核标准", align=2, sort=7,dictType = "reviewStandard")
+ public String getReviewStandard() {
+ return reviewStandard;
+ @ExcelField(title="报告状态", align=2, sort=8,dictType = "audit_state")
+ @ExcelField(title="报告日期", align=2, sort=9)
+ public Date getReportDate() {
+ return reportDate;
+ @ExcelField(title="归档状态", align=2, sort=10,dictType = "record_state")
+ public String getFileStatus() {
+ return fileStatus;
+ @ExcelField(title="负责人", align=2, sort=11)
+ public String getMasterName() {
+ return this.master.getName();
+ @ExcelField(title="所属部门", align=2, sort=12)
+ public String getOfficeName() {
+ return officeName;
+ @ExcelField(title="创建时间", align=2, sort=13)
+ public Date getCreateDate() {
+ return createDate;
+ @ExcelField(title="所属项目", align=2, sort=14)
+ return this.project.getProjectName();
+ @ExcelField(title="项目负责人", align=2, sort=15)
+ public String getProjectMaster() {
+ return projectMaster;
+ @ExcelField(title="合同编号", align=2, sort=16)
+ public String getContractNum() {
+ return contractNum;
+ @ExcelField(title="主委托方", align=2, sort=17)
+ public void setAchievementType(String achievementType) {
+ this.achievementType = achievementType;
+ public void setReviewStandard(String reviewStandard) {
+ this.reviewStandard = reviewStandard;
+ public void setSignCostOne(User signCostOne) {
+ this.signCostOne = signCostOne;
+ public void setSignCostTwo(User signCostTwo) {
+ this.signCostTwo = signCostTwo;
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ public void setFileStatus(String fileStatus) {
+ this.fileStatus = fileStatus;
+ public String getInvalidStatus() {
+ return invalidStatus;
+ public void setInvalidStatus(String invalidStatus) {
+ this.invalidStatus = invalidStatus;
+ public String getHome() {
+ return home;
+ public void setHome(String home) {
+ this.home = home;
+ public List<ProjectContentData> getProjectContentDataList() {
+ return projectContentDataList;
+ public void setProjectContentDataList(List<ProjectContentData> projectContentDataList) {
+ this.projectContentDataList = projectContentDataList;
+ public String getReportId() {
+ return reportId;
+ public void setReportId(String reportId) {
+ this.reportId = reportId;
+ public ProjectReportData getBeforeEntity() {
+ return beforeEntity;
+ public void setBeforeEntity(ProjectReportData beforeEntity) {
+ this.beforeEntity = beforeEntity;
+ public Integer getBeforeCount() {
+ return beforeCount;
+ public void setBeforeCount(Integer beforeCount) {
+ this.beforeCount = beforeCount;
+ public String getInvalidProcessInstanceId() {
+ return invalidProcessInstanceId;
+ public void setInvalidProcessInstanceId(String invalidProcessInstanceId) {
+ this.invalidProcessInstanceId = invalidProcessInstanceId;
+ public void setOfficeName(String officeName) {
+ this.officeName = officeName;
+ public void setContractNum(String contractNum) {
+ this.contractNum = contractNum;
+ public void setProjectMaster(String projectMaster) {
+ this.projectMaster = projectMaster;
+ public Date getCreateStartDate() {
+ return createStartDate;
+ public void setCreateStartDate(Date createStartDate) {
+ this.createStartDate = createStartDate;
+ public Date getCreateEndDate() {
+ return createEndDate;
+ public void setCreateEndDate(Date createEndDate) {
+ this.createEndDate = createEndDate;
+ public String getProjectMasterId() {
+ return projectMasterId;
+ public void setProjectMasterId(String projectMasterId) {
+ this.projectMasterId = projectMasterId;
+ public String getContractName() {
+ return contractName;
+ public String getProjectNum() {
+ return this.project.getProjectId();
+ public List<WorkReviewAudit> getProjectReviewList() {
+ return projectReviewList;
+ public void setProjectReviewList(List<WorkReviewAudit> projectReviewList) {
+ this.projectReviewList = projectReviewList;
+ public Double getReviewFee() {
+ return reviewFee;
+ public void setReviewFee(Double reviewFee) {
+ this.reviewFee = reviewFee;
+ public Double getApprovalFee() {
+ return approvalFee;
+ public void setApprovalFee(Double approvalFee) {
+ this.approvalFee = approvalFee;
+ public Double getContractFee() {
+ return contractFee;
+ public void setContractFee(Double contractFee) {
+ this.contractFee = contractFee;
+ public Double getVerifyFee() {
+ return verifyFee;
+ public void setVerifyFee(Double verifyFee) {
+ this.verifyFee = verifyFee;
+ public Double getVerifyRate() {
+ return verifyRate;
+ public void setVerifyRate(Double verifyRate) {
+ this.verifyRate = verifyRate;
+ public Double getConsultFee() {
+ return consultFee;
+ public void setConsultFee(Double consultFee) {
+ this.consultFee = consultFee;
+ public Double getBuildingFee() {
+ return buildingFee;
+ public void setBuildingFee(Double buildingFee) {
+ this.buildingFee = buildingFee;
+ public Double getInstallFee() {
+ return installFee;
+ public void setInstallFee(Double installFee) {
+ this.installFee = installFee;
@@ -0,0 +1,113 @@
+public class ProjectReportDataCompany extends ActEntity<ProjectReportDataCompany> {
+ private int type;//公司类型
+ private String name; //分公司
+ private int reportCount;// 报告数量
+ private String date;
+ private Date reportDate;
+ private String check;
+ private String sign;
+ public String getSign() {
+ return sign;
+ public void setSign(String sign) {
+ this.sign = sign;
+ @ExcelField(title = "分公司", align = 2, sort = 1)
+ @ExcelField(title = "报告数量", align = 2, sort = 2)
+ public int getReportCount() {
+ return reportCount;
+ public void setReportCount(int reportCount) {
+ this.reportCount = reportCount;
+ public int getType() {
+ public void setType(int type) {
+ public String getDate() {
+ return date;
+ public void setDate(String date) {
+ this.date = date;
+ public String getCheck() {
+ return check;
+ public void setCheck(String check) {
+ this.check = check;
@@ -0,0 +1,167 @@
+public class ProjectReportDataInfo extends ActEntity<ProjectReportDataInfo> {
+ @ExcelField(title = "报告名称", align = 2, sort = 2)
+ @ExcelField(title = "报告编号", align = 2, sort = 1)
+ @ExcelField(title="报告日期", align=2, sort=5)
+ @ExcelField(title="签字造价师1", align=2, sort=6)
+ @ExcelField(title="签字造价师2", align=2, sort=7)
+ @ExcelField(title="负责人", align=2, sort=8)
@@ -0,0 +1,94 @@
+public class ProjectReportDataMonth extends ActEntity<ProjectReportDataMonth> {
+ private String type;//公司/部门
+ private String name; //月份
+ @ExcelField(title = "月份", align = 2, sort = 1)
+public class ProjectReportDataOffice extends ActEntity<ProjectReportDataOffice> {
+ private String type;//部门类型
+ private String name; //部门
+ @ExcelField(title = "部门", align = 2, sort = 1)
@@ -0,0 +1,296 @@
+ * 报告归档Entity
+public class ProjectReportRecord extends ActEntity<ProjectReportRecord> {
+ private ProjectReportData report; // 报告id
+ private String recordNum; // 归档申请编号
+ private String fileNum; // 档案号
+ private String name; // 档案名称
+ private Date recordDate; // 归档日期
+ private String status; // 归档申请状态
+ private String processInstanceId; // 流程号
+ private Date startDate; //开始日期
+ private Date endDate; //结束日期
+ private int numberCount;
+ private String view;
+ public ProjectReportRecord() {
+ public ProjectReportRecord(String id){
+ private List<Workattachment> workAttachments = Lists.newArrayList();
+ @ExcelField(title="公司id", align=2, sort=8)
+ @ExcelField(title="部门id", align=2, sort=9)
+ @ExcelField(title="归档申请编号", align=2, sort=10)
+ public String getRecordNum() {
+ return recordNum;
+ public void setRecordNum(String recordNum) {
+ this.recordNum = recordNum;
+ @ExcelField(title="档案号", align=2, sort=11)
+ public String getFileNum() {
+ return fileNum;
+ public void setFileNum(String fileNum) {
+ this.fileNum = fileNum;
+ @ExcelField(title="档案名称", align=2, sort=12)
+ @ExcelField(title="归档日期", align=2, sort=13)
+ public Date getRecordDate() {
+ return recordDate;
+ public void setRecordDate(Date recordDate) {
+ this.recordDate = recordDate;
+ @ExcelField(title="归档状态", align=2, sort=14)
+ @ExcelField(title="流程号", align=2, sort=15)
+ public ProjectReportData getReport() {
+ return report;
+ public void setReport(ProjectReportData report) {
+ this.report = report;
+ public void setContractName(String contractName) {
+ this.contractName = contractName;
+ return projectNum;
+ public void setProjectNum(String projectNum) {
+ this.projectNum = projectNum;
+ public int getNumberCount() {
+ return numberCount;
+ public void setNumberCount(int numberCount) {
+ this.numberCount = numberCount;
+ public String getView() {
+ return view;
+ public void setView(String view) {
+ this.view = view;
@@ -0,0 +1,188 @@
+import com.jeeplus.common.persistence.TreeEntity;
+ * 工作内容管理Entity
+public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
+ private String type; // 类型
+ private String dictType; // 字典类型
+ private String infoId; //详情页id
+ private ProjectBasedData projectBasedData;
+ private ProjectContentData projectContentData;
+ private ProjectReportData projectReportData;
+ private String edit;
+ private String linkId;//引用ID
+ private String change;
+ public Projectcontentinfo() {
+ public Projectcontentinfo(String id){
+ public Projectcontentinfo getParent() {
+ return parent;
+ public void setParent(Projectcontentinfo parent) {
+ this.parent = parent;
+ @ExcelField(title="项目id", align=2, sort=10)
+ @ExcelField(title="公司id", align=2, sort=11)
+ @ExcelField(title="部门id", align=2, sort=12)
+ @ExcelField(title="名称", align=2, sort=13)
+ public String getDictType() {
+ return dictType;
+ public void setDictType(String dictType) {
+ this.dictType = dictType;
+ public String getInfoId() {
+ return infoId;
+ public void setInfoId(String infoId) {
+ this.infoId = infoId;
+ public ProjectBasedData getProjectBasedData() {
+ return projectBasedData;
+ public void setProjectBasedData(ProjectBasedData projectBasedData) {
+ this.projectBasedData = projectBasedData;
+ public ProjectContentData getProjectContentData() {
+ return projectContentData;
+ public void setProjectContentData(ProjectContentData projectContentData) {
+ this.projectContentData = projectContentData;
+ public ProjectReportData getProjectReportData() {
+ return projectReportData;
+ public void setProjectReportData(ProjectReportData projectReportData) {
+ this.projectReportData = projectReportData;
+ public String getEdit() {
+ return edit;
+ public void setEdit(String edit) {
+ this.edit = edit;
+ public String getLinkId() {
+ return linkId;
+ public void setLinkId(String linkId) {
+ this.linkId = linkId;
+ public String getChange() {
+ return change;
+ public void setChange(String change) {
+ this.change = change;
@@ -0,0 +1,80 @@
+package com.jeeplus.modules.projectcontentinfo.service;
+import com.jeeplus.modules.sys.dao.WorkattachmentDao;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
+import com.jeeplus.modules.workreimbursement.utils.VarStr;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectBasedDataDao;
+ * 依据性资料Service
+public class ProjectBasedDataService extends CrudService<ProjectBasedDataDao, ProjectBasedData> {
+ private WorkattachmentDao workattachmentDao;
+ public ProjectBasedData get(String id) {
+ ProjectBasedData projectBasedData = super.get(id);
+ if(projectBasedData!=null) {
+ Workattachment workattachment = new Workattachment();
+ workattachment.setAttachmentId(id);
+ workattachment.setAttachmentFlag("84");
+ projectBasedData.setWorkAttachments(workattachmentDao.findList(workattachment));
+ public String getNumber(ProjectRecords projectRecords) {
+ if (projectRecords!=null && StringUtils.isNotBlank(projectRecords.getId())){
+ ProjectBasedData projectBasedData = new ProjectBasedData();
+ projectBasedData.setProject(projectRecords);
+ ProjectBasedData value = dao.getNumber(projectBasedData);
+ if (value==null || StringUtils.isBlank(value.getNumber())){
+ return "001";
+ }else {
+ return UserUtils.getNumber(value.getNumber());
+ public List<ProjectBasedData> findList(ProjectBasedData projectBasedData) {
+ return super.findList(projectBasedData);
+ public Page<ProjectBasedData> findPage(Page<ProjectBasedData> page, ProjectBasedData projectBasedData) {
+ return super.findPage(page, projectBasedData);
+ public void save(ProjectBasedData projectBasedData) {
+ super.save(projectBasedData);
+import java.util.Iterator;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectcontentinfoDao;
+import com.jeeplus.modules.workreview.service.WorkReviewStandardService;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectContentDataDao;
+ * 工作内容详情Service
+public class ProjectContentDataService extends CrudService<ProjectContentDataDao, ProjectContentData> {
+ private ProjectBasedDataDao projectBasedDataDao;
+ private ProjectcontentinfoDao projectcontentinfoDao;
+ private WorkReviewStandardService workReviewStandardService;
+ public ProjectContentData get(String id) {
+ ProjectContentData projectContentData = super.get(id);
+ if(projectContentData!=null){
+ projectContentData.setWorkAttachments(workattachmentDao.findList(workattachment));
+ public void queryBasedData(ProjectContentData projectContentData){
+ if (projectContentData==null || StringUtils.isBlank(projectContentData.getId()))return;
+ List<ProjectBasedData> list = projectBasedDataDao.queryListByContentId(projectContentData.getId());
+ projectContentData.setProjectBasedDataList(list);
+ public List<ProjectContentData> findList(ProjectContentData projectContentData) {
+ return super.findList(projectContentData);
+ public Page<ProjectContentData> findPage(Page<ProjectContentData> page, ProjectContentData projectContentData) {
+ return super.findPage(page, projectContentData);
+ public void save(ProjectContentData projectContentData) {
+ if(StringUtils.isBlank(projectContentData.getNumber())){
+ Integer serialNum = dao.querySerialNum(projectContentData);
+ if (serialNum==null){
+ serialNum=0;
+ serialNum+=1;
+ String num = String.valueOf(serialNum);
+ StringBuffer sb = new StringBuffer();
+ for(int x = 0; x < (3 - num.length()); x++) {
+ sb.append("0");
+ sb.append(num);
+ projectContentData.setNumber(sb.toString());
+ super.save(projectContentData);
+ public void delete(ProjectContentData projectContentData) {
+ //删除附件
+ if(projectContentData.getWorkAttachments()!=null&&!projectContentData.getWorkAttachments().isEmpty()){
+ for (Workattachment workattachment : projectContentData.getWorkAttachments()) {
+ workattachmentDao.delete(workattachment);
+ //删除资料关联
+ dao.deleteBasedByContentId(projectContentData.getId());
+ super.delete(projectContentData);
+ public void saveBasedData(String contentId,List<ProjectBasedData> projectBasedDataList) {
+ Iterator<ProjectBasedData> iterator = projectBasedDataList.iterator();
+ while (iterator.hasNext()){
+ ProjectBasedData basedData = iterator.next();
+ if(basedData==null||StringUtils.isBlank(basedData.getId())){
+ iterator.remove();
+ HashMap<String, Object> map = new HashMap<>(5);
+ map.put("contentId", contentId);
+ map.put("projectBasedDataList", projectBasedDataList);
+ dao.batchInsertBaseData(map);
+ public void deleteBased(String contentId,String basedId) {
+ int i = dao.deleteBasedData(contentId, basedId);
+ if(i==0){
+ return;
+ //删除菜单
+ Projectcontentinfo parent = projectcontentinfoDao.getByInfoId(contentId);
+ Projectcontentinfo select2 = new Projectcontentinfo();
+ select2.setParent(parent);
+ select2.setProject(parent.getProject());
+ select2.setName("依据资料");
+ List<Projectcontentinfo> infos = projectcontentinfoDao.findListByParentSelective(select2);
+ Projectcontentinfo projectcontentinfo = infos.get(0);
+ select2.setParent(projectcontentinfo);
+ select2.setName(null);
+// select2.setLinkId(basedId);
+ select2.setInfoId(basedId);
+ //删除当前菜单
+ projectcontentinfoDao.deleteByParentAndLinkId(select2);
+ //是否删除父级菜单
+ select2.setInfoId(null);
+ select2.setLinkId(null);
+ List<Projectcontentinfo> sonList = projectcontentinfoDao.findListByParentSelective(select2);
+ if(sonList==null || sonList.isEmpty()){
+ projectcontentinfoDao.delete(projectcontentinfo);
+ public void deleteContent(String contentId,String reportId,String projectId,String type) {
+ //String linkId = dao.findByLinkId(contentId,projectId);
+ dao.deleteReportDataInfo(contentId,reportId,type);
+ dao.deleteReportDataMenu(contentId,projectId,reportId);
+ public void saveReportContent(String contentId,String reportId,String type) {
+ dao.saveReportContent(contentId,reportId,type);
+ public Integer countBased(String basedId) {
+ return dao.countByBaseId(basedId);
+ public List<WorkReviewAudit> findListReviewAudit(String reviewId,String name,String infoId) {
+ WorkReviewStandard workReviewStandard = new WorkReviewStandard();
+ workReviewStandard.setStandardDetail(name);
+ String reviewIds = "0,"+reviewId+",";
+ workReviewStandard.setParentIds(reviewIds);
+ workReviewStandard.setType(reviewId);
+ List<WorkReviewStandard> workReviewStandards = workReviewStandardService.findListByType(workReviewStandard);
+ List<WorkReviewAudit> workReviewAudits = new ArrayList<>();
+ for (WorkReviewStandard reviewStandard:workReviewStandards){
+ int orderNum = Integer.parseInt(reviewStandard.getOrderNum());
+ if (orderNum>999){
+ WorkReviewAudit workReviewAudit = new WorkReviewAudit();
+ workReviewAudit.setReportId(infoId);
+ workReviewAudit.setMaxDeduct(reviewStandard.getMaxDeduct());
+ workReviewAudit.setOrderNum(reviewStandard.getOrderNum());
+ workReviewAudit.setStandardDetail(reviewStandard.getStandardDetail());
+ workReviewAudit.setSort(reviewStandard.getSort());
+ workReviewAudit.setId(reviewStandard.getId());
+ if (orderNum>999 && orderNum<2000){
+ workReviewAudit.setType("1");
+ workReviewAudit.setParent(new WorkReviewAudit("0"));
+ workReviewAudit.setParentIds("0,");
+ if (StringUtils.isNotBlank(workReviewAudit.getType())) {
+ workReviewAudits.add(workReviewAudit);
+ return workReviewAudits;
@@ -0,0 +1,934 @@
+import com.jeeplus.common.websocket.onchat.ChatServerPool;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportChangeDao;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataDao;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.service.OfficeService;
+import com.jeeplus.modules.workactivity.dao.WorkActivityProcessDao;
+import com.jeeplus.modules.workactivity.entity.Activity;
+import com.jeeplus.modules.workactivity.entity.WorkActivityProcess;
+import com.jeeplus.modules.workactivity.service.ActivityService;
+import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
+import com.jeeplus.modules.workactivitymenu.entity.WorkActivityMenu;
+import com.jeeplus.modules.workactivitymenu.service.WorkActivityMenuService;
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import com.jeeplus.modules.workreview.dao.WorkReviewAuditDao;
+import org.java_websocket.WebSocket;
+ * 报告变更变更详情Service
+public class ProjectReportChangeService extends CrudService<ProjectReportChangeDao, ProjectReportData> {
+ private WorkProjectNotifyService workProjectNotifyService;
+ private WorkActivityMenuService workActivityMenuService;
+ private WorkActivityProcessService workActivityProcessService;
+ private ActivityService activityService;
+ private WorkActivityProcessDao workActivityProcessDao;
+ private ProjectContentDataDao projectContentDataDao;
+ private ProjectReportRecordService projectReportRecordService;
+ private ProjectRecordsService projectRecordsService;
+ private OfficeService officeService;
+ private WorkReviewAuditDao workReviewAuditDao;
+ private ProjectReportDataDao projectReportDataDao;
+ public ProjectReportData get(String id) {
+ ProjectReportData projectReportData = super.get(id);
+ if (projectReportData!=null && StringUtils.isNotBlank(projectReportData.getId())) {
+ List<Workattachment> list = new ArrayList<>();
+ workattachment.setAttachmentFlag("87");
+ list.addAll(workattachmentDao.findList(workattachment));
+ Workattachment attachment = new Workattachment();
+ attachment.setAttachmentId(projectReportData.getReportId());
+ attachment.setAttachmentFlag("86");
+ list.addAll(workattachmentDao.findList(attachment));
+ projectReportData.setWorkAttachments(list);
+ /*if (projectReportData.getSignCostOne() != null && StringUtils.isNotBlank(projectReportData.getSignCostOne().getId())) {
+ projectReportData.setSignCostOne(UserUtils.get(projectReportData.getSignCostOne().getId()));
+ if (projectReportData.getSignCostTwo() != null && StringUtils.isNotBlank(projectReportData.getSignCostTwo().getId())) {
+ projectReportData.setSignCostTwo(UserUtils.get(projectReportData.getSignCostTwo().getId()));
+ }*/
+ projectReportData.setProjectContentDataList(projectContentDataDao.findReportContent(projectReportData.getId(), "2"));
+ projectReportData.setProjectBasedDataList(projectBasedDataDao.findReportBased(projectReportData.getId(),"4"));
+ workReviewAudit.setReportId(projectReportData.getId());
+ workReviewAudit.setCompanyId(projectReportData.getCompanyId());
+ projectReportData.setProjectReviewList(workReviewAuditDao.findList(workReviewAudit));
+ public List<Workattachment> getWorkattachments(String id) {
+ return list;
+ return new ArrayList<>();
+ public ProjectReportData getBefore(String id) {
+ String reportId = projectReportData.getReportId();
+ if (StringUtils.isBlank(reportId)){
+ reportId = id;
+ attachment.setAttachmentId(reportId);
+ /*if (projectReportData.getSignCostOne()!=null && StringUtils.isNotBlank(projectReportData.getSignCostOne().getId())){
+ if (projectReportData.getSignCostTwo()!=null && StringUtils.isNotBlank(projectReportData.getSignCostTwo().getId())){
+ if (reportId.equals(id)){
+ projectReportData.setProjectContentDataList(projectContentDataDao.findReportContent(reportId,"1"));
+ projectReportData.setProjectBasedDataList(projectBasedDataDao.findReportBased(projectReportData.getId(),"3"));
+ projectReportData.setProjectContentDataList(projectContentDataDao.findReportContent(reportId,"2"));
+ /*projectReportData.setProjectContentDataList(projectContentDataDao.findReportContent(projectReportData.getId(), "2"));
+ projectReportData.setProjectBasedDataList(projectBasedDataDao.findReportBased(projectReportData.getId(),"4"));*/
+ public ProjectReportData findByBefore(ProjectReportData reportData) {
+ ProjectReportData projectReportData = dao.findByBefore(reportData);
+ public List<ProjectReportData> findList(ProjectReportData projectReportData) {
+ return super.findList(projectReportData);
+ public Page<ProjectReportData> findPage(Page<ProjectReportData> page, ProjectReportData projectReportData) {
+ return super.findPage(page, projectReportData);
+ public void reportNumber(String reportId,String number) {
+ dao.reportNumber(reportId,number);
+ public void save(ProjectReportData projectReportData) {
+ super.save(projectReportData);
+ public void update(ProjectReportData projectReportData) {
+ projectReportData.preUpdate();
+ dao.update(projectReportData);
+ public void insert(ProjectReportData projectReportData) {
+ dao.insert(projectReportData);
+ public void saveInvalid(ProjectReportData projectReportData) {
+ dao.saveInvalid(projectReportData);
+ public void delete(ProjectReportData projectReportData) {
+ //dao.deleteContentChange(projectReportData.getId());
+ dao.deleteReportDataInfo(projectReportData.getId());
+ super.delete(projectReportData);
+ public void deleteReportDataInfo(ProjectReportData projectReportData) {
+ public void deleteReportDataBased(ProjectReportData projectReportData) {
+ dao.deleteReportDataBased(projectReportData.getId());
+ public void deleteTree(ProjectReportData projectReportData) {
+ dao.deleteTree(projectReportData);
+ public void changeProjectReportData(ProjectReportData projectReportData) {
+ projectReportData.setId(projectReportData.getReportId());
+ dao.changeProjectReportData(projectReportData);
+ * 提交存储
+ * @param variables
+ public String save(ProjectReportData projectReportData,Map<String, Object> variables,String processInstanceId,List<User> masters) {
+ User user = UserUtils.getUser();
+ Boolean insert = false;
+ if (StringUtils.isBlank(projectReportData.getId())){
+ projectReportData.preInsert();
+ insert = true;
+ ProjectRecords projectRecords = projectRecordsService.get(projectReportData.getProject());
+ Office recordsOffice =officeService.get(projectRecords.getOffice());
+ String title = "报告名称:"+projectReportData.getName();
+ String str = "变更编号"+projectReportData.getNumber()+",报告名称:"+projectReportData.getName()+",工作内容类型:"+ WorkContentTypeController.getContentTypeName(projectReportData.getType(),"")+",项目所属部门:"+recordsOffice.getName()+",负责人:"+user.getName();
+ //String title = "报告变更变更发起人:"+user.getName()+",报告变更名称:"+projectReportData.getName()+"待审批!";
+ //String str = "报告变更变更发起人:"+user.getName()+",报告变更名称:"+projectReportData.getName()+",报告变更编号:"+projectReportData.getNumber()+" 待审批!";
+ identityService.setAuthenticatedUserId(user.getId());
+ String businessKey = projectReportData.getId().toString();
+ WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("9864872f45b84acd893010e66a3db2c8", recordsOffice);
+ String processType = workActivityMenu.getProcessType();
+ StringBuffer buffer = new StringBuffer();
+ Activity activity = new Activity();
+ WorkProjectNotify workProjectNotify = UtilNotify
+ .saveNotify(projectReportData.getId(),
+ null,
+ projectReportData.getCompanyId(),
+ title,
+ str,
+ "46",
+ "0",
+ "待审批",
+ ""
+ );
+ List<User> users = new ArrayList<>();
+ if (insert) {
+ this.insert(projectReportData);
+ this.save(projectReportData);
+// List<User> bmzrs = UserUtils.getByRoleActivityEnname("bmzr",2,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+// List<User> bzshbygs = UserUtils.getByRoleActivityEnname("bzshbyg",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+ List<User> bzshbs = UserUtils.getByRoleActivityEnname("bzshb",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+// List<User> fglds = UserUtils.getByRoleActivityEnname("fgld",2,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+// List<User> fgzlfzs = UserUtils.getByRoleActivityEnname("zlfgld",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+ List<User> glydas = UserUtils.getByRoleActivityEnname("bggdgly",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+ List<User> gzrs = UserUtils.getByRoleActivityEnname("gzr",3,recordsOffice.getId(),"12",projectReportData.getCreateBy());
+ if (StringUtils.isNotBlank(workActivityMenu.getId())) {
+ workProjectNotify.setNotifyRole("");
+ workActivityMenu = workActivityMenuService.get(workActivityMenu.getId());
+ List<Activity> activities = workActivityMenu.getActivities();
+ for (Activity a : activities) {
+ String encount = a.getEncount();
+ String enlist = a.getEnlist();
+ if (a.getRole()!=null && StringUtils.isNotBlank(a.getRole().getEnname())){
+ List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),recordsOffice.getId(),"8",projectReportData.getCreateBy());
+ if (enusers.size()==0){
+ /*dao.delete(projectReportData);
+ for (Workattachment workattachment : projectReportData.getWorkAttachments()) {
+ projectReportData.setStatus("1");
+ return "报告变更变更流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!";
+ variables.put(enlist, enusers);
+ variables.put(encount, enusers.size());
+ if (a.getDelFlag().equals("0") && a.getCount() == 1) {
+ activity = a;
+ buffer.append(activity.getRole().getEnname());
+ if (activity != null && StringUtils.isNotBlank(activity.getId())) {
+ //角色审批
+ if (StringUtils.isNotBlank(activity.getRole().getEnname())) {
+ users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),recordsOffice.getId(),"8",projectReportData.getCreateBy());
+ //人员审批
+ if (StringUtils.isNotBlank(activity.getUser().getId())) {
+ users.add(activity.getUser());
+ workProjectNotify.setId("");
+ } else {
+ /*variables.put("masterList", masters);
+ variables.put("bmzrList", bmzrs);
+ variables.put("bzshbList", bzshbs);
+ variables.put("fgldList", fglds);
+ variables.put("fgzlfzList", fgzlfzs);
+ variables.put("glydaList", glydas);
+ variables.put("gzrList", gzrs);*/
+ if (masters.size()==0 ){
+ if (masters.size()==0){
+ return "报告变更变更流程审批人不能为空,项目负责人下无用户,请联系管理员!";
+ /*if (bmzrs.size()==0){
+ return "报告变更变更流程审批人不能为空,角色部门负责人下无用户,请联系管理员!";
+ if (fglds.size()==0){
+ return "报告变更变更流程审批人不能为空,角色分管领导下无用户,请联系管理员!";
+ if (bzshbs.size()==0){
+ return "报告变更变更流程审批人不能为空,标准审核部下无用户,请联系管理员!";
+ if (fgzlfzs.size()==0){
+ return "报告变更变更流程审批人不能为空,分管质量副总下无用户,请联系管理员!";
+ if (glydas.size()==0){
+ return "报告变更变更流程审批人不能为空,档案管理员下无用户,请联系管理员!";
+ if (gzrs.size()==0){
+ return "报告变更变更流程审批人不能为空,盖章人下无用户,请联系管理员!";
+ /*variables.put("bmzrcount",bmzrs.size());
+ variables.put("bzshbcount",bzshbs.size());
+ variables.put("fgldcount",fglds.size());
+ variables.put("fgzlfzcount",fgzlfzs.size());
+ variables.put("glydacount",glydas.size());
+ variables.put("gzrcount",gzrs.size());*/
+ processType = "reportAudit";
+ users.addAll(masters);
+ variables.put("masterList", masters);
+ variables.put("mastercount", masters.size());
+ for (User u : users){
+ workProjectNotify.setUser(u);
+ workProjectNotify.setNotifyRole("项目负责人审批");
+ workProjectNotifyService
+ .save(workProjectNotify);
+// Map<String,Object> extras = new HashMap<>();
+// extras.put("type","7001");
+// extras.put("id",workProjectNotify.getId());
+// extras.put("procDefKey","46");
+// UserUtils.pushInfoToApp(title,str,extras,u.getId());
+// UserUtils.pushIm(u.getId(),"报告变更变更发起人:\" + user.getName() + \",报告变更名称:\"+ projectReportData.getName() + \" 待审批!");
+ variables.put("type", processType);
+ variables.put("title", "审批单:" + projectReportData.getNumber());//设置标题;
+ ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
+ projectReportData.setProcessInstance(processInstance);
+ if (StringUtils.isNotBlank(processInstanceId)) {
+ workActivityProcessService.updateProcessInstanceId(processInstance.getId(),processInstanceId);
+ workActivityProcessService.deleteProcessInstanceId(processInstanceId);
+ workActivityProcessService.deleteProcessIdAuditUsers(processInstanceId);
+ projectReportData.setProcessInstanceId(processInstance.getId());
+ dao.updateProcessInstanceId(projectReportData);
+ projectReportDataDao.updateUpId(projectReportData.getReportId(),processInstance.getId());
+ List<Activity> list = workActivityMenu.getActivities();
+ if (list != null && list.size() != 0) {
+ workActivityProcessService.saveList(list, processInstance.getId());
+ WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+ workActivityProcess.setCount(1);
+ workActivityProcess.setProcessKey(processType);
+ workActivityProcess.setProcessInstanceId(processInstance.getId());
+ workActivityProcess.setIsApproval("0");
+ workActivityProcessService.insert(workActivityProcess);
+ workActivityProcess.setCount(2);
+ workActivityProcess.setCount(3);
+ workActivityProcess.setCount(4);
+// workActivityProcess.setCount(5);
+// workActivityProcessService.insert(workActivityProcess);
+// workActivityProcess.setCount(6);
+// workActivityProcess.setCount(7);
+// workActivityProcess.setCount(8);
+ workActivityProcessService.insertAuditsByType(masters,processInstance.getId(),1,1);
+// workActivityProcessService.insertAuditsByType(bmzrs,processInstance.getId(),2,0);
+// workActivityProcessService.insertAuditsByType(bzshbygs,processInstance.getId(),3,0);
+ workActivityProcessService.insertAuditsByType(bzshbs,processInstance.getId(),2,0);
+// workActivityProcessService.insertAuditsByType(fglds,processInstance.getId(),5,0);
+// workActivityProcessService.insertAuditsByType(fgzlfzs,processInstance.getId(),6,0);
+ workActivityProcessService.insertAuditsByType(glydas,processInstance.getId(),4,0);
+ workActivityProcessService.insertAuditsByType(gzrs,processInstance.getId(),3,0);
+ return "true";
+ * 合同作废:强制撤销
+ public void cancelInvalidate(ProjectReportData projectReportData) {
+ String invalidateProcessInstanceId = projectReportData.getProcessInstanceId();
+ //将流程图中尚未走到的task的流程追踪信息逻辑删除,添加一条"撤销"流程追踪信息
+ WorkActivityProcess process = new WorkActivityProcess();
+ process.setProcessInstanceId(projectReportData.getProcessInstanceId());
+ process.setIsApproval("0");
+ //List<WorkActivityProcess> processList1 = workActivityProcessService.findByProcInsId(process);
+ workActivityProcess.setProcessInstanceId(projectReportData.getProcessInstanceId());
+ List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
+ WorkProjectNotify notify = new WorkProjectNotify();
+ notify.setNotifyId(projectReportData.getId());
+ List<User> userList = workProjectNotifyService.readByNotifyId(notify);
+ if (userList!=null && userList.size()!=0) {
+ for (User u : userList) {
+ User user = UserUtils.get(u.getId());
+ UserUtils.pushMeIm(user.getId());
+ if(processList!=null && processList.size()>0){
+ for (int i =0;i<processList.size();i++) {
+ WorkActivityProcess p = processList.get(i);
+ if(StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())){
+ p.setDelFlag("1");
+ p.setIsApproval("-1");
+ workActivityProcessDao.updateDelFlagAndIsApproval(p);
+ WorkActivityProcess pro = new WorkActivityProcess();
+ pro.setId("");
+ pro.preInsert();
+ pro.setDelFlag("0");
+ pro.setRemarks("[强制撤销]");
+ pro.setProcessKey(processList.get(0).getProcessKey());
+ pro.setIsApproval("1");
+ pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
+ pro.setCount(0);
+ workActivityProcessDao.insert(pro);
+ //结束该流程,设为"撤销"状态
+ actTaskService.endProcessInstance(invalidateProcessInstanceId,"报告变更变更-强制撤销");
+ projectReportData.setStatus("3");
+ update(projectReportData);
+ }catch (ActivitiObjectNotFoundException e){
+ System.err.println("报告变更变更撤销异常,因为这个流程已不存在!");
+ catch (Exception e) {
+ * 审核流程
+ * @param reportData
+ public String auditSave(ProjectReportData reportData,List<User> auditUsers) {
+ String flag = reportData.getAct().getFlag();
+ Act act = reportData.getAct();
+ ProjectReportData projectReportData = null;
+ // 对不同环节的业务逻辑进行操作
+ String taskDefKey = act.getTaskDefKey();
+ if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit") ) {
+ actTaskService.claim(act.getTaskId(), UserUtils.getUser().getId());
+ projectReportData = get(reportData.getId());
+ projectReportData = reportData;
+ flag = "yes";
+ User user= UserUtils.get(projectReportData.getCreateBy().getId());
+ projectRecordsService.getQueryProjectMasters(projectRecords);
+ if (StringUtils.isBlank(act.getComment())){
+ act.setComment(flag.equals("yes")?"同意":"驳回");
+ String comment = "";
+ if (projectReportData.getStatus().equals("4")){
+ comment = ("yes".equals(flag)?"[重新申请] ":"[已撤销] ");
+ comment = ("yes".equals(flag)?"[同意] ":"[驳回] ")+act.getComment();
+ //yes 的时候状态为审核通过 否则为未通过
+ //1 审核中 2 未通过
+ projectReportData.setStatus(("yes".equals(flag) ? "2" : "4"));
+ Map<String, Object> vars = Maps.newHashMap();
+ //业务逻辑对应的条件表达式
+ String exp = "";
+ String taskCount = "";
+ String notifyRole = "";
+ int key = 0;
+ String enname = "";
+ List<Activity> activitieList = activityService.getByProcessInstanceId(projectReportData.getProcessInstanceId());
+ WorkActivityMenu workActivityMenu = new WorkActivityMenu();
+ if (activitieList != null && activitieList.size() != 0) {
+ workActivityMenu.setProcessType(activitieList.get(0).getProcessKey());
+ workActivityMenu.setActivities(activitieList);
+ WorkActivityProcess selectProcess = new WorkActivityProcess();
+ selectProcess.setProcessInstanceId(projectReportData.getProcessInstanceId());
+ List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+ if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("reportAudit")) {
+ key = 1;
+ for (int i = 0; i < workActivityProcesses.size(); i++) {
+ WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+ if (taskDefKey.equals(activityProcess.getActivityTask()) && !taskDefKey.equals("modifyApply")) {
+ taskCount = activityProcess.getCount()+"";
+ workActivityProcess = activityProcess;
+ if (!workActivityProcess.getIsApproval().equals("0")) {
+ workActivityProcess.setId("");
+ exp = "pass";
+ if (!"yes".equals(flag)) {
+ projectReportData.setStatus("4");
+ String returnBack = "-1";
+ workActivityProcess.setIsApproval("2");
+ for (Activity activity : activities) {
+ if (activity.getCount() == activityProcess.getCount()) {
+ notifyRole = activity.getName();
+ returnBack = activity.getReturnBack();
+ break;
+ if (returnBack.equals("0")) {
+ workActivityProcess.setIsApproval("1");
+ }else if(taskDefKey.equals("modifyApply")){
+ notifyRole = "调整报告变更";
+ taskCount = "0";
+ workActivityProcess.setCount(0);
+ workActivityMenu.setProcessType("reportAudit");
+ String count = activityProcess.getCount() + "";
+ // 审核环节
+ if ("master".equals(taskDefKey) && count.contains("1")) {
+ taskCount = "1";
+ if ("yes".equals(flag)) {
+ workActivityProcessService.insertAuditsByType(auditUsers,reportData.getProcessInstanceId(),2,1);
+ notifyRole = "标准审核部审批";
+ enname = "bzshb";
+ vars.put("bzshbList", auditUsers);
+ vars.put("bzshbcount",auditUsers.size());
+ notifyRole = "调整报告";
+ }else if ("bzshb".equals(taskDefKey) && count.contains("2")) {
+ taskCount = "2";
+ workActivityProcessService.insertAuditsByType(auditUsers,reportData.getProcessInstanceId(),5,1);
+ notifyRole = "盖章人盖章";
+ enname = "gzr";
+ vars.put("gzrList", auditUsers);
+ vars.put("gzrcount",auditUsers.size());
+ }else if ("gzr".equals(taskDefKey) && count.contains("3")) {
+ taskCount = "3";
+ notifyRole = "审批通过";
+ } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
+ notifyRole = "负责人审批";
+ enname = "master";
+ // 设置意见
+ act.setComment(("yes".equals(flag) ? "[同意] " : "[驳回] ") + act.getComment());
+ // 提交流程任务
+ vars.put(exp, "yes".equals(flag) ? true : false);
+ vars.put("passs", true);
+ workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,projectReportData.getProcessInstanceId(),taskDefKey,"modifyApply",flag,comment, activities);
+ actTaskService.complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+ boolean state = actTaskService.isProcessEnd(act.getProcInsId());
+ List<User> userList = new ArrayList<>();
+ boolean status = false;
+ if (!state) {
+// str = "yes".equals(flag)?"您的报销单审核:已通过":"您的报销单审核:未通过";
+ users.add(projectReportData.getCreateBy());
+ str = "变更编号"+projectReportData.getNumber()+",报告名称:"+projectReportData.getName()+",工作内容类型:"+ WorkContentTypeController.getContentTypeName(projectReportData.getType(),"")+",项目所属部门:"+recordsOffice.getName();
+ projectReportData.setStatus("5");
+ status = true;
+ userList = workProjectNotifyService.readByNotifyId(notify);
+ .save(UtilNotify
+ projectReportData.getCreateBy(),
+ "待通知",
+ notifyRole));
+ if (StringUtils.isNotBlank(projectReportData.getStatus()) && !projectReportData.getStatus().equals("3")){
+ workActivityProcessService.deleteProcessIdAuditUsers(projectReportData.getProcessInstanceId());
+ new User(),
+ notifyRole);
+ List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+ activities,
+ workProjectNotify,
+ taskDefKey,
+ flag,
+ taskCount,
+ user.getOffice().getId(),
+ "8");
+ for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+ users.add(workProjectNotify1.getUser());
+ workProjectNotify1.setId("");
+ workProjectNotify1.setIsNewRecord(false);
+ .save(workProjectNotify1);
+ if (!"modifyApply".equals(taskDefKey)){
+ Map<String,Object> extras = new HashMap<>();
+ if ("glyda".equals(taskDefKey)){
+ extras.put("type","7003");
+ }else if("zlfgld".equals(taskDefKey) ){
+ extras.put("type","7002");
+ extras.put("type","7001");
+ extras.put("id",workProjectNotify.getId());
+ extras.put("procDefKey","46");
+ UserUtils.pushInfoToApp(title,str,extras,workProjectNotify1.getUser().getId());
+ "重新申请",
+ users.add( projectReportData.getCreateBy());
+ if (StringUtils.isNotBlank(enname)) {
+ users.addAll(auditUsers);
+ for (User user1 : users) {
+ workProjectNotify.setUser(user1);
+ workProjectNotify.setIsNewRecord(false);
+ if ("zlfgld".equals(taskDefKey) ){
+ }else if("glyda".equals(taskDefKey) ){
+ UserUtils.pushInfoToApp(title,str,extras,user1.getId());
+ if (users!=null && users.size()!=0) {
+ for (User u : users) {
+ UserUtils.pushIm(u.getId(),title);
+ if (users!=null && userList.size()!=0) {
+ UserUtils.pushMeIm(u.getId());
+ if (status){
+ List<Workattachment> attachmentList = projectReportData.getWorkAttachments();
+ for (Workattachment workattachment : attachmentList){
+ if (workattachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
+ workattachment.setAttachmentId(projectReportData.getReportId());
+ workattachment.setAttachmentFlag("86");
+ workattachment.setAttachmentUser(UserUtils.getUser().getId());
+ if (StringUtils.isBlank(workattachment.getId()) || "null".equals(workattachment.getId())) {
+ workattachment.preInsert();
+ workattachmentDao.insert(workattachment);
+ workattachment.preUpdate();
+ workattachmentDao.update(workattachment);
+ ProjectReportRecord projectReportRecord = new ProjectReportRecord();
+ projectReportRecord.setReport(new ProjectReportData(projectReportData.getReportId()));
+ List<ProjectReportRecord> projectReportRecords = projectReportRecordService.findList(projectReportRecord);
+ if (projectReportRecords!=null && projectReportRecords.size()!=0){
+ for (ProjectReportRecord reportRecord:projectReportRecords){
+ if (!"5".equals(reportRecord.getStatus())){
+ projectReportData.setFileStatus("2");
+ if ("2".equals(reportRecord.getStatus())){
+ projectReportRecordService.cancelInvalidate(reportRecord);
+ if (StringUtils.isBlank(projectReportData.getFileStatus())){
+ projectReportData.setFileStatus("1");
+ dao.changeBerforProjectReportData(projectReportData);
+ if (!"yes".equals(flag)){
+ workReviewAuditDao.delReviewAudit(projectReportData.getId());
+ return "报告变更保存审核意见成功!";
+ public Act getByAct(String processInstanceId){
+ Act act = new Act();
+ HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ ProcessInstance processInstance = actTaskService.getProcIns(processInstanceId);
+ if (processInstance!=null) {
+ List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
+ if(taskList!=null && taskList.size()>1){
+ for (Task taskInfok:taskList) {
+ if (taskInfok.getAssignee().equals(UserUtils.getUser().getId())) {
+ act.setTaskId(taskInfok.getId());
+ act.setTaskName(taskInfok.getName());
+ act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+ act.setProcDefId(taskInfok.getProcessDefinitionId());
+ act.setProcInsId(taskInfok.getProcessInstanceId());
+ act.setTask(taskInfok);
+ Task task = actTaskService.getCurrentTaskInfo(processInstance);
+ act.setTaskId(task.getId());
+ act.setTaskName(task.getName());
+ act.setTaskDefKey(task.getTaskDefinitionKey());
+ act.setProcDefId(task.getProcessDefinitionId());
+ act.setProcInsId(task.getProcessInstanceId());
+ act.setTask(task);
+ return act;
@@ -0,0 +1,708 @@
+import java.util.*;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportRecordDao;
+ * 报告归档归档Service
+public class ProjectReportRecordService extends CrudService<ProjectReportRecordDao, ProjectReportRecord> {
+ private ProjectReportDataService projectReportDataService;
+ public ProjectReportRecord get(String id) {
+ ProjectReportRecord projectReportRecord= super.get(id);
+ if (projectReportRecord!=null && StringUtils.isNotBlank(projectReportRecord.getId())){
+ workattachment.setAttachmentFlag("99");
+ projectReportRecord.setWorkAttachments(workattachmentDao.findList(workattachment));
+ if (projectReportRecord.getSignCostOne()!=null && StringUtils.isNotBlank(projectReportRecord.getSignCostOne().getId())){
+ User signCostOne = UserUtils.get(projectReportRecord.getSignCostOne().getId());
+ projectReportRecord.setSignCostOne(signCostOne);
+ if (projectReportRecord.getSignCostTwo()!=null && StringUtils.isNotBlank(projectReportRecord.getSignCostTwo().getId())){
+ User signCostTwo = UserUtils.get(projectReportRecord.getSignCostTwo().getId());
+ projectReportRecord.setSignCostTwo(signCostTwo);
+ public int getNumber(String reportId) {
+ String number = dao.getNumber(reportId);
+ if (StringUtils.isNotBlank(number)){
+ return Integer.parseInt(number)+1;
+ return 1;
+ public List<ProjectReportRecord> findList(ProjectReportRecord projectReportRecord) {
+ return super.findList(projectReportRecord);
+ public Page<ProjectReportRecord> findPage(Page<ProjectReportRecord> page, ProjectReportRecord projectReportRecord) {
+ projectReportRecord.getSqlMap().put("dsf", dataScopeFilter(projectReportRecord.getCurrentUser(), "o", "u","s", MenuStatusEnum.PROJECT_REPORTRECORD.getValue()));
+ return super.findPage(page, projectReportRecord);
+ public void save(ProjectReportRecord projectReportRecord) {
+ ProjectReportData projectReportData =projectReportRecord.getReport();
+ projectReportDataService.updateFileStatus(projectReportData);
+ if (projectReportRecord.getIsNewRecord()){
+ projectReportRecord.preInsert();
+ projectReportRecord.setCreateDate(new Date());
+ dao.insert(projectReportRecord);
+ }else{
+ projectReportRecord.preUpdate();
+ dao.update(projectReportRecord);
+ saveWorkattachments(projectReportRecord);
+ public void insert(ProjectReportRecord projectReportRecord) {
+ public void saveWorkattachments(ProjectReportRecord projectReportRecord) {
+ List<Workattachment> workattachments = projectReportRecord.getWorkAttachments();
+ if (workattachments!=null && workattachments.size()!=0){
+ for (Workattachment workattachment:workattachments){
+ if (workattachment.getId() == null) {
+ continue;
+ workattachment.setAttachmentId(projectReportRecord.getId());
+ * @param projectReportRecord
+ public String save(ProjectReportRecord projectReportRecord, Map<String, Object> variables, String processInstanceId) {
+ if (StringUtils.isBlank(projectReportRecord.getId())){
+ projectReportRecord.setCompanyId(user.getComId());
+ projectReportRecord.setOfficeId(user.getOffice().getId());
+ String title = "报告名称:"+projectReportRecord.getReport().getName();
+ String str = "归档申请编号:"+projectReportRecord.getRecordNum()+ ",主委托方:"+projectReportRecord.getClientName()+",申请人:"+user.getName()+",所属部门:"+UserUtils.getSelectOffice().getName();
+ String businessKey = projectReportRecord.getId().toString();
+ Office office = UserUtils.getSelectOffice();
+ WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("5864872f45b84acd893010e66a3db2c8", office);
+ .saveNotify(projectReportRecord.getId(),
+ projectReportRecord.getCompanyId(),
+ "51",
+ this.insert(projectReportRecord);
+ this.save(projectReportRecord);
+ List<User> bggdglys = UserUtils.getByRoleActivityEnname("bggdgly",3,office.getId(),"10",projectReportRecord.getCreateBy());
+ List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),office.getId(),"10",projectReportRecord.getCreateBy());
+ projectReportRecord.setStatus("1");
+ return "报告归档流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!";
+ users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),office.getId(),"10",projectReportRecord.getCreateBy());
+ variables.put("bggdglyList", bggdglys);
+ if (bggdglys.size()==0){
+ return "流程审批人不能为空,报告归档管理员下无用户,请联系管理员!";
+ variables.put("bggdglycount",bggdglys.size());
+ processType = "reportRecord";
+ users.addAll(bggdglys);
+ workProjectNotify.setNotifyRole("档案管理员审批");
+ extras.put("procDefKey","51");
+ UserUtils.pushInfoToApp(title,str,extras,u.getId());
+ UserUtils.pushIm(u.getId(),str);
+ /*List<WebSocket> toUserConns = ChatServerPool.getWebSocketByUser(u.getId());
+ for (WebSocket toUserConn:toUserConns) {
+ String message = "{\"to\":\""+u.getId()+"\"," +
+ "\"msg\":\"审批信息 \"," +
+ "\"useType\":\"sys\"}";
+ ChatServerPool.sendMessageToUser(toUserConn, message);//同时向本人发送消息
+ variables.put("title", "报告归档编号:" + projectReportRecord.getRecordNum());//设置标题;
+ projectReportRecord.setProcessInstance(processInstance);
+ projectReportRecord.setProcessInstanceId(processInstance.getId());
+ dao.updateProcessInstanceId(projectReportRecord);
+ workActivityProcessService.insertAuditsByType(bggdglys,processInstance.getId(),1,1);
+ * 报告:强制撤销
+ public void cancelInvalidate(ProjectReportRecord projectReportRecord){
+ String invalidateProcessInstanceId = projectReportRecord.getProcessInstanceId();
+ process.setProcessInstanceId(projectReportRecord.getProcessInstanceId());
+ workActivityProcess.setProcessInstanceId(projectReportRecord.getProcessInstanceId());
+ notify.setNotifyId(projectReportRecord.getId());
+ actTaskService.endProcessInstance(invalidateProcessInstanceId,"报告归档-强制撤销");
+ projectReportRecord.setStatus("3");
+ save(projectReportRecord);
+ * @param reportRecord
+ public String auditSave(ProjectReportRecord reportRecord,List<User> auditUsers) {
+ String flag = reportRecord.getAct().getFlag();
+ ProjectReportRecord projectReportRecord = null;
+ Act act = reportRecord.getAct();
+ projectReportRecord = get(reportRecord.getId());
+ projectReportRecord = reportRecord;
+ saveWorkattachments(reportRecord);
+ User user= UserUtils.get(projectReportRecord.getCreateBy().getId());
+ //String str = "报告归档发起人:"+user.getName()+",报告归档编号:"+projectReportRecord.getRecordNum()+",报告名称:"+projectReportRecord.getReport().getName();
+ if (projectReportRecord.getStatus().equals("4")){
+ projectReportRecord.setStatus(("yes".equals(flag) ? "2" : "4"));
+ List<Activity> activitieList = activityService.getByProcessInstanceId(projectReportRecord.getProcessInstanceId());
+ selectProcess.setProcessInstanceId(projectReportRecord.getProcessInstanceId());
+ if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("reportRecord")) {
+ projectReportRecord.setStatus("4");
+ workActivityMenu.setProcessType("reportRecord");
+ if ("bggdgly".equals(taskDefKey) && count.contains("1")) {
+ notifyRole = "调整报告归档";
+ }else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
+ notifyRole = "报告归档管理员审批";
+ enname = "bggdgly";
+ } else if ("apply_end".equals(taskDefKey)) {
+ workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,projectReportRecord.getProcessInstanceId(),taskDefKey,"modifyApply",flag,comment, activities);
+ users.add(projectReportRecord.getCreateBy());
+ projectReportData.setFileStatus("3");
+ projectReportRecord.setStatus("5");
+ String str2 = "归档申请编号:"+projectReportRecord.getRecordNum()+ ",主委托方:"+projectReportRecord.getClientName();
+ projectReportRecord.getCreateBy(),
+ str2,
+ if (StringUtils.isNotBlank(projectReportRecord.getStatus()) && !projectReportRecord.getStatus().equals("3")){
+ workActivityProcessService.deleteProcessIdAuditUsers(projectReportRecord.getProcessInstanceId());
+ "10");
+ users.add( projectReportRecord.getCreateBy());
+ return "保存审核意见成功!";
+ public void delete(ProjectReportRecord reportRecord) {
+ ProjectReportRecord projectReportRecord = get(reportRecord.getId());
+ if (projectReportRecord.getWorkAttachments() != null && projectReportRecord.getWorkAttachments().size() != 0) {
+ for (Workattachment workattachment : projectReportRecord.getWorkAttachments()) {
+ if (StringUtils.isNotBlank(projectReportRecord.getProcessInstanceId())){
+ workActivityProcessService.deleteProcessInstanceId(projectReportRecord.getProcessInstanceId());
+ ProjectReportData reportData = projectReportDataService.get(projectReportRecord.getReport().getId());
+ if ("2".equals(reportData.getFileStatus())){
+ reportData.setFileStatus("1");
+ projectReportDataService.updateFileStatus(reportData);
+ super.delete(projectReportRecord);
@@ -0,0 +1,204 @@
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataCompanyDao;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataInfoDao;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataMonthDao;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataOfficeDao;
+import com.jeeplus.modules.workreimbursementcount.entity.WorkInvoiceCompany;
+import com.jeeplus.modules.workreimbursementcount.entity.WorkInvoiceMonth;
+ * 合同评价表Service
+ * @version 2018-03-23
+public class ProjectReportStatisticsService extends CrudService<ProjectReportDataInfoDao, ProjectReportDataInfo> {
+ private ProjectReportDataOfficeDao projectReportDataOfficeDao;
+ private ProjectReportDataCompanyDao projectReportDataCompanyDao;
+ private ProjectReportDataMonthDao projectReportDataMonthDao;
+ public List<ProjectReportDataCompany> findCompanyList(ProjectReportDataCompany projectReportDataCompany) {
+ String companyId=projectReportDataCompany.getCompanyId();
+ if (StringUtils.isBlank(companyId)){
+ companyId=UserUtils.getSelectCompany().getId();
+ projectReportDataCompany.setCompanyId(companyId);
+ List<ProjectReportDataCompany> list = findList(projectReportDataCompany,companyId);
+ public List<ProjectReportDataCompany> findBranchList(ProjectReportDataCompany projectReportDataCompany) {
+ companyId= UserUtils.getSelectBranchOffice();
+ public List<ProjectReportDataCompany> findList(ProjectReportDataCompany projectReportDataCompany,String companyId) {
+ List<ProjectReportDataCompany> projectReportDataCompanys = projectReportDataCompanyDao.findList(projectReportDataCompany);
+ List<ProjectReportDataCompany> listSign=new ArrayList<>();
+ if (projectReportDataCompanys!=null && projectReportDataCompanys.size()!=0) {
+ int reportCountTotal = 0;
+ int reportCount = 0;
+ int count = 0;
+ ProjectReportDataCompany dataTatol = new ProjectReportDataCompany();
+ ProjectReportDataCompany data = new ProjectReportDataCompany();
+ String name = "";
+ for (int i=0 ; i<projectReportDataCompanys.size();i++) {
+ ProjectReportDataCompany company = projectReportDataCompanys.get(i);
+ if(company.getId().equals(companyId)){
+ company.setSign("1");
+ company.setSign("2");
+ listSign.add(company);
+ for (int i=0 ; i<listSign.size();i++) {
+ ProjectReportDataCompany reportDataCompany = listSign.get(i);
+ if (companyId.equals(reportDataCompany.getId())){
+ count = i;
+ name = reportDataCompany.getName();
+ data = reportDataCompany;
+ reportCountTotal = reportDataCompany.getReportCount();
+ reportDataCompany.setName("合计");
+ reportCount += reportDataCompany.getReportCount();
+ if (StringUtils.isNotBlank(name)){
+ dataTatol.setId(data.getId());
+ dataTatol.setSign("1");
+ dataTatol.setReportCount(reportCountTotal-reportCount);
+ dataTatol.setName(name);
+ listSign.set(count,dataTatol);
+ listSign.add(data);
+ dataTatol.setName("合计");
+ dataTatol.setReportCount(reportCount);
+ listSign.add(dataTatol);
+ return listSign;
+ public List<ProjectReportDataOffice> findListByOffice(ProjectReportDataOffice projectReportDataOffice) {
+ if (StringUtils.isBlank(projectReportDataOffice.getCompanyId())){
+ projectReportDataOffice.setCompanyId(UserUtils.getSelectBranchOffice());
+ List<ProjectReportDataOffice> list = projectReportDataOfficeDao.findList(projectReportDataOffice);
+ List<ProjectReportDataOffice> listSum=new ArrayList<>();
+ if(list!=null&&list.size()>0){
+ for(ProjectReportDataOffice projectReportDataOffice1:list){
+ ProjectReportDataOffice projectReportDataOffice2=new ProjectReportDataOffice();
+ projectReportDataOffice2.setCompanyId(projectReportDataOffice1.getId());
+ projectReportDataOffice2.setDate(projectReportDataOffice.getDate());
+ ProjectReportDataOffice w= projectReportDataOfficeDao.findOfficeListSum(projectReportDataOffice2);
+ if(w.getId()!=null){
+ projectReportDataOffice1.setReportCount(w.getReportCount());
+ listSum.add(projectReportDataOffice1);
+ if (listSum!=null && listSum.size()!=0) {
+ ProjectReportDataOffice dataTatol = new ProjectReportDataOffice();
+ for (ProjectReportDataOffice reportDataOffice:listSum){
+ reportCountTotal += reportDataOffice.getReportCount();
+ dataTatol.setReportCount(reportCountTotal);
+ listSum.add(dataTatol);
+ return listSum;
+ public Page<ProjectReportDataInfo> findPageByInfo(Page<ProjectReportDataInfo> page,ProjectReportDataInfo projectReportDataInfo) {
+ if (StringUtils.isBlank(projectReportDataInfo.getOfficeId())){
+ projectReportDataInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+ projectReportDataInfo.setPage(page);
+ page.setList(dao.findList(projectReportDataInfo));
+ public List<ProjectReportDataMonth> findMonthCompanyList(ProjectReportDataMonth projectReportDataMonth) {
+ Office company = null;
+ if (StringUtils.isBlank(projectReportDataMonth.getCompanyId())){
+ company = UserUtils.getSelectCompany();
+ projectReportDataMonth.setCompanyId(company.getId());
+ List<ProjectReportDataMonth> list = new ArrayList<>();
+ List<ProjectReportDataMonth> listSign=new ArrayList<>();
+ list = projectReportDataMonthDao.findList(projectReportDataMonth);
+ for (int i=0 ; i<list.size();i++) {
+ ProjectReportDataMonth w = list.get(i);
+ w.setSign("1");
+ listSign.add(w);
+ if (listSign!=null && listSign.size()!=0) {
+ ProjectReportDataMonth dataTatol = new ProjectReportDataMonth();
+ ProjectReportDataMonth data = new ProjectReportDataMonth();
+ ProjectReportDataMonth reportDataMonth = listSign.get(i);
+ reportCount += reportDataMonth.getReportCount();
+ if (listSign!=null && listSign.size()!=0){
+ public List<ProjectReportDataMonth> findOfficeCompanyList(ProjectReportDataMonth projectReportDataMonth) {
+ projectReportDataMonth.setCompanyId(UserUtils.getSelectCompany().getId());
+ List<ProjectReportDataMonth> projectReportDataMonths = projectReportDataMonthDao.findByOfficeList(projectReportDataMonth);
+ if (projectReportDataMonths!=null && projectReportDataMonths.size()!=0) {
+ for (int i=0 ; i<projectReportDataMonths.size();i++) {
+ ProjectReportDataMonth reportDataMonth = projectReportDataMonths.get(i);
+ if (projectReportDataMonths!=null && projectReportDataMonths.size()!=0){
+ projectReportDataMonths.add(dataTatol);
+ return projectReportDataMonths;
+package com.jeeplus.modules.projectcontentinfo.web;
+import com.jeeplus.common.json.AjaxJson;
+import org.springframework.web.bind.annotation.*;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectBasedDataService;
+ * 依据性资料Controller
+@RequestMapping(value = "${adminPath}/projectcontentinfo/projectBasedData")
+public class ProjectBasedDataController extends BaseController {
+ private ProjectBasedDataService projectBasedDataService;
+ public ProjectBasedData get(@RequestParam(required=false) String id) {
+ ProjectBasedData entity = null;
+ entity = projectBasedDataService.get(id);
+ entity = new ProjectBasedData();
+ * 依据性资料列表页面
+ @RequiresPermissions("projectcontentinfo:projectBasedData:list")
+ public String list(ProjectBasedData projectBasedData, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectBasedData> page = projectBasedDataService.findPage(new Page<ProjectBasedData>(request, response), projectBasedData);
+ return "modules/projectcontentinfo/projectBasedDataList";
+ * 查看,增加,编辑依据性资料表单页面
+ @RequiresPermissions(value={"projectcontentinfo:projectBasedData:view","projectcontentinfo:projectBasedData:add","projectcontentinfo:projectBasedData:edit"},logical=Logical.OR)
+ public String form(ProjectBasedData projectBasedData, Model model) {
+ model.addAttribute("projectBasedData", projectBasedData);
+ return "modules/projectcontentinfo/projectBasedDataForm";
+ * 保存依据性资料
+ @RequiresPermissions(value={"projectcontentinfo:projectBasedData:add","projectcontentinfo:projectBasedData:edit"},logical=Logical.OR)
+ public String save(ProjectBasedData projectBasedData, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectBasedData)){
+ return form(projectBasedData, model);
+ if(!projectBasedData.getIsNewRecord()){//编辑表单保存
+ ProjectBasedData t = projectBasedDataService.get(projectBasedData.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectBasedData, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectBasedDataService.save(t);//保存
+ projectBasedDataService.save(projectBasedData);//保存
+ addMessage(redirectAttributes, "保存依据性资料成功");
+ return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectBasedData/?repage";
+ * 删除依据性资料
+ @RequiresPermissions("projectcontentinfo:projectBasedData:del")
+ public String delete(ProjectBasedData projectBasedData, RedirectAttributes redirectAttributes) {
+ projectBasedDataService.delete(projectBasedData);
+ addMessage(redirectAttributes, "删除依据性资料成功");
+ * 批量删除依据性资料
+ projectBasedDataService.delete(projectBasedDataService.get(id));
+ @RequiresPermissions("projectcontentinfo:projectBasedData:export")
+ public String exportFile(ProjectBasedData projectBasedData, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "依据性资料"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectBasedData> page = projectBasedDataService.findPage(new Page<ProjectBasedData>(request, response, -1), projectBasedData);
+ new ExportExcel("依据性资料", ProjectBasedData.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出依据性资料记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("projectcontentinfo:projectBasedData:import")
+ List<ProjectBasedData> list = ei.getDataList(ProjectBasedData.class);
+ for (ProjectBasedData projectBasedData : list){
+ projectBasedDataService.save(projectBasedData);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条依据性资料记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条依据性资料记录"+failureMsg);
+ addMessage(redirectAttributes, "导入依据性资料失败!失败信息:"+e.getMessage());
+ * 下载导入依据性资料数据模板
+ String fileName = "依据性资料数据导入模板.xlsx";
+ List<ProjectBasedData> list = Lists.newArrayList();
+ new ExportExcel("依据性资料数据", ProjectBasedData.class, 1).setDataList(list).write(response, fileName).dispose();
+ @RequestMapping("selectList")
+ public String gridSelect(ProjectBasedData projectBasedData,Model model,String searchLabel,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
+ Page<ProjectBasedData> page = projectBasedDataService.findPage(new Page<ProjectBasedData>(request,response), projectBasedData);
+ String searchLabel1 = URLDecoder.decode(searchLabel,"utf-8");
+ model.addAttribute("obj", projectBasedData);
+ model.addAttribute("searchLabel",searchLabel1);
+ return "modules/sys/gridselectProjbasedata";
@@ -0,0 +1,251 @@
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+ * 工作内容详情Controller
+@RequestMapping(value = "${adminPath}/projectcontentinfo/projectContentData")
+public class ProjectContentDataController extends BaseController {
+ private ProjectContentDataService projectContentDataService;
+ public ProjectContentData get(@RequestParam(required=false) String id) {
+ ProjectContentData entity = null;
+ entity = projectContentDataService.get(id);
+ entity = new ProjectContentData();
+ * 工作内容详情列表页面
+ @RequiresPermissions("projectcontentinfo:projectContentData:list")
+ public String list(ProjectContentData projectContentData, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectContentData> page = projectContentDataService.findPage(new Page<ProjectContentData>(request, response), projectContentData);
+ return "modules/projectcontentinfo/projectContentDataList";
+ * 查看,增加,编辑工作内容详情表单页面
+ @RequiresPermissions(value={"projectcontentinfo:projectContentData:view","projectcontentinfo:projectContentData:add","projectcontentinfo:projectContentData:edit"},logical=Logical.OR)
+ public String form(ProjectContentData projectContentData, HttpServletRequest request,Model model) {
+ String view = request.getParameter("view");
+ if("control".equals(view)){
+ view = "modules/projectcontroltable/projectControlTableForm";
+ view = "modules/projectcontentinfo/projectContentDataForm";
+ model.addAttribute("projectContentData", projectContentData);
+ return "modules/projectcontentinfo/projectContentDataForm";
+ * 保存工作内容详情
+ @RequiresPermissions(value={"projectcontentinfo:projectContentData:add","projectcontentinfo:projectContentData:edit"},logical=Logical.OR)
+ public String save(ProjectContentData projectContentData, HttpServletRequest request,Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectContentData)){
+ return form(projectContentData, request,model);
+ if(!projectContentData.getIsNewRecord()){//编辑表单保存
+ ProjectContentData t = projectContentDataService.get(projectContentData.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectContentData, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectContentDataService.save(t);//保存
+ projectContentDataService.save(projectContentData);//保存
+ addMessage(redirectAttributes, "保存工作内容详情成功");
+ return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectContentData/?repage";
+ * 删除工作内容详情
+ @RequiresPermissions("projectcontentinfo:projectContentData:del")
+ public String delete(ProjectContentData projectContentData, RedirectAttributes redirectAttributes) {
+ projectContentDataService.delete(projectContentData);
+ addMessage(redirectAttributes, "删除工作内容详情成功");
+ * 批量删除工作内容详情
+ projectContentDataService.delete(projectContentDataService.get(id));
+ @RequiresPermissions("projectcontentinfo:projectContentData:export")
+ public String exportFile(ProjectContentData projectContentData, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "工作内容详情"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectContentData> page = projectContentDataService.findPage(new Page<ProjectContentData>(request, response, -1), projectContentData);
+ new ExportExcel("工作内容详情", ProjectContentData.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出工作内容详情记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("projectcontentinfo:projectContentData:import")
+ List<ProjectContentData> list = ei.getDataList(ProjectContentData.class);
+ for (ProjectContentData projectContentData : list){
+ projectContentDataService.save(projectContentData);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条工作内容详情记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条工作内容详情记录"+failureMsg);
+ addMessage(redirectAttributes, "导入工作内容详情失败!失败信息:"+e.getMessage());
+ * 下载导入工作内容详情数据模板
+ String fileName = "工作内容详情数据导入模板.xlsx";
+ List<ProjectContentData> list = Lists.newArrayList();
+ new ExportExcel("工作内容详情数据", ProjectContentData.class, 1).setDataList(list).write(response, fileName).dispose();
+ @RequestMapping("selectcontent")
+ public String gridSelect(ProjectContentData projectContentData, String searchLabel ,HttpServletRequest request, HttpServletResponse response, Model model) throws UnsupportedEncodingException {
+ model.addAttribute("obj", projectContentData);
+ model.addAttribute("searchLabel",searchLabel);
+ return "modules/sys/gridselectProjcontent";
+ @RequestMapping("selectcontentData")
+ public String gridSelectData(ProjectContentData projectContentData, String searchLabel ,HttpServletRequest request, HttpServletResponse response, Model model) throws UnsupportedEncodingException {
+ return "modules/sys/gridselectProjcontentData";
+ @RequestMapping("ajaxdelete")
+ @ResponseBody
+ public AjaxJson deleteBased(String contentId,String basedId){
+ AjaxJson ajaxJson = new AjaxJson();
+ if (StringUtils.isNotBlank(contentId)) {
+ projectContentDataService.deleteBased(contentId, basedId);
+ Integer count = projectContentDataService.countBased(basedId);
+ ajaxJson.getBody().put("inuse", count == null ? true : count > 0);
+ }catch (Exception e){
+ logger.error("删除依据资料异常!",e);
+ ajaxJson.setSuccess(false);
+ ajaxJson.setMsg("删除依据资料失败");
+ return ajaxJson;
+ @RequestMapping("addReview")
+ public AjaxJson addReview(String reviewId,String name ,String infoId){
+ List<WorkReviewAudit> workReviewAudits = projectContentDataService.findListReviewAudit(reviewId,name,infoId);
+ ajaxJson.getBody().put("list",workReviewAudits);
+ ajaxJson.setMsg("获取数据成功");
+ logger.error("获取数据异常!",e);
+ ajaxJson.setMsg("获取数据异常");
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportChangeService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+ * 报告详情Controller
+@RequestMapping(value = "${adminPath}/projectcontentinfo/projectReportData")
+public class ProjectReportDataController extends BaseController {
+ private ProjectReportChangeService projectReportChangeService;
+ private ProjectcontentinfoService projectcontentinfoService;
+ public ProjectReportData get(@RequestParam(required=false) String id) {
+ ProjectReportData entity = null;
+ entity = projectReportDataService.get(id);
+ entity = new ProjectReportData();
+ * 报告详情列表页面
+ @RequiresPermissions("projectcontentinfo:projectReportData:list")
+ public String list(ProjectReportData projectReportData, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectReportData> page = projectReportDataService.findInfoPage(new Page<ProjectReportData>(request, response), projectReportData);
+ return "modules/projectcontentinfo/projectReportDataList";
+ * 查看,增加,编辑报告详情表单页面
+ public String form(ProjectReportData reportData, Model model) {
+ String id = reportData.getId();
+ ProjectReportData projectReportData;
+ Projectcontentinfo projectcontentinfo;
+ String view = "reportAudit";
+ if (StringUtils.isNotBlank(projectReportDataService.getChangeId(id))){
+ id = projectReportDataService.getChangeId(id);
+ projectReportData = projectReportChangeService.get(id);
+ List<Projectcontentinfo> projectcontentinfos = projectcontentinfoService.getByChangeInfoId(projectReportData.getId());
+ projectcontentinfo = projectcontentinfos.get(0);
+ view = "reportChangeAudit";
+ projectReportData = projectReportDataService.get(id);
+ projectcontentinfo = projectcontentinfoService.getByInfoId(projectReportData.getId());
+ projectcontentinfo.setProjectReportData(projectReportData);
+ model.addAttribute("projectId", projectcontentinfo.getProject().getId());
+ model.addAttribute("id", projectcontentinfo.getId());
+ model.addAttribute("projectcontentinfo", projectcontentinfo);
+ return "modules/projectcontentinfo/"+view;
+ * 保存报告详情
+ @RequiresPermissions(value={"projectcontentinfo:projectReportData:add","projectcontentinfo:projectReportData:edit"},logical=Logical.OR)
+ public String save(ProjectReportData projectReportData, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectReportData)){
+ return form(projectReportData, model);
+ if(!projectReportData.getIsNewRecord()){//编辑表单保存
+ ProjectReportData t = projectReportDataService.get(projectReportData.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportData, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectReportDataService.save(t);//保存
+ projectReportDataService.save(projectReportData);//保存
+ addMessage(redirectAttributes, "保存报告详情成功");
+ return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectReportData/?repage";
+ @RequestMapping("selectreportData")
+ public String gridSelectData(ProjectReportData projectReportData, String searchLabel , HttpServletRequest request, HttpServletResponse response, Model model) throws UnsupportedEncodingException {
+ Page<ProjectReportData> page = projectReportDataService.findInfoPageByStatus(new Page<ProjectReportData>(request, response), projectReportData);
+ model.addAttribute("obj", projectReportData);
+ return "modules/sys/gridselectreportrecord";
+ * 删除报告详情
+ @RequiresPermissions("projectcontentinfo:projectReportData:del")
+ public String delete(ProjectReportData projectReportData, RedirectAttributes redirectAttributes) {
+ projectReportDataService.delete(projectReportData);
+ addMessage(redirectAttributes, "删除报告详情成功");
+ * 批量删除报告详情
+ projectReportDataService.delete(projectReportDataService.get(id));
+ @RequiresPermissions("projectcontentinfo:projectReportData:export")
+ public String exportFile(ProjectReportData projectReportData, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "报告明细"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectReportData> page = projectReportDataService.findInfoPage(new Page<ProjectReportData>(request, response, -1), projectReportData);
+ new ExportExcel("报告明细", ProjectReportData.class).setDataList(page.getList()).write(response, fileName,request.getHeader("USER-AGENT")).dispose();
+ addMessage(redirectAttributes, "导出报告详情记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("projectcontentinfo:projectReportData:import")
+ List<ProjectReportData> list = ei.getDataList(ProjectReportData.class);
+ for (ProjectReportData projectReportData : list){
+ projectReportDataService.save(projectReportData);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条报告详情记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条报告详情记录"+failureMsg);
+ addMessage(redirectAttributes, "导入报告详情失败!失败信息:"+e.getMessage());
+ * 下载导入报告详情数据模板
+ String fileName = "报告详情数据导入模板.xlsx";
+ List<ProjectReportData> list = Lists.newArrayList();
+ new ExportExcel("报告详情数据", ProjectReportData.class, 1).setDataList(list).write(response, fileName).dispose();
@@ -0,0 +1,349 @@
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportRecordService;
+ * 报告归档Controller
+@RequestMapping(value = "${adminPath}/projectcontentinfo/projectReportRecord")
+public class ProjectReportRecordController extends BaseController {
+ public ProjectReportRecord get(@RequestParam(required=false) String id) {
+ ProjectReportRecord entity = null;
+ entity = projectReportRecordService.get(id);
+ entity = new ProjectReportRecord();
+ * 报告归档列表页面
+ @RequiresPermissions("projectcontentinfo:projectReportRecord:list")
+ public String list(ProjectReportRecord projectReportRecord, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectReportRecord> page = projectReportRecordService.findPage(new Page<ProjectReportRecord>(request, response), projectReportRecord);
+ return "modules/projectcontentinfo/projectReportRecordList";
+ * 查看,增加,编辑报告归档表单页面
+ public String form(ProjectReportRecord projectReportRecord, Model model) {
+ if(StringUtils.isBlank(projectReportRecord.getId())){
+ projectReportRecord.setCreateBy(UserUtils.getUser());
+ model.addAttribute("projectReportRecord", projectReportRecord);
+ if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("view")){
+ return "modules/projectcontentinfo/projectReportRecordView";
+ }else if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modiftApply")){
+ ProcessInstance processInstance = actTaskService.getProcIns(projectReportRecord.getProcessInstanceId());
+ Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
+ projectReportRecord.setAct(act);
+ return "modules/projectcontentinfo/projectReportRecordModiftApply";
+ return "modules/projectcontentinfo/projectReportRecordForm";
+ * 保存报告归档
+ public String save(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectReportRecord)){
+ return form(projectReportRecord, model);
+ User user = projectReportRecord.getCreateBy();
+ String sta = projectReportRecord.getStatus();
+ if(user!=null && !UserUtils.getUser().getId().equals(user.getId()) && StringUtils.isNotBlank(user.getId())){
+ addMessage(redirectAttributes, "您不是申请人,无法修改");
+ return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+ //状态设置为审核中
+ projectReportRecord.setStatus("2");
+ String processInstanceId ="";
+ if (user!=null && StringUtils.isNotBlank(user.getId()) && StringUtils.isNotBlank(sta) && "3".equals(sta)){
+ processInstanceId = projectReportRecordService.get(projectReportRecord.getId()).getProcessInstanceId();
+ Map<String, Object> variables = new HashMap<>();
+ if(!projectReportRecord.getIsNewRecord()){//编辑表单保存
+ ProjectReportRecord t = projectReportRecordService.get(projectReportRecord.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectReportRecord, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectReportRecordService.save(projectReportRecord,variables,processInstanceId);//保存
+ }else {//新增表单保存
+ addMessage(redirectAttributes, "保存报告归档成功");
+ addMessage(redirectAttributes, "保存报告归档失败");
+ return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectReportRecord/?repage";
+ @RequestMapping(value = "store")
+ public String store(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ projectReportRecordService.save(t);//保存
+ projectReportRecordService.save(projectReportRecord);//保存
+ @RequestMapping(value = "getNumber")
+ public Map<String,Object> getNumber(@RequestParam(required=false) String reportId, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ Map<String,Object> map = new HashMap<>();
+ int count = projectReportRecordService.getNumber(reportId);
+ map.put("numberCount",count>9?count+"":"0"+count);
+ logger.error("Exception e"+e);
+ map.put("numberCount","01");
+ return map;
+ * 读取单个实体流程
+ @RequestMapping(value = "getProcessOne")
+ public String getProcessOne(ProjectReportRecord projectReportRecord,Model model) {
+ model.addAttribute("processInstanceId", projectReportRecord.getProcessInstanceId());
+ return "modules/workreimbursement/workReimbursementTrack";
+ //报告流程审批
+ @RequestMapping(value = {"auditSave"})
+ public String auditSave(ProjectReportRecord projectReportRecord, HttpServletRequest request, HttpServletResponse response, Model model,
+ RedirectAttributes redirectAttributes) {
+ List<User> users = UserUtils.getByProssType(projectReportRecord.getProcessInstanceId(),1);
+ String flag = projectReportRecord.getAct().getFlag();
+ if ("yes".equals(flag) && (users==null || users.size()==0)){
+ addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+ String str = projectReportRecordService.auditSave(projectReportRecord,users);
+ addMessage(redirectAttributes, str);
+ logger.error("Exception e:"+e);
+ addMessage(redirectAttributes, "报告归档流程审批失败");
+ if (StringUtils.isNotBlank(projectReportRecord.getHome()) && projectReportRecord.getHome().equals("home")){
+ return "redirect:" + Global.getAdminPath() + "/home/?repage";
+ //报告变更
+ * 删除报告归档
+ public String delete(ProjectReportRecord projectReportRecord, RedirectAttributes redirectAttributes) {
+ if("5".equals(sta)){
+ addMessage(redirectAttributes, "报告归档已归档,无法删除");
+ }else if("2".equals(sta)){
+ addMessage(redirectAttributes, "报告归档正在审核中,无法删除");
+ projectReportRecordService.delete(projectReportRecord);
+ addMessage(redirectAttributes, "删除报告归档成功");
+ addMessage(redirectAttributes, "删除报告归档失败");
+ * 报告归档:强制撤回
+ @RequestMapping("cancelInvalidate")
+ public String cancelInvalidate(ProjectReportRecord projectReportRecord,RedirectAttributes redirectAttributes){
+ if(projectReportRecord.getStatus().equals("5")){
+ addMessage(redirectAttributes, "报告归档已审批通过,无法撤回");
+ projectReportRecordService.cancelInvalidate(projectReportRecord);
+ addMessage(redirectAttributes, "强制撤回报告归档成功");
+ addMessage(redirectAttributes, "强制撤回报告归档失败");
+ * 批量删除报告归档
+ @RequiresPermissions("projectcontentinfo:projectReportRecord:del")
+ projectReportRecordService.delete(projectReportRecordService.get(id));
+ @RequiresPermissions("projectcontentinfo:projectReportRecord:export")
+ public String exportFile(ProjectReportRecord projectReportRecord, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "报告归档"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectReportRecord> page = projectReportRecordService.findPage(new Page<ProjectReportRecord>(request, response, -1), projectReportRecord);
+ new ExportExcel("报告归档", ProjectReportRecord.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出报告归档记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("projectcontentinfo:projectReportRecord:import")
+ List<ProjectReportRecord> list = ei.getDataList(ProjectReportRecord.class);
+ for (ProjectReportRecord projectReportRecord : list){
+ projectReportRecordService.save(projectReportRecord);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条报告归档记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条报告归档记录"+failureMsg);
+ addMessage(redirectAttributes, "导入报告归档失败!失败信息:"+e.getMessage());
+ * 下载导入报告归档数据模板
+ String fileName = "报告归档数据导入模板.xlsx";
+ List<ProjectReportRecord> list = Lists.newArrayList();
+ new ExportExcel("报告归档数据", ProjectReportRecord.class, 1).setDataList(list).write(response, fileName).dispose();
@@ -0,0 +1,419 @@
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportStatisticsService;
+import com.jeeplus.modules.sys.dao.OfficeDao;
+import org.springframework.security.access.method.P;
+import java.text.SimpleDateFormat;
+ * 合同评价表Controller
+@RequestMapping(value = "${adminPath}/projectreportstatistics/projectreportstatistics")
+public class ProjectReportStatisticsController extends BaseController {
+ private ProjectReportStatisticsService projectReportStatisticsService;
+ private OfficeDao officeDao;
+ private List<String> xAxisData;
+ private Map<String,List<Double>> yAxisData;
+ private Map<String,Integer> yAxisIndex;
+ private Map<String,Object> orientData;
+ * 合同评价信息列表页面
+ @RequiresPermissions("projectreportstatistics:projectreportstatistics:list")
+ public String list(ProjectReportDataCompany projectReportDataCompany, HttpServletRequest request,
+ HttpServletResponse response, Model model,RedirectAttributes redirectAttributes) {
+ int count = UserUtils.getSelectRoleMax();
+ model.addAttribute("roleMax",count);
+ if (count == 4){
+ if (StringUtils.isBlank(projectReportDataCompany.getDate())){
+ projectReportDataCompany.setDate(getYear(new Date()));
+ if (StringUtils.isNotBlank(projectReportDataCompany.getCheck()) && projectReportDataCompany.getCheck().equals("1")){
+ ProjectReportDataMonth projectReportDataMonth = new ProjectReportDataMonth();
+ projectReportDataMonth.setCompanyId(projectReportDataCompany.getCompanyId());
+ projectReportDataMonth.setOfficeId(projectReportDataCompany.getOfficeId());
+ projectReportDataMonth.setDate(projectReportDataCompany.getDate());
+ list = projectReportStatisticsService.findMonthCompanyList(projectReportDataMonth);
+ model.addAttribute("list", list);
+ model.addAttribute("showName", "月份");
+ request.setAttribute("xAxisData", getxAxisData(list, 3));
+ request.setAttribute("yAxisData", getyAxisData(list, 3));
+ request.setAttribute("orientData", getorientData(list, 3));
+ if(StringUtils.isNotBlank(projectReportDataCompany.getCompanyId())){
+ request.setAttribute("backState",1);
+ model.addAttribute("showName", "分公司");
+ List<ProjectReportDataCompany> list = projectReportStatisticsService.findCompanyList(projectReportDataCompany);
+ request.setAttribute("xAxisData", getxAxisData(list, 1));
+ request.setAttribute("yAxisData", getyAxisData(list, 1));
+ request.setAttribute("orientData", getorientData(list, 1));
+ }else if (count == 3){
+ if(isOffice()){//如果所在分公司下没有子公司
+ return "redirect:"+Global.getAdminPath()+"/projectreportstatistics/projectreportstatistics/officeList?repage";
+ List<ProjectReportDataCompany> list = projectReportStatisticsService.findBranchList(projectReportDataCompany);
+ return "modules/projectreportstatistics/projectReportCompanyList";
+ }else if (count == 2){
+ return "redirect:"+Global.getAdminPath()+"/projectreportstatistics/projectreportstatistics/infoList?repage";
+ request.setAttribute("xAxisData",new ArrayList<>());
+ request.setAttribute("yAxisData",new HashMap<String,List<Double>>());
+ request.setAttribute("orientData",new HashMap<String,Object>());
+ model.addAttribute("list", new ArrayList<>());
+ @RequestMapping(value = "officeList")
+ public String officeList(ProjectReportDataOffice projectReportDataOffice, HttpServletRequest request,
+ if (StringUtils.isBlank(projectReportDataOffice.getDate())){
+ Date date = new Date();
+ projectReportDataOffice.setDate(getYear(date));
+ if (StringUtils.isNotBlank(projectReportDataOffice.getCheck()) && projectReportDataOffice.getCheck().equals("1")){
+ projectReportDataMonth.setOfficeId(projectReportDataOffice.getOfficeId());
+ projectReportDataMonth.setCompanyId(projectReportDataOffice.getCompanyId());
+ projectReportDataMonth.setDate(projectReportDataOffice.getDate());
+ List<ProjectReportDataMonth> list = projectReportStatisticsService.findOfficeCompanyList(projectReportDataMonth);
+ if(StringUtils.isNotBlank(projectReportDataOffice.getCompanyId())){
+ List<ProjectReportDataOffice> list = projectReportStatisticsService.findListByOffice(projectReportDataOffice);
+ model.addAttribute("showName", "部门");
+ request.setAttribute("xAxisData", getxAxisData(list, 2));
+ request.setAttribute("yAxisData", getyAxisData(list, 2));
+ request.setAttribute("orientData", getorientData(list, 2));
+ return "modules/projectreportstatistics/projectReportOfficeList";
+ @RequestMapping(value = "infoList")
+ public String infoList(ProjectReportDataInfo projectReportDataInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+ if(StringUtils.isNotBlank(projectReportDataInfo.getOfficeId())){
+ if (StringUtils.isBlank(projectReportDataInfo.getDate())){
+ projectReportDataInfo.setDate(getYear(date));
+ Page<ProjectReportDataInfo> page = projectReportStatisticsService.findPageByInfo(new Page<ProjectReportDataInfo>(request, response),projectReportDataInfo);
+ model.addAttribute("page",page);
+ return "modules/projectreportstatistics/projectReportInfoList";
+ @RequiresPermissions("projectreportstatistics:projectreportstatistics:export")
+ public String exportFile(ProjectReportDataCompany projectReportDataCompany, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ if (StringUtils.isBlank(projectReportDataCompany.getCheck())){
+ String fileName = "合同统计表-分公司"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ String agent = request.getHeader("USER-AGENT");
+ new ExportExcel("合同统计表-分公司", ProjectReportDataCompany.class).setDataList(list).write(response, fileName,agent).dispose();
+ if (StringUtils.isBlank(projectReportDataCompany.getCompanyId()) || StringUtils.isBlank(projectReportDataCompany.getName())){
+ addMessage(redirectAttributes, "导出合同统计表-分公司记录失败!失败信息:"+e.getMessage());
+ return "redirect:"+Global.getAdminPath()+"/projectreportstatistics/projectreportstatistics/list?repage";
+ @RequestMapping(value = "exportOffice", method=RequestMethod.POST)
+ public String exportFileOffice(ProjectReportDataOffice projectReportDataOffice, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ if (StringUtils.isBlank(projectReportDataOffice.getCheck())) {
+ String fileName = "合同统计表-部门" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+ new ExportExcel("合同统计表-部门", ProjectReportDataOffice.class).setDataList(list).write(response, fileName, agent).dispose();
+ String fileName = "合同统计表-部门"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ new ExportExcel("合同统计表-部门", ProjectReportDataOffice.class).setDataList(list).write(response, fileName,agent).dispose();
+ addMessage(redirectAttributes, "导出合同统计表-部门记录失败!失败信息:"+e.getMessage());
+ @RequestMapping(value = "exportInfo", method=RequestMethod.POST)
+ public String exportFileInfo(ProjectReportDataInfo ProjectReportDataInfo, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "合同统计表-明细"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectReportDataInfo> page = projectReportStatisticsService.findPageByInfo(new Page<ProjectReportDataInfo>(request, response),ProjectReportDataInfo);
+ new ExportExcel("合同统计表-明细", ProjectReportDataInfo.class).setDataList(page.getList()).write(response, fileName,agent).dispose();
+ addMessage(redirectAttributes, "导出合同统计表-明细记录失败!失败信息:"+e.getMessage());
+ public List<String> getxAxisData(List list,int type){
+ xAxisData = new ArrayList<String>();
+ if (type == 1){
+ for(ProjectReportDataCompany w:(List<ProjectReportDataCompany>)list){
+ if (!w.getName().equals("合计"))
+ xAxisData.add(w.getName());
+ }else if (type == 2){
+ for(ProjectReportDataOffice w:(List<ProjectReportDataOffice>)list){
+ for(ProjectReportDataMonth w:(List<ProjectReportDataMonth>)list){
+ return xAxisData;
+ public Map<String,List<Double>> getyAxisData(List list,int type){
+ Random random = new Random();
+ yAxisData = new HashMap<String,List<Double>>();
+ List<Double> data = new ArrayList<Double>();
+ data.add((double)w.getReportCount());
+ yAxisData.put("报告数量", data);
+ return yAxisData;
+ //饼图
+ public Map<String,Object> getorientData(List list,int type){
+ orientData = new HashMap<String,Object>();
+ List<Integer> data = new ArrayList<Integer>();
+ orientData.put(w.getName(),w.getReportCount());
+ return orientData;
+ public static String getYear(Date date){
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ String str = format.format(date);
+ return str.substring(0,4);
+ public static Map<String,String> getDate(){
+ Map<String,String> map = new HashMap<>();
+ Calendar cale = null;
+ cale = Calendar.getInstance();
+ int year = cale.get(Calendar.YEAR);
+ int month = cale.get(Calendar.MONTH) + 1;
+ int day = cale.get(Calendar.DATE);
+ int hour = cale.get(Calendar.HOUR_OF_DAY);
+ int minute = cale.get(Calendar.MINUTE);
+ int second = cale.get(Calendar.SECOND);
+ int dow = cale.get(Calendar.DAY_OF_WEEK);
+ int dom = cale.get(Calendar.DAY_OF_MONTH);
+ int doy = cale.get(Calendar.DAY_OF_YEAR);
+ //System.out.println("Current Date: " + cale.getTime());
+ map.put("date",cale.getTime()+"");
+ //System.out.println("Year: " + year);
+ map.put("year",year+"");
+ //System.out.println("Month: " + month);
+ map.put("month",month+"");
+ //System.out.println("Day: " + day);
+ map.put("day",day+"");
+ //System.out.println("Hour: " + hour);
+ map.put("hour",hour+"");
+ //System.out.println("Minute: " + minute);
+ map.put("minute",minute+"");
+ //System.out.println("Second: " + second);
+ map.put("second",second+"");
+ //System.out.println("Day of Week: " + dow);
+ map.put("dow",dow+"");
+ //System.out.println("Day of Month: " + dom);
+ map.put("dom",dom+"");
+ //System.out.println("Day of Year: " + doy);
+ map.put("doy",doy+"");
+ // 获取当月第一天和最后一天
+ String firstday, lastday;
+ // 获取前月的第一天
+ cale.add(Calendar.MONTH, 0);
+ cale.set(Calendar.DAY_OF_MONTH, 1);
+ firstday = format.format(cale.getTime());
+ // 获取前月的最后一天
+ cale.add(Calendar.MONTH, 1);
+ cale.set(Calendar.DAY_OF_MONTH, 0);
+ lastday = format.format(cale.getTime());
+ System.out.println("本月第一天和最后一天分别是 : " + firstday + " and " + lastday);
+ // 获取当前日期字符串
+ Date d = new Date();
+ System.out.println("当前日期字符串1:" + format.format(d));
+ System.out.println("当前日期字符串2:" + year + "/" + month + "/" + day + " "
+ + hour + ":" + minute + ":" + second);
+ map.put("dateStr1",format.format(d));
+ map.put("dateStr2",year + "/" + month + "/" + day + " "
+ //分公司下是否存在子公司
+ public Boolean isOffice(){
+ String companyId= UserUtils.getSelectBranchOffice();
+ List<Office>office= officeDao.getAllBranch(companyId);
+ if(office!=null&&office.size()>0){
+ return false;
+ return true;
+package com.jeeplus.modules.projectcontroltable.dao;
+ * 过程控制表DAO接口
+ * @author 马鹏波
+ * @version 2018-06-08
+public interface ProjectControlTableDao extends CrudDao<ProjectControlTable> {
+ public List<ProjectControlTable> getControlData(ProjectControlTable projectControlTable);
+ public int delControlData(ProjectControlTable projectControlTable);
+ int updatePfId(ProjectControlTable projectControlTable);
+ public List<ProjectControlTable> findListById(ProjectControlTable projectControlTable);
@@ -0,0 +1,176 @@
+package com.jeeplus.modules.projectcontroltable.entity;
+import com.jeeplus.modules.workcommunicaterecord.entity.WorkCommunicateRecord;
+import com.jeeplus.modules.workdevicerecord.entity.WorkDeviceXjRecord;
+import com.jeeplus.modules.workexplore.entity.WorkExplore;
+import com.jeeplus.modules.workhandbill.entity.WorkHandBill;
+import com.jeeplus.modules.workinfolist.entity.WorkInfoList;
+import com.jeeplus.modules.worklog.entity.WorkLog;
+import com.jeeplus.modules.worklog.entity.WorkMeeting;
+import com.jeeplus.modules.workprojectcalc.entity.WorkProjectCalcBuild;
+import com.jeeplus.modules.workprojectcalc.entity.WorkProjectCalcDecor;
+ * 过程控制表Entity
+public class ProjectControlTable extends DataEntity<ProjectControlTable> {
+ private String tName; // 表格名称
+ private String tType; // 表格类型
+ private User tUser; // 负责人
+ private String pfId;
+ private String processName;
+ private WorkDeviceXjRecord workDeviceXjRecord;
+ private WorkInfoList workInfoList;
+ private WorkExplore workExplore;
+ private WorkCommunicateRecord workCommunicateRecord;
+ private List<WorkProjectCalcBuild> workProjectCalcBuildList = Lists.newArrayList();
+ private List<WorkProjectCalcDecor> workProjectCalcDecorList = Lists.newArrayList();
+ private WorkHandBill workHandBill;
+ private WorkLog workLog;
+ private WorkMeeting workMeeting;
+ public ProjectControlTable() {
+ public ProjectControlTable(String id){
+ @ExcelField(title="表格名称", align=2, sort=7)
+ public String gettName() {
+ return tName;
+ public void settName(String tName) {
+ this.tName = tName;
+ @ExcelField(title="表格类型", align=2, sort=8)
+ public String gettType() {
+ return tType;
+ public void settType(String tType) {
+ this.tType = tType;
+ public User gettUser() {
+ return tUser;
+ public void settUser(User tUser) {
+ this.tUser = tUser;
+ public String getPfId() {
+ return pfId;
+ public void setPfId(String pfId) {
+ this.pfId = pfId;
+ public String getProcessName() {
+ return processName;
+ public void setProcessName(String processName) {
+ this.processName = processName;
+ public WorkDeviceXjRecord getWorkDeviceXjRecord() {
+ return workDeviceXjRecord;
+ public void setWorkDeviceXjRecord(WorkDeviceXjRecord workDeviceXjRecord) {
+ this.workDeviceXjRecord = workDeviceXjRecord;
+ public WorkInfoList getWorkInfoList() {
+ return workInfoList;
+ public void setWorkInfoList(WorkInfoList workInfoList) {
+ this.workInfoList = workInfoList;
+ public WorkExplore getWorkExplore() {
+ return workExplore;
+ public void setWorkExplore(WorkExplore workExplore) {
+ this.workExplore = workExplore;
+ public WorkCommunicateRecord getWorkCommunicateRecord() {
+ return workCommunicateRecord;
+ public void setWorkCommunicateRecord(WorkCommunicateRecord workCommunicateRecord) {
+ this.workCommunicateRecord = workCommunicateRecord;
+ public List<WorkProjectCalcBuild> getWorkProjectCalcBuildList() {
+ return workProjectCalcBuildList;
+ public void setWorkProjectCalcBuildList(List<WorkProjectCalcBuild> workProjectCalcBuildList) {
+ this.workProjectCalcBuildList = workProjectCalcBuildList;
+ public List<WorkProjectCalcDecor> getWorkProjectCalcDecorList() {
+ return workProjectCalcDecorList;
+ public void setWorkProjectCalcDecorList(List<WorkProjectCalcDecor> workProjectCalcDecorList) {
+ this.workProjectCalcDecorList = workProjectCalcDecorList;
+ public WorkHandBill getWorkHandBill() {
+ return workHandBill;
+ public void setWorkHandBill(WorkHandBill workHandBill) {
+ this.workHandBill = workHandBill;
+ public WorkLog getWorkLog() {
+ return workLog;
+ public void setWorkLog(WorkLog workLog) {
+ this.workLog = workLog;
+ public WorkMeeting getWorkMeeting() {
+ return workMeeting;
+ public void setWorkMeeting(WorkMeeting workMeeting) {
+ this.workMeeting = workMeeting;
@@ -0,0 +1,743 @@
+package com.jeeplus.modules.projectcontroltable.service;
+import com.google.common.base.Strings;
+import com.jeeplus.modules.projectcontroltable.dao.ProjectControlTableDao;
+import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.workcommunicaterecord.dao.WorkCommunicateContentDao;
+import com.jeeplus.modules.workcommunicaterecord.dao.WorkCommunicateRecordDao;
+import com.jeeplus.modules.workcommunicaterecord.entity.WorkCommunicateContent;
+import com.jeeplus.modules.workcommunicaterecord.service.WorkCommunicateContentService;
+import com.jeeplus.modules.workcommunicaterecord.service.WorkCommunicateRecordService;
+import com.jeeplus.modules.workdevicerecord.dao.WorkDeviceRecordDao;
+import com.jeeplus.modules.workdevicerecord.dao.WorkDeviceXjRecordDao;
+import com.jeeplus.modules.workdevicerecord.entity.WorkDeviceRecord;
+import com.jeeplus.modules.workdevicerecord.service.WorkDeviceRecordService;
+import com.jeeplus.modules.workdevicerecord.service.WorkDeviceXjRecordService;
+import com.jeeplus.modules.workexplore.dao.WorkExploreDao;
+import com.jeeplus.modules.workexplore.service.WorkExploreService;
+import com.jeeplus.modules.workhandbill.dao.WorkHandBillDao;
+import com.jeeplus.modules.workhandbill.dao.WorkHandBillDetailDao;
+import com.jeeplus.modules.workhandbill.entity.WorkHandBillDetail;
+import com.jeeplus.modules.workhandbill.service.WorkHandBillDetailService;
+import com.jeeplus.modules.workhandbill.service.WorkHandBillService;
+import com.jeeplus.modules.workinfolist.dao.WorkInfoListDao;
+import com.jeeplus.modules.workinfolist.service.WorkInfoListService;
+import com.jeeplus.modules.worklog.dao.WorkLogDao;
+import com.jeeplus.modules.worklog.dao.WorkMeetingDao;
+import com.jeeplus.modules.workprojectcalc.dao.WorkProjectCalcBuildDao;
+import com.jeeplus.modules.workprojectcalc.dao.WorkProjectCalcDecorDao;
+import com.jeeplus.modules.workprojectcalc.service.WorkProjectCalcBuildService;
+import com.jeeplus.modules.workprojectcalc.service.WorkProjectCalcDecorService;
+ * 过程控制表Service
+public class ProjectControlTableService extends CrudService<ProjectControlTableDao, ProjectControlTable> {
+ private ProjectControlTableDao projectControlTableDao;
+ private WorkHandBillDetailDao workHandBillDetailDao;
+ private WorkHandBillDao workHandBillDao;
+ private WorkExploreDao workExploreDao;
+ private WorkInfoListDao workInfoListDao;
+ private WorkDeviceXjRecordDao workDeviceXjRecordDao;
+ private WorkProjectCalcDecorDao workProjectCalcDecorDao;
+ private WorkProjectCalcBuildDao workProjectCalcBuildDao;
+ private WorkDeviceRecordDao workDeviceRecordDao;
+ private WorkCommunicateRecordDao workCommunicateRecordDao;
+ private WorkCommunicateContentDao workCommunicateContentDao;
+ private WorkattachmentService workattachmentService;
+ private WorkHandBillService workHandBillService;
+ private WorkHandBillDetailService workHandBillDetailService;
+ private WorkDeviceXjRecordService workDeviceXjRecordService;
+ private WorkDeviceRecordService workDeviceRecordService;
+ private WorkExploreService workExploreService;
+ private WorkInfoListService workInfoListService;
+ private WorkCommunicateRecordService workCommunicateRecordService;
+ private WorkCommunicateContentService workCommunicateContentService;
+ private WorkProjectCalcDecorService workProjectCalcDecorService;
+ private WorkProjectCalcBuildService workProjectCalcBuildService;
+ private WorkLogDao workLogDao;
+ private WorkMeetingDao workMeetingDao;
+ public ProjectControlTable get(String id) {
+ public List<ProjectControlTable> findList(ProjectControlTable projectControlTable) {
+ return super.findList(projectControlTable);
+ public Page<ProjectControlTable> findPage(Page<ProjectControlTable> page, ProjectControlTable projectControlTable) {
+ return super.findPage(page, projectControlTable);
+ public void save(ProjectControlTable projectControlTable) {
+ super.save(projectControlTable);
+ String s = projectControlTable.gettType();
+ if ("01".equals(s)) {
+ execDeviceRecord(projectControlTable);
+ } else if ("02".equals(s)) {
+ execInfoList(projectControlTable);
+ } else if ("03".equals(s)) {
+ execExplore(projectControlTable);
+ } else if ("04".equals(s)) {
+ execCommunicate(projectControlTable);
+ } else if ("05".equals(s)) {
+ execproject(projectControlTable);
+ } else if ("06".equals(s)) {
+ execHandBill(projectControlTable);
+ } else if("07".equals(s)){
+ execLog(projectControlTable);
+ } else if("08".equals(s)){
+ execMeeting(projectControlTable);
+ List<Workattachment> workAttachments = projectControlTable.getWorkAttachments();
+ if(workAttachments != null) {
+ //附件信息
+ for (Workattachment workattachment : workAttachments) {
+ if (WorkClientAttachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
+ workattachment.setAttachmentId(projectControlTable.getId());
+ if ("01".equals(s)) { //设备询价记录
+ workattachment.setAttachmentFlag("88");
+ } else if ("02".equals(s)) { //补充资料
+ workattachment.setAttachmentFlag("89");
+ } else if ("03".equals(s)) { //现场踏勘
+ workattachment.setAttachmentFlag("90");
+ } else if ("04".equals(s)) { //沟通记录
+ workattachment.setAttachmentFlag("91");
+ } else if ("05".equals(s)) { //工程量计算底稿
+ workattachment.setAttachmentFlag("92");
+ } else if ("06".equals(s)) { // 交接单
+ workattachment.setAttachmentFlag("93");
+ } else if("07".equals(s)){ //日志
+ } else if("08".equals(s)){ //会议
+ if (Strings.isNullOrEmpty(workattachment.getId()) || "null".equals(workattachment.getId())) {
+ * 执行设备询价记录
+ * @param projectControlTable
+ public void execDeviceRecord(ProjectControlTable projectControlTable){
+ WorkDeviceXjRecord workDeviceXjRecord = projectControlTable.getWorkDeviceXjRecord();
+ if(workDeviceXjRecord != null){
+ if(WorkDeviceXjRecord.DEL_FLAG_NORMAL.equals(workDeviceXjRecord.getDelFlag())){
+ if(workDeviceXjRecord.getIsNewRecord()){
+ workDeviceXjRecord.setProjectId(projectControlTable.getId());
+ workDeviceXjRecord.preInsert();
+ workDeviceXjRecordDao.insert(workDeviceXjRecord);
+ workDeviceXjRecord.preUpdate();
+ workDeviceXjRecordDao.update(workDeviceXjRecord);
+ workDeviceXjRecordDao.delete(workDeviceXjRecord);
+ List<WorkDeviceRecord> workDeviceRecordList = workDeviceXjRecord.getWorkDeviceRecordList();
+ if(workDeviceRecordList != null){
+ for(WorkDeviceRecord workDeviceRecord:workDeviceRecordList){
+ if(WorkDeviceRecord.DEL_FLAG_NORMAL.equals(workDeviceRecord.getDelFlag())){
+ workDeviceRecord.setDeviceXjId(workDeviceXjRecord.getId());
+ if(workDeviceRecord.getIsNewRecord()){
+ workDeviceRecord.preInsert();
+ workDeviceRecordDao.insert(workDeviceRecord);
+ workDeviceRecord.preUpdate();
+ workDeviceRecordDao.update(workDeviceRecord);
+ workDeviceRecordDao.delete(workDeviceRecord);
+ * 执行补充资料清单
+ public void execInfoList(ProjectControlTable projectControlTable){
+ WorkInfoList workInfoList = projectControlTable.getWorkInfoList();
+ if(workInfoList != null){
+ if(workInfoList.DEL_FLAG_NORMAL.equals(workInfoList.getDelFlag())){
+ if(workInfoList.getIsNewRecord()){
+ workInfoList.setProjectId(projectControlTable.getId());
+ workInfoList.preInsert();
+ workInfoListDao.insert(workInfoList);
+ workInfoList.preUpdate();
+ workInfoListDao.update(workInfoList);
+ workInfoListDao.delete(workInfoList);
+ * 现场踏勘记录
+ public void execExplore(ProjectControlTable projectControlTable){
+ WorkExplore workExplore = projectControlTable.getWorkExplore();
+ if(workExplore != null){
+ if(WorkExplore.DEL_FLAG_NORMAL.equals(workExplore.getDelFlag())){
+ if(workExplore.getIsNewRecord()){
+ workExplore.setProjectId(projectControlTable.getId());
+ workExplore.preInsert();
+ workExploreDao.insert(workExplore);
+ workExplore.preUpdate();
+ workExploreDao.update(workExplore);
+ workExploreDao.delete(workExplore);
+ * 沟通记录表
+ public void execCommunicate(ProjectControlTable projectControlTable){
+ WorkCommunicateRecord workCommunicateRecord = projectControlTable.getWorkCommunicateRecord();
+ if(workCommunicateRecord != null){
+ if(WorkCommunicateRecord.DEL_FLAG_NORMAL.equals(workCommunicateRecord.getDelFlag())){
+ if(workCommunicateRecord.getIsNewRecord()){
+ workCommunicateRecord.setProjectId(projectControlTable.getId());
+ workCommunicateRecord.preInsert();
+ workCommunicateRecordDao.insert(workCommunicateRecord);
+ workCommunicateRecord.preUpdate();
+ workCommunicateRecordDao.update(workCommunicateRecord);
+ workCommunicateRecordDao.delete(workCommunicateRecord);
+ List<WorkCommunicateContent> workCommunicateContentList = workCommunicateRecord.getWorkCommunicateContentList();
+ if(workCommunicateContentList != null){
+ for(WorkCommunicateContent workCommunicateContent:workCommunicateContentList){
+ if(WorkCommunicateContent.DEL_FLAG_NORMAL.equals(workCommunicateContent.getDelFlag())){
+ workCommunicateContent.setCommunicateId(workCommunicateRecord.getId());
+ if(workCommunicateContent.getIsNewRecord()){
+ workCommunicateContent.preInsert();
+ workCommunicateContentDao.insert(workCommunicateContent);
+ workCommunicateContent.preUpdate();
+ workCommunicateContentDao.update(workCommunicateContent);
+ workCommunicateContentDao.delete(workCommunicateContent);
+ * 工程量计算底稿
+ public void execproject(ProjectControlTable projectControlTable){
+ List<WorkProjectCalcDecor> workProjectCalcDecorList = projectControlTable.getWorkProjectCalcDecorList();
+ if(workProjectCalcDecorList != null){
+ for(WorkProjectCalcDecor workProjectCalcDecor:workProjectCalcDecorList){
+ if(WorkProjectCalcDecor.DEL_FLAG_NORMAL.equals(workProjectCalcDecor.getDelFlag())){
+ workProjectCalcDecor.setProjectId(projectControlTable.getId());
+ if(workProjectCalcDecor.getIsNewRecord()){
+ workProjectCalcDecor.preInsert();
+ workProjectCalcDecorDao.insert(workProjectCalcDecor);
+ workProjectCalcDecor.preUpdate();
+ workProjectCalcDecorDao.update(workProjectCalcDecor);
+ workProjectCalcDecorDao.delete(workProjectCalcDecor);
+ List<WorkProjectCalcBuild> workProjectCalcBuildList = projectControlTable.getWorkProjectCalcBuildList();
+ if(workProjectCalcBuildList != null){
+ for(WorkProjectCalcBuild workProjectCalcBuild:workProjectCalcBuildList){
+ if(WorkProjectCalcBuild.DEL_FLAG_NORMAL.equals(workProjectCalcBuild.getDelFlag())){
+ workProjectCalcBuild.setProjectId(projectControlTable.getId());
+ if(workProjectCalcBuild.getIsNewRecord()){
+ workProjectCalcBuild.preInsert();
+ workProjectCalcBuildDao.insert(workProjectCalcBuild);
+ workProjectCalcBuild.preUpdate();
+ workProjectCalcBuildDao.update(workProjectCalcBuild);
+ workProjectCalcBuildDao.delete(workProjectCalcBuild);
+ * 日志
+ public void execLog(ProjectControlTable projectControlTable){
+ WorkLog workLog = projectControlTable.getWorkLog();
+ if(workLog != null){
+ if(WorkLog.DEL_FLAG_NORMAL.equals(workLog.getDelFlag())){
+ if(workLog.getIsNewRecord()){
+ workLog.setProjectId(projectControlTable.getId());
+ workLog.preInsert();
+ workLogDao.insert(workLog);
+ workLog.preUpdate();
+ workLogDao.update(workLog);
+ workLogDao.delete(workLog);
+ * 会议
+ public void execMeeting(ProjectControlTable projectControlTable){
+ WorkMeeting workMeeting = projectControlTable.getWorkMeeting();
+ if(workMeeting != null){
+ if(WorkLog.DEL_FLAG_NORMAL.equals(workMeeting.getDelFlag())){
+ if(workMeeting.getIsNewRecord()){
+ workMeeting.setProjectId(projectControlTable.getId());
+ workMeeting.preInsert();
+ workMeetingDao.insert(workMeeting);
+ workMeeting.preUpdate();
+ workMeetingDao.update(workMeeting);
+ workMeetingDao.delete(workMeeting);
+ * 交接单
+ public void execHandBill(ProjectControlTable projectControlTable){
+ WorkHandBill workHandBill = projectControlTable.getWorkHandBill();
+ if(workHandBill != null){
+ if(WorkHandBill.DEL_FLAG_NORMAL.equals(workHandBill.getDelFlag())){
+ if(workHandBill.getIsNewRecord()){
+ workHandBill.setProjectId(projectControlTable.getId());
+ workHandBill.preInsert();
+ workHandBillDao.insert(workHandBill);
+ workHandBill.preUpdate();
+ workHandBillDao.update(workHandBill);
+ workHandBillDao.delete(workHandBill);
+ List<WorkHandBillDetail> workHandBillDetailList = workHandBill.getWorkHandBillDetailList();
+ if(workHandBillDetailList != null){
+ for(WorkHandBillDetail workHandBillDetail:workHandBillDetailList){
+ if(WorkHandBillDetail.DEL_FLAG_NORMAL.equals(workHandBillDetail.getDelFlag())){
+ workHandBillDetail.setBillId(workHandBill.getId());
+ if(workHandBillDetail.getIsNewRecord()){
+ workHandBillDetail.preInsert();
+ workHandBillDetailDao.insert(workHandBillDetail);
+ workHandBillDetail.preUpdate();
+ workHandBillDetailDao.update(workHandBillDetail);
+ workHandBillDetailDao.delete(workHandBillDetail);
+ public void delete(ProjectControlTable projectControlTable) {
+ super.delete(projectControlTable);
+ public List<ProjectControlTable> getControlData(String projectId,String projectContentDataId){
+ ProjectControlTable projectControlTable = new ProjectControlTable();
+ projectControlTable.setPfId(projectId);
+ List<ProjectControlTable> controlData = projectControlTableDao.getControlData(projectControlTable);
+ projectControlTable.setPfId(projectContentDataId);
+ List<ProjectControlTable> controlData1 = projectControlTableDao.getControlData(projectControlTable);
+ controlData.addAll(controlData1);
+ return controlData;
+ public boolean deleteAllData(String projectId,String projectContentDataId){
+ ProjectControlTable existRecord = null;
+ //表格控制临时数据
+ List<ProjectControlTable> controlData = Lists.newArrayList();
+ if(!Strings.isNullOrEmpty(projectContentDataId)){
+ projectControlTable.setId(projectContentDataId);
+ controlData = projectControlTableDao.findListById(projectControlTable);
+ existRecord = controlData.get(0);
+ controlData = projectControlTableDao.getControlData(projectControlTable);
+ boolean flag = false;
+ for (ProjectControlTable projectControlTables:controlData){
+ String tableId = projectControlTables.getId();
+ String s = projectControlTables.gettType();
+ //删除临时的表格控制数据
+ int i = projectControlTableDao.delete(projectControlTables);
+ if(i > 0) {
+ if ("06".equals(s)) {
+ //删除交接单数据
+ WorkHandBill workHandBill = new WorkHandBill();
+ workHandBill.setProjectId(tableId);
+ WorkHandBill listByProjectId = workHandBillDao.findListByProjectId(workHandBill);
+ int i1 = workHandBillDao.deleteByProId(workHandBill);
+ if(i1 > 0){
+ //交接单详情数据
+ WorkHandBillDetail workHandBillDetail = new WorkHandBillDetail();
+ workHandBillDetail.setBillId(listByProjectId.getId());
+ int i2 = workHandBillDetailDao.deleteByBillId(workHandBillDetail);
+ if(i2 >= 0){
+ flag = true;
+ List<Workattachment> listOfAttachment = workattachmentDao.getListOfAttachment(tableId, "93");
+ for (Workattachment workattachment:listOfAttachment){
+ workattachmentService.deleteFileFromAliyun(workattachment,workattachment.getUrl());
+ }else if("02".equals(s)){
+ //删除补充资料清单
+ WorkInfoList workInfoList = new WorkInfoList();
+ workInfoList.setProjectId(tableId);
+ int i3 = workInfoListDao.deleteByProId(workInfoList);
+ if(i3 > 0){
+ List<Workattachment> listOfAttachment = workattachmentDao.getListOfAttachment(tableId, "89");
+ }else if("03".equals(s)){
+ //现场踏勘记录
+ WorkExplore workExplore = new WorkExplore();
+ workExplore.setProjectId(tableId);
+ int i4 = workExploreDao.deleteByProId(workExplore);
+ if(i4 > 0){
+ List<Workattachment> listOfAttachment = workattachmentDao.getListOfAttachment(tableId, "90");
+ }else if("04".equals(s)){
+ //删除沟通记录表
+ WorkCommunicateRecord workCommunicateRecord = new WorkCommunicateRecord();
+ workCommunicateRecord.setProjectId(tableId);
+ WorkCommunicateRecord workRecord = workCommunicateRecordDao.findListByProId(workCommunicateRecord);
+ int i5 = workCommunicateRecordDao.deleteByProId(workCommunicateRecord);
+ if(i5 > 0){
+ WorkCommunicateContent workCommunicateContent = new WorkCommunicateContent();
+ workCommunicateContent.setCommunicateId(workRecord.getId());
+ int i2 = workCommunicateContentDao.deleteByProId(workCommunicateContent);
+ List<Workattachment> listOfAttachment = workattachmentDao.getListOfAttachment(tableId, "91");
+ }else if("05".equals(s)){
+ //删除工程量计算底稿
+ boolean f = false;
+ boolean f1 = false;
+ WorkProjectCalcBuild workProjectCalcBuild = new WorkProjectCalcBuild();
+ workProjectCalcBuild.setProjectId(tableId);
+ int i6 = workProjectCalcBuildDao.deleteByProId(workProjectCalcBuild);
+ if(i6 >= 0){
+ f = true;
+ WorkProjectCalcDecor workProjectCalcDecor = new WorkProjectCalcDecor();
+ workProjectCalcDecor.setProjectId(tableId);
+ int i7 = workProjectCalcDecorDao.deleteByProId(workProjectCalcDecor);
+ if(i7 >= 0){
+ f1 = true;
+ List<Workattachment> listOfAttachment = workattachmentDao.getListOfAttachment(tableId, "92");
+ if(f && f1){
+ }else if("01".equals(s)){
+ //删除设备询价记录
+ WorkDeviceXjRecord workDeviceXjRecord = new WorkDeviceXjRecord();
+ workDeviceXjRecord.setProjectId(tableId);
+ WorkDeviceXjRecord listByXjId = workDeviceXjRecordDao.findListByXjId(workDeviceXjRecord);
+ int i8 = workDeviceXjRecordDao.deleteByProId(workDeviceXjRecord);
+ if(i8 > 0){
+ WorkDeviceRecord workDeviceRecord = new WorkDeviceRecord();
+ workDeviceRecord.setDeviceXjId(listByXjId.getId());
+ int i2 = workDeviceRecordDao.deleteByProId(workDeviceRecord);
+ List<Workattachment> listOfAttachment = workattachmentDao.getListOfAttachment(tableId, "88");
+ }else if("07".equals(s)){
+ //日志
+ WorkLog workLog = new WorkLog();
+ workLog.setProjectId(tableId);
+ int i4 = workLogDao.deleteByProId(workLog);
+ }else if("08".equals(s)){
+ //会议
+ WorkMeeting workMeeting = new WorkMeeting();
+ workMeeting.setProjectId(tableId);
+ int i4 = workMeetingDao.deleteByProId(workMeeting);
+ if(existRecord!=null){
+ this.deleteCtrlMenu(existRecord);
+ return flag;
+ public ProjectControlTable getById(String infoId) {
+ ProjectControlTable projectControlTable = this.get(infoId);
+ if(projectControlTable!=null) {
+ projectControlTable.setWorkAttachments(workattachmentService.getListByAttachmentIdAndFlag(infoId, ""));
+ return projectControlTable;
+ private void deleteCtrlMenu(ProjectControlTable controlTable){
+ Projectcontentinfo parent = projectcontentinfoDao.getByInfoId(controlTable.getPfId());
+ if(parent==null)return;
+ select2.setName(controlTable.getProcessName());
+ select2.setInfoId(controlTable.getId());
+ public String getDetailInfo(ProjectControlTable projectControlTable) {
+ if(projectControlTable==null){
+ String flag = "";
+ workHandBill = workHandBillService.findListByProjectId(workHandBill);
+ List<WorkHandBillDetail> listByBillId = workHandBillDetailService.findListByBillId(workHandBillDetail);
+ workHandBill.setWorkHandBillDetailList(listByBillId);
+ projectControlTable.setWorkHandBill(workHandBill);
+ flag = "93";
+ WorkInfoList listByProId = workInfoListService.findListByProId(workInfoList);
+ projectControlTable.setWorkInfoList(listByProId);
+ flag = "89";
+ WorkExplore listByProId = workExploreService.findListByProId(workExplore);
+ projectControlTable.setWorkExplore(listByProId);
+ flag = "90";
+ workCommunicateRecord = workCommunicateRecordService.findListByProId(workCommunicateRecord);
+ List<WorkCommunicateContent> listByCommunicateId = workCommunicateContentService.findListByCommunicateId(workCommunicateContent);
+ workCommunicateRecord.setWorkCommunicateContentList(listByCommunicateId);
+ projectControlTable.setWorkCommunicateRecord(workCommunicateRecord);
+ flag = "91";
+ List<WorkProjectCalcBuild> list1 = workProjectCalcBuildService.findList(workProjectCalcBuild);
+ projectControlTable.setWorkProjectCalcBuildList(list1);
+ List<WorkProjectCalcDecor> list = workProjectCalcDecorService.findList(workProjectCalcDecor);
+ projectControlTable.setWorkProjectCalcDecorList(list);
+ flag = "92";
+ } else if ("01".equals(s)) {
+ workDeviceXjRecord = workDeviceXjRecordService.findListByXjId(workDeviceXjRecord);
+ List<WorkDeviceRecord> listByXjId1 = workDeviceRecordService.findListByXjId(workDeviceRecord);
+ workDeviceXjRecord.setWorkDeviceRecordList(listByXjId1);
+ projectControlTable.setWorkDeviceXjRecord(workDeviceXjRecord);
+ flag = "88";
+ }else if ("07".equals(s)) {
+ WorkLog listByProId = workLogDao.findListByProId(workLog);
+ projectControlTable.setWorkLog(listByProId);
+ WorkMeeting listByProId = workMeetingDao.findListByProId(workMeeting);
+ projectControlTable.setWorkMeeting(listByProId);
@@ -0,0 +1,286 @@
+package com.jeeplus.modules.projectcontroltable.web;
+import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
+import com.jeeplus.modules.sys.entity.Area;
+ * 过程控制表Controller
+@RequestMapping(value = "${adminPath}/projectcontroltable/projectControlTable")
+public class ProjectControlTableController extends BaseController {
+ private ProjectControlTableService projectControlTableService;
+ public ProjectControlTable get(@RequestParam(required=false) String id) {
+ ProjectControlTable entity = null;
+ entity = projectControlTableService.get(id);
+ entity = new ProjectControlTable();
+ * 过程控制表列表页面
+// @RequiresPermissions("projectcontroltable:projectControlTable:list")
+ public String list(ProjectControlTable projectControlTable, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectControlTable> page = projectControlTableService.findPage(new Page<ProjectControlTable>(request, response), projectControlTable);
+ return "modules/projectcontroltable/projectControlTableList";
+ * 查看,增加,编辑过程控制表表单页面
+// @RequiresPermissions(value={"projectcontroltable:projectControlTable:view","projectcontroltable:projectControlTable:add","projectcontroltable:projectControlTable:edit"},logical=Logical.OR)
+ public String form(ProjectControlTable projectControlTable, HttpServletRequest request,Model model) {
+ if("view".equals(view)){
+ view = "modules/projectcontroltable/projectControlTableFormView";
+ if(projectControlTable.getPfId()!= null){
+ ProjectRecords projectRecords = projectRecordsService.get(projectControlTable.getPfId());
+ Area area = projectRecords.getArea();
+ String city = projectRecords.getCity();
+ model.addAttribute("city",city);
+ model.addAttribute("area", area);
+ if(!projectControlTable.getIsNewRecord()){
+ String flag = projectControlTableService.getDetailInfo(projectControlTable);
+ List<Workattachment> listByAttachmentIdAndFlag = workattachmentService.getListByAttachmentIdAndFlag(projectControlTable.getId(), flag);
+ projectControlTable.setWorkAttachments(listByAttachmentIdAndFlag);
+ model.addAttribute("projectControlTable", projectControlTable);
+ * 保存过程控制表
+// @RequiresPermissions(value={"projectcontroltable:projectControlTable:add","projectcontroltable:projectControlTable:edit"},logical=Logical.OR)
+ public String save(ProjectControlTable projectControlTable, HttpServletRequest request,Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, projectControlTable)){
+ return form(projectControlTable, request,model);
+ if(!projectControlTable.getIsNewRecord()){//编辑表单保存
+ ProjectControlTable t = projectControlTableService.get(projectControlTable.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectControlTable, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectControlTableService.save(t);//保存
+ String id = UserUtils.getSelectCompany().getId();
+ String userId = UserUtils.getUser().getId(); //当前登陆人
+ String projectId = id + userId + projectControlTable.getPfId(); //项目编号
+ projectControlTableService.save(projectControlTable);//保存
+ addMessage(redirectAttributes, "保存过程控制表成功");
+ return projectControlTable.getId();
+ * 删除过程控制表
+// @RequiresPermissions("projectcontroltable:projectControlTable:del")
+ public String delete(ProjectControlTable projectControlTable, RedirectAttributes redirectAttributes) {
+ projectControlTableService.delete(projectControlTable);
+ addMessage(redirectAttributes, "删除过程控制表成功");
+ return "redirect:"+Global.getAdminPath()+"/projectcontroltable/projectControlTable/?repage";
+ * 批量删除过程控制表
+ projectControlTableService.delete(projectControlTableService.get(id));
+ @RequiresPermissions("projectcontroltable:projectControlTable:export")
+ public String exportFile(ProjectControlTable projectControlTable, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "过程控制表"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<ProjectControlTable> page = projectControlTableService.findPage(new Page<ProjectControlTable>(request, response, -1), projectControlTable);
+ new ExportExcel("过程控制表", ProjectControlTable.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出过程控制表记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("projectcontroltable:projectControlTable:import")
+ List<ProjectControlTable> list = ei.getDataList(ProjectControlTable.class);
+ for (ProjectControlTable projectControlTable : list){
+ projectControlTableService.save(projectControlTable);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条过程控制表记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条过程控制表记录"+failureMsg);
+ addMessage(redirectAttributes, "导入过程控制表失败!失败信息:"+e.getMessage());
+ * 下载导入过程控制表数据模板
+ String fileName = "过程控制表数据导入模板.xlsx";
+ List<ProjectControlTable> list = Lists.newArrayList();
+ new ExportExcel("过程控制表数据", ProjectControlTable.class, 1).setDataList(list).write(response, fileName).dispose();
+ @RequestMapping("getControlData")
+ public Map<Object,Object> getControlData(HttpServletRequest request){
+ Map<Object,Object> map = new HashMap<>();
+ String projectId = request.getParameter("projectId");
+ String projectContentId = request.getParameter("proId");
+ String userId = UserUtils.getUser().getId();
+ projectId = id+userId+projectId;
+ List<ProjectControlTable> controlData = projectControlTableService.getControlData(projectId,projectContentId);
+ ProjectContentData projectContentData = new ProjectContentData();
+ projectContentData.setProjectControlTableList(controlData);
+ map.put("list",projectContentData);
+ * 删除所有数据
+ * @param request
+ @RequestMapping("delControlData")
+ public Map<Object,Object> delControlData(HttpServletRequest request){
+ String flag = request.getParameter("flag");
+ String projectContentId = request.getParameter("projectContentId");
+ //点击删除 ,不是初始化删除时
+ boolean b = false;
+ if(!"del".equals(flag)){
+ b = projectControlTableService.deleteAllData(projectId,"");
+ b = projectControlTableService.deleteAllData(projectId,projectContentId);
+ map.put("flag",b);
+package com.jeeplus.modules.projectrecord.dao;
+import com.jeeplus.modules.workprequalification.entity.WorkProjectLinkman;
+public interface ProjectClientLinkmanDao {
+ public void batchInsert(Map map);
+ public void deleteProjectLinkmans(@Param("projectId") String projectId,@Param("isEntrust")int isEntrust);
+ * 根据姓名和委托方(office)查询联系人详细信息
+ * @param workClientLinkman
+ public WorkClientLinkman getLinkManByNameAndOffice(WorkClientLinkman workClientLinkman);
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordsAlter;
+ * 项目登记DAO接口
+ * @author ppt
+ * @version 2018-05-02
+public interface ProjectRecordsAlterDao extends CrudDao<ProjectRecordsAlter> {
+ void updateProcessIdAndStatus(ProjectRecordsAlter projectRecords);
+ void updateSelectiveById(ProjectRecordsAlter projectRecords);
+ int countAlter(String projectId);
@@ -0,0 +1,33 @@
+public interface ProjectRecordsDao extends CrudDao<ProjectRecords> {
+ void updateProcessIdAndStatus(ProjectRecords projectRecords);
+ void updateSelectiveById(ProjectRecords projectRecords);
+ List<ProjectRecords> findListByStatus(ProjectRecords projectRecords);
+ void updateSelectiveByProjectId(ProjectRecords records);
+ ProjectRecords findUseableByProjectId(String projectId);
+ List<ProjectRecords> findPageByRe(ProjectRecords records);
+ int queryCount(ProjectRecords records);
+ int queryCountByStatus(ProjectRecords records);
@@ -0,0 +1,30 @@
+import com.jeeplus.modules.workstaff.entity.WorkStaffBasicInfo;
+public interface WorkProjectUserDao {
+ public void deleteProjectMembers(@Param("projectId") String projectId, @Param("isMaster")String isMaster );
+ public List<User> isDelFalg(@Param("projectId") String projectId, @Param("delFlag")String delFlag );
+ public int insertUsers(ProjectRecords records);
+ public int deleteUsers(ProjectRecords records);
+ List<User> queryProjectUsers(@Param("projectId")String projectId, @Param("isMaster")String isMaster);
+ List<User> projectUsers(@Param("projectId")String projectId);
+ List<User> queryAllProjectUsers(@Param("projectId")String projectId);
+ void deleteProjectMasterMembers(HashMap<String, Object> map);
+ int reInsertUser(ProjectRecords projectRecords);
+// int reInsertUser(@Param("projectId")String projectId,@Param("userId")String userId);
@@ -0,0 +1,572 @@
+package com.jeeplus.modules.projectrecord.entity;
+import org.hibernate.validator.constraints.NotBlank;
+ * 项目登记Entity
+public class ProjectRecords extends ActEntity<ProjectRecords> {
+ public static final String SERIAL_BIZCODE ="1";
+ @NotNull(message = "合同信息不能为空")
+ private WorkContractInfo workContractInfo; // 合同id
+ private String projectId; // 项目编号
+ @NotBlank(message = "项目名称不能为空")
+ private String scaleType; // 规模类型
+ private String scaleUnit; // 规模单位
+ private Double scaleQuantity; // 规模数量
+ private Area area; // 项目所在地
+ private String projectSite; // 建设地点
+ private String province; //项目所在省
+ private String city; //项目所在市
+ private String county;//项目所在区
+ private String projectStructure; //工程结构
+ private String onGroundNum; //地上层数
+ private String underGroundNum; //地下层数
+ private String buildingScale; //建筑规模
+ private String measuringUnit; //规模单位
+ private String projectUse; //工程用途
+ private Double installFees; //安装造价
+ private Double buildingFees; //土建造价
+ private Double buildingPercent; //土建百分比
+ private Double installPercent; //安装百分比
+ private Double unitFees; //单位造价
+ private Double buildingUnitFees; //土建单位造价
+ private Double installUnitFees; //安装单位造价
+ private Double totalFees; //总合同额
+ private ProjectReportData reportData;//报告
+ public ProjectReportData getReportData() {
+ return reportData;
+ public void setReportData(ProjectReportData reportData) {
+ this.reportData = reportData;
+ @NotNull(message = "委托方联系人不能为空")
+ private List<WorkClientLinkman> workClientLinkmanList; // 委托方联系人
+ private List<WorkClientLinkman> workConstructionLinkmanList; // 施工方及联系人
+ @NotBlank(message = "工程概况不能为空")
+ private String projectDesc; // 工程概况
+ @NotNull(message = "项目负责人不能为空")
+ private List<User> projectLeaders; //项目负责人
+ private List<User> projectMembers; //项目组成员
+ private String leaderNameStr;
+ private String leaderIds;
+ private String memberNameStr;
+ private String memberIds;
+ private String processInstanceId;
+ private Office company;
+ private Office office;
+ private Integer projectStatus;//项目状态
+ private String auditType;
+ private String alterProcessId;
+ private String userIds;
+ private String delUserIds;
+ private List<User> users;
+ private String userId;
+ private Date beginDate;
+ private int membercount;
+ private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
+ private List<ProjectReportData> projectReportData = Lists.newArrayList();
+ public ProjectRecords() {
+ public ProjectRecords(String id){
+ public WorkContractInfo getWorkContractInfo() {
+ return workContractInfo;
+ public void setWorkContractInfo(WorkContractInfo contract) {
+ this.workContractInfo = contract;
+ @ExcelField(title="项目编号", align=2, sort=1)
+ @ExcelField(title="项目名称", align=2, sort=2)
+ @ExcelField(title="规模类型", align=2, sort=9)
+ public String getScaleType() {
+ return scaleType;
+ public void setScaleType(String scaleType) {
+ this.scaleType = scaleType;
+ @ExcelField(title="规模单位", align=2, sort=10)
+ public String getScaleUnit() {
+ return scaleUnit;
+ public void setScaleUnit(String scaleUnit) {
+ this.scaleUnit = scaleUnit;
+ @ExcelField(title="规模数量", align=2, sort=11)
+ public Double getScaleQuantity() {
+ return scaleQuantity;
+ public void setScaleQuantity(Double scaleQuantity) {
+ this.scaleQuantity = scaleQuantity;
+ @ExcelField(title="项目所在地", align=2, sort=12)
+ public Area getArea() {
+ return area;
+ public void setArea(Area area) {
+ this.area = area;
+ @ExcelField(title="建设地点", align=2, sort=13)
+ public String getProjectSite() {
+ return projectSite;
+ public void setProjectSite(String projectSite) {
+ this.projectSite = projectSite;
+ public List<WorkClientLinkman> getWorkClientLinkmanList() {
+ return workClientLinkmanList;
+ public void setWorkClientLinkmanList(List<WorkClientLinkman> workClientLinkmanList) {
+ this.workClientLinkmanList = workClientLinkmanList;
+ @ExcelField(title="工程概况", align=2, sort=16)
+ public String getProjectDesc() {
+ return projectDesc;
+ @ExcelField(title="特殊要求", align=2, sort=17)
+ public String getRemarks() {
+ return remarks;
+ @ExcelField(title="创建日期", align=2, sort=18)
+ public void setProjectDesc(String projectDesc) {
+ this.projectDesc = projectDesc;
+ public List<User> getProjectLeaders() {
+ return projectLeaders;
+ public void setProjectLeaders(List<User> projectLeaders) {
+ this.projectLeaders = projectLeaders;
+ public List<User> getProjectMembers() {
+ return projectMembers;
+ public void setProjectMembers(List<User> projectMembers) {
+ this.projectMembers = projectMembers;
+ public List<WorkClientLinkman> getWorkConstructionLinkmanList() {
+ return workConstructionLinkmanList;
+ public void setWorkConstructionLinkmanList(List<WorkClientLinkman> workConstructionLinkmanList) {
+ this.workConstructionLinkmanList = workConstructionLinkmanList;
+ @ExcelField(title="项目状态", align=2, sort=19,dictType = "audit_state")
+ public Integer getProjectStatus() {
+ return projectStatus;
+ public void setProjectStatus(Integer projectStatus) {
+ this.projectStatus = projectStatus;
+ public String getLeaderNameStr() {
+ return leaderNameStr;
+ public void setLeaderNameStr(String leaderNameStr) {
+ this.leaderNameStr = leaderNameStr;
+ public String getMemberNameStr() {
+ return memberNameStr;
+ public void setMemberNameStr(String memberNameStr) {
+ this.memberNameStr = memberNameStr;
+ public String getLeaderIds() {
+ return leaderIds;
+ public void setLeaderIds(String leaderIds) {
+ this.leaderIds = leaderIds;
+ public String getAuditType() {
+ return auditType;
+ public void setAuditType(String auditType) {
+ this.auditType = auditType;
+ public Office getCompany() {
+ return company;
+ public void setCompany(Office company) {
+ this.company = company;
+ public Office getOffice() {
+ return office;
+ public void setOffice(Office office) {
+ this.office = office;
+ public String getAlterProcessId() {
+ return alterProcessId;
+ public void setAlterProcessId(String alterProcessId) {
+ this.alterProcessId = alterProcessId;
+ public List<WorkClientAttachment> getWorkAttachments() {
+ public void setWorkAttachments(List<WorkClientAttachment> workAttachments) {
+ public String getUserIds() {
+ return userIds;
+ public void setUserIds(String userIds) {
+ this.userIds = userIds;
+ public String getDelUserIds() {
+ return delUserIds;
+ public void setDelUserIds(String delUserIds) {
+ this.delUserIds = delUserIds;
+ public List<User> getUsers() {
+ return users;
+ public void setUsers(List<User> users) {
+ this.users = users;
+ public String getUserId() {
+ return userId;
+ public void setUserId(String userId) {
+ this.userId = userId;
+ @ExcelField(title="合同名称", align=2, sort=4)
+ if (workContractInfo!=null) {
+ return workContractInfo.getName();
+ return "";
+ @ExcelField(title="合同编号", align=2, sort=3)
+ public String getContractNumber() {
+ return workContractInfo.getContractNum();
+ @ExcelField(title="合同金额", align=2, sort=5)
+ public String getContractPrice() {
+ return workContractInfo.getContractPrice();
+ @ExcelField(title="工程分类", align=2, sort=7)
+ public String getContractType() {
+ return workContractInfo.getConstructionProjectTypeStr();
+ @ExcelField(title="主委托方", align=2, sort=6)
+ if (workContractInfo!=null && workContractInfo.getClient()!=null){
+ return workContractInfo.getClient().getName();
+ public Date getBeginDate() {
+ return beginDate;
+ public void setBeginDate(Date beginDate) {
+ this.beginDate = beginDate;
+ public int getMembercount() {
+ return membercount;
+ public void setMembercount(int membercount) {
+ this.membercount = membercount;
+ public String getProvince() {
+ return province;
+ public void setProvince(String province) {
+ this.province = province;
+ public String getCity() {
+ return city;
+ public void setCity(String city) {
+ this.city = city;
+ public String getCounty() {
+ return county;
+ public void setCounty(String county) {
+ this.county = county;
+ public String getProjectStructure() {
+ return projectStructure;
+ public void setProjectStructure(String projectStructure) {
+ this.projectStructure = projectStructure;
+ public String getOnGroundNum() {
+ return onGroundNum;
+ public void setOnGroundNum(String onGroundNum) {
+ this.onGroundNum = onGroundNum;
+ public String getUnderGroundNum() {
+ return underGroundNum;
+ public void setUnderGroundNum(String underGroundNum) {
+ this.underGroundNum = underGroundNum;
+ public String getBuildingScale() {
+ return buildingScale;
+ public void setBuildingScale(String buildingScale) {
+ this.buildingScale = buildingScale;
+ public String getMeasuringUnit() {
+ return measuringUnit;
+ public void setMeasuringUnit(String measuringUnit) {
+ this.measuringUnit = measuringUnit;
+ public String getProjectUse() {
+ return projectUse;
+ public void setProjectUse(String projectUse) {
+ this.projectUse = projectUse;
+ public Double getInstallFees() {
+ return installFees;
+ public void setInstallFees(Double installFees) {
+ this.installFees = installFees;
+ public Double getBuildingFees() {
+ return buildingFees;
+ public void setBuildingFees(Double buildingFees) {
+ this.buildingFees = buildingFees;
+ public Double getBuildingPercent() {
+ return buildingPercent;
+ public void setBuildingPercent(Double buildingPercent) {
+ this.buildingPercent = buildingPercent;
+ public Double getInstallPercent() {
+ return installPercent;
+ public void setInstallPercent(Double installPercent) {
+ this.installPercent = installPercent;
+ public Double getUnitFees() {
+ return unitFees;
+ public void setUnitFees(Double unitFees) {
+ this.unitFees = unitFees;
+ public Double getBuildingUnitFees() {
+ return buildingUnitFees;
+ public void setBuildingUnitFees(Double buildingUnitFees) {
+ this.buildingUnitFees = buildingUnitFees;
+ public Double getInstallUnitFees() {
+ return installUnitFees;
+ public void setInstallUnitFees(Double installUnitFees) {
+ this.installUnitFees = installUnitFees;
+ public Double getTotalFees() {
+ return totalFees;
+ public void setTotalFees(Double totalFees) {
+ this.totalFees = totalFees;
+ public List<ProjectReportData> getProjectReportData() {
+ public void setProjectReportData(List<ProjectReportData> projectReportData) {
@@ -0,0 +1,518 @@
+import java.util.Collections;
+import java.util.UUID;
+public class ProjectRecordsAlter extends ActEntity<ProjectRecordsAlter> {
+ private int projectStatus;//项目状态
+ @NotBlank(message = "变更原因不能为空")
+ private String alterReason;
+ private ProjectRecords alterBeforeRecords;
+ private String alterProjectId;
+ public ProjectRecordsAlter() {
+ public ProjectRecordsAlter(String id){
+ @ExcelField(title="项目编号", align=2, sort=7)
+ @ExcelField(title="项目名称", align=2, sort=8)
+ public int getProjectStatus() {
+ public void setProjectStatus(int projectStatus) {
+ public String getAlterReason() {
+ return alterReason;
+ public void setAlterReason(String alterReason) {
+ this.alterReason = alterReason;
+ public ProjectRecords getAlterBeforeRecords() {
+ return alterBeforeRecords;
+ public void setAlterBeforeRecords(ProjectRecords alterBeforeRecords) {
+ this.alterBeforeRecords = alterBeforeRecords;
+ public String getAlterProjectId() {
+ return alterProjectId;
+ public void setAlterProjectId(String alterProjectId) {
+ this.alterProjectId = alterProjectId;
@@ -0,0 +1,25 @@
+package com.jeeplus.modules.projectrecord.enums;
+public enum AlterStatusEnum {
+ TSTORE(1,"暂存"),
+ IN_APRL(2,"变更中"),
+ REJECTED(4,"驳回"),
+ RECALL(3,"撤回"),
+ SIGNED(5,"已变更");
+ private int value;
+ private String desc;
+ AlterStatusEnum(int val, String desc) {
+ this.value = val;
+ this.desc = desc;
+ public int getValue() {
+ return value;
+ public String getDesc() {
+ return desc;
@@ -0,0 +1,29 @@
+public enum ProjectStatusEnum {
+ IN_APRL(2,"审批中"),
+ REJECTED(4,"已驳回"),
+ RECALL(3,"已撤回"),
+ SIGNED(5,"已签"),
+ INVALIDING(6,"作废中"),
+ INVALID(7,"已作废"),
+ ON_CHANGE(8,"变更中"),
+ DONE(9,"已完成");
+ ProjectStatusEnum(int val, String desc) {
@@ -0,0 +1,977 @@
+package com.jeeplus.modules.projectrecord.service;
+import com.jeeplus.modules.act.utils.ProcessDefCache;
+import com.jeeplus.modules.projectrecord.dao.ProjectClientLinkmanDao;
+import com.jeeplus.modules.projectrecord.dao.ProjectRecordsAlterDao;
+import com.jeeplus.modules.projectrecord.enums.AlterStatusEnum;
+import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
+import com.jeeplus.modules.sys.entity.Dict;
+import com.jeeplus.modules.sys.service.DictService;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientLinkmanDao;
+import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
+import org.activiti.engine.ActivitiObjectNotFoundException;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.IdentityService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.history.HistoricTaskInstance;
+import org.activiti.engine.history.HistoricTaskInstanceQuery;
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.transaction.annotation.Propagation;
+ * 项目登记Service
+public class ProjectRecordsAlterService extends CrudService<ProjectRecordsAlterDao, ProjectRecordsAlter> {
+ private WorkProjectUserDao workProjectUserDao;
+ private ProjectClientLinkmanDao clientLinkmanDao;
+ private WorkClientLinkmanDao workClientLinkmanDao;
+ private DictService dictService;
+ private ProjectRecordsService recordsService;
+ private WorkContractInfoService contractInfoService;
+ private WorkClientAttachmentDao workClientAttachmentDao;
+ public ProjectRecordsAlter get(String id) {
+ public List<ProjectRecordsAlter> findList(ProjectRecordsAlter projectRecords) {
+ return super.findList(projectRecords);
+ public Page<ProjectRecordsAlter> findPage(Page<ProjectRecordsAlter> page, ProjectRecordsAlter projectRecords) {
+ //设置数据权限
+ projectRecords.getSqlMap().put("dsf", dataScopeFilter(projectRecords.getCurrentUser(), "o", "u", "s", MenuStatusEnum.PROJECT_RECORDSALTER.getValue()));
+ projectRecords.setPage(page);
+ List<ProjectRecordsAlter> recordsList = findList(projectRecords);
+ //查询负责人信息
+ for (ProjectRecordsAlter records : recordsList) {
+ List<User> users = workProjectUserDao.queryProjectUsers(records.getId(), "1");
+ records.setProjectLeaders(users);
+ page.setList(recordsList);
+ public void saveProject(ProjectRecordsAlter projectRecordsAlter, AlterStatusEnum alterStatus) throws Exception {
+ WorkContractInfo workContractInfo = contractInfoService.get(projectRecordsAlter.getWorkContractInfo().getId());
+ ProjectRecords records = recordsService.get(projectRecordsAlter.getAlterBeforeRecords().getId());
+ if(records.getProjectStatus()!=ProjectStatusEnum.SIGNED.getValue() && records.getProjectStatus()!=ProjectStatusEnum.ON_CHANGE.getValue()){
+ throw new Exception("项目状态发生变动,不能发起变更");
+ }else if(records.getProjectStatus()==ProjectStatusEnum.ON_CHANGE.getValue() && AlterStatusEnum.TSTORE.getValue() != projectRecordsAlter.getProjectStatus()
+ && AlterStatusEnum.REJECTED.getValue() != projectRecordsAlter.getProjectStatus()&&AlterStatusEnum.RECALL.getValue() != projectRecordsAlter.getProjectStatus()){
+ Integer oldStatus = projectRecordsAlter.getProjectStatus();
+ projectRecordsAlter.setProjectStatus(alterStatus.getValue());
+ //更新原有项目状态信息
+ records.setProjectStatus(ProjectStatusEnum.ON_CHANGE.getValue());
+ records.preUpdate();
+ recordsService.updateSelectiveById(records);
+ if(StringUtils.isBlank(projectRecordsAlter.getAlterProjectId())){
+ projectRecordsAlter.setAlterProjectId(projectRecordsAlter.getProjectId()+"-变更-"+this.countAlter(projectRecordsAlter.getProjectId()));
+ User createBy = projectRecordsAlter.getCreateBy();
+ if(createBy != null){
+ createBy = UserUtils.get(createBy.getId());
+ createBy = UserUtils.getUser();
+ Office company= new Office();
+ Office office = new Office();
+ if(StringUtils.isNotBlank((projectRecordsAlter.getWorkContractInfo().getId()))){
+ //有合同状态
+ workContractInfo = contractInfoService.get(projectRecordsAlter.getWorkContractInfo().getId());
+ company.setId(workContractInfo.getCompanyId());
+// office.setId(workContractInfo.getChargeCompany());
+ office.setId(UserUtils.getUser().getOffice().getId());
+ //无合同
+ company.setId(UserUtils.getUser().getCompany().getId());
+ projectRecordsAlter.setCompany(company);
+ projectRecordsAlter.setOffice(office);
+ super.save(projectRecordsAlter);
+ //保存项目负责人
+ List<User> leaders = projectRecordsAlter.getProjectLeaders();
+ this.saveProjectUsers(projectRecordsAlter.getId(), leaders, true);
+ //保存委托方联系人
+ List<WorkClientLinkman> workClientLinkmanList = projectRecordsAlter.getWorkClientLinkmanList();
+ this.saveLinkmanInfos(projectRecordsAlter.getId(), workClientLinkmanList, true);
+ //保存施工方联系信息
+ List<WorkClientLinkman> constructionLinkmanList = projectRecordsAlter.getWorkConstructionLinkmanList();
+ this.saveLinkmanInfos(projectRecordsAlter.getId(), constructionLinkmanList, false);
+ this.saveAttachments(projectRecordsAlter);
+ if (AlterStatusEnum.TSTORE.getValue()== projectRecordsAlter.getProjectStatus()||AlterStatusEnum.REJECTED.getValue()==oldStatus)return;
+ //启动审批流程
+ this.startAudit(projectRecordsAlter, projectRecordsAlter.getProcessInstanceId());
+ private int countAlter(String projectId) {
+ return dao.countAlter(projectId)+1;
+ * 保存委托方和施工方联系人信息
+ *
+ * @param projectId
+ * @param linkmanList
+ * @param isEntrust 是否委托方
+ private void saveLinkmanInfos(String projectId, List<WorkClientLinkman> linkmanList, boolean isEntrust) {
+ assert (projectId != null);
+ if(linkmanList == null || linkmanList.isEmpty()){
+ map.put("projectId", projectId);
+ map.put("linkmanList", linkmanList);
+ int entrust = 0;
+ if (isEntrust) {
+ entrust = 1;
+ clientLinkmanDao.deleteProjectLinkmans(projectId, entrust);
+ map.put("isEntrust", entrust);
+ clientLinkmanDao.batchInsert(map);
+ * 保存项目组成员信息
+ * @param users
+ * @param isMaster
+ private void saveProjectUsers(String projectId, List<User> users, boolean isMaster) {
+ assert (users != null && !users.isEmpty());
+ List<String> memberIds = new ArrayList<>(users.size());
+ for (User user : users) {
+ memberIds.add(user.getId());
+ map.put("memberIds", memberIds);
+ String master = null;
+ if (isMaster) {
+ master = "1";
+ workProjectUserDao.deleteProjectMasterMembers(map);
+ /* map.put("isMaster", "0");
+ workProjectUserDao.batchInsert(map);*/
+ master = "0";
+ workProjectUserDao.deleteProjectMembers(projectId, master);
+ map.put("isMaster", master);
+ workProjectUserDao.batchInsert(map);
+ public void delete(ProjectRecordsAlter projectRecords) {
+ //删除项目负责人
+ workProjectUserDao.deleteProjectMembers(projectRecords.getId(), "1");
+ //删除项目组成员
+// workProjectUserDao.deleteProjectMembers(projectRecords.getId(), "0");
+ //删除委托方联系人
+ clientLinkmanDao.deleteProjectLinkmans(projectRecords.getId(), 1);
+ //删除施工方联系人
+ clientLinkmanDao.deleteProjectLinkmans(projectRecords.getId(), 0);
+ super.delete(projectRecords);
+ //修改原项目状态
+ if (projectRecords.getAlterBeforeRecords()!=null){
+ ProjectRecords records = new ProjectRecords();
+ records.setId(projectRecords.getAlterBeforeRecords().getId());
+ records.setProjectStatus(ProjectStatusEnum.SIGNED.getValue());
+ notify.setNotifyId(projectRecords.getId());
+ List<User> users = workProjectNotifyService.readByNotifyId(notify);
+ if (users!=null && users.size()!=0){
+ for (User user:users){
+ * 设置项目组成员信息
+ * @param records
+ public void queryUserNames(ProjectRecordsAlter records) {
+ records.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
+ records.setLeaderIds(Collections3.extractToString(users, "id", ","));
+ //查询项目组成员信息
+ List<User> members = workProjectUserDao.isDelFalg(records.getId(), "");
+ records.setProjectMembers(members);
+ records.setMemberNameStr(Collections3.extractToString(members, "name", ","));
+ records.setMemberIds(Collections3.extractToString(members, "id", ","));
+ * 设置联系人信息
+ * @param projectRecords
+ public void queryLinkmanInfos(ProjectRecordsAlter projectRecords) {
+ List<WorkClientLinkman> clientLinkmanList = workClientLinkmanDao.queryProjectLinkmans(projectRecords.getId(), 1);
+ projectRecords.setWorkClientLinkmanList(clientLinkmanList);
+ List<WorkClientLinkman> constructionLinkmanList = workClientLinkmanDao.queryProjectLinkmans(projectRecords.getId(), 0);
+ projectRecords.setWorkConstructionLinkmanList(constructionLinkmanList);
+ * 启动审批流程
+ * @param projectRecordsAlter
+ private void startAudit(ProjectRecordsAlter projectRecordsAlter,String processInstanceId) throws Exception {
+ Map<String, Object> variables = new HashMap<String, Object>();
+ identityService.setAuthenticatedUserId(projectRecordsAlter.getCurrentUser().getId());
+ Office office = projectRecordsAlter.getOffice();
+ office = officeService.get(office.getId());
+ String contentStr = "项目变更编号:"+projectRecordsAlter.getAlterProjectId()+",项目名称:"+ projectRecordsAlter.getProjectName()+",创建人:"+projectRecordsAlter.getCreateBy().getName()+",所属部门:"+projectRecordsAlter.getOffice().getName();
+ String titleStr = "项目名称:"+ projectRecordsAlter.getProjectName();
+ String businessKey = projectRecordsAlter.getId();
+ WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("807c6d4b5623474792fe78ff1fd1cdff", office);
+ .saveNotify(projectRecordsAlter.getId(),
+ projectRecordsAlter.getCompany().getId(),
+ titleStr,
+ contentStr,
+ "41",
+ List<User> bmzrs = UserUtils.getByRoleActivityEnname("bmzr",2,office.getId(),"4",projectRecordsAlter.getCreateBy());
+ processType = workActivityMenu.getProcessType();
+ List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),office.getId(),"8",projectRecordsAlter.getCreateBy());
+ /*this.delete(projectRecordsAlter);
+ for (WorkClientAttachment workClientAttachment : projectRecordsAlter.getWorkAttachments()) {
+ workClientAttachmentDao.delete(workClientAttachment);
+ throw new Exception("流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!");
+ users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),office.getId(),"4",projectRecordsAlter.getCreateBy());
+ if (bmzrs==null||bmzrs.size()==0){
+ if (projectRecordsAlter.getWorkAttachments()!=null) {
+ throw new Exception("流程审批人不能为空,角色部门负责人下无用户,请联系管理员!");
+ processType = "projectAlter";
+ variables.put("applyUserId", projectRecordsAlter.getCreateBy().getId());
+ variables.put("bmzrCount",bmzrs.size());
+ variables.put("bmzrList",bmzrs);
+ users.addAll(bmzrs);
+ List<String> userIds = new ArrayList<>(users.size());
+ userIds.add(u.getId());
+ workProjectNotify.setNotifyRole("部门负责人审批");
+ workProjectNotifyService.save(workProjectNotify);
+ extras.put("procDefKey","41");
+ UserUtils.pushInfoToApp(titleStr,contentStr,extras,u.getId());
+ UserUtils.pushIm(userIds,contentStr);
+ variables.put("title", "审批单:" + projectRecordsAlter.getProjectName());//设置标题;
+ // projectRecordsAlter.setProcessInstance(processInstance);
+ workActivityProcessService.save(workActivityProcess);
+ workActivityProcessService.insertAuditsByType(bmzrs,processInstance.getId(),1,1);
+ projectRecordsAlter.setProcessInstanceId(processInstance.getId());
+ projectRecordsAlter.setProjectStatus(AlterStatusEnum.IN_APRL.getValue());
+ dao.updateProcessIdAndStatus(projectRecordsAlter);
+ records.setAlterProcessId(processInstance.getId());
+ @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
+ public void updateSelectiveById(ProjectRecordsAlter projectRecords) {
+ dao.updateSelectiveById(projectRecords);
+ public ProjectRecordsAlter getByProcessInstanceId(String procInsId) {
+ ProjectRecordsAlter records = dao.findUniqueByProperty("process_instance_id", procInsId);
+ if(records!=null) {
+ return records;
+ public String auditSave(ProjectRecordsAlter projectRecordsAlter,List<User> auditUsers) throws Exception {
+ int projectStatus = projectRecordsAlter.getProjectStatus();
+ String taskDefKey = projectRecordsAlter.getAct().getTaskDefKey();
+ actTaskService.claim(projectRecordsAlter.getAct().getTaskId(), UserUtils.getUser().getId());
+ projectRecordsAlter.getAct().setFlag("yes");
+ saveProject(projectRecordsAlter,AlterStatusEnum.IN_APRL);
+ if ( projectStatus == AlterStatusEnum.REJECTED.getValue()) {
+ comment = ("yes".equals(projectRecordsAlter.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
+ comment = ("yes".equals(projectRecordsAlter.getAct().getFlag())?"[同意] ":"[驳回] ")+ projectRecordsAlter.getAct().getComment();
+ if (!"yes".equals(projectRecordsAlter.getAct().getFlag())) {
+ projectRecordsAlter.setProjectStatus(AlterStatusEnum.REJECTED.getValue());
+ User createUser = UserUtils.get(projectRecordsAlter.getCreateBy().getId());
+ User user = null;
+ List<Activity> activitieList = activityService.getByProcessInstanceId(projectRecordsAlter.getProcessInstanceId());
+ selectProcess.setProcessInstanceId(projectRecordsAlter.getProcessInstanceId());
+ String taskCount = "1";
+ Office office = officeService.get(projectRecordsAlter.getOffice().getId());
+ String notifyStr = "项目变更编号:"+projectRecordsAlter.getAlterProjectId()+",项目名称:"+ projectRecordsAlter.getProjectName();
+ String title = "项目名称:"+ projectRecordsAlter.getProjectName();
+ if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectAlter")) {
+ if (taskDefKey.equals("modifyApply")) {
+ projectRecordsAlter.setProjectStatus(AlterStatusEnum.RECALL.getValue());
+ vars.put("pass", false);
+ vars.put("pass", true);
+ notifyRole = "调整项目变更";
+ workActivityMenu.setProcessType("projectAlter");
+ String count = String.valueOf(activityProcess.getCount());
+ if ("bmzr".equals(taskDefKey) && "1".equals(count)) {
+ taskCount = count;
+ if ("yes".equals(projectRecordsAlter.getAct().getFlag())) {
+ user = createUser;
+ } else if ("modifyApply".equals(taskDefKey) && "0".equals(count)) {
+ enname = "bmzr";
+ if("yes".equals(projectRecordsAlter.getAct().getFlag())){
+ vars.put("pass",true);
+ notifyRole = "部门负责人审批";
+ vars.put("pass",false);
+ workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount, projectRecordsAlter.getProcessInstanceId(),taskDefKey,"modifyApply", projectRecordsAlter.getAct().getFlag(),comment, activities);
+ projectRecordsAlter.getAct().setComment(comment);
+ projectRecordsAlter.preUpdate();
+ actTaskService.complete(projectRecordsAlter.getAct().getTaskId(), projectRecordsAlter.getAct().getProcInsId(), projectRecordsAlter.getAct().getComment(), vars);
+ boolean state = actTaskService.isProcessEnd(projectRecordsAlter.getAct().getProcInsId());
+ if(!state) {
+ users.add(projectRecordsAlter.getCreateBy());
+ projectRecordsAlter.setProjectStatus(AlterStatusEnum.SIGNED.getValue());
+ notify.setNotifyId(projectRecordsAlter.getId());
+ projectRecordsAlter.getCreateBy(),
+ notifyStr,
+ if (projectRecordsAlter.getProjectStatus()!= AlterStatusEnum.RECALL.getValue()){
+ workActivityProcessService.deleteProcessIdAuditUsers(projectRecordsAlter.getProcessInstanceId());
+ String str = notifyStr +",创建人:"+projectRecordsAlter.getCreateBy().getName()+",所属部门:"+projectRecordsAlter.getOffice().getName();
+ String count = taskDefKey.replace("audit","").replace("task","");
+ projectRecordsAlter.getAct().getFlag(),
+ count,
+ projectRecordsAlter.getOffice().getId(),
+ "4");
+ workProjectNotifyService.save(workProjectNotify1);
+ user,
+ for (User user1:auditUsers){
+ users.add(user1);
+ if (StringUtils.isNotBlank(title) && users!=null && users.size()!=0) {
+ UserUtils.pushIm(userIds,title);
+ if(projectRecordsAlter.getProjectStatus()==AlterStatusEnum.SIGNED.getValue()){
+ recordsService.queryContractInfos(records);
+ recordsService.queryLinkmanInfos(records);
+ recordsService.queryWorkAttachment(records);
+ recordsService.queryUserNames(records);
+ ProjectRecords oldRecords = new ProjectRecords();
+ BeanUtils.copyProperties(oldRecords,records);
+ oldRecords.setId(null);
+ oldRecords.setProjectStatus(ProjectStatusEnum.INVALID.getValue());
+ recordsService.saveProject(oldRecords,ProjectStatusEnum.INVALID);
+ projectRecordsAlter.setAlterBeforeRecords(oldRecords);
+ String rid = records.getId();
+ //查询当前变更信息
+ this.queryLinkmanInfos(projectRecordsAlter);
+ this.queryUserNames(projectRecordsAlter);
+ this.queryContractInfo(projectRecordsAlter);
+ List<WorkClientAttachment> workAttachments = records.getWorkAttachments();
+ BeanUtils.copyProperties(records, projectRecordsAlter);
+ if(workAttachments!=null){
+ records.setWorkAttachments(workAttachments);
+ this.queryWorkAttachment(projectRecordsAlter);
+ if(projectRecordsAlter.getWorkAttachments()!=null){
+ if(records.getWorkAttachments()==null){
+ records.setWorkAttachments(new ArrayList<WorkClientAttachment>());
+ workClientAttachment.setId(null);
+ workClientAttachment.setAttachmentId(null);
+ records.getWorkAttachments().add(workClientAttachment);
+ records.setId(rid);
+ records.setCreateBy(oldRecords.getCreateBy());
+ records.setCreateDate(oldRecords.getCreateDate());
+ recordsService.saveProject(records,ProjectStatusEnum.SIGNED);
+ dao.updateSelectiveById(projectRecordsAlter);
+ public void queryContractInfo(ProjectRecordsAlter projectRecords) {
+ WorkContractInfo workContractInfo = contractInfoService.get(projectRecords.getWorkContractInfo().getId());
+ workContractInfo.setConstructionProjectTypeStr(DictUtils.getDictLabel(String.valueOf(workContractInfo.getConstructionProjectType()), "construction_project_type", ""));
+ if(workContractInfo.getWorkClientInfoList()!=null&&!workContractInfo.getWorkClientInfoList().isEmpty()){
+ StringBuilder workClinetInfoIds = new StringBuilder();
+ for (WorkClientInfo workClientInfo : workContractInfo.getWorkClientInfoList()) {
+ workClinetInfoIds.append(workClientInfo.getId()).append(",");
+ workClinetInfoIds.deleteCharAt(workClinetInfoIds.length()-1);
+ workContractInfo.setWorkClinetInfoIds(workClinetInfoIds.toString());
+ projectRecords.setWorkContractInfo(workContractInfo);
+ private void notifyProjectLeaders (ProjectRecordsAlter projectRecords, User createUser, String str){
+ List<User> projectLeaders = projectRecords.getProjectLeaders();
+ for (User leader : projectLeaders) {
+ .saveNotify(projectRecords.getId(),
+ leader,
+ createUser.getComId(),
+ projectRecords.getAct().getComment(),
+ "");
+ workProjectNotify.setOfficeId(createUser.getOffice().getId());
+ workProjectNotify.preInsert();
+ workProjectNotify.setCreateBy(projectRecords.getCreateBy());
+ workProjectNotifyService.insert(workProjectNotify);
+ * 获取已办任务
+ public List<ProjectRecordsAlter> historicList(Act act){
+ HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery().finished().taskAssignee(userId);
+ // 设置查询条件
+ if (StringUtils.isNotBlank(act.getProcDefKey())){
+ query.processDefinitionKey(act.getProcDefKey());
+ if (act.getBeginDate() != null){
+ query.taskCompletedAfter(act.getBeginDate());
+ if (act.getEndDate() != null){
+ query.taskCompletedBefore(act.getEndDate());
+ // 查询总数
+ List<HistoricTaskInstance> list = query.list();
+ List<ProjectRecordsAlter> list1 = new ArrayList<ProjectRecordsAlter>();
+ Office office = UserUtils.getSelectCompany();
+ String companyId = office==null?"":office.getId();
+ for (HistoricTaskInstance histTask : list) {
+ ProjectRecordsAlter projectRecords = this.getByProcessInstanceId(histTask.getProcessInstanceId());
+ if (projectRecords != null && projectRecords.getCompany().getId().equals(companyId)) {
+ projectRecords.setCreateBy(UserUtils.get(projectRecords.getCreateBy().getId()));
+ historyService.getHistoricIdentityLinksForProcessInstance(histTask.getProcessInstanceId());
+ act.setHistTask(histTask);
+ act.setVars(histTask.getProcessVariables());
+ act.setProcDef(ProcessDefCache.get(histTask.getProcessDefinitionId()));
+ act.setStatus("finish");
+ projectRecords.setAct(act);
+ List<User> users = workProjectUserDao.queryProjectUsers(projectRecords.getId(), "1");
+ projectRecords.setProjectLeaders(users);
+ list1.add(projectRecords);
+// workReimbursement.setPage(page);
+ return list1;
+ public void queryWorkAttachment(ProjectRecordsAlter projectRecords) {
+ WorkClientAttachment attchment = new WorkClientAttachment();
+ attchment.setAttachmentId(projectRecords.getId());
+ List<WorkClientAttachment> attachments = workClientAttachmentDao.findList(attchment);
+ projectRecords.setWorkAttachments(attachments);
+ private void saveAttachments(ProjectRecordsAlter projectRecords) {
+ if (projectRecords.getWorkAttachments()!=null && !projectRecords.getWorkAttachments().isEmpty()) {
+ //保存附件信息
+ for (WorkClientAttachment workClientAttachment : projectRecords.getWorkAttachments()) {
+ if (StringUtils.isBlank(workClientAttachment.getId())&&StringUtils.isNotBlank(workClientAttachment.getAttachmentId())) {
+ if (StringUtils.isBlank(workClientAttachment.getId())&&StringUtils.isBlank(workClientAttachment.getUrl())) {
+ if (WorkClientAttachment.DEL_FLAG_NORMAL.equals(workClientAttachment.getDelFlag())) {
+ workClientAttachment.setAttachmentId(projectRecords.getId());
+ workClientAttachment.setAttachmentFlag("82");
+ workClientAttachment.setAttachmentUser(UserUtils.getUser().getId());
+ if (StringUtils.isBlank(workClientAttachment.getId()) || "null".equals(workClientAttachment.getId())) {
+ workClientAttachment.preInsert();
+ workClientAttachmentDao.insert(workClientAttachment);
+ workClientAttachment.preUpdate();
+ workClientAttachmentDao.update(workClientAttachment);
+ public void queryProjectAlterDetail(ProjectRecordsAlter projectRecordsAlter) {
+ //设置合同信息
+ //设置项目组成员
+ //设置委托方联系人信息
+ //设置附件信息
+ public void cancelProcess(ProjectRecordsAlter projectRecordsAlter) {
+ process.setProcessInstanceId(projectRecordsAlter.getProcessInstanceId());
+ workActivityProcess.setProcessInstanceId(projectRecordsAlter.getProcessInstanceId());
+ UserUtils.pushIm(u.getId(),"申请人 "+user.getName() +",项目登记审批:"+projectRecordsAlter.getProjectName() +" 强制撤销!");
+ for (WebSocket toUserConn : toUserConns) {
+ "\"msg\":\"审批信息 申请人:"+ user.getName()+",项目登记审批:"+projectRecordsAlter.getProjectName() +" 强制撤销!\"," +
+ //ChatServerPool.sendMessageToUser(toUserConn, u.getId() + "_sys_审批信息 " + "报销人:" + user.getName() + ",报销编号:" + workReimbursement.getNumber() + " 强制撤销!");//同时向本人发送消息
+ if(processList!=null && processList.size()>0) {
+ for (int i = 0; i < processList.size(); i++) {
+ if (StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())) {
+ ProjectRecordsAlter projectRecords = new ProjectRecordsAlter();
+ projectRecords.setId(projectRecordsAlter.getId());
+ projectRecords.setProjectStatus(AlterStatusEnum.RECALL.getValue());
+ projectRecords.preUpdate();
+ this.updateSelectiveById(projectRecords);
@@ -0,0 +1,537 @@
+package com.jeeplus.modules.projectrecord.web;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsAlterService;
+import com.jeeplus.modules.workfullmanage.service.WorkFullRecordService;
+import java.lang.reflect.InvocationTargetException;
+ * 项目登记Controller
+@RequestMapping(value = "${adminPath}/project/projectRecordsAlter")
+public class ProjectRecordsAlterController extends BaseController {
+ private ProjectRecordsAlterService projectRecordsAlterService;
+ private WorkFullRecordService workFullRecordService;
+ public ProjectRecordsAlter get(@RequestParam(required=false) String id) {
+ ProjectRecordsAlter entity = null;
+ entity = projectRecordsAlterService.get(id);
+ entity = new ProjectRecordsAlter();
+ @RequiresPermissions("project:projectRecords:list")
+ public String list(ProjectRecordsAlter projectRecordsAlter, HttpServletRequest request, HttpServletResponse response, Model model) {
+ if(UserUtils.isManager()){
+ model.addAttribute("flag","1");
+ Page<ProjectRecordsAlter> page = projectRecordsAlterService.findPage(new Page<ProjectRecordsAlter>(request, response), projectRecordsAlter);
+ return "modules/projectrecord/projectRecordsAlterList";
+ @RequiresPermissions(value={"project:projectRecords:add","project:projectRecords:edit"},logical=Logical.OR)
+ public String form(ProjectRecordsAlter projectRecordsAlter, Model model,RedirectAttributes redirectAttributes) {
+ ProjectRecords projectRecords = new ProjectRecords();
+ if (projectRecordsAlter.getAlterBeforeRecords()!=null&&StringUtils.isNotBlank(projectRecordsAlter.getAlterBeforeRecords().getId())){
+ projectRecords = projectRecordsService.get(projectRecordsAlter.getAlterBeforeRecords().getId());
+ //设置详细信息
+ projectRecordsService.queryProjectDetail(projectRecords);
+ if (projectRecordsAlter!=null&&StringUtils.isNotBlank(projectRecordsAlter.getId())) {
+ projectRecordsAlter=projectRecordsAlterService.get(projectRecordsAlter.getId());
+ projectRecordsAlter.setAlterBeforeRecords(projectRecords);
+ projectRecordsAlterService.queryProjectAlterDetail(projectRecordsAlter);
+ //判断项目状态
+ if (projectRecords.getProjectStatus()!=ProjectStatusEnum.SIGNED.getValue()){
+ addMessage(redirectAttributes, "状态异常,不能发起项目变更");
+ return "redirect:"+Global.getAdminPath()+"/project/projectRecords/?repage";
+ BeanUtils.copyProperties(projectRecordsAlter,projectRecords);
+ projectRecordsAlter.setId(null);
+ } catch (IllegalAccessException e) {
+ } catch (InvocationTargetException e) {
+ if(projectRecordsAlter.getWorkAttachments()!=null)projectRecordsAlter.setWorkAttachments(new ArrayList<WorkClientAttachment>());
+ projectRecordsAlter.setCreateBy(UserUtils.getUser());
+ projectRecordsAlter.setCreateDate(new Date());
+ model.addAttribute("projectRecordsAlter", projectRecordsAlter);
+ return "modules/projectrecord/projectRecordsAlterForm";
+ * 编辑项目表单页面
+ @RequiresPermissions(value={"project:projectRecords:edit"},logical=Logical.OR)
+ @RequestMapping(value = "modify")
+ public String modify(ProjectRecordsAlter projectRecordsAlter, Model model,RedirectAttributes redirectAttributes) {
+ if(StringUtils.isBlank(projectRecordsAlter.getId())){
+ projectRecordsAlter = projectRecordsAlterService.getByProcessInstanceId(projectRecordsAlter.getAct().getProcInsId());
+ projectRecordsService.queryUserNames(projectRecords);
+ ProcessInstance processInstance = actTaskService.getProcIns(projectRecordsAlter.getProcessInstanceId());
+ projectRecordsAlter.setAct(act);
+ return "modules/projectrecord/projectRecordsAlterModify";
+ * 查看
+ * @param model
+ @RequiresPermissions(value={"project:projectRecords:view"})
+ @RequestMapping(value = "view")
+ public String view(ProjectRecordsAlter projectRecordsAlter, Model model) {
+ ProjectRecords projectRecords = null;
+ if (projectRecords!=null&&StringUtils.isNotBlank(projectRecords.getId())) {
+ return "modules/projectrecord/projectRecordsAlterView";
+ public String save(ProjectRecordsAlter projectRecords, Model model, RedirectAttributes redirectAttributes) {
+ if (!beanValidator(model, projectRecords)){
+ return form(projectRecords, model,redirectAttributes);
+ if(!projectRecords.getIsNewRecord()){//编辑表单保存
+ ProjectRecordsAlter t = projectRecordsAlterService.get(projectRecords.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(projectRecords, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ projectRecordsAlterService.saveProject(t, AlterStatusEnum.IN_APRL);//保存
+ projectRecordsAlterService.saveProject(projectRecords,AlterStatusEnum.IN_APRL);//保存
+ addMessage(model,"保存项目变更成功");
+ logger.error("保存项目变更异常:",e);
+ addMessage(model,"保存项目变更异常:"+e.getMessage());
+ return "redirect:"+Global.getAdminPath()+"/project/projectRecordsAlter/?repage";
+ @RequestMapping(value = "tstore")
+ public String tStore(ProjectRecordsAlter projectRecords, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ projectRecordsAlterService.saveProject(t,AlterStatusEnum.TSTORE);//保存
+ projectRecordsAlterService.saveProject(projectRecords,AlterStatusEnum.TSTORE);//保存
+ addMessage(model,"暂存项目变更成功");
+ logger.error("暂存项目变更异常:",e);
+ addMessage(model,"暂存项目变更异常:"+e.getMessage());
+ @RequiresPermissions("project:projectRecords:del")
+ public String delete(ProjectRecordsAlter projectRecords, RedirectAttributes redirectAttributes) {
+ int status = projectRecords.getProjectStatus();
+ if(status==AlterStatusEnum.TSTORE.getValue()||status==AlterStatusEnum.REJECTED.getValue()||status==AlterStatusEnum.RECALL.getValue()){
+ projectRecordsAlterService.delete(projectRecords);
+ addMessage(redirectAttributes, "删除项目变更记录成功");
+ addMessage(redirectAttributes, "删除项目变更记录失败,只有“暂存”、“驳回”、“撤回”状态的项目才能删除");
+ projectRecordsAlterService.delete(projectRecordsAlterService.get(id));
+ @RequiresPermissions("project:projectRecords:export")
+ public String exportFile(ProjectRecordsAlter projectRecords, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ Page<ProjectRecordsAlter> page = projectRecordsAlterService.findPage(new Page<ProjectRecordsAlter>(request, response, -1), projectRecords);
+ new ExportExcel("项目", ProjectRecords.class).setDataList(page.getList()).write(response, fileName).dispose();
+ @RequiresPermissions("project:projectRecords:import")
+ List<ProjectRecordsAlter> list = ei.getDataList(ProjectRecordsAlter.class);
+ for (ProjectRecordsAlter projectRecords : list){
+ projectRecordsAlterService.save(projectRecords);
+ List<ProjectRecordsAlter> list = Lists.newArrayList();
+ new ExportExcel("项目数据", ProjectRecordsAlter.class, 1).setDataList(list).write(response, fileName).dispose();
+ @RequestMapping("getContractInfo")
+ public WorkContractInfo queryContractInfo(WorkContractInfo contractInfo){
+ WorkContractInfo workContractInfo = contractInfoService.get(contractInfo.getId());
+ workContractInfo.setConstructionProjectTypeStr(DictUtils.getDictLabel(String.valueOf(workContractInfo.getConstructionProjectType()),"construction_project_type",""));
+ // 审批页面
+ @RequestMapping(value = "projectRecordsAudit")
+ public String projectRecordsAudit(Act act, ProjectRecordsAlter projectRecordsAlter, Model model) {
+ projectRecordsAlter = projectRecordsAlterService.getByProcessInstanceId(act.getProcInsId());
+ if (act.getProcInsId() != null) {
+ if (actTaskService.getProcIns(act.getProcInsId()) != null) {
+ act.setProcIns(actTaskService.getProcIns(act.getProcInsId()));
+ act.setFinishedProcIns(actTaskService.getFinishedProcIns(act.getProcInsId()));
+ if (act != null && StringUtils.isNotBlank(act.getTaskId())) {
+ model.addAttribute("processInstanceId", projectRecordsAlter.getProcessInstanceId());
+ return "modules/projectrecord/projectRecordsAlterAudit";
+ @RequestMapping(value = "getProcess")
+ public String getProcess(ProjectRecordsAlter projectRecords, Model model,HttpServletRequest request){
+ model.addAttribute("processInstanceId", projectRecords.getProcessInstanceId());
+ return "modules/projectrecord/projectRecordsTask";
+ @RequestMapping(value = "revoke")
+ public String revoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+ HashMap<String, String> requestMap = findRequestMap(request);
+ String processInstanceId = requestMap.get("processInstanceId");
+ String id = requestMap.get("id");
+ ProjectRecordsAlter projectRecordsAlter = projectRecordsAlterService.get(id);
+ if(5==projectRecordsAlter.getProjectStatus()){
+ addMessage(redirectAttributes, "项目变更已审批通过,无法撤回");
+ projectRecordsAlterService.cancelProcess(projectRecordsAlter);
+ addMessage(redirectAttributes, "撤回该项目变更成功");
+ logger.info(e.getMessage());
+ addMessage(redirectAttributes, "撤回项目变更失败");
+ return "redirect:" + Global.getAdminPath() + "/project/projectRecordsAlter/?repage";
+ * 查询待办任务
+ * @param act
+ @RequestMapping("/toDoList")
+ public String queryToList(Act act, Model model) {
+ //合同申请流程
+ act.setProcDefKey(ActUtils.PD_PROJECTRECORD[0]);
+ List<Act> list = actTaskService.todoList(act);
+ List<Activity> activities = activityService.groupByActivityMenu("7854872f45b84acd893010e66a3db2c8",companyId);
+ for (Activity activity:activities){
+ act.setProcDefKey(activity.getProcessKey());
+ list.addAll(actTaskService.todoList(act));
+ List<ProjectRecordsAlter> lists = new ArrayList<ProjectRecordsAlter>();
+ for (Act a : list) {
+ if (a.getTask().getTaskDefinitionKey()!=null && !"modifyApply".equals(a.getTask().getTaskDefinitionKey())) {
+ ProjectRecordsAlter projectRecords = projectRecordsAlterService.getByProcessInstanceId(a.getProcInsId());
+ if (projectRecords==null){continue;}
+ projectRecords.setAuditType("项目登记");
+ if(projectRecords.getProjectStatus()!= AlterStatusEnum.RECALL.getValue()) {
+ User user1 = UserUtils.get(projectRecords.getCreateBy().getId());
+ if (projectRecords != null && user1.getCompany().getId().equals(companyId)) {
+ projectRecords.setCreateBy(user1);
+ if (a.getVars().getMap().get("applyUserId") != null) {
+ User user = UserUtils.get(a.getVars().getMap().get("applyUserId").toString());
+ if (user != null) {
+ a.getVars().getMap().put("applyUserId", UserUtils.get(a.getVars().getMap().get("applyUserId").toString()).getName());
+ projectRecords.setAct(a);
+ lists.add(projectRecords);
+ //排除 重新申请|撤销
+ Iterator<ProjectRecordsAlter> it = lists.iterator();
+ while(it.hasNext()){
+ ProjectRecordsAlter w = it.next();
+ if(w.getAct()!=null && w.getAct().getTaskDefKey().equals("reapply")){
+ it.remove();
+ model.addAttribute("list", lists);
+ return "modules/projectrecord/projectRecordsToDoList";
+ * 审批
+ * @param upload_files
+ * @param redirectAttributes
+ @RequestMapping("saveAudit")
+ public String saveAudit(ProjectRecordsAlter projectRecords, Model model,
+ @RequestParam(value = "upload_files", required = false) MultipartFile[] upload_files,
+ String home = projectRecords.getHome();
+ String taskDefKey = projectRecords.getAct().getTaskDefKey();
+ //当状态为未通过时,重新修改数据
+ if ("modifyApply".equals(taskDefKey)) {
+ projectRecords.getAct().setComment("重新申请");
+ List<User> users = UserUtils.getByProssType(projectRecords.getProcessInstanceId(),1);
+ String flag = projectRecords.getAct().getFlag();
+ String str = projectRecordsAlterService.auditSave(projectRecords,users);
+ addMessage(redirectAttributes, "审批失败:"+e);
+ if (StringUtils.isNotBlank(home) && "home".equals(home)){
+ * 查询已办列表
+ @RequestMapping("/queryCompleteList")
+ public String queryCompleteList(Act act,HttpServletRequest request,HttpServletResponse response,Model model){
+ act.setProcDefKey("projectAudit");
+ List<ProjectRecordsAlter> list = projectRecordsAlterService.historicList(act);
+ List<Activity> activities = activityService.groupByActivityMenu("ggh3125f1f194c82bdea93555c750906",companyId);
+ list.addAll(projectRecordsAlterService.historicList(act));
+ model.addAttribute("list",list);
+ return "modules/projectrecord/projectRecordsHistoricList";
@@ -0,0 +1,642 @@
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URLConnection;
+@RequestMapping(value = "${adminPath}/project/projectRecords")
+public class ProjectRecordsController extends BaseController {
+ private WorkClientInfoService workClientInfoService;
+ private static String template_path = Global.getProjectTemplatePath()+"咨询工作方案.xlsx";
+ private static String template_name = "咨询工作方案.xlsx";
+ public ProjectRecords get(@RequestParam(required=false) String id) {
+ ProjectRecords entity = null;
+ entity = projectRecordsService.get(id);
+ entity = new ProjectRecords();
+ public String list(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response), projectRecords);
+ //无合同状态下,获取委托方的名称
+ List<ProjectRecords> list = page.getList();
+ for (int i = 0; i < list.size(); i++) {
+ ProjectRecords records1 = list.get(i);
+ if (records1.getWorkContractInfo() == null) {
+ projectRecordsService.queryLinkmanInfos(records1);
+ if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+ WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+ WorkContractInfo contractInfo = new WorkContractInfo();
+ contractInfo.setClient(linkman.getClientId());
+ records1.setWorkContractInfo(contractInfo);
+ return "modules/projectrecord/projectRecordsList";
+ public String form(ProjectRecords projectRecords, Model model) {
+ projectRecords = projectRecordsService.get(projectRecords.getId());
+ projectRecords.setCreateBy(UserUtils.getUser());
+ projectRecords.setCreateDate(new Date());
+ model.addAttribute("projectRecords", projectRecords);
+ return "modules/projectrecord/projectRecordsForm";
+ public String view(ProjectRecords projectRecords, Model model) {
+ return "modules/projectrecord/projectRecordsView";
+ public String save(ProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes) {
+ return form(projectRecords, model);
+// projectRecords.setProjectStatus(ProjectStatusEnum.IN_APRL.getValue());
+ if (!projectRecords.getIsNewRecord()) {//编辑表单保存
+ ProjectRecords t = projectRecordsService.get(projectRecords.getId());//从数据库取出记录的值
+ projectRecordsService.saveProject(t,ProjectStatusEnum.IN_APRL);//保存
+ } else {//新增表单保存
+ projectRecordsService.saveProject(projectRecords,ProjectStatusEnum.IN_APRL);//保存
+ logger.error("保存项目异常:",e);
+ addMessage(redirectAttributes, "保存项目异常:"+e.getMessage());
+ public String tStore(ProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes) throws Exception{
+// projectRecords.setProjectStatus(ProjectStatusEnum.TSTORE.getValue());
+ projectRecordsService.saveProject(t,ProjectStatusEnum.TSTORE);//保存
+ projectRecordsService.saveProject(projectRecords,ProjectStatusEnum.TSTORE);//保存
+ addMessage(redirectAttributes, "暂存项目成功");
+ logger.error("暂存项目异常:",e);
+ addMessage(redirectAttributes, "暂存项目异常:"+e.getMessage());
+ public String modify(ProjectRecords projectRecords, Model model,RedirectAttributes redirectAttributes) {
+ projectRecords=projectRecordsService.get(projectRecords.getId());
+ ProcessInstance processInstance = actTaskService.getProcIns(projectRecords.getProcessInstanceId());
+ return "modules/projectrecord/projectRecordsModify";
+ public String delete(ProjectRecords projectRecords, RedirectAttributes redirectAttributes) {
+ if(status==ProjectStatusEnum.TSTORE.getValue()||status==ProjectStatusEnum.REJECTED.getValue()||status==ProjectStatusEnum.RECALL.getValue()){
+ projectRecordsService.delete(projectRecords);
+ addMessage(redirectAttributes, "删除项目失败,只有“暂存”、“驳回”、“撤回”状态的项目才能删除");
+ projectRecordsService.delete(projectRecordsService.get(id));
+ public String exportFile(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ Page<ProjectRecords> page = projectRecordsService.findPage(new Page<ProjectRecords>(request, response, -1), projectRecords);
+ List<ProjectRecords> list = Lists.newArrayList();
+ new ExportExcel("项目数据", ProjectRecords.class, 1).setDataList(list).write(response, fileName).dispose();
+ if(workContractInfo==null){
+ public String workContractInfoAudit(Act act, ProjectRecords projectRecords, Model model) {
+ return "modules/projectrecord/projectRecordsAudit";
+ public String getProcess(ProjectRecords projectRecords, Model model,HttpServletRequest request){
+ ProjectRecords projectRecords = projectRecordsService.get(id);
+ if(5==projectRecords.getProjectStatus()){
+ addMessage(redirectAttributes, "项目登记已审批通过,无法撤回");
+ projectRecordsService.cancelProcess(projectRecords);
+ addMessage(redirectAttributes, "撤回该项目登记成功");
+ addMessage(redirectAttributes, "撤回该项目登记失败");
+ return "redirect:" + Global.getAdminPath() + "/project/projectRecords/?repage";
+ List<ProjectRecords> lists = new ArrayList<ProjectRecords>();
+ if (a.getTask().getTaskDefinitionKey()!=null) {
+ ProjectRecords projectRecords = projectRecordsService.getByProcessInstanceId(a.getProcInsId());
+ projectRecordsService.queryContractInfos(projectRecords);
+ if(projectRecords.getProjectStatus()!= ProjectStatusEnum.RECALL.getValue()) {
+ /*------变更--------*/
+ act.setProcDefKey("projectAlter");
+ List<Act> list3 = actTaskService.todoList(act);
+ Office office3 = UserUtils.getSelectCompany();
+ String companyId3 = office3==null?"":office3.getId();
+ List<Activity> activities3 = activityService.groupByActivityMenu("807c6d4b5623474792fe78ff1fd1cdff",companyId3);
+ for (Activity activity:activities3){
+ list3.addAll(actTaskService.todoList(act));
+ for (Act a : list3) {
+ ProjectRecords projectRecords = projectRecordsService.getByAlterProcessInstanceId(a.getTask().getProcessInstanceId());
+ if (projectRecords!=null){
+ if (projectRecords != null && projectRecords.getCompany().getId().equals(companyId3)&& projectRecords.getProjectStatus()==ProjectStatusEnum.ON_CHANGE.getValue()) {
+ projectRecords.setAuditType("项目变更");
+ Iterator<ProjectRecords> it = lists.iterator();
+ ProjectRecords w = it.next();
+ public String saveAudit(ProjectRecords projectRecords, Model model,
+ String str = projectRecordsService.auditSave(projectRecords,users);
+ addMessage(redirectAttributes, "项目登记流程审批失败");
+ List<ProjectRecords> list = projectRecordsService.historicList(act);
+ list.addAll(projectRecordsService.historicList(act));
+ //合同变更
+ List<Activity> activities3 = activityService.groupByActivityMenu("807c6d4b5623474792fe78ff1fd1cdff",companyId);
+ list.addAll(projectRecordsService.historicAlterList(act));
+ * 选择合同
+ @RequestMapping(value = "selectcontract")
+ public String selectcontractId(WorkContractInfo contract, String url,String type,String isTotal, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, HttpServletRequest request, HttpServletResponse response, Model model) {
+ if(!"1".equals(UserUtils.getSelectCompany().getId())){
+ contract.setOfficeId(UserUtils.getSelectOffice().getId());
+ contract.setChargeCompany(UserUtils.getSelectOffice().getId());
+ contract.setCreateBy(UserUtils.getUser());
+ contract.setContractState("5");
+ Page<WorkContractInfo> page = contractInfoService.findPageReceipts(new Page<WorkContractInfo>(request, response), contract);
+ model.addAttribute("type", type);
+ model.addAttribute("isTotal", isTotal);
+ model.addAttribute("obj", contract);
+ return "modules/sys/gridselectContractDetail";
+ @RequestMapping(value = "detailList")
+ @RequiresPermissions("project:projectRecordsDetail:list")
+ public String detailList(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<ProjectRecords> page = projectRecordsService.findPageDetail(new Page<ProjectRecords>(request, response), projectRecords);
+ return "modules/projectrecord/projectRecordsDetailList";
+ @RequiresPermissions("project:projectRecordsDetail:export")
+ @RequestMapping(value = "exportDetail", method=RequestMethod.POST)
+ public String exportDetailFile(ProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ Page<ProjectRecords> page = projectRecordsService.findPageDetail(new Page<ProjectRecords>(request, response, -1), projectRecords);
+ @RequiresPermissions("project:projectRecords:edit")
+ @RequestMapping(value = "downloadTemplate")
+ public void downloadTemplate(HttpServletRequest request,HttpServletResponse response) {
+ new OSSClientUtil().downByStream(template_path,template_name,response,request.getHeader("USER-AGENT"));
+ logger.error("项目计划模板下载失败!",e);
+ * 项目登记新增客户管理
+ @RequestMapping(value = "linkManSave")
+ public Object linkManSave(WorkClientInfo workClientInfo,
+ Model model, RedirectAttributes redirectAttributes,
+ HttpServletRequest request
+ ) throws Exception{
+ //保存当前人的公司
+ workClientInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+ workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+ workClientInfoService.save(workClientInfo);//保存
+ WorkClientLinkman linkman = workClientInfo.getWorkClientLinkmanList().get(0);
+ map.put("id",linkman.getId());
+ map.put("clientId",workClientInfo.getId());
+ map.put("clientName",workClientInfo.getName());
+ map.put("linkName",linkman.getName());
+ map.put("linkMobile",linkman.getLinkMobile());
+ map.put("linkPhone",linkman.getLinkPhone());
+ map.put("str","新增客户信息成功!");
+ *选择合同-Ajax自动映射联系人
+ * @param clientId
+ @RequestMapping(value = "getLinkManByClientId")
+ public Map<String, Object> queryWorkClientLinkMen(String clientId){
+ WorkClientLinkman linkman = workClientInfoService.queryLinkManByClientId(clientId);
+ if (linkman != null) {
+ WorkClientInfo workClientInfo = workClientInfoService.get(clientId);
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", linkman.getId());
+ map.put("clientId", workClientInfo.getId());
+ map.put("clientName", workClientInfo.getName());
+ map.put("linkName", linkman.getName());
+ map.put("linkMobile", linkman.getLinkMobile());
+ map.put("linkPhone", linkman.getLinkPhone());
+import com.jeeplus.modules.workstaff.dao.WorkStaffAchivesDao;
+ @RequestMapping(value = "${adminPath}/project/projectRecordUsers")
+public class ProjectRecordsUserController extends BaseController {
+ private WorkStaffAchivesDao workStaffAchivesDao;
+ projectRecords.setProjectStatus(5);
+ Page<ProjectRecords> page = projectRecordsService.findPageByStatus(new Page<ProjectRecords>(request, response), projectRecords);
+ return "modules/projectrecord/projectRecordUsersList";
+ projectRecordsService.queryLinkmanInfos(projectRecords);
+ List<User> users = workProjectUserDao.isDelFalg(projectRecords.getId(),"");
+ String userIds = "";
+ String delUserIds = "";
+ for (User user :users){
+ if (user.getDelFlag().equals("0")){
+ userIds += user.getId()+",";
+ delUserIds += user.getId()+",";
+ projectRecords.setUserIds(userIds);
+ projectRecords.setDelUserIds(delUserIds);
+ model.addAttribute("users", users);
+ return "modules/projectrecord/projectRecordUsersForm";
+ @RequestMapping(value = "getProjectRecordUsers")
+ public List<Map<String,Object>> getProjectRecordUsers(@RequestParam(required=false) String projectId,@RequestParam(required=false) String ids) {
+ List<Map<String,Object>> list = new ArrayList<>();
+ String[] idArr = ids.split(",");
+ List<User> users = workProjectUserDao.isDelFalg(projectId,"");
+ if (ids.contains(user.getId())){
+ String names = "";
+ for (String id : idArr){
+ User user = UserUtils.get(id);
+ if (!userIds.contains(id) && !delUserIds.contains(id)){
+ userList.add(new User(id));
+ map.put("id",StringUtils.isBlank(user.getId())?"":user.getId());
+ map.put("name",StringUtils.isBlank(user.getName())?"":user.getName());
+ map.put("officeId",StringUtils.isBlank(user.getOffice().getTopCompany())?"":user.getOffice().getTopCompany());
+ map.put("no",StringUtils.isBlank(user.getNo())?"":user.getNo());
+ map.put("mobile",StringUtils.isBlank(user.getMobile())?"":user.getMobile());
+ map.put("email",StringUtils.isBlank(user.getEmail())?"":user.getEmail());
+ map.put("msg","msg");
+ WorkStaffBasicInfo workStaffBasicInfo=workStaffAchivesDao.getJob(id);
+ if(workStaffBasicInfo!=null&&workStaffBasicInfo.getJobGrade()!=null){
+ map.put("jobName",StringUtils.isBlank(workStaffBasicInfo.getJobGrade().getName())?"":workStaffBasicInfo.getJobGrade().getName());
+ list.add(map);
+ }else if(delUserIds.contains(id)){
+ map.put("msg","del");
+ names += StringUtils.isBlank(user.getName())?"":(user.getName()+",");
+ if (userList!=null && userList.size()!=0){
+ projectRecords.setId(projectId);
+ projectRecords.setUsers(userList);
+ workProjectUserDao.insertUsers(projectRecords);
+ if (delUserIds!=null){
+ for (String id :delUserIds.split(",")){
+ projectRecords.setUserId(id);
+ projectRecords.setDelFlag("0");
+// workProjectUserDao.deleteUsers(projectRecords);
+ workProjectUserDao.reInsertUser(projectRecords);
+ if (StringUtils.isNotBlank(names)){
+ names = names.substring(0,names.length()-1);
+ names += "已在成员明细中!";
+ map.put("msg",names);
+ @RequestMapping(value = "removeProjectRecordUsers")
+ public Map<String,Object> removeProjectRecordUsers(@RequestParam(required=false) String projectId,@RequestParam(required=false) String userId) {
+ projectRecords.setUserId(userId);
+ projectRecords.setDelFlag("1");
+ int count = workProjectUserDao.deleteUsers(projectRecords);
+ if (count == 1){
+ map.put("msg",true);
+ map.put("msg",false);
@@ -0,0 +1,17 @@
+package com.jeeplus.modules.projectreportnum.dao;
+import com.jeeplus.modules.projectreportnum.entity.ReportNum;
+public interface ProjectReportNumDao extends CrudDao<ReportNum> {
+ int countNum(String userId);
+ void updateNum(String num);
@@ -0,0 +1,44 @@
+package com.jeeplus.modules.projectreportnum.entity;
+public class ReportNum extends DataEntity<ReportNum> {
+ private String num; // 报告号
+ private String state; //使用状态 (1:已使用 0:未使用)
+ private String userId; //用户
+ public String getNum() {
+ return num;
+ public void setNum(String num) {
+ this.num = num;
+ public String getState() {
+ return state;
+ public void setState(String state) {
+ this.state = state;
@@ -0,0 +1,84 @@
+package com.jeeplus.modules.projectreportnum.service;
+import com.jeeplus.modules.officeintroduce.entity.Officeintroduce;
+import com.jeeplus.modules.projectreportnum.dao.ProjectReportNumDao;
+import com.jeeplus.modules.serialnum.service.SerialNumTplService;
+public class ProjectReportNumService extends CrudService<ProjectReportNumDao, ReportNum> {
+ private ProjectReportNumDao projectReportNumDao;
+ private SerialNumTplService serialNumTplService;
+ public ReportNum get(String id) {
+ public int countNum(String userId){
+ return projectReportNumDao.countNum(userId);
+ public List<ReportNum> findList(ReportNum reportNum) {
+ return super.findList(reportNum);
+ public Page<ReportNum> findPage(Page<ReportNum> page, ReportNum reportNum) {
+ return super.findPage(page, reportNum);
+ public void updateNum(String num){
+ projectReportNumDao.updateNum(num);
+ public String save(String type) {
+ ReportNum reportNum = null;
+ int count = projectReportNumDao.countNum(UserUtils.getUser().getId());
+ if(count>=10){
+ return "最多领取10个报告号";
+ if(type.equals("one")){
+ String num = serialNumTplService.genSerialNum(UserUtils.getUser().getCompany(), "10");
+ reportNum = new ReportNum();
+ reportNum.setNum(num);
+ reportNum.setState("0");
+ super.save(reportNum);
+ for(int i=0;i<10-count;i++){
+ return "领取成功";
+ public void delete(ReportNum reportNum) {
+ super.delete(reportNum);
@@ -0,0 +1,82 @@
+package com.jeeplus.modules.projectreportnum.web;
+import com.jeeplus.common.utils.FreemarkerUtil;
+import com.jeeplus.common.utils.ImageUtil;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.modules.projectreportnum.service.ProjectReportNumService;
+import com.jeeplus.modules.tools.utils.TwoDimensionCode;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import org.springframework.web.bind.annotation.ResponseBody;
+import java.io.File;
+import java.net.URLEncoder;
+@RequestMapping(value = "/projectreportnum/projectReportNum")
+public class ProjectReportFindController extends BaseController {
+ private ProjectReportNumService projectReportNumService;
+ @RequestMapping("report")
+ public String report(HttpServletRequest request,Model model) throws Exception{
+ ProjectRecords data = new ProjectRecords();
+ String num = request.getParameter("number");
+ num = URLDecoder.decode(num,"UTF-8");
+ ProjectReportData projectReportData = projectReportDataDao.findByNum(num);
+ if(projectReportData != null && projectReportData.getProject() != null) {
+ String projectId = projectReportData.getProject().getId();
+ data = projectRecordsService.getQueryProjectUsers(projectId);
+ data.setReportData(projectReportData);
+ model.addAttribute("projectRecords",data);
+ return "modules/projectreportnum/reportAuditProject";
+import com.jeeplus.common.utils.*;
+import net.sf.json.JSONObject;
+@RequestMapping(value = "${adminPath}/projectreportnum/projectReportNum")
+public class ProjectReportNumController extends BaseController {
+ * 列表页面
+ public String list(ReportNum reportNum, HttpServletRequest request, HttpServletResponse response, Model model) {
+ reportNum.setUserId(userId);
+ Page<ReportNum> page = projectReportNumService.findPage(new Page<ReportNum>(request, response), reportNum);
+ return "modules/projectreportnum/projectReportNumList";
+ @RequestMapping(value = "select")
+ public String select(ReportNum reportNum, HttpServletRequest request, HttpServletResponse response, Model model) {
+ return "modules/projectreportnum/projectReportNumSel";
+ @RequestMapping(value = "download")
+ public String download(HttpServletRequest request,RedirectAttributes redirectAttributes,HttpServletResponse response){
+ Template template=null;
+ String querySite = Global.getConfig("serverDomain")+"/projectreportnum/projectReportNum/report?number="+ URLEncoder.encode(num,"UTF-8");
+ int index1 = num.indexOf("【");
+ int index2 = num.indexOf("】");
+ String repType = num.substring(0,index1);
+ String repYear = num.substring(index1+1,index2);
+ String repNum = num.substring(index2+1,num.length());
+ String pa = this.getClass().getResource("/").getPath();
+ if(pa.contains("%20")){
+ pa = pa.replace("%20"," ");
+ File path = new File(pa+"/freemarker");
+ Configuration cfg = new Configuration();
+ cfg.setDirectoryForTemplateLoading(path);
+ cfg.setDefaultEncoding("UTF-8");
+ template = cfg.getTemplate("current.ftl","UTF-8");
+ Map<String,Object> data = new HashMap<>();
+ data.put("repType",repType);
+ data.put("repYear",repYear);
+ data.put("repNum",repNum);
+ data.put("querySite","re.xgccpm.com/ccpm_query");
+ String commonFileName = UUID.randomUUID().toString();
+ String tempPath = pa+"/temp/";
+ File temP = new File(tempPath);
+ if(!temP.exists()){
+ temP.mkdirs();
+ String qrCodePath = tempPath + commonFileName + ".png";
+ TwoDimensionCode.encoderQRCode(querySite, qrCodePath, "png");//执行生成二维码
+ String imageStr = ImageUtil.getImageStr(qrCodePath);
+ data.put("qrcode",imageStr);
+ File docFile = new File(tempPath+commonFileName+".doc");
+ FreemarkerUtil.generateFile(data,template,docFile);
+ ResponseUtil.docResponse("防伪报告模板.doc",docFile,response);
+ if(docFile != null) docFile.delete(); // 删除doc临时文件
+ File imageFile = new File(qrCodePath);
+ if(imageFile.exists() && imageFile.isFile()) {
+ imageFile.delete();//删除二维码图片临时文件
+ addMessage(redirectAttributes, "下载失败!失败信息:"+e.getMessage());
+ * 保存记录
+ public Map save(HttpServletRequest request){
+ Map map = new HashMap();
+ String type = request.getParameter("type");
+ String msg = projectReportNumService.save(type);//保存
+ map.put("msg",msg);
+ if(msg.length()>5){
+ map.put("code","0");
+ map.put("code","1");
+ map.put("msg","领取失败");
+package com.jeeplus.modules.pushinfo.dao;
+import com.jeeplus.modules.pushinfo.entity.Pushinfo;
+ * 测试DAO接口
+ * @version 2017-07-28
+public interface PushinfoDao extends CrudDao<Pushinfo> {
+ * 根据ID获取Pushinfo
+ * @param pushinfo
+ public List<Pushinfo> getByPushId(Pushinfo pushinfo);
+ public List<Pushinfo> findPushList(Pushinfo pushinfo);
+ int updateDelflagByPushId(@Param("pushId") String pushId,@Param("delFlag")String delflag);
+ int updateStatusByPushId(@Param("pushId") String pushId,@Param("status")String delflag);
@@ -0,0 +1,131 @@
+package com.jeeplus.modules.pushinfo.entity;
+ * 测试Entity
+public class Pushinfo extends DataEntity<Pushinfo> {
+ private String title; // 标题
+ private String content; // 内容
+ private String pushId; // 推送id
+ private String userId; // 推送用户id
+ private String pushUserId; // 接收推送id
+ private String status;
+ private String parentType;
+ private String addcontent;
+ private String companyId;
+ private String mobile;
+ public String getMobile() {
+ return mobile;
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ public String getAddcontent() {
+ return addcontent;
+ public void setAddcontent(String addcontent) {
+ this.addcontent = addcontent;
+ public String getParentType() {
+ public void setParentType(String parentType) {
+ public Pushinfo() {
+ public Pushinfo(String id){
+ @ExcelField(title="标题", align=2, sort=7)
+ public String getTitle() {
+ return title;
+ public void setTitle(String title) {
+ this.title = title;
+ @ExcelField(title="内容", align=2, sort=8)
+ public String getContent() {
+ return content;
+ public void setContent(String content) {
+ this.content = content;
+ @ExcelField(title="类型", align=2, sort=9)
+ @ExcelField(title="推送id", align=2, sort=10)
+ public String getPushId() {
+ return pushId;
+ public void setPushId(String pushId) {
+ this.pushId = pushId;
+ @ExcelField(title="推送用户id", align=2, sort=11)
+ @ExcelField(title="接收推送id", align=2, sort=12)
+ public String getPushUserId() {
+ return pushUserId;
+ public void setPushUserId(String pushUserId) {
+ this.pushUserId = pushUserId;
@@ -0,0 +1,91 @@
+package com.jeeplus.modules.pushinfo.service;
+import com.jeeplus.common.utils.JPushClientUtil;
+import com.jeeplus.modules.pushinfo.dao.PushinfoDao;
+ * 测试Service
+public class PushinfoService extends CrudService<PushinfoDao, Pushinfo> {
+ private PushinfoDao pushinfoDao;
+ public Pushinfo get(String id) {
+ public List<Pushinfo> getByPushId(Pushinfo pushinfo) {
+ return dao.getByPushId(pushinfo);
+ public List<Pushinfo> findList(Pushinfo pushinfo) {
+ return super.findList(pushinfo);
+ public Page<Pushinfo> findPage(Page<Pushinfo> page, Pushinfo pushinfo) {
+ return super.findPage(page, pushinfo);
+ public Page<Pushinfo> findPushList(Page<Pushinfo> page, Pushinfo pushinfo) {
+ List<Pushinfo> pages = null;
+ pushinfo.setPage(page);
+ pages = pushinfoDao.findPushList(pushinfo);
+ page.setList(pages);
+ logger.info("Exception e:"+e);
+ public void save(Pushinfo pushinfo) {
+ super.save(pushinfo);
+ public void delete(Pushinfo pushinfo) {
+ super.delete(pushinfo);
+ public int updateDelflagByPushId(String pushId,String delflag){
+ return pushinfoDao.updateDelflagByPushId(pushId,delflag);
+ public int updateStatusByPushId(String pushId,String status){
+ return pushinfoDao.updateStatusByPushId(pushId,status);
+ public void pushInfoToApp(Pushinfo pushinfo,Map<String,Object> extras){
+ this.save(pushinfo);
+ Pushinfo selectPush = new Pushinfo();
+ selectPush.setPushId(pushinfo.getPushId());
+ selectPush.setPushUserId(UserUtils.getUser().getId());
+ List<Pushinfo> pushinfos = this.findList(selectPush);
+ if (pushinfos!=null && pushinfos.size()!=0){
+ Pushinfo push = pushinfos.get(0);
+ push.setStatus(pushinfo.getStatus());
+ this.save(push);
+ JPushClientUtil.sendNotificationToAlias(pushinfo.getTitle(), pushinfo.getContent(), extras, pushinfo.getPushUserId());
+package com.jeeplus.modules.pushinfo.web;
+import com.jeeplus.modules.pushinfo.service.PushinfoService;
+ * 测试Controller
+@RequestMapping(value = "${adminPath}/pushinfo/pushinfo")
+public class PushinfoController extends BaseController {
+ private PushinfoService pushinfoService;
+ public Pushinfo get(@RequestParam(required=false) String id) {
+ Pushinfo entity = null;
+ entity = pushinfoService.get(id);
+ entity = new Pushinfo();
+ * 推送信息列表页面
+ @RequiresPermissions("pushinfo:pushinfo:list")
+ public String list(Pushinfo pushinfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+ Page<Pushinfo> page = pushinfoService.findPage(new Page<Pushinfo>(request, response), pushinfo);
+ return "modules/pushinfo/pushinfoList";
+ * 查看,增加,编辑推送信息表单页面
+ @RequiresPermissions(value={"pushinfo:pushinfo:view","pushinfo:pushinfo:add","pushinfo:pushinfo:edit"},logical=Logical.OR)
+ public String form(Pushinfo pushinfo, Model model) {
+ model.addAttribute("pushinfo", pushinfo);
+ return "modules/pushinfo/pushinfoForm";
+ * 保存推送信息
+ @RequiresPermissions(value={"pushinfo:pushinfo:add","pushinfo:pushinfo:edit"},logical=Logical.OR)
+ public String save(Pushinfo pushinfo, Model model, RedirectAttributes redirectAttributes) throws Exception{
+ if (!beanValidator(model, pushinfo)){
+ return form(pushinfo, model);
+ if(!pushinfo.getIsNewRecord()){//编辑表单保存
+ Pushinfo t = pushinfoService.get(pushinfo.getId());//从数据库取出记录的值
+ MyBeanUtils.copyBeanNotNull2Bean(pushinfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+ pushinfoService.save(t);//保存
+ pushinfoService.save(pushinfo);//保存
+ addMessage(redirectAttributes, "保存推送信息成功");
+ return "redirect:"+Global.getAdminPath()+"/pushinfo/pushinfo/?repage";
+ * 删除推送信息
+ @RequiresPermissions("pushinfo:pushinfo:del")
+ public String delete(Pushinfo pushinfo, RedirectAttributes redirectAttributes) {
+ pushinfoService.delete(pushinfo);
+ addMessage(redirectAttributes, "删除推送信息成功");
+ * 批量删除推送信息
+ pushinfoService.delete(pushinfoService.get(id));
+ @RequiresPermissions("pushinfo:pushinfo:export")
+ public String exportFile(Pushinfo pushinfo, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+ String fileName = "推送信息"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+ Page<Pushinfo> page = pushinfoService.findPage(new Page<Pushinfo>(request, response, -1), pushinfo);
+ new ExportExcel("推送信息", Pushinfo.class).setDataList(page.getList()).write(response, fileName).dispose();
+ addMessage(redirectAttributes, "导出推送信息记录失败!失败信息:"+e.getMessage());
+ @RequiresPermissions("pushinfo:pushinfo:import")
+ List<Pushinfo> list = ei.getDataList(Pushinfo.class);
+ for (Pushinfo pushinfo : list){
+ pushinfoService.save(pushinfo);
+ failureMsg.insert(0, ",失败 "+failureNum+" 条推送信息记录。");
+ addMessage(redirectAttributes, "已成功导入 "+successNum+" 条推送信息记录"+failureMsg);
+ addMessage(redirectAttributes, "导入推送信息失败!失败信息:"+e.getMessage());
+ * 下载导入推送信息数据模板
+ String fileName = "推送信息数据导入模板.xlsx";
+ List<Pushinfo> list = Lists.newArrayList();
+ new ExportExcel("推送信息数据", Pushinfo.class, 1).setDataList(list).write(response, fileName).dispose();
+package com.jeeplus.modules.ruralprojectrecords.dao;
+public interface RuralProjectClientLinkmanDao {
+ public void deleteProjectLinkmans(@Param("projectId") String projectId, @Param("isEntrust") int isEntrust);
@@ -0,0 +1,23 @@
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsAlter;
+public interface RuralProjectRecordsAlterDao extends CrudDao<RuralProjectRecordsAlter> {
+ void updateProcessIdAndStatus(RuralProjectRecordsAlter projectRecords);
+ void updateSelectiveById(RuralProjectRecordsAlter projectRecords);
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+public interface RuralProjectRecordsDao extends CrudDao<RuralProjectRecords> {
+ void updateProcessIdAndStatus(RuralProjectRecords projectRecords);
+ void updateSelectiveById(RuralProjectRecords projectRecords);
+ List<RuralProjectRecords> findListByStatus(RuralProjectRecords projectRecords);
+ void updateSelectiveByProjectId(RuralProjectRecords records);
+ RuralProjectRecords findUseableByProjectId(String projectId);
+ List<RuralProjectRecords> findPageByRe(RuralProjectRecords records);
+ int queryCount(RuralProjectRecords records);
+ int queryCountByStatus(RuralProjectRecords records);
+public interface RuralWorkProjectUserDao {
+ public void deleteProjectMembers(@Param("projectId") String projectId, @Param("isMaster") String isMaster);
+ public List<User> isDelFalg(@Param("projectId") String projectId, @Param("delFlag") String delFlag);
+ public int insertUsers(RuralProjectRecords records);
+ public int deleteUsers(RuralProjectRecords records);
+ List<User> queryProjectUsers(@Param("projectId") String projectId, @Param("isMaster") String isMaster);
+ List<User> projectUsers(@Param("projectId") String projectId);
+ List<User> queryAllProjectUsers(@Param("projectId") String projectId);
+ int reInsertUser(RuralProjectRecords projectRecords);
@@ -0,0 +1,571 @@
+package com.jeeplus.modules.ruralprojectrecords.entity;
+public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
+ public RuralProjectRecords() {
+ public RuralProjectRecords(String id){
@@ -0,0 +1,516 @@
+public class RuralProjectRecordsAlter extends ActEntity<RuralProjectRecordsAlter> {
+ private RuralProjectRecords alterBeforeRecords;
+ public RuralProjectRecordsAlter() {
+ public RuralProjectRecordsAlter(String id){
+ public RuralProjectRecords getAlterBeforeRecords() {
+ public void setAlterBeforeRecords(RuralProjectRecords alterBeforeRecords) {
+package com.jeeplus.modules.ruralprojectrecords.enums;
@@ -0,0 +1,973 @@
+package com.jeeplus.modules.ruralprojectrecords.service;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectClientLinkmanDao;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsAlterDao;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
+import com.jeeplus.modules.ruralprojectrecords.enums.AlterStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+public class RuralProjectRecordsAlterService extends CrudService<RuralProjectRecordsAlterDao, RuralProjectRecordsAlter> {
+ private RuralWorkProjectUserDao workProjectUserDao;
+ private RuralProjectClientLinkmanDao clientLinkmanDao;
+ private RuralProjectRecordsService recordsService;
+ public RuralProjectRecordsAlter get(String id) {
+ public List<RuralProjectRecordsAlter> findList(RuralProjectRecordsAlter projectRecords) {
+ public Page<RuralProjectRecordsAlter> findPage(Page<RuralProjectRecordsAlter> page, RuralProjectRecordsAlter projectRecords) {
+ List<RuralProjectRecordsAlter> recordsList = findList(projectRecords);
+ for (RuralProjectRecordsAlter records : recordsList) {
+ public void saveProject(RuralProjectRecordsAlter projectRecordsAlter, AlterStatusEnum alterStatus) throws Exception {
+ RuralProjectRecords records = recordsService.get(projectRecordsAlter.getAlterBeforeRecords().getId());
+ if(records.getProjectStatus()!= ProjectStatusEnum.SIGNED.getValue() && records.getProjectStatus()!= ProjectStatusEnum.ON_CHANGE.getValue()){
+ }else if(records.getProjectStatus()== ProjectStatusEnum.ON_CHANGE.getValue() && AlterStatusEnum.TSTORE.getValue() != projectRecordsAlter.getProjectStatus()
+ && AlterStatusEnum.REJECTED.getValue() != projectRecordsAlter.getProjectStatus()&& AlterStatusEnum.RECALL.getValue() != projectRecordsAlter.getProjectStatus()){
+ if (AlterStatusEnum.TSTORE.getValue()== projectRecordsAlter.getProjectStatus()|| AlterStatusEnum.REJECTED.getValue()==oldStatus)return;
+ public void delete(RuralProjectRecordsAlter projectRecords) {
+ RuralProjectRecords records = new RuralProjectRecords();
+ public void queryUserNames(RuralProjectRecordsAlter records) {
+ public void queryLinkmanInfos(RuralProjectRecordsAlter projectRecords) {
+ private void startAudit(RuralProjectRecordsAlter projectRecordsAlter, String processInstanceId) throws Exception {
+ public void updateSelectiveById(RuralProjectRecordsAlter projectRecords) {
+ public RuralProjectRecordsAlter getByProcessInstanceId(String procInsId) {
+ RuralProjectRecordsAlter records = dao.findUniqueByProperty("process_instance_id", procInsId);
+ public String auditSave(RuralProjectRecordsAlter projectRecordsAlter, List<User> auditUsers) throws Exception {
+ saveProject(projectRecordsAlter, AlterStatusEnum.IN_APRL);
+ if(projectRecordsAlter.getProjectStatus()== AlterStatusEnum.SIGNED.getValue()){
+ RuralProjectRecords oldRecords = new RuralProjectRecords();
+ recordsService.saveProject(oldRecords, ProjectStatusEnum.INVALID);
+ recordsService.saveProject(records, ProjectStatusEnum.SIGNED);
+ public void queryContractInfo(RuralProjectRecordsAlter projectRecords) {
+ private void notifyProjectLeaders (RuralProjectRecordsAlter projectRecords, User createUser, String str){
+ public List<RuralProjectRecordsAlter> historicList(Act act){
+ List<RuralProjectRecordsAlter> list1 = new ArrayList<RuralProjectRecordsAlter>();
+ RuralProjectRecordsAlter projectRecords = this.getByProcessInstanceId(histTask.getProcessInstanceId());
+ public void queryWorkAttachment(RuralProjectRecordsAlter projectRecords) {
+ private void saveAttachments(RuralProjectRecordsAlter projectRecords) {
+ public void queryProjectAlterDetail(RuralProjectRecordsAlter projectRecordsAlter) {
+ public void cancelProcess(RuralProjectRecordsAlter projectRecordsAlter) {
+ RuralProjectRecordsAlter projectRecords = new RuralProjectRecordsAlter();