Merge remote-tracking branch 'origin/master'

master
xxssyyyyssxx 2021-11-12 19:33:28 +08:00
commit 0128a8261a
21 changed files with 961 additions and 1218 deletions

File diff suppressed because it is too large Load Diff

View File

@ -9,21 +9,13 @@ public class ActConstant {
public static final String PROC_INS_ID="procInsId";
public static final String PROC_DEF_KEY="procDefKey";
/**
*
*/
public static final int TASK_INDEX_FIRST_USER_TASK= 1;
/**
*
*/
public static final int TYPE_APPROVE= 1;
/**
*
*/
public static final int TYPE_ROLLBACK= 2;
/**
*

View File

@ -1,14 +1,23 @@
package cn.palmte.work.controller.backend;
import cn.palmte.work.bean.ApproveStatusEnum;
import cn.palmte.work.bean.BudgetBean;
import cn.palmte.work.bean.EstimateBean;
import cn.palmte.work.bean.FinalBean;
import cn.palmte.work.model.Project;
import cn.palmte.work.model.ProjectBudgetPlanDetail;
import cn.palmte.work.service.ProjectBudgetService;
import cn.palmte.work.service.ProjectEstimateService;
import cn.palmte.work.service.ProjectFinalSevice;
import cn.palmte.work.service.ProjectService;
import cn.palmte.work.utils.FreeMarkerUtil;
import cn.palmte.work.utils.InterfaceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@Controller
@ -21,14 +30,31 @@ public class ProjectFinalController extends BaseController{
@Autowired
private ProjectService projectService;
@Autowired
private ProjectEstimateService projectEstimateService;
@Autowired
private ProjectBudgetService projectBudgetService;
@RequestMapping("/edit")
public String budget(@RequestParam("id") int id, Map<String, Object> model) {
Project project = projectService.getProject(id);
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
model.put("project", project);
model.put("finalBean", projectFinalSevice.getFinal(project));
model.put("estimateBean", projectEstimateService.getEstimate(project));
model.put("budgetBean", projectBudgetService.getBudget(project));
model.put("finalBean",new FinalBean());
//现金表
model.put("cashFlowBean", projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails));
//freemarker可以利用的静态方法
model.put("Utils", FreeMarkerUtil.fromStaticPackage("cn.palmte.work.utils.Utils"));
return "admin/project_final_edit";
}
@RequestMapping("/save")
public void estimateAddSave(Project project, FinalBean finalBean, Map<String, Object> model) {
projectFinalSevice.save(project,finalBean);
}
}

View File

@ -6,6 +6,4 @@ import java.util.List;
public interface ProjectEstimateIncomeRepository extends JpaRepository<ProjectEstimateIncome,Integer> {
List<ProjectEstimateIncome> findAllByProjectIdEquals(int id);
List<ProjectEstimateIncome> findAllByProjectIdEqualsAndTypeEquals(int id,int type);
}

View File

@ -9,7 +9,7 @@ import java.math.BigDecimal;
*
*/
@Entity
@Table(name = "project_estimate_cost_manage")
@Table(name = "project_final_cost_manage")
public class ProjectFinalCostManage {
public static final int TYPE_EXPROPRIATION = 1;
public static final int TYPE_COMPANY_MANAGE = 2;

View File

@ -9,7 +9,7 @@ import java.math.BigDecimal;
*
*/
@Entity
@Table(name = "project_budget_income")
@Table(name = "project_final_income")
public class ProjectFinalIncome {
public static final int TYPE_DEVICE = 1;
public static final int TYPE_ENGINEER = 2;

View File

@ -0,0 +1,66 @@
package cn.palmte.work.model;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
/**
*
*/
@Data
@Entity
@Table(name = "project_task_record")
public class ProjectTaskRecord {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "project_id")
private int projectId;
@Column(name = "proc_def_id")
private String procDefId;
@Column(name = "proc_ins_id")
private String procInsId;
@Column(name = "task_def_key")
private String taskDefKey;
@Column(name = "task_name")
private String taskName;
/**
* @see cn.palmte.work.bean.ApproveStatusEnum#approveStatus
*/
@Column(name = "task_status")
private int taskStatus;
/**
* id
*/
@Column(name = "assignee_id")
private String assigneeId;
/**
*
*/
@Column(name = "assignee_name")
private String assigneeName;
/**
*
*/
@Column(name = "task_comment")
private String taskComment;
@Column(name = "create_time")
private Date createTime;
@Transient
private String roleName;
}

View File

@ -0,0 +1,8 @@
package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProjectTaskRecordRepository extends JpaRepository<ProjectTaskRecord, Integer> {
}

View File

@ -1,9 +1,13 @@
package cn.palmte.work.service;
import cn.palmte.work.bean.ApproveStatusEnum;
import cn.palmte.work.config.activiti.ActConstant;
import cn.palmte.work.utils.ActUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@ -15,21 +19,29 @@ import java.util.*;
@Service
public class ActCallbackScript {
private static final Logger logger = LoggerFactory.getLogger(ActCallbackScript.class);
@Autowired
private ActUtil actUtil;
@Autowired
private ProjectInstanceService projectInstanceService;
/**
*
*
* @param map
*/
public void updateApproveStatus(Map map) {
logger.info("--- updateApproveStatus--- : {} ", map);
//String startUserId = (String) map.get(ActConstant.START_PROCESS_USERID);
String procInsId = (String) map.get(ActConstant.PROC_INS_ID);
String procDefKey = (String) map.get(ActConstant.PROC_DEF_KEY);
logger.info(" updateApproveStatus procInsId:{}, procDefKey:{}", procInsId, procDefKey);
int projectId = actUtil.getProjectId(procInsId);
if (projectId > 0) {
projectInstanceService.updateApproveStatus(projectId, ApproveStatusEnum.APPROVAL_PASSED, procDefKey);
}
public void endScriptDemo(Map map) {
logger.info("--- endScriptDemo--- : {} ", map);
String startUserId = (String)map.get(ActConstant.START_PROCESS_USERID);
String procInsId = (String)map.get(ActConstant.START_PROCESS_USERID);
logger.info(" startUserId:{}, procInsId:{}", startUserId, procInsId);
}
public void rollbackScriptDemo(Map map) {
logger.info("--- rollbackScriptDemo--- : {} ", map);
String startUserId = (String)map.get(ActConstant.START_PROCESS_USERID);
String procInsId = (String)map.get(ActConstant.START_PROCESS_USERID);
logger.info(" startUserId:{}, procInsId:{}", startUserId, procInsId);
}
}

View File

@ -1,6 +1,7 @@
package cn.palmte.work.service;
import cn.palmte.work.config.activiti.ActConstant;
import com.alibaba.fastjson.JSONObject;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@ -25,6 +27,9 @@ public class ActListenerService {
@Autowired
private ActTaskDefService actTaskDefService;
@Autowired
private ProjectInstanceService projectInstanceService;
/**
*
*
@ -37,8 +42,22 @@ public class ActListenerService {
String procDefId = delegateTask.getProcessDefinitionId();
String procInsId = delegateTask.getProcessInstanceId();
String taskDefKey = delegateTask.getTaskDefinitionKey();
Set<String> candidateUsers = actTaskDefService.findCandidateUsers(procDefId, procInsId, taskDefKey);
List<String> candidateUsers = actTaskDefService.findCandidateUsers(procDefId, procInsId, taskDefKey);
logger.info("addCandidateUsers : {}", candidateUsers);
Object projectIdObj = delegateTask.getVariable(ActConstant.KEY_PROJECT_ID);
logger.info("projectIdObj : {}", projectIdObj);
if (candidateUsers != null && !candidateUsers.isEmpty() && projectIdObj != null) {
try {
int adminId = Integer.parseInt(candidateUsers.get(0));
projectInstanceService.updateApprover((Integer) projectIdObj, adminId);
} catch (Exception e) {
logger.error("", e);
}
}
delegateTask.addCandidateUsers(candidateUsers);
}
@ -55,7 +74,7 @@ public class ActListenerService {
}*/
public Set<String> multipleInstanceTask(DelegateExecution delegateExecution) throws Exception {
public List<String> multipleInstanceTask(DelegateExecution delegateExecution) throws Exception {
String procInsId = delegateExecution.getProcessInstanceId();
String procDefId = delegateExecution.getProcessDefinitionId();
String taskDefKey = delegateExecution.getCurrentActivityId();

View File

@ -1,6 +1,7 @@
package cn.palmte.work.service;
import cn.palmte.work.bean.ApproveStatusEnum;
import cn.palmte.work.model.ActTaskDefRepository;
import cn.palmte.work.pojo.ActProcIns;
import cn.palmte.work.utils.ActUtil;
@ -14,6 +15,7 @@ import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.impl.identity.Authentication;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
@ -50,7 +52,7 @@ public class ActProcInsService {
Pagination pagination;
@Autowired
private ActTaskDefService actTaskDefService;
private ProjectTaskRecordService projectTaskRecordService;
@Autowired
private HistoryService historyService; //历史管理(执行完的数据的管理)
@ -91,16 +93,19 @@ public class ActProcInsService {
String assignee = InterfaceUtil.getAdminId() + "";
task.setAssignee(assignee);
String taskId = task.getId();
taskService.addComment(taskId, procInsId, "提交审批");
String comment = "提交" + processDefinition.getName();
Authentication.setAuthenticatedUserId(assignee);
taskService.addComment(taskId, procInsId, comment);
taskService.complete(taskId);
actTaskDefRepository.updateHiTaskAssign(assignee, procInsId, taskId);
actTaskDefRepository.updateHiActAssign(assignee, procInsId, taskId);
projectTaskRecordService.saveTaskRecord(task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), comment);
return processInstance.getId();
}
/**
*
*

View File

@ -1,5 +1,6 @@
package cn.palmte.work.service;
import cn.palmte.work.bean.ApproveStatusEnum;
import cn.palmte.work.config.activiti.ActConstant;
import cn.palmte.work.model.*;
@ -8,6 +9,7 @@ import cn.palmte.work.utils.ActUtil;
import cn.palmte.work.utils.InterfaceUtil;
import com.alibaba.fastjson.JSONObject;
import org.activiti.engine.*;
import org.activiti.engine.impl.identity.Authentication;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.task.Task;
import org.apache.commons.lang.StringUtils;
@ -25,9 +27,9 @@ import java.util.*;
public class ActTaskDefService {
private static final Logger logger = LoggerFactory.getLogger(ActTaskDefService.class);
@Autowired
private RepositoryService repositoryService; //管理流程定义 与流程定义和部署对象相关的Service
private ProjectTaskRecordService projectTaskRecordService;
@Autowired
private ProcessEngine processEngine; //流程引擎对象
private RepositoryService repositoryService;
@Autowired
private TaskService taskService; //任务管理 与正在执行的任务管理相关的Service
@Autowired
@ -38,6 +40,8 @@ public class ActTaskDefService {
Pagination pagination;
@Autowired
private ActUtil actUtil;
@Autowired
private ProjectInstanceService projectInstanceService;
/**
@ -56,6 +60,7 @@ public class ActTaskDefService {
private void completeTask(String taskId, String procInsId, String message, int type) {
String userId = InterfaceUtil.getAdminId() + "";
Authentication.setAuthenticatedUserId(userId);
taskService.addComment(taskId, procInsId, message);
actTaskDefRepository.updateHiTaskAssign(userId, procInsId, taskId);
@ -71,6 +76,9 @@ public class ActTaskDefService {
//会签处理
handleMulti(taskId, procInsId, type, userId, actTaskDef);
}
//保存审批记录
projectTaskRecordService.saveTaskRecord(currentTask, type, message);
}
@ -107,7 +115,7 @@ public class ActTaskDefService {
Double instanceActiveCount = Double.parseDouble(ActUtil.filterNullToZero(taskService.getVariable(taskId, ActConstant.NUMBER_OF_ACTIVE_INSTANCES))); //活动的会签任务数
Double instanceCompleteCount = Double.parseDouble(ActUtil.filterNullToZero(taskService.getVariable(taskId, ActConstant.NUMBER_OF_COMPLETED_INSTANCES))); //完成会签任务数*/
if (ActConstant.TYPE_ROLLBACK == type) {
if (ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == type) {
//一个人驳回 整个任务节点驳回
List<Task> taskList = taskService.createTaskQuery().processInstanceId(procInsId).list();
for (int i = 0; i < taskList.size(); i++) {
@ -139,7 +147,7 @@ public class ActTaskDefService {
* @param actTaskDef
*/
private void handleSinge(String taskId, String procInsId, int type, String userId, ActTaskDef actTaskDef) {
if (ActConstant.TYPE_APPROVE == type) {
if (ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus() == type) {
//审批通过
taskService.setAssignee(taskId, userId);
taskService.complete(taskId);
@ -147,12 +155,12 @@ public class ActTaskDefService {
//执行配置的审批通过脚本
int endScript = actTaskDef.getEndScript();
if (endScript != 0) {
actUtil.invokeEventScript(endScript, procInsId);
actUtil.invokeEventScript(endScript, procInsId, actTaskDef);
} else {
logger.info("未配置审批通过脚本 task:{}", actTaskDef.getTaskName());
}
} else if (ActConstant.TYPE_ROLLBACK == type) {
} else if (ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == type) {
//驳回
String rollbackTaskKey = actTaskDef.getRollbackTaskKey();
actUtil.jumpToTargetTask(taskId, rollbackTaskKey);
@ -160,10 +168,16 @@ public class ActTaskDefService {
//执行配置的驳回脚本
int rollbackScript = actTaskDef.getRollbackScript();
if (rollbackScript != 0) {
actUtil.invokeEventScript(rollbackScript, procInsId);
actUtil.invokeEventScript(rollbackScript, procInsId, actTaskDef);
} else {
logger.info("未配置驳回脚本 task:{}", actTaskDef.getTaskName());
}
int projectId = actUtil.getProjectId(procInsId);
if (projectId > 0) {
projectInstanceService.updateApproveStatus(projectId, ApproveStatusEnum.APPROVAL_UNPASS, actTaskDef.getProcDefKey());
}
}
}
@ -264,24 +278,25 @@ public class ActTaskDefService {
* @param taskDefKey
* @return
*/
public Set<String> findCandidateUsers(String procDefId, String procInsId, String taskDefKey) {
public List<String> findCandidateUsers(String procDefId, String procInsId, String taskDefKey) {
ActTaskDef taskDef = findFirstByProcDefIdAndTaskKey(procDefId, taskDefKey);
if (taskDef.getTaskIndex() == ActConstant.TASK_INDEX_FIRST_USER_TASK) {
//任务驳回到发起节点 审批人设置为发起人
String startUserId = actUtil.getStartUserId(procInsId);
Set<String> res = new HashSet<>(1);
List<String> res = new ArrayList<>(1);
logger.info("findCandidateUsers-0-task:{}, startUserId:{}", taskDef.getTaskName(), startUserId);
res.add(startUserId);
return res;
}
List<String> resList = new ArrayList<>();
//去重
Set<String> res = new HashSet<>();
//通过人员id查询
List<String> candidateUserList = taskDef.getCandidateUserList();
logger.info("findCandidateUsers-1-task:{}, userList:{}", taskDef.getTaskName(), candidateUserList);
if (!candidateUserList.isEmpty()) {
resList.addAll(candidateUserList);
res.addAll(candidateUserList);
}
//通过角色id查询
@ -290,13 +305,12 @@ public class ActTaskDefService {
List<String> list = accountService.getUserIsByRole(candidateRoleList);
logger.info("findCandidateUsers-3-task:{}, userIdListByRole:{}", taskDef.getTaskName(), list);
if (!list.isEmpty()) {
resList.addAll(list);
res.addAll(list);
}
//去重
Set<String> res = new HashSet<>(resList);
logger.info("findCandidateUsers-4-task:{}, resIds:{}", taskDef.getTaskName(), res);
return res;
List<String> resList = new ArrayList<>(res);
logger.info("findCandidateUsers-4-task:{}, resIds:{}", taskDef.getTaskName(), resList);
return resList;
}

View File

@ -1,10 +1,17 @@
package cn.palmte.work.service;
import cn.palmte.work.bean.BudgetBean;
import cn.palmte.work.bean.CashFlowBean;
import cn.palmte.work.bean.EstimateBean;
import cn.palmte.work.bean.FinalBean;
import cn.palmte.work.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Service
public class ProjectFinalSevice {
@ -21,25 +28,271 @@ public class ProjectFinalSevice {
private ProjectFinalIncomeReposiry projectFinalIncomeReposiry;
@Autowired
private ProjectEstimateIncomeRepository projectEstimateIncomeRepository;
private ProjectEstimateService projectEstimateService;
@Autowired
private ProjectBudgetCostRepository projectBudgetCostRepository;
private ProjectBudgetService projectBudgetService;
@Autowired
private ProjectBudgetIncomeRepository projectBudgetIncomeRepository;
public void save(Project project, FinalBean finalBean) {
//预算表数据
EstimateBean estimate = projectEstimateService.getEstimate(project);
//概算表数据
BudgetBean budget = projectBudgetService.getBudget(project);
//现金流量表数据
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
CashFlowBean cashFlowBean = projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails);
//保存项目决算收入信息
saveProjectFinalIncome(project,finalBean,estimate,budget);
public FinalBean getFinal(Project project) {
FinalBean finalBean = new FinalBean();
//收入设备类总额
//保存项目决算成本信息
saveProjectFinalCost(project,finalBean,estimate,budget);
//工程类总额
//保存项目结算管理成本信息
saveProjectFinalCostManage(project,finalBean,estimate,budget);
//保存项目结算现金流量信息
saveProjectFinalCashFlux(project,finalBean,cashFlowBean);
//服务类总额
return finalBean;
}
public void saveProjectFinalCostManage(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget){
ProjectFinalCostManage expropriationManage = new ProjectFinalCostManage();
expropriationManage.setProjectId(project.getId());
expropriationManage.setType(ProjectFinalCostManage.TYPE_EXPROPRIATION);
expropriationManage.setEstimateTotalManageCost(estimate.getCostExpropriationTaxExclude());
expropriationManage.setBudgetTotalManageCost(budget.getCostExpropriationTaxExclude());
expropriationManage.setSettleTotalManageCost(new BigDecimal(0));
expropriationManage.setFinalTotalManageCost(finalBean.getCostExpropriationFinalTotal());
projectFinalCostManageRepository.saveAndFlush(expropriationManage);
ProjectFinalCostManage companyManage = new ProjectFinalCostManage();
companyManage.setProjectId(project.getId());
companyManage.setType(ProjectFinalCostManage.TYPE_COMPANY_MANAGE);
companyManage.setEstimateTotalManageCost(estimate.getCostCompanyManageTaxExclude());
companyManage.setBudgetTotalManageCost(budget.getCostCompanyManageTaxExclude());
companyManage.setSettleTotalManageCost(new BigDecimal(0));
companyManage.setFinalTotalManageCost(finalBean.getCostCompanyManageFinalTotal());
projectFinalCostManageRepository.saveAndFlush(companyManage);
ProjectFinalCostManage incomeTax = new ProjectFinalCostManage();
incomeTax.setProjectId(project.getId());
incomeTax.setType(ProjectFinalCostManage.TYPE_INCOME_TAX);
incomeTax.setSettleTotalManageCost(new BigDecimal(0));
incomeTax.setFinalTotalManageCost(finalBean.getCostIncomeTaxFinalTotal());
projectFinalCostManageRepository.saveAndFlush(incomeTax);
}
private void saveProjectFinalIncome(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget) {
ProjectFinalIncome projectFinalIncomeDevice = new ProjectFinalIncome();
projectFinalIncomeDevice.setProjectId(project.getId());
projectFinalIncomeDevice.setType(ProjectFinalIncome.TYPE_DEVICE);
projectFinalIncomeDevice.setEstimateTotalIncome(estimate.getIncomeDeviceTaxExclude());
projectFinalIncomeDevice.setBudgetTotalIncome(budget.getIncomeDeviceTaxExclude());
projectFinalIncomeDevice.setSettleTotalIncome(new BigDecimal(0));
projectFinalIncomeDevice.setFinalTotalIncome(finalBean.getIncomeDeviceFinalTotal());
projectFinalIncomeReposiry.saveAndFlush(projectFinalIncomeDevice);
ProjectFinalIncome projectFinalIncomeEngineer = new ProjectFinalIncome();
projectFinalIncomeEngineer.setProjectId(project.getId());
projectFinalIncomeEngineer.setType(ProjectFinalIncome.TYPE_ENGINEER);
projectFinalIncomeEngineer.setEstimateTotalIncome(estimate.getIncomeEngineerTaxExclude());
projectFinalIncomeEngineer.setBudgetTotalIncome(budget.getIncomeEngineerTaxExclude());
projectFinalIncomeEngineer.setSettleTotalIncome(new BigDecimal(0));
projectFinalIncomeEngineer.setFinalTotalIncome(finalBean.getIncomeEngineerFinalTotal());
projectFinalIncomeReposiry.saveAndFlush(projectFinalIncomeEngineer);
ProjectFinalIncome projectFinalIncomeService = new ProjectFinalIncome();
projectFinalIncomeService.setProjectId(project.getId());
projectFinalIncomeService.setType(ProjectFinalIncome.TYPE_SERVICE);
projectFinalIncomeService.setEstimateTotalIncome(estimate.getIncomeServiceTaxExclude());
projectFinalIncomeService.setBudgetTotalIncome(budget.getIncomeServiceTaxExclude());
projectFinalIncomeService.setSettleTotalIncome(new BigDecimal(0));
projectFinalIncomeService.setFinalTotalIncome(finalBean.getIncomeServiceFinalTotal());
projectFinalIncomeReposiry.saveAndFlush(projectFinalIncomeService);
}
public void saveProjectFinalCost(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget){
ProjectFinalCost projectFinalCostDevice = new ProjectFinalCost();
projectFinalCostDevice.setProjectId(project.getId());
projectFinalCostDevice.setFee(ProjectFinalCost.FEE_PURCHASE);
projectFinalCostDevice.setType(ProjectFinalCost.TYPE_DEVICE);
projectFinalCostDevice.setEstimateTotalCost(estimate.getCostPurchaseDeviceTaxExclude());
projectFinalCostDevice.setBudgetTotalCost(budget.getCostPurchaseDeviceTaxExclude());
projectFinalCostDevice.setSettleTotalCost(new BigDecimal(0));
projectFinalCostDevice.setFinalTotalCost(finalBean.getCostPurchaseDeviceFinalTotal());
projectFinalCostRepository.saveAndFlush(projectFinalCostDevice);
ProjectFinalCost projectFinalCostBuild = new ProjectFinalCost();
projectFinalCostBuild.setProjectId(project.getId());
projectFinalCostBuild.setFee(ProjectFinalCost.FEE_PURCHASE);
projectFinalCostBuild.setType(ProjectFinalCost.TYPE_BUILDING);
projectFinalCostBuild.setEstimateTotalCost(estimate.getCostPurchaseBuildTaxExclude());
projectFinalCostBuild.setBudgetTotalCost(budget.getCostPurchaseBuildTaxExclude());
projectFinalCostBuild.setSettleTotalCost(new BigDecimal(0));
projectFinalCostBuild.setFinalTotalCost(finalBean.getCostPurchaseBuildFinalTotal());
projectFinalCostRepository.saveAndFlush(projectFinalCostBuild);
ProjectFinalCost projectFinalCostService = new ProjectFinalCost();
projectFinalCostService.setProjectId(project.getId());
projectFinalCostService.setFee(ProjectFinalCost.FEE_PURCHASE);
projectFinalCostService.setType(ProjectFinalCost.TYPE_SERVICE);
projectFinalCostService.setEstimateTotalCost(estimate.getCostPurchaseServiceTaxExclude());
projectFinalCostService.setBudgetTotalCost(budget.getCostPurchaseServiceTaxExclude());
projectFinalCostService.setSettleTotalCost(new BigDecimal(0));
projectFinalCostService.setFinalTotalCost(finalBean.getCostPurchaseServiceFinalTotal());
projectFinalCostRepository.saveAndFlush(projectFinalCostService);
ProjectFinalCost projectFinalCostOther = new ProjectFinalCost();
projectFinalCostOther.setProjectId(project.getId());
projectFinalCostOther.setFee(ProjectFinalCost.FEE_PURCHASE);
projectFinalCostOther.setType(ProjectFinalCost.TYPE_OTHER);
projectFinalCostOther.setEstimateTotalCost(estimate.getCostPurchaseOtherTaxExclude());
projectFinalCostOther.setBudgetTotalCost(budget.getCostPurchaseOtherTaxExclude());
projectFinalCostOther.setSettleTotalCost(new BigDecimal(0));
projectFinalCostOther.setFinalTotalCost(finalBean.getCostPurchaseOtherFinalTotal());
projectFinalCostRepository.saveAndFlush(projectFinalCostOther);
ProjectFinalCost projectFinalCostProject = new ProjectFinalCost();
projectFinalCostProject.setProjectId(project.getId());
projectFinalCostProject.setFee(ProjectFinalCost.FEE_PROJECT_MANAGE);
projectFinalCostProject.setType(ProjectFinalCost.TYPE_PROJECT_MANAGE);
projectFinalCostProject.setEstimateTotalCost(estimate.getCostProjectManageTaxExclude());
projectFinalCostProject.setBudgetTotalCost(budget.getCostProjectManageTaxExclude());
projectFinalCostProject.setSettleTotalCost(new BigDecimal(0));
projectFinalCostProject.setFinalTotalCost(finalBean.getCostProjectManageFinalTotal());
projectFinalCostRepository.saveAndFlush(projectFinalCostProject);
ProjectFinalCost projectFinalCostOtherOther = new ProjectFinalCost();
projectFinalCostOtherOther.setProjectId(project.getId());
projectFinalCostOtherOther.setFee(ProjectFinalCost.FEE_OTHER);
projectFinalCostOtherOther.setType(ProjectFinalCost.TYPE_OTHER_OTHER);
projectFinalCostOtherOther.setEstimateTotalCost(estimate.getCostOtherOtherTaxExclude());
projectFinalCostOtherOther.setBudgetTotalCost(budget.getCostOtherOtherTaxExclude());
projectFinalCostOtherOther.setSettleTotalCost(new BigDecimal(0));
projectFinalCostOtherOther.setFinalTotalCost(finalBean.getCostOtherFinalTotal());
projectFinalCostRepository.saveAndFlush(projectFinalCostOtherOther);
}
public void saveProjectFinalCashFlux(Project project, FinalBean finalBean, CashFlowBean cashFlowBean) {
List<ProjectFinalCashFlux> list = new ArrayList<>();
ProjectFinalCashFlux projectFinalCashFlux1 = new ProjectFinalCashFlux();
projectFinalCashFlux1.setProjectId(project.getId());
projectFinalCashFlux1.setType(ProjectFinalCashFlux.TYPE1);
projectFinalCashFlux1.setBudgetTotalCashFlux(cashFlowBean.getSaleIncomeCash());
projectFinalCashFlux1.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux1.setFinalTotalCashFlux(finalBean.getSaleIncomeCash());
list.add(projectFinalCashFlux1);
ProjectFinalCashFlux projectFinalCashFlux2 = new ProjectFinalCashFlux();
projectFinalCashFlux2.setProjectId(project.getId());
projectFinalCashFlux2.setType(ProjectFinalCashFlux.TYPE2);
projectFinalCashFlux2.setBudgetTotalCashFlux(cashFlowBean.getTaxReturn());
projectFinalCashFlux2.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux2.setFinalTotalCashFlux(finalBean.getTaxReturn());
list.add(projectFinalCashFlux2);
ProjectFinalCashFlux projectFinalCashFlux3 = new ProjectFinalCashFlux();
projectFinalCashFlux3.setProjectId(project.getId());
projectFinalCashFlux3.setType(ProjectFinalCashFlux.TYPE3);
projectFinalCashFlux3.setBudgetTotalCashFlux(cashFlowBean.getEarnestMoneyIncome());
projectFinalCashFlux3.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux3.setFinalTotalCashFlux(finalBean.getEarnestMoneyIncome());
list.add(projectFinalCashFlux3);
ProjectFinalCashFlux projectFinalCashFlux4 = new ProjectFinalCashFlux();
projectFinalCashFlux4.setProjectId(project.getId());
projectFinalCashFlux4.setType(ProjectFinalCashFlux.TYPE4);
projectFinalCashFlux4.setBudgetTotalCashFlux(cashFlowBean.getPurchaseCost());
projectFinalCashFlux4.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux4.setFinalTotalCashFlux(finalBean.getPurchaseCost());
list.add(projectFinalCashFlux4);
ProjectFinalCashFlux projectFinalCashFlux5 = new ProjectFinalCashFlux();
projectFinalCashFlux5.setProjectId(project.getId());
projectFinalCashFlux5.setType(ProjectFinalCashFlux.TYPE5);
projectFinalCashFlux5.setBudgetTotalCashFlux(cashFlowBean.getTaxCost());
projectFinalCashFlux5.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux5.setFinalTotalCashFlux(finalBean.getTaxCost());
list.add(projectFinalCashFlux5);
ProjectFinalCashFlux projectFinalCashFlux6 = new ProjectFinalCashFlux();
projectFinalCashFlux6.setProjectId(project.getId());
projectFinalCashFlux6.setType(ProjectFinalCashFlux.TYPE6);
projectFinalCashFlux6.setBudgetTotalCashFlux(cashFlowBean.getEarnestMoneyCost());
projectFinalCashFlux6.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux6.setFinalTotalCashFlux(finalBean.getEarnestMoneyCost());
list.add(projectFinalCashFlux6);
ProjectFinalCashFlux projectFinalCashFlux7 = new ProjectFinalCashFlux();
projectFinalCashFlux7.setProjectId(project.getId());
projectFinalCashFlux7.setType(ProjectFinalCashFlux.TYPE7);
projectFinalCashFlux7.setBudgetTotalCashFlux(cashFlowBean.getNetCashFlow());
projectFinalCashFlux7.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux7.setFinalTotalCashFlux(finalBean.getNetCashFlow());
list.add(projectFinalCashFlux7);
ProjectFinalCashFlux projectFinalCashFlux8 = new ProjectFinalCashFlux();
projectFinalCashFlux8.setProjectId(project.getId());
projectFinalCashFlux8.setType(ProjectFinalCashFlux.TYPE8);
projectFinalCashFlux8.setBudgetTotalCashFlux(cashFlowBean.getCashInflowFromInvestingActivities());
projectFinalCashFlux8.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux8.setFinalTotalCashFlux(finalBean.getCashInflowFromInvestingActivities());
list.add(projectFinalCashFlux8);
ProjectFinalCashFlux projectFinalCashFlux9 = new ProjectFinalCashFlux();
projectFinalCashFlux9.setProjectId(project.getId());
projectFinalCashFlux9.setType(ProjectFinalCashFlux.TYPE9);
projectFinalCashFlux9.setBudgetTotalCashFlux(cashFlowBean.getCashOutflowFromInvestingActivities());
projectFinalCashFlux9.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux9.setFinalTotalCashFlux(finalBean.getCashOutflowFromInvestingActivities());
list.add(projectFinalCashFlux9);
ProjectFinalCashFlux projectFinalCashFlux10 = new ProjectFinalCashFlux();
projectFinalCashFlux10.setProjectId(project.getId());
projectFinalCashFlux10.setType(ProjectFinalCashFlux.TYPE10);
projectFinalCashFlux10.setBudgetTotalCashFlux(cashFlowBean.getNetCashFromInvestingActivities());
projectFinalCashFlux10.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux10.setFinalTotalCashFlux(finalBean.getNetCashFromInvestingActivities());
list.add(projectFinalCashFlux10);
ProjectFinalCashFlux projectFinalCashFlux11 = new ProjectFinalCashFlux();
projectFinalCashFlux11.setProjectId(project.getId());
projectFinalCashFlux11.setType(ProjectFinalCashFlux.TYPE11);
projectFinalCashFlux11.setBudgetTotalCashFlux(cashFlowBean.getFinancingCapitalInflow());
projectFinalCashFlux11.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux11.setFinalTotalCashFlux(finalBean.getFinancingCapitalInflow());
list.add(projectFinalCashFlux11);
ProjectFinalCashFlux projectFinalCashFlux12 = new ProjectFinalCashFlux();
projectFinalCashFlux12.setProjectId(project.getId());
projectFinalCashFlux12.setType(ProjectFinalCashFlux.TYPE12);
projectFinalCashFlux12.setBudgetTotalCashFlux(cashFlowBean.getFinancingCapitalOutflow());
projectFinalCashFlux12.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux12.setFinalTotalCashFlux(finalBean.getFinancingCapitalOutflow());
list.add(projectFinalCashFlux12);
ProjectFinalCashFlux projectFinalCashFlux13 = new ProjectFinalCashFlux();
projectFinalCashFlux13.setProjectId(project.getId());
projectFinalCashFlux13.setType(ProjectFinalCashFlux.TYPE13);
projectFinalCashFlux13.setBudgetTotalCashFlux(cashFlowBean.getFinancingCapitalCashflow());
projectFinalCashFlux13.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux13.setFinalTotalCashFlux(finalBean.getFinancingCapitalCashflow());
list.add(projectFinalCashFlux13);
ProjectFinalCashFlux projectFinalCashFlux14 = new ProjectFinalCashFlux();
projectFinalCashFlux14.setProjectId(project.getId());
projectFinalCashFlux14.setType(ProjectFinalCashFlux.TYPE14);
projectFinalCashFlux14.setBudgetTotalCashFlux(cashFlowBean.getNetIncreaseMonetaryFunds());
projectFinalCashFlux14.setFinalTotalCashFlux(new BigDecimal(0));
projectFinalCashFlux14.setFinalTotalCashFlux(finalBean.getNetIncreaseMonetaryFunds());
list.add(projectFinalCashFlux14);
projectFinalCashFluxRepository.save(list);
}
}

View File

@ -0,0 +1,79 @@
package cn.palmte.work.service;
import cn.palmte.work.model.ProjectTaskRecord;
import cn.palmte.work.model.ProjectTaskRecordRepository;
import cn.palmte.work.utils.ActUtil;
import cn.palmte.work.utils.InterfaceUtil;
import org.activiti.engine.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.jfunc.common.db.QueryHelper;
import top.jfunc.common.db.utils.Pagination;
import java.util.Date;
import java.util.List;
@Service
public class ProjectTaskRecordService {
private static final Logger logger = LoggerFactory.getLogger(ProjectTaskRecordService.class);
@Autowired
private ProjectTaskRecordRepository projectTaskRecordRepository;
@Autowired
Pagination pagination;
@Autowired
private ActUtil actUtil;
/**
*
*
* @param task
* @param status
* @param comment
*/
public void saveTaskRecord(Task task, int status, String comment) {
int projectId = actUtil.getProjectId(task.getProcessInstanceId());
if (projectId == 0) {
return;
}
task.getProcessDefinitionId();
ProjectTaskRecord record = new ProjectTaskRecord();
record.setProjectId(projectId);
record.setProcDefId(task.getProcessDefinitionId());
record.setProcInsId(task.getProcessInstanceId());
record.setTaskDefKey(task.getTaskDefinitionKey());
record.setTaskName(task.getName());
record.setTaskComment(comment);
record.setTaskStatus(status);
record.setAssigneeId(InterfaceUtil.getAdminId() + "");
record.setAssigneeName(InterfaceUtil.getAdmin().getRealName());
record.setCreateTime(new Date());
try {
projectTaskRecordRepository.save(record);
} catch (Exception e) {
logger.error("", e);
}
}
/**
* id
*
* @param projectId
* @return
*/
public List<ProjectTaskRecord> list(int projectId) {
String select = "tr.*, su.role_name";
QueryHelper queryHelper = new QueryHelper(select, " project_task_record tr LEFT JOIN sys_user su on su.id=tr.assignee_id ");
queryHelper.addCondition("tr.project_id=?", projectId);
queryHelper.addOrderProperty("tr.create_time", true);
return pagination.find(queryHelper.getSql(), ProjectTaskRecord.class);
}
}

View File

@ -5,6 +5,7 @@ import cn.palmte.work.config.activiti.DeleteTaskCommand;
import cn.palmte.work.config.activiti.JumpCommand;
import cn.palmte.work.model.ActScript;
import cn.palmte.work.model.ActScriptRepository;
import cn.palmte.work.model.ActTaskDef;
import cn.palmte.work.service.AccountService;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
@ -74,6 +75,14 @@ public class ActUtil {
return "0";
}
public int getProjectId(String procInsId) {
Record record = getVariable(ActConstant.KEY_PROJECT_ID, procInsId);
if (record != null) {
return Integer.valueOf(record.get("text"));
}
return 0;
}
/**
*
@ -93,7 +102,7 @@ public class ActUtil {
* @param scriptId
* @param procInsId
*/
public void invokeEventScript(int scriptId, String procInsId) {
public void invokeEventScript(int scriptId, String procInsId, ActTaskDef actTaskDef) {
ActScript actScript = actScriptRepository.findOne(scriptId);
if (actScript == null) {
logger.info("脚本配置错误");
@ -102,6 +111,7 @@ public class ActUtil {
Map<String, Object> map = new HashMap<>();
map.put(ActConstant.PROC_INS_ID, procInsId);
map.put(ActConstant.PROC_DEF_KEY, actTaskDef.getProcDefKey());
List<Record> variables = getVariables(procInsId);
for (Record variable : variables) {
map.put(variable.getStr("name"), variable.get("text"));

View File

@ -0,0 +1,188 @@
function calculateFinal() {
$("input[name='incomeDeviceFinalTotal']").change(function () {
calIncomeFinalTotal();
});
$("input[name='incomeEngineerFinalTotal']").change(function () {
calIncomeFinalTotal();
});
$("input[name='incomeServiceFinalTotal']").change(function () {
calIncomeFinalTotal();
});
$("input[name='costPurchaseDeviceFinalTotal']").change(function () {
calCostFinalTotal();
});
$("input[name='costPurchaseBuildFinalTotal']").change(function () {
calCostFinalTotal();
});
$("input[name='costPurchaseServiceFinalTotal']").change(function () {
calCostFinalTotal();
});
$("input[name='costPurchaseOtherFinalTotal']").change(function () {
calCostFinalTotal();
});
$("input[name='costProjectManageFinalTotal']").change(function () {
calCostFinalTotal();
});
$("input[name='costOtherFinalTotal']").change(function () {
calCostFinalTotal();
});
$("input[name='costExpropriationFinalTotal']").change(function () {
calManageFinalTotal();
});
$("input[name='costCompanyManageFinalTotal']").change(function () {
calManageFinalTotal();
});
$("input[name='costIncomeTaxFinalTotal']").change(function () {
calManageFinalTotal();
});
$("input[name='saleIncomeCash']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='taxReturn']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='earnestMoneyIncome']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='purchaseCost']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='taxCost']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='earnestMoneyCost']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='netCashFlow']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='cashInflowFromInvestingActivities']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='cashOutflowFromInvestingActivities']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='netCashFromInvestingActivities']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='financingCapitalInflow']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='financingCapitalOutflow']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='financingCapitalCashflow']").change(function () {
calCashFluxFinalTotal();
});
$("input[name='netIncreaseMonetaryFunds']").change(function () {
calCashFluxFinalTotal();
});
}
/**
* 收入决算总额(不含税)有一项没填就置空
*/
function calIncomeFinalTotal() {
var incomeDeviceFinalTotal = $("input[name='incomeDeviceFinalTotal']").val();
var incomeEngineerFinalTotal = $("input[name='incomeEngineerFinalTotal']").val();
var incomeServiceFinalTotal = $("input[name='incomeServiceFinalTotal']").val();
var incomeFinalTotal = $("input[name='incomeFinalTotal']");
if(incomeDeviceFinalTotal && incomeEngineerFinalTotal && incomeServiceFinalTotal){
incomeFinalTotal.val(parseFloat(incomeDeviceFinalTotal)+parseFloat(incomeEngineerFinalTotal)+parseFloat(incomeServiceFinalTotal));
}else {
incomeFinalTotal.val("");
}
}
/**
* 成本决算总额(不含税)有一项没填就置空
*/
function calCostFinalTotal() {
var costPurchaseDeviceFinalTotal = $("input[name='costPurchaseDeviceFinalTotal']").val();
var costPurchaseBuildFinalTotal = $("input[name='costPurchaseBuildFinalTotal']").val();
var costPurchaseServiceFinalTotal = $("input[name='costPurchaseServiceFinalTotal']").val();
var costPurchaseOtherFinalTotal = $("input[name='costPurchaseOtherFinalTotal']").val();
var costProjectManageFinalTotal = $("input[name='costProjectManageFinalTotal']").val();
var costOtherFinalTotal = $("input[name='costOtherFinalTotal']").val();
var costFinalTotal = $("input[name='costFinalTotal']");
if(costPurchaseDeviceFinalTotal && costPurchaseBuildFinalTotal && costPurchaseServiceFinalTotal &&
costPurchaseOtherFinalTotal && costProjectManageFinalTotal && costOtherFinalTotal){
costFinalTotal.val(parseFloat(costPurchaseBuildFinalTotal)+parseFloat(costPurchaseBuildFinalTotal)+parseFloat(costPurchaseServiceFinalTotal)+
parseFloat(costPurchaseOtherFinalTotal)+parseFloat(costProjectManageFinalTotal)+parseFloat(costOtherFinalTotal));
}else {
costFinalTotal.val("");
}
}
/**
* 管理成本总额(不含税)有一项没填就置空
*/
function calManageFinalTotal() {
var costExpropriationFinalTotal = $("input[name='costExpropriationFinalTotal']").val();
var costCompanyManageFinalTotal = $("input[name='costCompanyManageFinalTotal']").val();
var costIncomeTaxFinalTotal = $("input[name='costIncomeTaxFinalTotal']").val();
var manageFinalTotal = $("input[name='manageFinalTotal']");
if(costExpropriationFinalTotal && costCompanyManageFinalTotal && costIncomeTaxFinalTotal){
manageFinalTotal.val(parseFloat(costExpropriationFinalTotal)+parseFloat(costCompanyManageFinalTotal)+parseFloat(costIncomeTaxFinalTotal));
}else {
manageFinalTotal.val("");
}
}
/**
* 现金流量表总额(不含税)有一项没填就置空
*/
function calCashFluxFinalTotal() {
var saleIncomeCash = $("input[name='saleIncomeCash']").val();
var taxReturn = $("input[name='taxReturn']").val();
var earnestMoneyIncome = $("input[name='earnestMoneyIncome']").val();
var purchaseCost = $("input[name='purchaseCost']").val();
var taxCost = $("input[name='taxCost']").val();
var earnestMoneyCost = $("input[name='earnestMoneyCost']").val();
var netCashFlow = $("input[name='netCashFlow']").val();
var cashInflowFromInvestingActivities = $("input[name='cashInflowFromInvestingActivities']").val();
var cashOutflowFromInvestingActivities = $("input[name='cashOutflowFromInvestingActivities']").val();
var netCashFromInvestingActivities = $("input[name='netCashFromInvestingActivities']").val();
var financingCapitalInflow = $("input[name='financingCapitalInflow']").val();
var financingCapitalOutflow = $("input[name='financingCapitalOutflow']").val();
var financingCapitalCashflow = $("input[name='financingCapitalCashflow']").val();
var netIncreaseMonetaryFunds = $("input[name='netIncreaseMonetaryFunds']").val();
var cashFluxFinalTotal = $("input[name='cashFluxFinalTotal']");
if(saleIncomeCash && taxReturn && earnestMoneyIncome &&
purchaseCost && taxCost && earnestMoneyCost&&
netCashFlow && cashInflowFromInvestingActivities && cashOutflowFromInvestingActivities &&
netCashFromInvestingActivities && financingCapitalInflow && financingCapitalOutflow
&& financingCapitalCashflow && netIncreaseMonetaryFunds){
cashFluxFinalTotal.val(parseFloat(saleIncomeCash)+parseFloat(taxReturn)+parseFloat(earnestMoneyIncome)+
parseFloat(purchaseCost)+parseFloat(taxCost)+parseFloat(earnestMoneyCost)+
parseFloat(netCashFlow)+parseFloat(cashInflowFromInvestingActivities)+parseFloat(cashOutflowFromInvestingActivities)+
parseFloat(netCashFromInvestingActivities)+parseFloat(financingCapitalInflow)+parseFloat(financingCapitalOutflow)+
parseFloat(financingCapitalCashflow)+parseFloat(netIncreaseMonetaryFunds));
}else {
cashFluxFinalTotal.val("");
}
}

View File

@ -46,14 +46,14 @@
<#if !list.endTime??>
<button type="button"
class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="completeTask('${list.procInsId}', '${list.taskId}', 1)">
onclick="completeTask('${list.procInsId}', '${list.taskId}', 2)">
<span class="am-icon-pencil-square-o"></span>
审批通过
</button>
<button type="button"
class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="completeTask('${list.procInsId}', '${list.taskId}', 2)">
onclick="completeTask('${list.procInsId}', '${list.taskId}', 3)">
<span class="am-icon-pencil-square-o"></span>
驳回
</button>

View File

@ -6,7 +6,7 @@
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">${procDefName!}</strong> /
<small>任务置</small>
<small>任务置</small>
</div>
</div>
<input name="procDefId" id="procDefId" type="hidden" value="${procDefId!}"/>
@ -18,7 +18,7 @@
<tr class="am-text-nowrap">
<th class="table-title">序号</th>
<th class="table-title">任务名称</th>
<th class="table-title">任务类型</th>
<#--<th class="table-title">任务类型</th>-->
<th class="table-date">回退任务</th>
<th class="table-set am-text-center">审批人</th>
<th class="table-set am-text-center">审批角色</th>
@ -33,7 +33,7 @@
<tr>
<td>${list_index+1}</td>
<td>${list.taskName!}</td>
<td>
<#--<td>
<#if list.taskIndex != 1>
<#if list.taskType == 0>
或签
@ -41,11 +41,11 @@
会签
</#if>
</#if>
</td>
</td>-->
<td>
<#if list.taskIndex != 1>
<select data-am-selected="{btnSize: 'sm',maxHeight: 500}"
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px', maxHeight: 500}"
id="rollbackTask_${list.id}">
<#list taskList as l>
<option value="${l.taskKey}"
@ -57,7 +57,7 @@
<td>
<#if list.taskIndex != 1>
<select multiple data-am-selected="{btnSize: 'sm',maxHeight: 500,searchBox: 1}"
<select multiple data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}"
id="userSelect_${list.id}">
<#list adminList as l>
<option value="${l.id}"
@ -70,7 +70,7 @@
<td>
<#if list.taskIndex != 1>
<select multiple data-am-selected="{btnSize: 'sm',maxHeight: 500,searchBox: 1}"
<select multiple data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}"
id="roleSelect_${list.id}">
<#list roleList as l>
<option value="${l.id}"
@ -82,7 +82,7 @@
<td>
<#if list.taskIndex != 1>
<select data-am-selected="{btnSize: 'sm',maxHeight: 500}"
<select data-am-selected="{btnSize: 'sm', btnWidth: '150px', maxHeight: 500, searchBox: 1}"
id="scriptSelect_${list.id}">
<option value="0"></option>
<#list scriptList as l>
@ -95,7 +95,7 @@
<td>
<#if list.taskIndex != 1>
<select data-am-selected="{btnSize: 'sm',maxHeight: 500}"
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500, searchBox: 1}"
id="rollbackScriptSelect_${list.id}">
<option value="0"></option>
<#list scriptList as l>

View File

@ -33,6 +33,7 @@
</ul>
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
<input name="id" id="id" type="hidden" value="${project.id}" />
<span class="am-text-lg">收入</span>
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
<tbody>
@ -47,34 +48,34 @@
<tr>
<td>收入</td>
<td>设备类</td>
<td><input name="incomeDeviceEstimateTotal" value="${Utils.format(finalBean.incomeDeviceEstimateTotal,'0')}" required readonly title="设备类概算总额"></td>
<td><input name="incomeDeviceBudgetTotal" value="${Utils.format(finalBean.incomeDeviceBudgetTotal,'0')}" required readonly title="设备类预算总额"></td>
<td><input name="incomeDeviceSettleTotal" value="${Utils.format(finalBean.incomeDeviceSettleTotal,'0')}" required readonly title="设备类结算总额"></td>
<td><input name="incomeDeviceFinalTotal" value="${Utils.format(finalBean.incomeDeviceFinalTotal,'0')}" required title="设备类决算总额"></td>
<td><input name="incomeDeviceTaxExclude" type="number" value="${Utils.format(estimateBean.incomeDeviceTaxExclude,'0')}" required readonly title="设备类概算总额"></td>
<td><input name="incomeDeviceTaxExclude" type="number" value="${Utils.format(budgetBean.incomeDeviceTaxExclude,'0')}" required readonly title="设备类预算总额"></td>
<td><input type="number" required readonly title="设备类结算总额"></td>
<td><input name="incomeDeviceFinalTotal" type="number" value="${Utils.format(finalBean.incomeDeviceFinalTotal,'0')}" required title="设备类决算总额"></td>
</tr>
<tr>
<td>收入</td>
<td>工程类</td>
<td><input name="incomeEngineerEstimateTotal" value="${Utils.format(finalBean.incomeEngineerEstimateTotal,'0')}" required readonly title="工程类概算总额"></td>
<td><input name="incomeEngineerBudgetTotal" value="${Utils.format(finalBean.incomeEngineerBudgetTotal,'0')}" required readonly title="工程类预算总额"></td>
<td><input name="incomeEngineerSettleTotal" value="${Utils.format(finalBean.incomeEngineerSettleTotal,'0')}" required readonly title="工程类结算总额"></td>
<td><input name="incomeEngineerFinalTotal" value="${Utils.format(finalBean.incomeEngineerFinalTotal,'0')}" required title="工程类决算总额"></td>
<td><input name="incomeEngineerTaxExclude" type="number" value="${Utils.format(estimateBean.incomeEngineerTaxExclude,'0')}" required readonly title="工程类概算总额"></td>
<td><input name="incomeEngineerTaxExclude" type="number" value="${Utils.format(budgetBean.incomeEngineerTaxExclude,'0')}" required readonly title="工程类预算总额"></td>
<td><input type="number" required readonly title="工程类结算总额"></td>
<td><input name="incomeEngineerFinalTotal" type="number" value="${Utils.format(finalBean.incomeEngineerFinalTotal,'0')}" required title="工程类决算总额"></td>
</tr>
<tr>
<td>收入</td>
<td>服务类</td>
<td><input name="incomeServiceEstimateTotal" value="${Utils.format(finalBean.incomeServiceEstimateTotal,'0')}" required readonly title="服务类概算总额"></td>
<td><input name="incomeServiceBudgetTotal" value="${Utils.format(finalBean.incomeServiceBudgetTotal,'0')}" required readonly title="服务类预算总额"></td>
<td><input name="incomeServiceSettleTotal" value="${Utils.format(finalBean.incomeServiceSettleTotal,'0')}" required readonly title="服务类结算总额"></td>
<td><input name="incomeServiceFinalTotal" value="${Utils.format(finalBean.incomeServiceFinalTotal,'0')}" required title="服务类决算总额"></td>
<td><input name="incomeServiceTaxExclude" type="number" value="${Utils.format(estimateBean.incomeServiceTaxExclude,'0')}" required readonly title="服务类概算总额"></td>
<td><input name="incomeServiceTaxExclude" type="number" value="${Utils.format(budgetBean.incomeServiceTaxExclude,'0')}" required readonly title="服务类预算总额"></td>
<td><input type="number" required readonly title="服务类结算总额"></td>
<td><input name="incomeServiceFinalTotal" type="number" value="${Utils.format(finalBean.incomeServiceFinalTotal,'0')}" required title="服务类决算总额"></td>
</tr>
<tr>
<td>合计</td>
<td></td>
<td><input name="incomeEstimateTotal" readonly required title="此列累计"></td>
<td><input name="incomeBudgetTotal" readonly required title="此列累计"></td>
<td><input name="incomeSettleTotal" readonly required title="此列累计"></td>
<td><input name="incomeFinalTotal" readonly required title="此列累计"></td>
<td><input name="incomeEstimateTotal" type="number" value="${Utils.format(estimateBean.getIncomeTotalTaxExclude(),'0')}" readonly required title="此列累计"></td>
<td><input name="incomeBudgetTotal" type="number" value="${Utils.format(budgetBean.getIncomeTotalTaxExclude(),'0')}" readonly required title="此列累计"></td>
<td><input name="incomeSettleTotal" type="number" readonly required title="此列累计"></td>
<td><input name="incomeFinalTotal" type="number" readonly required title="此列累计"></td>
</tr>
</tbody>
</table>
@ -94,64 +95,64 @@
<td>成本</td>
<td>采购成本</td>
<td>设备</td>
<td><input name="costPurchaseDeviceTaxInclude" value="${Utils.format(finalBean.costPurchaseDeviceEstimateTotal,'0')}" readonly required title="购买设备概算总额"></td>
<td><input name="costPurchaseDeviceTaxExclude" value="${Utils.format(finalBean.costPurchaseDeviceBudgetTotal,'0')}" readonly required title="购买设备预算总额"></td>
<td><input name="costPurchaseDeviceTaxInclude" value="${Utils.format(finalBean.costPurchaseDeviceSettleTotal,'0')}" readonly required title="购买设备结算总额"></td>
<td><input name="costPurchaseDeviceTaxExclude" value="${Utils.format(finalBean.costPurchaseDeviceFinalTotal,'0')}" required title="购买设备决算总额"></td>
<td><input name="costPurchaseDeviceTaxInclude" type="number" value="${Utils.format(estimateBean.costPurchaseDeviceTaxExclude,'0')}" readonly required title="购买设备概算总额"></td>
<td><input name="costPurchaseDeviceTaxExclude" type="number" value="${Utils.format(budgetBean.costPurchaseDeviceTaxExclude,'0')}" readonly required title="购买设备预算总额"></td>
<td><input name="costPurchaseDeviceTaxInclude" type="number"readonly required title="购买设备结算总额"></td>
<td><input name="costPurchaseDeviceFinalTotal" type="number" value="${Utils.format(finalBean.costPurchaseDeviceFinalTotal,'0')}" required title="购买设备决算总额"></td>
</tr>
<tr>
<td>成本</td>
<td>采购成本</td>
<td>施工</td>
<td><input name="costPurchaseBuildEstimateTotal" value="${Utils.format(finalBean.costPurchaseBuildEstimateTotal,'0')}" readonly required title="施工采购成本概算总额"></td>
<td><input name="costPurchaseBuildBudgetTotal" value="${Utils.format(finalBean.costPurchaseBuildBudgetTotal,'0')}" readonly required title="施工采购成本预算总额"></td>
<td><input name="costPurchaseBuildSettleTotal" value="${Utils.format(finalBean.costPurchaseBuildSettleTotal,'0')}" readonly required title="施工采购成本结算总额"></td>
<td><input name="costPurchaseBuildFinalTotal" value="${Utils.format(finalBean.costPurchaseBuildFinalTotal,'0')}" required title="施工采购成本决算总额"></td>
<td><input name="costPurchaseBuildEstimateTotal" type="number" value="${Utils.format(estimateBean.costPurchaseBuildTaxExclude,'0')}" readonly required title="施工采购成本概算总额"></td>
<td><input name="costPurchaseBuildBudgetTotal" type="number" value="${Utils.format(budgetBean.costPurchaseBuildTaxExclude,'0')}" readonly required title="施工采购成本预算总额"></td>
<td><input name="costPurchaseBuildSettleTotal" type="number" readonly required title="施工采购成本结算总额"></td>
<td><input name="costPurchaseBuildFinalTotal" type="number" value="${Utils.format(finalBean.costPurchaseBuildFinalTotal,'0')}" required title="施工采购成本决算总额"></td>
</tr>
<tr>
<td>成本</td>
<td>采购成本</td>
<td>服务</td>
<td><input name="costPurchaseServiceEstimateTotal" value="${Utils.format(finalBean.costPurchaseServiceEstimateTotal,'0')}" readonly required title="服务采购成本概算总额"></td>
<td><input name="costPurchaseServiceBudgetTotal" value="${Utils.format(finalBean.costPurchaseServiceBudgetTotal,'0')}" readonly required title="服务采购成本预算总额"></td>
<td><input name="costPurchaseServiceSettleTotal" value="${Utils.format(finalBean.costPurchaseServiceSettleTotal,'0')}" readonly required title="服务采购成本结算总额"></td>
<td><input name="costPurchaseServiceFinalTotal" value="${Utils.format(finalBean.costPurchaseServiceFinalTotal,'0')}" required title="服务采购成本决算总额"></td>
<td><input name="costPurchaseServiceEstimateTotal" type="number" value="${Utils.format(estimateBean.costPurchaseServiceTaxExclude,'0')}" readonly required title="服务采购成本概算总额"></td>
<td><input name="costPurchaseServiceBudgetTotal" type="number" value="${Utils.format(budgetBean.costPurchaseServiceTaxExclude,'0')}" readonly required title="服务采购成本预算总额"></td>
<td><input name="costPurchaseServiceSettleTotal" type="number" readonly required title="服务采购成本结算总额"></td>
<td><input name="costPurchaseServiceFinalTotal" type="number" value="${Utils.format(finalBean.costPurchaseServiceFinalTotal,'0')}" required title="服务采购成本决算总额"></td>
</tr>
<tr>
<td>成本</td>
<td>采购成本</td>
<td>其他</td>
<td><input name="costPurchaseOtherEstimateTotal" value="${Utils.format(finalBean.costPurchaseOtherEstimateTotal,'0')}" readonly required title="其他采购成本概算总额"></td>
<td><input name="costPurchaseOtherBudgetTotal" value="${Utils.format(finalBean.costPurchaseOtherBudgetTotal,'0')}" readonly required title="其他采购成本预算总额"></td>
<td><input name="costPurchaseOtherSettleTotal" value="${Utils.format(finalBean.costPurchaseOtherSettleTotal,'0')}" readonly required title="其他采购成本结算总额"></td>
<td><input name="costPurchaseOtherFinalTotal" value="${Utils.format(finalBean.costPurchaseOtherFinalTotal,'0')}" required title="其他采购成本决算总额"></td>
<td><input name="costPurchaseOtherEstimateTotal" type="number" value="${Utils.format(estimateBean.costPurchaseOtherTaxInclude,'0')}" readonly required title="其他采购成本概算总额"></td>
<td><input name="costPurchaseOtherBudgetTotal" type="number" value="${Utils.format(budgetBean.costPurchaseOtherTaxInclude,'0')}" readonly required title="其他采购成本预算总额"></td>
<td><input name="costPurchaseOtherSettleTotal" type="number" readonly required title="其他采购成本结算总额"></td>
<td><input name="costPurchaseOtherFinalTotal" type="number" value="${Utils.format(finalBean.costPurchaseOtherFinalTotal,'0')}" required title="其他采购成本决算总额"></td>
</tr>
<tr>
<td>成本</td>
<td>项目管理成本</td>
<td>项目管理成本</td>
<td><input name="costProjectManageEstimateTotal" value="${Utils.format(finalBean.costProjectManageEstimateTotal,'0')}" readonly required title="项目管理成本概算总额"></td>
<td><input name="costProjectManageBudgetTotal" value="${Utils.format(finalBean.costProjectManageBudgetTotal,'0')}" readonly required title="项目管理成本预算总额"></td>
<td><input name="costProjectManageSettleTotal" value="${Utils.format(finalBean.costProjectManageSettleTotal,'0')}" readonly required title="项目管理成本结算总额"></td>
<td><input name="costProjectManageFinalTotal" value="${Utils.format(finalBean.costProjectManageFinalTotal,'0')}" required title="项目管理成本决算总额"></td>
<td><input name="costProjectManageEstimateTotal" type="number" value="${Utils.format(estimateBean.costProjectManageTaxExclude,'0')}" readonly required title="项目管理成本概算总额"></td>
<td><input name="costProjectManageBudgetTotal" type="number" value="${Utils.format(budgetBean.costProjectManageTaxExclude,'0')}" readonly required title="项目管理成本预算总额"></td>
<td><input name="costProjectManageSettleTotal" type="number" readonly required title="项目管理成本结算总额"></td>
<td><input name="costProjectManageFinalTotal" type="number" value="${Utils.format(finalBean.costProjectManageFinalTotal,'0')}" required title="项目管理成本决算总额"></td>
</tr>
<tr>
<td>成本</td>
<td>其他</td>
<td>其他</td>
<td><input name="costOtherEstimateTotal" value="${Utils.format(finalBean.costOtherEstimateTotal,'0')}" readonly required title="其他成本概算总额"></td>
<td><input name="costOtherBudgetTotal" value="${Utils.format(finalBean.costOtherBudgetTotal,'0')}" readonly required title="其他成本预算总额"></td>
<td><input name="costOtherSettleTotal" value="${Utils.format(finalBean.costOtherSettleTotal,'0')}" readonly required title="其他成本结算总额"></td>
<td><input name="costOtherFinalTotal" value="${Utils.format(finalBean.costOtherFinalTotal,'0')}" required title="其他成本决算总额"></td>
<td><input name="costOtherEstimateTotal" type="number" value="${Utils.format(estimateBean.costOtherOtherTaxExclude,'0')}" readonly required title="其他成本概算总额"></td>
<td><input name="costOtherBudgetTotal" type="number" value="${Utils.format(budgetBean.costOtherOtherTaxExclude,'0')}" readonly required title="其他成本预算总额"></td>
<td><input name="costOtherSettleTotal" type="number" type="number"readonly required title="其他成本结算总额"></td>
<td><input name="costOtherFinalTotal" type="number" value="${Utils.format(finalBean.costOtherFinalTotal,'0')}" required title="其他成本决算总额"></td>
</tr>
<tr>
<td>合计</td>
<td></td>
<td></td>
<td><input name="costEstimateTotal" readonly required title="此列累计"></td>
<td><input name="costBudgetTotal" readonly required title="此列累计"></td>
<td><input name="costSettleTotal" readonly required title="此列累计"></td>
<td><input name="costFinalTotal" readonly required title="此列累计"></td>
<td><input name="costEstimateTotal" value="${Utils.format(estimateBean.getIncomeTotalTaxExclude(),'0')}" type="number" readonly required title="此列累计"></td>
<td><input name="costBudgetTotal" value="${Utils.format(budgetBean.getCostTotalTaxExclude(),'0')}" type="number" readonly required title="此列累计"></td>
<td><input name="costSettleTotal" type="number" readonly required title="此列累计"></td>
<td><input name="costFinalTotal" type="number" readonly required title="此列累计"></td>
</tr>
</tbody>
</table>
@ -169,34 +170,34 @@
<tr>
<td>财务费用</td>
<td>资金占用成本</td>
<td><input name="costExpropriationEstimateTotal" value="${Utils.format(finalBean.costExpropriationEstimateTotal,'0')}" required readonly title="资金占用成本概算总额"></td>
<td><input name="costExpropriationBudgetTotal" value="${Utils.format(finalBean.costExpropriationBudgetTotal,'0')}" required readonly title="资金占用成本预算总额"></td>
<td><input name="costExpropriationSettleTotal" value="${Utils.format(finalBean.costExpropriationSettleTotal,'0')}" required readonly title="资金占用成本结算总额"></td>
<td><input name="costExpropriationFinalTotal" value="${Utils.format(finalBean.costExpropriationFinalTotal,'0')}" required title="资金占用成本决算总额"></td>
<td><input name="costExpropriationEstimateTotal" type="number" value="${Utils.format(estimateBean.costExpropriationTaxExclude,'0')}" required readonly title="资金占用成本概算总额"></td>
<td><input name="costExpropriationBudgetTotal" type="number" value="${Utils.format(budgetBean.costExpropriationTaxExclude,'0')}" required readonly title="资金占用成本预算总额"></td>
<td><input name="costExpropriationSettleTotal" type="number" required readonly title="资金占用成本结算总额"></td>
<td><input name="costExpropriationFinalTotal" type="number" value="${Utils.format(finalBean.costExpropriationFinalTotal,'0')}" required title="资金占用成本决算总额"></td>
</tr>
<tr>
<td>公司管理费用</td>
<td></td>
<td><input name="costCompanyManageEstimateTotal" value="${Utils.format(finalBean.costCompanyManageEstimateTotal,'0')}" required readonly title="公司管理费用概算总额"></td>
<td><input name="costCompanyManageBudgetTotal" value="${Utils.format(finalBean.costCompanyManageBudgetTotal,'0')}" required readonly title="公司管理费用预算总额"></td>
<td><input name="costCompanyManageSettleTotal" value="${Utils.format(finalBean.costCompanyManageSettleTotal,'0')}" required readonly title="公司管理费用结算总额"></td>
<td><input name="costCompanyManageFinalTotal" value="${Utils.format(finalBean.costCompanyManageFinalTotal,'0')}" required title="公司管理费用决算总额"></td>
<td><input name="costCompanyManageEstimateTotal" type="number" value="${Utils.format(estimateBean.costCompanyManageTaxExclude,'0')}" required readonly title="公司管理费用概算总额"></td>
<td><input name="costCompanyManageBudgetTotal" type="number" value="${Utils.format(budgetBean.costCompanyManageTaxExclude,'0')}" required readonly title="公司管理费用预算总额"></td>
<td><input name="costCompanyManageSettleTotal" type="number" required readonly title="公司管理费用结算总额"></td>
<td><input name="costCompanyManageFinalTotal" type="number" value="${Utils.format(finalBean.costCompanyManageFinalTotal,'0')}" required title="公司管理费用决算总额"></td>
</tr>
<tr>
<td>所得税费用</td>
<td></td>
<td>/</td>
<td>/</td>
<td><input name="costIncomeTaxSettleTotal" value="${Utils.format(finalBean.costIncomeTaxSettleTotal,'0')}" required readonly title="所得税费用结算总额"></td>
<td><input name="costIncomeTaxFinalTotal" value="${Utils.format(finalBean.costIncomeTaxFinalTotal,'0')}" required title="所得税费用决算总额"></td>
<td><input name="costIncomeTaxSettleTotal" type="number" required readonly title="所得税费用结算总额"></td>
<td><input name="costIncomeTaxFinalTotal" type="number" value="${Utils.format(finalBean.costIncomeTaxFinalTotal,'0')}" required title="所得税费用决算总额"></td>
</tr>
<tr>
<td>合计</td>
<td></td>
<td><input name="manageEstimateTotal" readonly required title="此列累计"></td>
<td><input name="manageBudgetTotal" readonly required title="此列累计"></td>
<td><input name="manageSettleTotal" readonly required title="此列累计"></td>
<td><input name="manageFinalTotal" readonly required title="此列累计"></td>
<td><input name="manageEstimateTotal" type="number" readonly required title="此列累计"></td>
<td><input name="manageBudgetTotal" type="number" readonly required title="此列累计"></td>
<td><input name="manageSettleTotal" type="number" readonly required title="此列累计"></td>
<td><input name="manageFinalTotal" type="number" readonly required title="此列累计"></td>
</tr>
</tbody>
</table>
@ -214,27 +215,27 @@
</tr>
<tr>
<td>项目毛利</td>
<td><input name="grossProfitEstimateTotal" value="${Utils.format(finalBean.grossProfitEstimateTotal,'0')}" readonly required title="项目毛利概算总额"></td>
<td><input name="grossProfitBudgetTotal" value="${Utils.format(finalBean.grossProfitBudgetTotal,'0')}" readonly required title="项目毛利预算总额"></td>
<td><input name="grossProfitSettleTotal" value="${Utils.format(finalBean.grossProfitSettleTotal,'0')}" readonly required title="项目毛利结算总额"></td>
<td><input name="grossProfitFinalTotal" value="${Utils.format(finalBean.grossProfitFinalTotal,'0')}" required title="项目毛利决算总额"></td>
<td><input name="grossProfitProfitMargin" value="${Utils.format(finalBean.grossProfitProfitMargin,'0')}" required readonly title="项目毛利利润率"></td>
<td><input name="grossProfitEstimateTotal" type="number" value="${Utils.format(finalBean.grossProfitEstimateTotal,'0')}" readonly required title="项目毛利概算总额"></td>
<td><input name="grossProfitBudgetTotal" type="number" value="${Utils.format(finalBean.grossProfitBudgetTotal,'0')}" readonly required title="项目毛利预算总额"></td>
<td><input name="grossProfitSettleTotal" type="number" value="${Utils.format(finalBean.grossProfitSettleTotal,'0')}" readonly required title="项目毛利结算总额"></td>
<td><input name="grossProfitFinalTotal" type="number" value="${Utils.format(finalBean.grossProfitFinalTotal,'0')}" required title="项目毛利决算总额"></td>
<td><input name="grossProfitProfitMargin" type="number" value="${Utils.format(finalBean.grossProfitProfitMargin,'0')}" required readonly title="项目毛利利润率"></td>
</tr>
<tr>
<td>项目贡献利润</td>
<td><input name="contributionMarginEstimateTotal" value="${Utils.format(finalBean.contributionMarginEstimateTotal,'0')}" readonly required title="项目贡献利润概算总额"></td>
<td><input name="contributionMarginBudgetTotal" value="${Utils.format(finalBean.contributionMarginBudgetTotal,'0')}" readonly required title="项目贡献利润预算总额"></td>
<td><input name="contributionMarginSettleTotal" value="${Utils.format(finalBean.contributionMarginSettleTotal,'0')}" readonly required title="项目贡献利润结算总额"></td>
<td><input name="contributionMarginFinalTotal" value="${Utils.format(finalBean.contributionMarginFinalTotal,'0')}" required title="项目贡献利润决算总额"></td>
<td><input name="contributionMarginProfitMargin" value="${Utils.format(finalBean.contributionMarginProfitMargin,'0')}" required readonly title="项目贡献利润利润率"></td>
<td><input name="contributionMarginEstimateTotal" type="number" value="${Utils.format(finalBean.contributionMarginEstimateTotal,'0')}" readonly required title="项目贡献利润概算总额"></td>
<td><input name="contributionMarginBudgetTotal" type="number" value="${Utils.format(finalBean.contributionMarginBudgetTotal,'0')}" readonly required title="项目贡献利润预算总额"></td>
<td><input name="contributionMarginSettleTotal" type="number" value="${Utils.format(finalBean.contributionMarginSettleTotal,'0')}" readonly required title="项目贡献利润结算总额"></td>
<td><input name="contributionMarginFinalTotal" type="number" value="${Utils.format(finalBean.contributionMarginFinalTotal,'0')}" required title="项目贡献利润决算总额"></td>
<td><input name="contributionMarginProfitMargin" type="number" value="${Utils.format(finalBean.contributionMarginProfitMargin,'0')}" required readonly title="项目贡献利润利润率"></td>
</tr>
<tr>
<td>项目净利润</td>
<td><input name="netMarginEstimateTotal" value="${Utils.format(finalBean.netMarginEstimateTotal,'0')}" readonly required title="项目净利润概算总额"></td>
<td><input name="netMarginBudgetTotal" value="${Utils.format(finalBean.netMarginBudgetTotal,'0')}" readonly required title="项目净利润预算总额"></td>
<td><input name="netMarginSettleTotal" value="${Utils.format(finalBean.netMarginSettleTotal,'0')}" readonly required title="项目净利润结算总额"></td>
<td><input name="netMarginFinalTotal" value="${Utils.format(finalBean.netMarginFinalTotal,'0')}" required title="项目净利润决算总额"></td>
<td><input name="netMarginProfitMargin" value="${Utils.format(finalBean.netMarginProfitMargin,'0')}" required readonly title="项目净利润利润率"></td>
<td><input name="netMarginEstimateTotal" type="number" value="${Utils.format(finalBean.netMarginEstimateTotal,'0')}" readonly required title="项目净利润概算总额"></td>
<td><input name="netMarginBudgetTotal" type="number" value="${Utils.format(finalBean.netMarginBudgetTotal,'0')}" readonly required title="项目净利润预算总额"></td>
<td><input name="netMarginSettleTotal" type="number" value="${Utils.format(finalBean.netMarginSettleTotal,'0')}" readonly required title="项目净利润结算总额"></td>
<td><input name="netMarginFinalTotal" type="number" value="${Utils.format(finalBean.netMarginFinalTotal,'0')}" required title="项目净利润决算总额"></td>
<td><input name="netMarginProfitMargin" type="number" value="${Utils.format(finalBean.netMarginProfitMargin,'0')}" required readonly title="项目净利润利润率"></td>
</tr>
</tbody>
</table>
@ -250,93 +251,93 @@
</tr>
<tr>
<td>销售商品、提供劳务收到的现金</td>
<td><input name="type1BudgetTotal" value="${Utils.format(finalBean.type1BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type1SettleTotal" value="${Utils.format(finalBean.type1SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type1FinalTotal" value="${Utils.format(finalBean.type1FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type1BudgetTotal" type="number" value="${Utils.format(cashFlowBean.saleIncomeCash,'0')}" readonly required title="预算总额"></td>
<td><input name="type1SettleTotal" type="number" readonly required title="结算总额"></td>
<td><input name="saleIncomeCash" type="number" value="${Utils.format(finalBean.saleIncomeCash,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>收到的税费返还</td>
<td>/</td>
<td><input name="type2SettleTotal" value="${Utils.format(finalBean.type2SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type2FinalTotal" value="${Utils.format(finalBean.type2FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type2SettleTotal" type="number" value="${Utils.format(cashFlowBean.taxReturn,'0')}" readonly required title="结算总额"></td>
<td><input name="taxReturn" type="number" value="${Utils.format(finalBean.taxReturn,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>收到其他与经营活动有关的现金</td>
<td><input name="type3BudgetTotal" value="${Utils.format(finalBean.type3BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type3SettleTotal" value="${Utils.format(finalBean.type3SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type3FinalTotal" value="${Utils.format(finalBean.type3FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type3BudgetTotal" type="number" value="${Utils.format(cashFlowBean.earnestMoneyIncome,'0')}" readonly required title="预算总额"></td>
<td><input name="type3SettleTotal" type="number" readonly required title="结算总额"></td>
<td><input name="earnestMoneyIncome" type="number" value="${Utils.format(finalBean.earnestMoneyIncome,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>购买商品、接受劳务支付的现</td>
<td><input name="type4BudgetTotal" value="${Utils.format(finalBean.type4BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type4SettleTotal" value="${Utils.format(finalBean.type4SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type4FinalTotal" value="${Utils.format(finalBean.type4FinalTotal,'0')}" required title="决算总额"></td>
<td>购买商品、接受劳务支付的现</td>
<td><input name="type4BudgetTotal" type="number" value="${Utils.format(cashFlowBean.purchaseCost,'0')}" readonly required title="预算总额"></td>
<td><input name="type4SettleTotal" type="number" readonly required title="结算总额"></td>
<td><input name="purchaseCost" type="number" value="${Utils.format(finalBean.purchaseCost,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>支付的各项税费</td>
<td>/</td>
<td><input name="type5SettleTotal" value="${Utils.format(finalBean.type5SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type5FinalTotal" value="${Utils.format(finalBean.type5FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type5SettleTotal" type="number" value="${Utils.format(finalBean.type5SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="taxCost" type="number" value="${Utils.format(finalBean.taxCost,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>支付其他与经营活动有关的现金</td>
<td><input name="type6BudgetTotal" value="${Utils.format(finalBean.type6BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type6SettleTotal" value="${Utils.format(finalBean.type6SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type6FinalTotal" value="${Utils.format(finalBean.type6FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type6BudgetTotal" type="number" value="${Utils.format(cashFlowBean.earnestMoneyCost,'0')}" readonly required title="预算总额"></td>
<td><input name="type6SettleTotal" type="number" readonly required title="结算总额"></td>
<td><input name="earnestMoneyCost" type="number" value="${Utils.format(finalBean.earnestMoneyCost,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>经营活动产生的现金流量净额</td>
<td><input name="type7BudgetTotal" value="${Utils.format(finalBean.type7BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type7SettleTotal" value="${Utils.format(finalBean.type7SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type7FinalTotal" value="${Utils.format(finalBean.type7FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type7BudgetTotal" type="number" value="${Utils.format(cashFlowBean.getNetCashFlow(),'0')}" readonly required title="预算总额"></td>
<td><input name="type7SettleTotal" type="number" readonly required title="结算总额"></td>
<td><input name="netCashFlow" type="number" value="${Utils.format(finalBean.netCashFlow,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>投资活动现金流入</td>
<td>/</td>
<td><input name="type8SettleTotal" value="${Utils.format(finalBean.type8SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type8FinalTotal" value="${Utils.format(finalBean.type8FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type8SettleTotal" type="number" readonly required title="结算总额"></td>
<td><input name="cashInflowFromInvestingActivities" value="${Utils.format(finalBean.cashInflowFromInvestingActivities,'0')}" type="number" required title="决算总额"></td>
</tr>
<tr>
<td>投资活动现金流出</td>
<td>/</td>
<td><input name="type9SettleTotal" value="${Utils.format(finalBean.type9SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type9FinalTotal" value="${Utils.format(finalBean.type9FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type9SettleTotal" type="number" value="${Utils.format(finalBean.type9SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="cashOutflowFromInvestingActivities" type="number" value="${Utils.format(finalBean.cashOutflowFromInvestingActivities,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>投资活动产生的现金流量净额</td>
<td>/</td>
<td><input name="type10SettleTotal" value="${Utils.format(finalBean.type10SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type10FinalTotal" value="${Utils.format(finalBean.type10FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type10SettleTotal" type="number" value="${Utils.format(finalBean.type10SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="netCashFromInvestingActivities" type="number" value="${Utils.format(finalBean.netCashFromInvestingActivities,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>融资资金流入</td>
<td><input name="type11BudgetTotal" value="${Utils.format(finalBean.type11BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type11SettleTotal" value="${Utils.format(finalBean.type11SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type11FinalTotal" value="${Utils.format(finalBean.type11FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type11BudgetTotal" type="number" value="${Utils.format(cashFlowBean.financingCapitalInflow,'0')}" readonly required title="预算总额"></td>
<td><input name="type11SettleTotal" type="number" value="${Utils.format(finalBean.type11SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="financingCapitalInflow" type="number" value="${Utils.format(finalBean.financingCapitalInflow,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>还款资金流出</td>
<td><input name="type12BudgetTotal" value="${Utils.format(finalBean.type12BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type12SettleTotal" value="${Utils.format(finalBean.type12SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type12FinalTotal" value="${Utils.format(finalBean.type12FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type12BudgetTotal" type="number" value="${Utils.format(cashFlowBean.financingCapitalOutflow,'0')}" readonly required title="预算总额"></td>
<td><input name="type12SettleTotal" type="number" value="${Utils.format(finalBean.type12SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="financingCapitalOutflow" type="number" value="${Utils.format(finalBean.financingCapitalOutflow,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>筹资活动产生的现金流量净额</td>
<td><input name="type13BudgetTotal" value="${Utils.format(finalBean.type13BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type13SettleTotal" value="${Utils.format(finalBean.type13SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type13FinalTotal" value="${Utils.format(finalBean.type13FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type13BudgetTotal" type="number" value="${Utils.format(cashFlowBean.getFinancingCapitalCashflow(),'0')}" readonly required title="预算总额"></td>
<td><input name="type13SettleTotal" type="number" value="${Utils.format(finalBean.type13SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="financingCapitalCashflow" type="number" value="${Utils.format(finalBean.financingCapitalCashflow,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>货币资金净增加额</td>
<td><input name="type14BudgetTotal" value="${Utils.format(finalBean.type14BudgetTotal,'0')}" readonly required title="预算总额"></td>
<td><input name="type14SettleTotal" value="${Utils.format(finalBean.type14SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="type14FinalTotal" value="${Utils.format(finalBean.type14FinalTotal,'0')}" required title="决算总额"></td>
<td><input name="type14BudgetTotal" type="number" value="${Utils.format(cashFlowBean.getNetIncreaseMonetaryFunds(),'0')}" readonly required title="预算总额"></td>
<td><input name="type14SettleTotal" type="number" value="${Utils.format(finalBean.type14SettleTotal,'0')}" readonly required title="结算总额"></td>
<td><input name="netIncreaseMonetaryFunds" type="number" value="${Utils.format(finalBean.netIncreaseMonetaryFunds,'0')}" required title="决算总额"></td>
</tr>
<tr>
<td>合计</td>
<td><input name="cashFluxBudgetTotal" readonly required title="此列累计"></td>
<td><input name="cashFluxSettleTotal" readonly required title="此列累计"></td>
<td><input name="cashFluxFinalTotal" readonly required title="此列累计"></td>
<td><input name="cashFluxBudgetTotal" type="number" readonly required title="此列累计"></td>
<td><input name="cashFluxSettleTotal" type="number" readonly required title="此列累计"></td>
<td><input name="cashFluxFinalTotal" type="number" readonly required title="此列累计"></td>
</tr>
</tbody>
</table>
@ -358,11 +359,17 @@
var base = "${base}";
</script>
<script src="${base}/assets/js/project_common.js"></script>
<script src="${base}/assets/js/project_budget.js"></script>
<script src="${base}/assets/js/project_budget_income.js"></script>
<script src="${base}/assets/js/project_budget_cost.js"></script>
<script src="${base}/assets/js/project_budget_cost_project_manage.js"></script>
<script src="${base}/assets/js/project_budget_plan.js"></script>
<script src="${base}/assets/js/project_final.js"></script>
<script>
$(function () {
calculateFinal();
$("#saveFinal").click(function () {
$("#pmsForm").attr("action","${base}/project/final/save");
$("#pmsForm").submit();
});
});
</script>
</@defaultLayout.layout>

View File

@ -200,20 +200,20 @@
<td>
<div class="am-btn-toolbar">
<div class="am-btn-group am-btn-group-xs">
<@shiro.hasPermission name="PROJECT_EDIT">
<#--<@shiro.hasPermission name="PROJECT_EDIT">-->
<button type="button"
class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="location.href='${base}/project/edit?id=${list.id}'"><span
class="am-icon-pencil-square-o"></span>编辑
</button>
</@shiro.hasPermission>
<@shiro.hasPermission name="PROJECT_EDIT">
<#-- </@shiro.hasPermission>
<@shiro.hasPermission name="PROJECT_EDIT">-->
<button type="button"
class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="location.href='${base}/project/budgetEdit?id=${list.id}'"><span
class="am-icon-pencil-square-o"></span>填写预算表
</button>
</@shiro.hasPermission>
<#-- </@shiro.hasPermission>-->
<button type="button"
class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="location.href='${base}/project/final/edit?id=${list.id}'"><span

View File

@ -20,7 +20,7 @@
<div class="am-topbar-right">
<ul class="am-nav am-nav-pills am-topbar-nav admin-header-list">
<li><marquee align="left" behavior="scroll" direction="left" height="20" width="200" hspace="50" vspace="20" loop="-1" scrollamount="10" scrolldelay="100" onMouseOut="this.start()" onMouseOver="this.stop()"><a href="${base}/project/listApprove" target="mainFrame">${hasApproveProjectsMessage!""}</a></marquee></li>
<li class="am-dropdown" data-am-dropdown><span style="color: red;">${message!""}</span></li>
<li style="margin-top: 15px"><span style="color: red;">${message!""}</span></li>
<li class="am-dropdown" data-am-dropdown>
<a class="am-dropdown-toggle" data-am-dropdown-toggle href="javascript:;">
<span class="am-icon-user"></span>&nbsp您好, ${userName!""}&nbsp<span class="am-icon-caret-down"></span>