空间管理单独做
parent
b39bc0d8ca
commit
be1f0f9719
|
@ -61,7 +61,7 @@ public class SpaceController extends BaseController {
|
|||
searchInfo.putIfAbsent("certainty", String.valueOf(certainty));
|
||||
searchInfo.putIfAbsent("deptName", "销售管理部");
|
||||
searchInfo.putIfAbsent("estimateStatus", String.valueOf(1));
|
||||
Page<Project> page = projectService.list(searchInfo, pageNumber, pageSize);
|
||||
Page<Project> page = spaceService.list(searchInfo, pageNumber, pageSize);
|
||||
List<Project> list = page.getList();
|
||||
if(CollectionUtil.isNotEmpty(list)){
|
||||
|
||||
|
@ -82,15 +82,15 @@ public class SpaceController extends BaseController {
|
|||
public void export(@RequestParam(value = "keywords", required = false) String keywords, @RequestParam(value = "certainty") int certainty, HttpServletResponse httpServletResponse) throws IOException {
|
||||
Map<String, String> searchInfo = getSearchInfo(keywords);
|
||||
searchInfo.putIfAbsent("certainty", String.valueOf(certainty));
|
||||
searchInfo.putIfAbsent("deptName", "销售管理部");
|
||||
searchInfo.putIfAbsent("estimateStatus", String.valueOf(1));
|
||||
downloadHeader(httpServletResponse, Utils.generateExcelName("项目报表"), "application/octet-stream");
|
||||
String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额",
|
||||
"华三产品金额", "其他产品金额", "项目状态", "行业场景应用", "解决方案", "客户名称", "最终用户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "战略合作对象",
|
||||
"项目负责人", "价值及风险", "主合同收款条款", "主合同具体解决方案", "计收计划", "审核状态", "当前审核人", "项目创建者", "部门名称", "项目开始时间", "项目结束时间", "最后更新时间"};
|
||||
String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound",
|
||||
"huasanRound", "ziguangRound", "statusDesc", "industryScenario", "resolvePlan", "customer", "terminalCustomer", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "collaborator",
|
||||
"principal", "valueRisk", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection", "approveStatusDesc", "approveName", "creatorName", "deptName", "startDate", "endDate", "lastUpdateTime"};
|
||||
String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "华智产品金额", "华三产品金额", "汇智产品金额", "其他产品金额", "项目把握度", "项目计划招标时间", "预计合同签订时间",
|
||||
"计收计划", "项目毛利", "合同金额(万元)", "项目解决方案", "具体解决方案", "是否二次签单", "最终用户名称", "客户名称", "紫光汇智直接投标/集成商转签", "负责人", "备注"};
|
||||
String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "huazhiRound", "huasanRound", "huizhiRound", "ziguangRound", "certaintyStr", "bidsTime", "contractTime",
|
||||
"calculationCollection", "grossProfitRound", "contractRound", "resolvePlan", "mainContractResolvePlan", "isSecondStr", "terminalCustomer", "customer", "signTypeStr", "principal", "remark"};
|
||||
ExportUtils.exportToExcel(headers, exportColumns, 1, 10000,
|
||||
httpServletResponse.getOutputStream(), (pN, pS) -> projectService.list(searchInfo, pN, pS).getList());
|
||||
httpServletResponse.getOutputStream(), (pN, pS) -> spaceService.list(searchInfo, pN, pS).getList());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -284,6 +284,9 @@ public class Project {
|
|||
@Transient
|
||||
private String advancePeakAmountRound;
|
||||
|
||||
@Transient
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 审批任务节点
|
||||
*/
|
||||
|
@ -882,4 +885,12 @@ public class Project {
|
|||
public void setActTaskName(String actTaskName) {
|
||||
this.actTaskName = actTaskName;
|
||||
}
|
||||
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
package cn.palmte.work.model;
|
||||
|
||||
import org.hibernate.annotations.GenericGenerator;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 项目拓展表(预算后项目专用)
|
||||
*
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "project_extend")
|
||||
public class ProjectExtend {
|
||||
public static final int STATUS_ESTIMATE = 1;
|
||||
public static final int STATUS_BUDGET = 5;
|
||||
public static final int STATUS_SETTLE = 10;
|
||||
public static final int STATUS_FINAL = 15;
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@GenericGenerator(name = "persistenceGenerator", strategy = "increment")
|
||||
private int id;
|
||||
|
||||
@Column(name = "project_id")
|
||||
private int projectId;
|
||||
|
||||
@Column(name = "is_budget")
|
||||
private int isBudget;
|
||||
|
||||
/**
|
||||
* 垫资利息(元为单位)
|
||||
*/
|
||||
@Column(name = "advance_interest_amount")
|
||||
private BigDecimal advanceInterestAmount;
|
||||
/**
|
||||
* 垫资峰值
|
||||
*/
|
||||
@Column(name = "advance_peak_amount")
|
||||
private BigDecimal advancePeakAmount;
|
||||
/**
|
||||
* 合同金额
|
||||
*/
|
||||
@Column(name = "contract_amount")
|
||||
private BigDecimal contractAmount;
|
||||
/**
|
||||
*华智产品金额
|
||||
*/
|
||||
@Column(name = "huazhi_product_amount")
|
||||
private BigDecimal huazhiProductAmount;
|
||||
/**
|
||||
*其他产品金额
|
||||
*/
|
||||
@Column(name = "ziguang_other_amount")
|
||||
private BigDecimal ziguangOtherAmount;
|
||||
|
||||
@Column(name = "gross_profit")
|
||||
private BigDecimal grossProfit;
|
||||
|
||||
@Column(name = "gross_profit_margin")
|
||||
private BigDecimal grossProfitMargin;
|
||||
|
||||
@Column(name = "huizhi_product_amount")
|
||||
private BigDecimal huizhiProductAmount;
|
||||
|
||||
@Column(name = "huasan_product_amount")
|
||||
private BigDecimal huasanProductAmount;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getProjectId() {
|
||||
return projectId;
|
||||
}
|
||||
|
||||
public void setProjectId(int projectId) {
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
public int getIsBudget() {
|
||||
return isBudget;
|
||||
}
|
||||
|
||||
public void setIsBudget(int isBudget) {
|
||||
this.isBudget = isBudget;
|
||||
}
|
||||
|
||||
public BigDecimal getAdvanceInterestAmount() {
|
||||
return advanceInterestAmount;
|
||||
}
|
||||
|
||||
public void setAdvanceInterestAmount(BigDecimal advanceInterestAmount) {
|
||||
this.advanceInterestAmount = advanceInterestAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getAdvancePeakAmount() {
|
||||
return advancePeakAmount;
|
||||
}
|
||||
|
||||
public void setAdvancePeakAmount(BigDecimal advancePeakAmount) {
|
||||
this.advancePeakAmount = advancePeakAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getContractAmount() {
|
||||
return contractAmount;
|
||||
}
|
||||
|
||||
public void setContractAmount(BigDecimal contractAmount) {
|
||||
this.contractAmount = contractAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getHuazhiProductAmount() {
|
||||
return huazhiProductAmount;
|
||||
}
|
||||
|
||||
public void setHuazhiProductAmount(BigDecimal huazhiProductAmount) {
|
||||
this.huazhiProductAmount = huazhiProductAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getZiguangOtherAmount() {
|
||||
return ziguangOtherAmount;
|
||||
}
|
||||
|
||||
public void setZiguangOtherAmount(BigDecimal ziguangOtherAmount) {
|
||||
this.ziguangOtherAmount = ziguangOtherAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getGrossProfit() {
|
||||
return grossProfit;
|
||||
}
|
||||
|
||||
public void setGrossProfit(BigDecimal grossProfit) {
|
||||
this.grossProfit = grossProfit;
|
||||
}
|
||||
|
||||
public BigDecimal getGrossProfitMargin() {
|
||||
return grossProfitMargin;
|
||||
}
|
||||
|
||||
public void setGrossProfitMargin(BigDecimal grossProfitMargin) {
|
||||
this.grossProfitMargin = grossProfitMargin;
|
||||
}
|
||||
|
||||
public BigDecimal getHuizhiProductAmount() {
|
||||
return huizhiProductAmount;
|
||||
}
|
||||
|
||||
public void setHuizhiProductAmount(BigDecimal huizhiProductAmount) {
|
||||
this.huizhiProductAmount = huizhiProductAmount;
|
||||
}
|
||||
|
||||
public BigDecimal getHuasanProductAmount() {
|
||||
return huasanProductAmount;
|
||||
}
|
||||
|
||||
public void setHuasanProductAmount(BigDecimal huasanProductAmount) {
|
||||
this.huasanProductAmount = huasanProductAmount;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package cn.palmte.work.model;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
public interface ProjectExtendRepository extends JpaRepository<ProjectExtend, Integer> {
|
||||
|
||||
@Query(value = "SELECT * FROM project_extend WHERE project_id = ?1", nativeQuery = true)
|
||||
ProjectExtend findByProjectId(int id);
|
||||
|
||||
}
|
|
@ -61,6 +61,10 @@ public class ProjectBudgetService {
|
|||
private SysConfigService sysConfigService;
|
||||
@Autowired
|
||||
private ProcurementTypeRepository procurementTypeRepository;
|
||||
@Autowired
|
||||
private ProjectBudgetService projectBudgetService;
|
||||
@Autowired
|
||||
private ProjectExtendRepository projectExtendRepository;
|
||||
|
||||
@Value("#{'${fourcal.fixedprojectmanagedetails}'.split('\\|')}")
|
||||
private String[] fixedProjectManageDetails;
|
||||
|
@ -910,9 +914,30 @@ public class ProjectBudgetService {
|
|||
|
||||
clearBudgetDetail(p);
|
||||
saveBudgetDetail(p);
|
||||
|
||||
saveProjectExtend(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
private void saveProjectExtend(Project p) {
|
||||
ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId());
|
||||
if (extend == null) {
|
||||
extend = new ProjectExtend();
|
||||
extend.setProjectId(p.getId());
|
||||
extend.setIsBudget(1);
|
||||
}
|
||||
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(p);
|
||||
ProjectUnderwrittenPlanStatisticBean bean = projectBudgetService.getProjectUnderwrittenPlanStatisticBean(projectBudgetPlanDetails);
|
||||
extend.setAdvanceInterestAmount(bean.getCapitalInterest());
|
||||
extend.setAdvancePeakAmount(bean.getAmount());
|
||||
|
||||
BudgetBean budgetBean = projectBudgetService.getBudget(p);
|
||||
extend.setGrossProfit(budgetBean.getProjectGrossProfit());
|
||||
extend.setGrossProfitMargin(budgetBean.getProjectGrossProfitRate());
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void saveBudgetDetail(Project p) {
|
||||
//临时表中始终是最新的详情,不管是本次修改还是以前保持的
|
||||
//收入明细
|
||||
|
|
|
@ -64,6 +64,7 @@ public class ProjectService {
|
|||
*/
|
||||
QueryHelper queryHelper = new QueryHelper("SELECT p.*, FORMAT(p.contract_amount,2) as contractRound, FORMAT(p.huazhi_product_amount,2) as huazhiRound, FORMAT(p.huizhi_product_amount,2) as huizhiRound, FORMAT(p.huasan_product_amount,2) as huasanRound, FORMAT(p.ziguang_other_amount,2) as ziguangRound" +
|
||||
", FORMAT(p.gross_profit,2) as grossProfitRound, FORMAT(p.gross_profit_margin,2) as grossProfitMarginRound, FORMAT(p.advance_interest_amount,2) as advanceInterestAmountRound, FORMAT(p.advance_peak_amount,2) as advancePeakAmountRound","project","p");
|
||||
queryHelper.leftJoin("project_extend pe", "p.id = pe.project_id and pe.is_budget = 1");
|
||||
if(StrUtil.isNotEmpty(searchInfo.get("status")) && !"-1".equals(searchInfo.get("status"))){
|
||||
queryHelper.addCondition("p.status=?", Integer.parseInt(searchInfo.get("status")));
|
||||
}
|
||||
|
@ -155,6 +156,32 @@ public class ProjectService {
|
|||
String time = searchInfo.get("contractEndTime") + " 00:00:00";
|
||||
queryHelper.addCondition("p.contract_time<=?", time);
|
||||
}
|
||||
|
||||
//金额,需判断是概算项目还是过了预算的项目,如过了预算则从project_extend表中取数
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("huizhiStart"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.huizhi_product_amount >= ?) or (pe.is_budget = 1 and pe.huizhi_product_amount >= ?)", searchInfo.get("huizhiStart"), searchInfo.get("huizhiStart"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("huizhiEnd"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.huizhi_product_amount <= ?) or (pe.is_budget = 1 and pe.huizhi_product_amount <= ?)", searchInfo.get("huizhiEnd"), searchInfo.get("huizhiEnd"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("huazhiStart"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.huazhi_product_amount >= ?) or (pe.is_budget = 1 and pe.huazhi_product_amount >= ?)", searchInfo.get("huazhiStart"), searchInfo.get("huazhiStart"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("huazhiEnd"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.huazhi_product_amount <= ?) or (pe.is_budget = 1 and pe.huazhi_product_amount <= ?)", searchInfo.get("huazhiEnd"), searchInfo.get("huazhiEnd"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("huasanStart"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.huasan_product_amount >= ?) or (pe.is_budget = 1 and pe.huasan_product_amount >= ?)", searchInfo.get("huasanStart"), searchInfo.get("huasanStart"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("huasanEnd"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.huasan_product_amount <= ?) or (pe.is_budget = 1 and pe.huasan_product_amount <= ?)", searchInfo.get("huasanEnd"), searchInfo.get("huasanEnd"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("otherStart"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.ziguang_other_amount >= ?) or (pe.is_budget = 1 and pe.ziguang_other_amount >= ?)", searchInfo.get("otherStart"), searchInfo.get("otherStart"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("otherEnd"))) {
|
||||
queryHelper.addCondition("(pe.is_budget = 0 and p.ziguang_other_amount <= ?) or (pe.is_budget = 1 and pe.ziguang_other_amount <= ?)", searchInfo.get("otherEnd"), searchInfo.get("otherEnd"));
|
||||
}
|
||||
}
|
||||
|
||||
//项目可见性,根据角色和人员id
|
||||
|
|
|
@ -1,10 +1,21 @@
|
|||
package cn.palmte.work.service;
|
||||
|
||||
import cn.palmte.work.bean.StatusEnum;
|
||||
import cn.palmte.work.model.Admin;
|
||||
import cn.palmte.work.model.Project;
|
||||
import cn.palmte.work.model.SysRole;
|
||||
import cn.palmte.work.model.SysRoleRepository;
|
||||
import cn.palmte.work.pojo.SpaceVO;
|
||||
import cn.palmte.work.utils.InterfaceUtil;
|
||||
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.bean.Page;
|
||||
import top.jfunc.common.db.bean.Record;
|
||||
import top.jfunc.common.db.utils.Pagination;
|
||||
import top.jfunc.common.utils.StrUtil;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -13,10 +24,97 @@ import java.util.stream.Collectors;
|
|||
|
||||
@Service
|
||||
public class SpaceService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(SpaceService.class);
|
||||
|
||||
@Autowired
|
||||
private SysRoleRepository sysRoleRepository;
|
||||
|
||||
@Autowired
|
||||
private Pagination pagination;
|
||||
|
||||
public Page<Project> list(Map<String, String> searchInfo, int pageNumber, int pageSize){
|
||||
QueryHelper queryHelper = getQueryHelper(searchInfo);
|
||||
return pagination.paginate(queryHelper.getSql(), Project.class,pageNumber,pageSize);
|
||||
}
|
||||
|
||||
private QueryHelper getQueryHelper(Map<String, String> searchInfo) {
|
||||
QueryHelper queryHelper = new QueryHelper("SELECT p.*, FORMAT(p.contract_amount,2) as contractRound, FORMAT(p.huazhi_product_amount,2) as huazhiRound, FORMAT(p.huizhi_product_amount,2) as huizhiRound, FORMAT(p.huasan_product_amount,2) as huasanRound, FORMAT(p.ziguang_other_amount,2) as ziguangRound" +
|
||||
", FORMAT(p.gross_profit,2) as grossProfitRound, '' as remark","project","p");
|
||||
queryHelper.leftJoin("project_extend pe", "p.id = pe.project_id and pe.is_budget = 1");
|
||||
|
||||
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("name")),"p.name LIKE ?", "%"+searchInfo.get("name")+"%");
|
||||
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("customer")),"p.customer LIKE ?", "%"+searchInfo.get("customer")+"%");
|
||||
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("terminalCustomer")),"p.terminal_customer LIKE ?", "%"+searchInfo.get("terminalCustomer")+"%");
|
||||
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("principal")),"p.principal LIKE ?", "%"+searchInfo.get("principal")+"%");
|
||||
|
||||
if(StrUtil.isNotEmpty(searchInfo.get("approveStatus")) && !"-1".equals(searchInfo.get("approveStatus"))){
|
||||
int approveStatus = Integer.parseInt(searchInfo.get("approveStatus"));
|
||||
//四种状态满足其一即可
|
||||
queryHelper.addCondition("((p.status=? AND p.approve_status_estimate=?) OR (p.status=? AND p.approve_status_budget=?) OR (p.status=? AND p.approve_status_settle=?) OR (p.status=? AND p.approve_status_final=?))",
|
||||
StatusEnum.ESTIMATE_ACCOUNTS.getStatus(),approveStatus,
|
||||
StatusEnum.BUDGET_ACCOUNTS.getStatus(),approveStatus,
|
||||
StatusEnum.SETTLE_ACCOUNTS.getStatus(),approveStatus,
|
||||
StatusEnum.FINAL_ACCOUNTS.getStatus(),approveStatus);
|
||||
}
|
||||
if(StrUtil.isNotEmpty(searchInfo.get("type")) && !"-1".equals(searchInfo.get("type"))){
|
||||
queryHelper.addCondition("p.type=?", Integer.parseInt(searchInfo.get("type")));
|
||||
}
|
||||
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("deptName")),"p.dept_name = ?", searchInfo.get("deptName"));
|
||||
if(StrUtil.isNotEmpty(searchInfo.get("estimateStatus")) && !"-1".equals(searchInfo.get("estimateStatus"))){
|
||||
queryHelper.addCondition("p.approve_status_estimate>=1 and p.approve_status_estimate<=2");
|
||||
}
|
||||
|
||||
if(StrUtil.isNotEmpty(searchInfo.get("extend")) && "0".equals(searchInfo.get("extend"))) {
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("isSecond")) && !"-1".equals(searchInfo.get("isSecond"))) {
|
||||
queryHelper.addCondition("p.is_second=?", Integer.parseInt(searchInfo.get("isSecond")));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("resolvePlan")) && !"-1".equals(searchInfo.get("resolvePlan"))) {
|
||||
queryHelper.addCondition("p.resolve_plan=?", Integer.parseInt(searchInfo.get("resolvePlan")));
|
||||
}
|
||||
/**
|
||||
* 只选择了一个时间的情况,就项目时间包括这个时间的
|
||||
*/
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("startDate")) && StrUtil.isEmpty(searchInfo.get("endDate"))) {
|
||||
String time = searchInfo.get("startDate") + " 00:00:00";
|
||||
queryHelper.addCondition("p.start_date<=? AND p.end_date>=?", time, time);
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("endDate")) && StrUtil.isEmpty(searchInfo.get("startDate"))) {
|
||||
String time = searchInfo.get("endDate") + " 00:00:00";
|
||||
queryHelper.addCondition("p.start_date<=? AND p.end_date>=?", time, time);
|
||||
}
|
||||
/**
|
||||
* 两个时间都选了,则包含项目时间
|
||||
*/
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("startDate")) && StrUtil.isNotEmpty(searchInfo.get("endDate"))) {
|
||||
String startTime = searchInfo.get("startDate") + " 00:00:00";
|
||||
String endTime = searchInfo.get("endDate") + " 23:59:59";
|
||||
queryHelper.addCondition("p.start_date>=? AND p.end_date<=?", startTime, endTime);
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("contractStartTime"))) {
|
||||
String time = searchInfo.get("contractStartTime") + " 00:00:00";
|
||||
queryHelper.addCondition("p.contract_time>=?", time);
|
||||
}
|
||||
if (StrUtil.isNotEmpty(searchInfo.get("contractEndTime"))) {
|
||||
String time = searchInfo.get("contractEndTime") + " 00:00:00";
|
||||
queryHelper.addCondition("p.contract_time<=?", time);
|
||||
}
|
||||
}
|
||||
|
||||
//项目可见性,根据角色和人员id
|
||||
Admin admin = InterfaceUtil.getAdmin();
|
||||
int roleId = admin.getRoleId();
|
||||
Integer adminId = admin.getId();
|
||||
//自己创建的肯定能看见,配置的可以看见,系统管理员可以看见
|
||||
SysRole sysRole = sysRoleRepository.findSysRoleById(roleId);
|
||||
if(SysRole.ROLE_TYPE_SYSTEM != sysRole.getType()){
|
||||
queryHelper.addCondition("(p.creator_id=? OR p.approve_id=? OR p.id in (SELECT pv1.project_id FROM project_visible pv1 WHERE pv1.type=1 AND pv1.tid=? UNION SELECT pv2.project_id FROM project_visible pv2 WHERE pv2.type=2 AND pv2.tid=?))", adminId, adminId, roleId, adminId);
|
||||
}
|
||||
|
||||
queryHelper.addDescOrderProperty("p.last_update_time");
|
||||
|
||||
return queryHelper;
|
||||
}
|
||||
|
||||
public SpaceVO getListData() {
|
||||
|
||||
String sql = "SELECT count(id) as sum, certainty, certainty_str as name FROM project WHERE approve_status_estimate >= 1 and approve_status_estimate <= 2 and dept_name = '销售管理部' GROUP BY certainty";
|
||||
|
|
|
@ -381,6 +381,76 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 扩展区域 -->
|
||||
<div class="expand-section <#if extend='1'> fold</#if>">
|
||||
<!-- 第五行 -->
|
||||
<div class="flex-row st-row">
|
||||
<div class="st-col st-col-4">
|
||||
<div class="st-col-title">汇智产品金额</div>
|
||||
<div class="flex-row st-col-field">
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="huizhiStart"
|
||||
value="${huizhiStart!}" placeholder="汇智产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
<div class="mid-connect">至</div>
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="huizhiEnd"
|
||||
value="${huizhiEnd!}" placeholder="汇智产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="st-col st-col-4">
|
||||
<div class="st-col-title">华智产品金额</div>
|
||||
<div class="flex-row st-col-field">
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="huazhiStart"
|
||||
value="${huazhiStart!}" placeholder="华智产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
<div class="mid-connect">至</div>
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="huazhiEnd"
|
||||
value="${huazhiEnd!}" placeholder="华智产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="st-col st-col-4">
|
||||
<div class="st-col-title">华三产品金额</div>
|
||||
<div class="flex-row st-col-field">
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="huasanStart"
|
||||
value="${huasanStart!}" placeholder="华三产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
<div class="mid-connect">至</div>
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="huasanEnd"
|
||||
value="${huasanEnd!}" placeholder="华三产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="st-col st-col-4">
|
||||
<div class="st-col-title">其他产品金额</div>
|
||||
<div class="flex-row st-col-field">
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="otherStart"
|
||||
value="${otherStart!}" placeholder="其他产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
<div class="mid-connect">至</div>
|
||||
<div class="am-form-icon">
|
||||
<i class="am-icon-calendar"></i>
|
||||
<input type="text" class="am-form-field am-input-sm" id="otherEnd"
|
||||
value="${otherEnd!}" placeholder="其他产品金额" autocomplete="off" data-am-datepicker>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-row tools-row">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary"
|
||||
id="extend" value="${extend!}">扩展筛选项
|
||||
|
@ -1174,6 +1244,22 @@
|
|||
keywordsObj.contractEndTime = $("#contractEndTime").val();
|
||||
if ($("#industryScene").val())
|
||||
keywordsObj.industryScene = $("#industryScene").val();
|
||||
if ($("#huizhiStart").val())
|
||||
keywordsObj.huizhiStart = $("#huizhiStart").val();
|
||||
if ($("#huizhiEnd").val())
|
||||
keywordsObj.huizhiEnd = $("#huizhiEnd").val();
|
||||
if ($("#huazhiStart").val())
|
||||
keywordsObj.huazhiStart = $("#huazhiStart").val();
|
||||
if ($("#huazhiEnd").val())
|
||||
keywordsObj.huazhiEnd = $("#huazhiEnd").val();
|
||||
if ($("#huasanStart").val())
|
||||
keywordsObj.huasanStart = $("#huasanStart").val();
|
||||
if ($("#huasanEnd").val())
|
||||
keywordsObj.huasanEnd = $("#huasanEnd").val();
|
||||
if ($("#otherStart").val())
|
||||
keywordsObj.otherStart = $("#otherStart").val();
|
||||
if ($("#otherEnd").val())
|
||||
keywordsObj.otherEnd = $("#otherEnd").val();
|
||||
}
|
||||
if ($("#customer").val())
|
||||
keywordsObj.customer = $("#customer").val();
|
||||
|
@ -1296,6 +1382,22 @@
|
|||
keywordsObj.contractEndTime = $("#contractEndTime").val();
|
||||
if ($("#industryScene").val())
|
||||
keywordsObj.industryScene = $("#industryScene").val();
|
||||
if ($("#huizhiStart").val())
|
||||
keywordsObj.huizhiStart = $("#huizhiStart").val();
|
||||
if ($("#huizhiEnd").val())
|
||||
keywordsObj.huizhiEnd = $("#huizhiEnd").val();
|
||||
if ($("#huazhiStart").val())
|
||||
keywordsObj.huazhiStart = $("#huazhiStart").val();
|
||||
if ($("#huazhiEnd").val())
|
||||
keywordsObj.huazhiEnd = $("#huazhiEnd").val();
|
||||
if ($("#huasanStart").val())
|
||||
keywordsObj.huasanStart = $("#huasanStart").val();
|
||||
if ($("#huasanEnd").val())
|
||||
keywordsObj.huasanEnd = $("#huasanEnd").val();
|
||||
if ($("#otherStart").val())
|
||||
keywordsObj.otherStart = $("#otherStart").val();
|
||||
if ($("#otherEnd").val())
|
||||
keywordsObj.otherEnd = $("#otherEnd").val();
|
||||
}
|
||||
if ($("#customer").val())
|
||||
keywordsObj.customer = $("#customer").val();
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
<form class="am-form" id="listForm" action="${base}/project/list" method="POST">
|
||||
<input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/>
|
||||
<input type="hidden" id="pageNumber" name="pageNumber" value='${pageNumber!}'/>
|
||||
<input type="hidden" id="orderTypeStr" name="orderTypeStr" value='${orderTypeStr!""}'/>
|
||||
<input type="hidden" id="certainty" name="certainty" value='${certainty!""}'/>
|
||||
<style>
|
||||
.flex-row {
|
||||
display: -webkit-box;
|
||||
|
@ -297,33 +297,24 @@
|
|||
<th class="table-title" width="480px">项目名称</th>
|
||||
<th class="table-title">项目类型</th>
|
||||
<th class="table-title">垫资模式</th>
|
||||
<th class="table-title">垫资利息</th>
|
||||
<th class="table-title">垫资峰值</th>
|
||||
<th class="table-title">项目合同金额</th>
|
||||
<th class="table-title">项目毛利</th>
|
||||
<th class="table-title">项目毛利率</th>
|
||||
<th class="table-title">项目把握度</th>
|
||||
<th class="table-title">汇智产品金额</th>
|
||||
<th class="table-title">华智产品金额</th>
|
||||
<th class="table-title">华三产品金额</th>
|
||||
<th class="table-title">汇智产品金额</th>
|
||||
<th class="table-title">其他产品金额</th>
|
||||
<th class="table-title">项目状态</th>
|
||||
<th class="table-title">行业场景应用</th>
|
||||
<th class="table-title">解决方案</th>
|
||||
<th class="table-title">客户名称</th>
|
||||
<th class="table-title">最终用户名称</th>
|
||||
<th class="table-title">预计合同签订时间</th>
|
||||
<th class="table-title">项目把握度</th>
|
||||
<th class="table-title">项目计划招标时间</th>
|
||||
<th class="table-title">是否二次合作</th>
|
||||
<th class="table-title">直签</th>
|
||||
<th class="table-title">战略合作对象</th>
|
||||
<th class="table-title">项目负责人</th>
|
||||
<th class="table-title">审核状态</th>
|
||||
<th class="table-title">当前审核人</th>
|
||||
<th class="table-title">项目创建者</th>
|
||||
<th class="table-title">部门名称</th>
|
||||
<th class="table-title">项目周期</th>
|
||||
<th class="table-title">最后更新时间</th>
|
||||
<th class="table-title">预计合同签订时间</th>
|
||||
<th class="table-title">计收计划</th>
|
||||
<th class="table-title">项目毛利</th>
|
||||
<th class="table-title">合同金额(万元)</th>
|
||||
<th class="table-title">项目解决方案</th>
|
||||
<th class="table-title">具体解决方案</th>
|
||||
<th class="table-title">是否二次签单</th>
|
||||
<th class="table-title">最终用户名称</th>
|
||||
<th class="table-title">客户名称</th>
|
||||
<th class="table-title">紫光汇智直接投标/集成商转签</th>
|
||||
<th class="table-title">负责人</th>
|
||||
<th class="table-title">备注</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="display:block;width: 4200px;">
|
||||
|
@ -334,33 +325,24 @@
|
|||
<td class="huanhang" width="480px"><a style="cursor: pointer;text-decoration:none" onclick="approve(${list.id})">${list.name!}</a></td>
|
||||
<td>${list.typeDesc!}</td>
|
||||
<td>${list.underwrittenModeStr!}</td>
|
||||
<td>${Utils.format(list.advanceInterestAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.advancePeakAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.contractAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.grossProfit, "0.00")}</td>
|
||||
<td>${Utils.format(list.grossProfitMargin, "0.00")}</td>
|
||||
<td>${list.certaintyStr!}</td>
|
||||
<td>${Utils.format(list.huizhiProductAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.huazhiProductAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.huasanProductAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.huizhiProductAmount, "0.00")}</td>
|
||||
<td>${Utils.format(list.ziguangOtherAmount, "0.00")}</td>
|
||||
<td>${list.statusDesc!}</td>
|
||||
<td>${list.industryScenario!}</td>
|
||||
<td>${list.resolvePlanStr!}</td>
|
||||
<td>${list.customer!}</td>
|
||||
<td>${list.terminalCustomer!}</td>
|
||||
<td>${(list.contractTime?string("yyyy-MM-dd"))!}</td>
|
||||
<td>${list.certaintyStr!}</td>
|
||||
<td>${(list.bidsTime?string("yyyy-MM-dd"))!}</td>
|
||||
<td>${(list.contractTime?string("yyyy-MM-dd"))!}</td>
|
||||
<td>${list.calculationCollection!}</td>
|
||||
<td>${Utils.format(list.grossProfit, "0.00")}</td>
|
||||
<td>${Utils.format(list.contractAmount, "0.00")}</td>
|
||||
<td>${list.resolvePlanStr!}</td>
|
||||
<td>${list.mainContractResolvePlan!}</td>
|
||||
<td>${list.isSecondStr!}</td>
|
||||
<td>${list.terminalCustomer!}</td>
|
||||
<td>${list.customer!}</td>
|
||||
<td>${list.signTypeStr!}</td>
|
||||
<td>${list.collaborator!}</td>
|
||||
<td>${list.principal!}</td>
|
||||
<td>${list.approveStatusDesc!}</td>
|
||||
<td>${list.approveName!}</td>
|
||||
<td>${list.creatorName!}</td>
|
||||
<td>${list.deptName!}</td>
|
||||
<td>${(list.startDate?string("yyyy-MM"))!} ~ ${(list.endDate?string("yyyy-MM"))!}</td>
|
||||
<td>${(list.lastUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!}</td>
|
||||
<td>${list.remark!}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</tbody>
|
||||
|
|
Loading…
Reference in New Issue