Commit 47b4fcd4 authored by liuChang's avatar liuChang

Merge branch 'V20231129-中建一局二公司' of 192.168.60.201:root/dsk-operate-sys into V20231129-中建一局二公司

parents 37003a2e 8484a4a9
package com.dsk.web.schedule;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.constant.PushConstants;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.SysConfig;
import com.dsk.system.domain.SysPush;
import com.dsk.system.domain.SysStatutoryHoliday;
import com.dsk.system.mapper.SysStatutoryHolidayMapper;
import com.dsk.system.service.ISysConfigService;
import com.dsk.system.service.ISysPushService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 推送相关定时任务
*
* @Author lcl
* @Data 2023/12/21 17:05
*/
@Component
@RequiredArgsConstructor
@Slf4j
public class PushTask {
@Autowired
private ISysPushService pushService;
@Autowired
private ISysConfigService configService;
@Resource
private SysStatutoryHolidayMapper statutoryHolidayMapper;
/**
* 供应商不良推送(每分钟)
*/
// @Scheduled(cron = "0 * * * * ? ")
public void customerBadness() {
//1.是否推送时间段(日期、时间)
if (!isPush()) return;
//2.推送数据(当前时段是否存在数据)
//3.推送人员
List<SysPush> list = pushService.list(Wrappers.<SysPush>lambdaQuery().eq(SysPush::getStatus, 0));
if (CollectionUtils.isNotEmpty(list)) {
list.parallelStream().forEach(item -> {
Map<String, Object> param = new HashMap<>();
param.put("name", item.getName());
});
}
}
//是否推送
private boolean isPush() {
//推送类型
SysConfig type = configService.selectConfigByKey(PushConstants.CUSTOMEER_BADNESS_TYPE_KEY);
if (ObjectUtils.isEmpty(type)) return false;
if ("1".equals(type.getConfigValue()) && !isWorkingDay()) return false;
//推送时段
SysConfig frame = configService.selectConfigByKey(PushConstants.CUSTOMEER_BADNESS_FRAME_KEY);
return !ObjectUtils.isEmpty(frame) && isPushTime(frame.getConfigValue());
}
//判断当前是否工作日
private boolean isWorkingDay() {
LocalDate date = LocalDate.now();
SysStatutoryHoliday today = statutoryHolidayMapper.selectOne(Wrappers.<SysStatutoryHoliday>lambdaQuery()
.eq(SysStatutoryHoliday::getDate, date));
if (!ObjectUtils.isEmpty(today)) return today.getIsHoliday() == 0;
return date.getDayOfWeek() != DayOfWeek.SATURDAY && date.getDayOfWeek() != DayOfWeek.SUNDAY;
}
//判断是否在当前时段推送
private boolean isPushTime(String timeFrame) {
String date = LocalDate.now().toString();
String[] split = timeFrame.split("-");
Date currentTime = new Date();
return currentTime.after(DateUtils.parseDate(date + " " + split[0])) && currentTime.before(DateUtils.parseDate(date + " " + split[1]));
}
}
package com.dsk.web.schedule;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.system.service.ISysTenantService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -19,9 +20,10 @@ import org.springframework.stereotype.Component;
public class TenantTimerTask {
private final ISysTenantService tenantService;
private final AdvisoryBodyService advisoryBodyService;
/**
* 每6小时扫描并禁用已过期租户账号
* 每10分钟扫描并禁用已过期租户账号
*/
@Scheduled(cron = "0 0/10 * * * ? ")
public void updateExpiredTenantStatus() {
......@@ -29,4 +31,13 @@ public class TenantTimerTask {
TenantHelper.ignore(tenantService::handleExpiredTenant);
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Scheduled(cron = "0 0 * 1/1 * ? ")
public void updateAdvisoryBodyBusinessScope() {
log.info("执行定时更新咨询机构经营范围(1h/次)");
TenantHelper.ignore(advisoryBodyService::updateAdvisoryBodyBusinessScope);
}
}
\ No newline at end of file
......@@ -167,11 +167,11 @@ sms:
#请求地址 默认为 dysmsapi.aliyuncs.com 如无特殊改变可以不用设置
requestUrl: dysmsapi.aliyuncs.com
#阿里云的accessKey
accessKeyId: LTAIC4Pb2jJZbUmD
accessKeyId: LTAIFKlRP50kOB5b
#阿里云的accessKeySecret
accessKeySecret: L7VANFwqaTludkczLsg9jhvidk0e28
accessKeySecret: I2HvinEcSgiJPFOhRbKKP1jl1wH5E3
#短信签名
signature: 大司空信息科技
signature: 中建一局二公司
tencent:
#请求地址默认为 sms.tencentcloudapi.com 如无特殊改变可不用设置
requestUrl: sms.tencentcloudapi.com
......
......@@ -168,8 +168,11 @@ tenant:
- d_subcontract
- advisory_body
- advisory_body_project
- advisory_body_custom_form
- dim_area
- biz_dict_data
- push_monitor_rules
- push_monitor_info
# MyBatisPlus配置
......
package com.dsk.common.constant;
/**
* 推送相关
*/
public interface PushConstants {
/**
* 供应商不良推送短信模板
*/
String CUSTOMEER_BADNESS_SMS = "SMS_464311026";
/**
* 供应商不良推送类型
*/
String CUSTOMEER_BADNESS_TYPE_KEY = "customer-badness-date-type";
/**
* 供应商不良推送时段
*/
String CUSTOMEER_BADNESS_FRAME_KEY = "customer-badness-time-frame";
}
......@@ -12,6 +12,7 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
/**
......@@ -191,4 +192,30 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
int year = localDate.getHour();
return year;
}
/**
* 获取小时前后日期
* @param date
* @param hours
* @return
*/
public static Date addDays(Date date, int hours) {
return org.apache.commons.lang3.time.DateUtils.addHours(date, hours);
}
/***
*@Description: yyyy-MM-dd HH:mm:ss
*@Param:
*@return: java.lang.String
*@Author: Dgm
*@date: 2023/12/21 18:23
*/
public static String format(Date date) {
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
}
return new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS).format(calendar.getTime());
}
}
......@@ -5,23 +5,20 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectDetailBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.service.AdvisoryBodyCustomFormService;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 咨询机构管理控制层
......@@ -29,7 +26,6 @@ import javax.annotation.Resource;
* @author sxk
* @since 2023-12-10 15:34:46
*/
@Validated
@RestController
@RequestMapping("advisory/body")
public class AdvisoryBodyManageController extends BaseController {
......@@ -39,6 +35,8 @@ public class AdvisoryBodyManageController extends BaseController {
private AdvisoryBodyService advisoryBodyService;
@Resource
private AdvisoryBodyProjectService advisoryBodyProjectService;
@Resource
private AdvisoryBodyCustomFormService advisoryBodyCustomFormService;
/**
* 获取所有项目列表数据
......@@ -60,15 +58,57 @@ public class AdvisoryBodyManageController extends BaseController {
* 获取合作项目明细
*/
@GetMapping("/getCooperateProjectDetailList")
public TableDataInfo<CooperateProjectDetailSearchVo> getCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
public TableDataInfo<CooperateProjectDetailSearchVo> getCooperateProjectDetailList(@Validated CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
return baseService.queryCooperateProjectDetailList(cooperateProjectDetailSearchBo, pageQuery);
}
/**
* 根据项目主键查询项目详情
* 获取项目详情
*/
@GetMapping("/getProjectDetail")
public R<ProjectDetailVo> getProjectDetail(ProjectDetailBo projectDetailBo) {
public R<ProjectDetailVo> getProjectDetail(@Validated ProjectDetailBo projectDetailBo) {
return R.ok(baseService.queryProjectDetail(projectDetailBo));
}
/**
* 校验咨询机构是否存在
*/
@GetMapping("/checkAdvisoryBodyExist")
public R<AdvisoryBodyExistVo> checkAdvisoryBodyExist(@NotBlank(message = "咨询机构名称不能为空") String advisoryBodyName) {
return R.ok(advisoryBodyService.checkAdvisoryBodyExist(advisoryBodyName));
}
/**
* 新增咨询机构
*/
@PostMapping("/addAdvisoryBody")
public R<Void> addAdvisoryBody(@Validated AddAdvisoryBodyBo addAdvisoryBodyBo) {
return toAjax(advisoryBodyService.addAdvisoryBody(addAdvisoryBodyBo));
}
/**
* 获取咨询机构自定义表单
*/
@GetMapping("/getAdvisoryBodyCustomForm/{projectKey}")
public R<AdvisoryBodyCustomForm> getAdvisoryBodyCustomForm(@Validated @NotNull(message = "项目主键不能为空") @PathVariable Long projectKey) {
return R.ok(advisoryBodyCustomFormService.getById(projectKey));
}
/**
* 新增咨询机构自定义表单
*/
@PostMapping("/addAdvisoryBodyCustomForm")
@Transactional(rollbackFor = Exception.class)
public R<Void> addAdvisoryBodyCustomForm(@Validated AdvisoryBodyCustomForm advisoryBodyCustomForm) {
return toAjax(advisoryBodyCustomFormService.save(advisoryBodyCustomForm));
}
/**
* 更新咨询机构自定义表单
*/
@PutMapping("/updateAdvisoryBodyCustomForm")
@Transactional(rollbackFor = Exception.class)
public R<Void> updateAdvisoryBodyCustomForm(@Validated AdvisoryBodyCustomForm advisoryBodyCustomForm) {
return toAjax(advisoryBodyCustomFormService.updateById(advisoryBodyCustomForm));
}
}
\ No newline at end of file
......@@ -4,7 +4,6 @@ package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import com.dsk.cscec.service.IDimAreaService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -40,7 +39,7 @@ public class DimAreaController extends BaseController {
* 获取地区树(不含区域)
*/
@GetMapping("/all/withoutRegion")
public R<List<RegionWithLevelVo>> allAreaWithoutRegion(){
public R<List<RegionVo>> allAreaWithoutRegion(){
return R.ok(baseService.allAreaWithoutRegion());
}
}
......
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 咨询机构(SysAdvisoryBody)表实体类
......@@ -14,10 +15,11 @@ import java.util.Date;
* @author sxk
* @since 2023-12-12 10:12:06
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdvisoryBody implements Serializable {
public class AdvisoryBody extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -38,24 +40,5 @@ public class AdvisoryBody implements Serializable {
* 经营范围
*/
private String businessScope;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 咨询机构自定义表单(AdvisoryBodyCustomForm)实体类
*
* @author sxk
* @since 2023-12-20 16:39:43
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyCustomForm extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目主键
*/
@TableId(value = "project_key")
@NotNull(message = "项目主键不能为空")
private Long projectKey;
/**
* 咨询机构ID
*/
@NotNull(message = "咨询机构ID不能为空")
private Long advisoryBodyId;
/**
* json数据
*/
@NotBlank(message = "json数据不能为空")
private String jsonData;
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -11,8 +14,9 @@ import java.util.Date;
* @date 2023.12.15
* @time 15:58
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyProject implements Serializable {
public class AdvisoryBodyProject extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -48,7 +52,7 @@ public class AdvisoryBodyProject implements Serializable {
/**
* 结算金额(万元)
*/
private Double settleAmount;
private BigDecimal settleAmount;
/**
* 结算开始时间
*/
......@@ -61,20 +65,4 @@ public class AdvisoryBodyProject implements Serializable {
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
}
......@@ -13,7 +13,7 @@ import java.util.Date;
*/
@Data
public class DProject implements Serializable {
private static final long serialVersionUID = -39953154592938442L;
private static final long serialVersionUID = 1L;
/**
* 项目主键
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.19
* @time 09:54
*/
@Data
public class AddAdvisoryBodyBo {
/**
* 是否为新资讯机构
*/
@NotNull(message = "是否为新咨询机构不能为空")
private Boolean isNewAdvisoryBody;
/**
* 项目主键
*/
@NotNull(message = "项目主键不能为空")
private Long projectKey;
/**
* 咨询机构cid(用于查询建设库数据)
*/
@NotNull(message = "咨询机构cid不能为空")
private Integer advisoryBodyCid;
/**
* 咨询机构名称
*/
@NotBlank(message = "咨询机构名称不能为空")
private String advisoryBodyName;
/**
* 经营范围
*/
@NotBlank(message = "经营范围不能为空")
private String businessScope;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private Double settleAmount;
/**
* 结算开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date settleStartTime;
/**
* 结算完成时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
}
......@@ -39,6 +39,10 @@ public class AdvisoryBodyBo extends BaseEntity {
* 项目承接单位
*/
private String contractOrgName;
/**
* 区域
*/
private List<String> area;
/**
* 省份
*/
......
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author sxk
* @date 2023.12.19
* @time 14:20
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyExistVo extends AdvisoryBody {
/**
* 是否为新资讯机构
*/
private Boolean isNewAdvisoryBody;
}
......@@ -3,6 +3,7 @@ package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.Date;
......@@ -12,6 +13,7 @@ import java.util.Date;
* @date 2023.12.13
* @time 10:32
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
......
......@@ -62,7 +62,7 @@ public class AdvisoryBodyVo {
* 工程类别明细
*/
@ExcelProperty(value = "工程类别明细", index = 6)
private String projectType;
private String projectType2;
/**
* 咨询机构ID
......@@ -97,7 +97,7 @@ public class AdvisoryBodyVo {
* 合同金额
*/
@ExcelProperty(value = "合同金额", index = 10)
private BigDecimal contractOrigValue;
private BigDecimal contractValue;
/**
* 业主单位
......@@ -112,8 +112,8 @@ public class AdvisoryBodyVo {
private String contractOrgName;
/**
* 创建时间
* 创建时间/合同生效(盖章)日期
*/
@ExcelProperty(value = "创建时间", index = 13)
private Date loadTime;
private Date contractSignDate;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -67,6 +67,11 @@ public class CooperateProjectDetailSearchVo {
*/
private BigDecimal contractOrigValue;
/**
* 咨询机构与项目关联信息
*/
private AdvisoryBodyProject advisoryBodyProject;
/**
* 结算天数(天)
*/
......@@ -82,11 +87,6 @@ public class CooperateProjectDetailSearchVo {
*/
private String contractOrgName;
/**
* 咨询机构(咨询机构表)
*/
private AdvisoryBody advisoryBody;
/**
* 创建时间(合同生效日期)
*/
......
......@@ -79,6 +79,10 @@ public class CustomerApproveVo {
* 业主性质
*/
private String ownerKind;
/**
* 企业性质
*/
private String customerProperty;
/**
* 资质等级
*/
......@@ -132,10 +136,6 @@ public class CustomerApproveVo {
* 税号
*/
private String taxNumber;
/**
* 企业性质
*/
private String customerProperty;
//证书信息
/**
......@@ -167,6 +167,10 @@ public class CustomerApproveVo {
*/
private String expireDate7;
//审批意见
/**
* 是否同意准入/准入情况
*/
private String isagree;
/**
* 经办人
*/
......
package com.dsk.cscec.domain.vo;
import com.dsk.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
......@@ -112,7 +113,7 @@ public class DCustomerListVo implements Serializable {
/**
* 队伍规模人数
*/
@Excel(name = "队伍规模", width = 10)
@Excel(name = "队伍规模", cellType = Excel.ColumnType.NUMERIC, width = 10)
private Double serviceTeamPersonnum;
/**
* 专业特长
......@@ -132,7 +133,7 @@ public class DCustomerListVo implements Serializable {
/**
* 注册资金
*/
@Excel(name = "注册资金(万元)", width = 10)
@Excel(name = "注册资金(万元)", cellType = Excel.ColumnType.NUMERIC, width = 10)
private Double registerCapital;
/**
* 联系人
......@@ -148,17 +149,18 @@ public class DCustomerListVo implements Serializable {
/**
* 准入时间
*/
@Excel(name = "准入时间", width = 10 , dateFormat = "yyyy-MM-dd")
@Excel(name = "准入时间", width = 10, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date approveDate2;
/**
* 企业合作数量
*/
@Excel(name = "公司合作数量", width = 10 )
@Excel(name = "公司合作数量", width = 10)
private Integer enterpriseCooperationCount;
/**
* 项目合作数量
*/
@Excel(name = "合作项目数量", width = 10 )
@Excel(name = "合作项目数量", width = 10)
private Integer projectCooperationCount;
/**
* 考评等级
......@@ -167,5 +169,4 @@ public class DCustomerListVo implements Serializable {
private String creditLevel;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.DProject;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -29,4 +30,8 @@ public class ProjectDetailVo extends DProject {
* 注册地址
*/
private String regAddress;
/**
* 项目信息
*/
private AdvisoryBodyProject advisoryBodyProject;
}
......@@ -15,4 +15,6 @@ public class RegionVo {
List<RegionVo> children;
Integer childrenLength;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @Author sxk
* @Data 2023/12/13 14:14
*/
@Data
public class RegionWithLevelVo {
String level;
String value;
List<RegionWithLevelVo> children;
Integer childrenLength;
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
/**
* 咨询机构自定义表单(AdvisoryBodyCustomForm)表数据库访问层
*
* @author sxk
* @since 2023-12-20 16:39:37
*/
public interface AdvisoryBodyCustomFormMapper extends BaseMapper<AdvisoryBodyCustomForm> {
}
......@@ -33,6 +33,13 @@ public interface AdvisoryBodyMapper extends BaseMapper<AdvisoryBody> {
*/
Page<AdvisoryBodyVo> queryListByBo(IPage<AdvisoryBodyBo> build, @Param("bo") AdvisoryBodyBo bo);
/**
* 咨询机构合作记录数量
* @param bo
* @return
*/
int countByBo(@Param("bo") AdvisoryBodyBo bo);
/**
* 根据咨询机构名称查询咨询机构Cids
* @param advisoryBodyName 咨询机构名称
......
......@@ -31,5 +31,12 @@ public interface DSubcontractMapper extends BaseMapper<DSubcontract> {
* @return
*/
Page<CustomerCooperationVo> selectCooperationList(IPage<CustomerCooperationBo> build, @Param("bo")CustomerCooperationBo bo);
/**
* 供应商合作记录数量
* @param bo
* @return
*/
int countByBo(@Param("bo")CustomerCooperationBo bo);
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
/**
* 咨询机构自定义表单(AdvisoryBodyCustomForm)表服务接口
*
* @author makejava
* @since 2023-12-20 17:33:31
*/
public interface AdvisoryBodyCustomFormService extends IService<AdvisoryBodyCustomForm> {
}
......@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.bo.AddAdvisoryBodyBo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
/**
......@@ -22,5 +24,26 @@ public interface AdvisoryBodyService extends IService<AdvisoryBody> {
* @return 所有数据
*/
TableDataInfo<AdvisoryBodySearchVo> queryAdvisoryBodyList(AdvisoryBodySearchBo advisoryBodySearchBo, PageQuery pageQuery);
/**
* 校验咨询机构是否存在
*
* @param advisoryBodyName 咨询机构名称
* @return 校验结果
*/
AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName);
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo);
/**
* 每小时更新一次咨询机构经营范围
*/
void updateAdvisoryBodyBusinessScope();
}
......@@ -12,6 +12,8 @@ import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import java.util.Map;
/**
* 组织维表(DCustomer)表服务接口
*
......@@ -20,10 +22,27 @@ import com.dsk.cscec.domain.vo.CustomerInfoVo;
*/
public interface ICustomerInfoService extends IService<DCustomer> {
/**
* 供应商分类列表
* @param bo
* @param query
* @return
*/
TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query);
/**
* 供应商准入情况
* @param bo
* @return
*/
CustomerApproveVo queryApproveByBo(CustomerInfoBo bo);
/**
* 咨询机构合作记录
* @param bo
* @param query
* @return
*/
TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query);
/**
......@@ -33,4 +52,11 @@ public interface ICustomerInfoService extends IService<DCustomer> {
* @return
*/
TableDataInfo<CustomerCooperationVo> queryCooperationList(CustomerCooperationBo bo,PageQuery query);
/**
* 内部合作统计
* @param companyName
* @return
*/
Map<String,Object> cooperationStatistic(String companyName);
}
......@@ -3,7 +3,6 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import java.util.List;
......@@ -18,7 +17,7 @@ public interface IDimAreaService extends IService<DimArea> {
List<RegionVo> allArea();
List<RegionWithLevelVo> allAreaWithoutRegion();
List<RegionVo> allAreaWithoutRegion();
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
import com.dsk.cscec.mapper.AdvisoryBodyCustomFormMapper;
import com.dsk.cscec.service.AdvisoryBodyCustomFormService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 咨询机构自定义表单(AdvisoryBodyCustomForm)表服务实现类
*
* @author sxk
* @since 2023-12-20 17:33:31
*/
@Service("advisoryBodyCustomFormService")
public class AdvisoryBodyCustomFormServiceImpl extends ServiceImpl<AdvisoryBodyCustomFormMapper, AdvisoryBodyCustomForm> implements AdvisoryBodyCustomFormService {
@Resource
private AdvisoryBodyCustomFormMapper baseMapper;
}
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -9,10 +10,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.bo.AddAdvisoryBodyBo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
......@@ -21,8 +25,10 @@ import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -100,5 +106,88 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
}
return TableDataInfo.build(page);
}
/**
* 校验咨询机构是否存在
*
* @param advisoryBodyName 咨询机构名称
* @return 校验结果
*/
@Override
public AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName) {
//先从咨询机构表查询是否存在,存在则直接返回
AdvisoryBody advisoryBody = baseMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getAdvisoryBodyName, advisoryBodyName));
if (ObjectUtil.isNotNull(advisoryBody)) {
//咨询机构表中有记录,则设置为非新咨询机构
AdvisoryBodyExistVo advisoryBodyExistVo = BeanUtil.toBean(advisoryBody, AdvisoryBodyExistVo.class);
advisoryBodyExistVo.setIsNewAdvisoryBody(false);
return advisoryBodyExistVo;
} else {
Map<String, Object> params = new HashMap<>();
params.put("keyword", advisoryBodyName);
Map jskData = MapUtils.getMap(dskOpenApiUtil.requestBody("/nationzj/enterprice/index", params), "data", null);
//防止没有数据而导致强转错误,所以先判断下total
if (MapUtils.getInteger(jskData, "total", 0) > 0) {
List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list");
for (Map<String, Object> companyData : data) {
//企业名称完全匹配上,则直接返回给前端
String companyName = StringUtils.removeRed(MapUtils.getString(companyData, "name","NotExist"));
if (advisoryBodyName.equals(companyName)) {
AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo();
advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
advisoryBodyExistVo.setAdvisoryBodyName(companyName);
advisoryBodyExistVo.setBusinessScope(MapUtils.getString(companyData, "businessScope"));
advisoryBodyExistVo.setIsNewAdvisoryBody(true);
return advisoryBodyExistVo;
}
}
//查不到则抛异常
throw new ServiceException("咨询机构不存在或结果不唯一,请输入完整咨询机构企业名称");
}
}
return null;
}
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
long advisoryBodyId = IdUtil.getSnowflakeNextId();;
//如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
newAdvisoryBody.setAdvisoryBodyId(advisoryBodyId);
baseMapper.insert(newAdvisoryBody);
}
AdvisoryBodyProject advisoryBodyProject = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class);
advisoryBodyProject.setAdvisoryBodyId(advisoryBodyId);
return advisoryBodyProjectMapper.insert(advisoryBodyProject);
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateAdvisoryBodyBusinessScope() {
EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody();
for (AdvisoryBody advisoryBody : baseMapper.selectList(null)) {
infoHeaderBody.setCompanyId(Math.toIntExact(advisoryBody.getAdvisoryBodyCid()));
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null);
String businessScope = MapUtils.getString(companyData, "businessScope", "empty");
if (!"empty".equals(businessScope)) {
advisoryBody.setBusinessScope(businessScope);
baseMapper.updateById(advisoryBody);
}
}
}
}
......@@ -17,10 +17,7 @@ import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.mapper.DSubcontractMapper;
......@@ -31,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.Map;
/**
......@@ -66,10 +64,11 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
Page<CustomerInfoVo> page = baseMapper.queryListByType(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) {
page.getRecords().parallelStream().forEach(item->{
DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
//企业合作数量
item.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(item.getCustomerId()));
item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量
item.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(item.getCustomerId()));
item.setProjectCooperationCount(vo.getProjectCooperationCount());
//关键字标红
if(!ObjectUtils.isEmpty(bo.getCustomerName())){
item.setCustomerName(StringUtils.markInRed(item.getCustomerName(), bo.getCustomerName()));
......@@ -99,6 +98,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
Assert.isTrue(false,"参数不能为空");
}
LambdaQueryWrapper<DCustomer> lqw = Wrappers.lambdaQuery();
lqw.eq(DCustomer::getRecommendOrgId,QueryConstants.LEVEL1_COMPANY_ID);
lqw.eq(ObjectUtil.isNotNull(bo.getCustomerKey()),DCustomer::getCustomerKey,bo.getCustomerKey());
lqw.eq(StringUtil.isNotBlank(bo.getUnifySocialCode()),DCustomer::getUnifySocialCode,bo.getUnifySocialCode());
lqw.eq(StringUtil.isNotBlank(bo.getCustomerName()),DCustomer::getCustomerName,bo.getCustomerName());
......@@ -125,4 +125,30 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
Page<CustomerCooperationVo> page = dSubcontractMapper.selectCooperationList(query.build(),bo);
return TableDataInfo.build(page);
}
@Override
public Map<String, Object> cooperationStatistic(String companyName) {
if (StringUtil.isBlank(companyName)) {
return new HashMap<>();
}
AdvisoryBodyBo advisoryBodyBo = new AdvisoryBodyBo();
advisoryBodyBo.setContractOrgId(QueryConstants.LEVEL1_COMPANY_ID);
advisoryBodyBo.setAdvisoryBodyName(companyName);
LambdaQueryWrapper<DCustomer> lqw = Wrappers.lambdaQuery();
lqw.eq(DCustomer::getRecommendOrgId,QueryConstants.LEVEL1_COMPANY_ID);
lqw.eq(StringUtil.isNotBlank(companyName), DCustomer::getCustomerName, companyName);
CustomerCooperationBo customerCooperationBo = new CustomerCooperationBo();
customerCooperationBo.setSignOrgId(QueryConstants.LEVEL1_COMPANY_ID);
customerCooperationBo.setCustomerName(companyName);
Map<String, Object> result = new HashMap<>();
result.put("advisoryList", advisoryBodyMapper.countByBo(advisoryBodyBo));
result.put("cooperationList", subcontractMapper.countByBo(customerCooperationBo));
result.put("approveInfo", baseMapper.exists(lqw) ? 1 : 0);
// result.put("施工业绩", 0);
// result.put("在施工程情况", 0);
return result;
}
}
......@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import com.dsk.cscec.mapper.DimAreaMapper;
import com.dsk.cscec.service.IDimAreaService;
import com.dsk.system.service.ISysDictTypeService;
......@@ -67,6 +66,7 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
}
}
provinceVo.setChildren(cityVos);
provinceVo.setChildrenLength(provinceVo.getChildren().size());
provinceVos.add(provinceVo);
}
}
......@@ -78,8 +78,8 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
}
@Override
public List<RegionWithLevelVo> allAreaWithoutRegion() {
List<RegionWithLevelVo> vos = new ArrayList<>();
public List<RegionVo> allAreaWithoutRegion() {
List<RegionVo> vos = new ArrayList<>();
//区域
List<SysDictData> sysDictData = sysDictTypeService.selectDictDataByType(AREA_TYPE);
if(CollectionUtils.isNotEmpty(sysDictData)){
......@@ -93,10 +93,9 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
if(CollectionUtils.isNotEmpty(provinces)){
for (Object province : provinces) {
RegionWithLevelVo provinceVo = new RegionWithLevelVo();
RegionVo provinceVo = new RegionVo();
provinceVo.setValue(String.valueOf(province));
provinceVo.setLevel("1");
List<RegionWithLevelVo> cityVos = new ArrayList<>();
List<RegionVo> cityVos = new ArrayList<>();
//市
List<Object> citys = baseMapper.selectObjs(Wrappers.<DimArea>lambdaQuery()
.select(DimArea::getAreaName3)
......@@ -105,9 +104,8 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
.groupBy(DimArea::getAreaName3));
if(CollectionUtils.isNotEmpty(citys)){
for (Object city : citys) {
RegionWithLevelVo cityVo = new RegionWithLevelVo();
RegionVo cityVo = new RegionVo();
cityVo.setValue(String.valueOf(city));
cityVo.setLevel("2");
cityVos.add(cityVo);
}
}
......
......@@ -35,13 +35,14 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 咨询机构管理
*
* @author makejava
* @author sxk
* @since 2023-12-10 15:34:51
*/
@Slf4j
......@@ -80,9 +81,14 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
Page<ProjectSearchVo> page = baseMapper.selectPageProjectList(pageQuery.build(), this.buildProjectQueryWrapper(projectSearchBo, projectKeys));
//补充咨询机构信息
for (ProjectSearchVo projectSearchVo : page.getRecords()) {
//补充咨询机构信息
projectSearchVo.setAdvisoryBody(this.getAdvisoryBodyByProjectKey(projectSearchVo.getProjectKey()));
//关键字标红
if (StringUtils.isNotBlank(projectSearchBo.getProjectName())) {
projectSearchVo.setProjectName(StringUtils.markInRed(projectSearchVo.getProjectName(), projectSearchBo.getProjectName()));
}
}
return TableDataInfo.build(page);
}
......@@ -103,7 +109,7 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
.like(StringUtils.isNotBlank(projectSearchBo.getOwnerUnit()), "p.owner_name", projectSearchBo.getOwnerUnit())
//项目创建时间(字段去的合同签约日期)
.between(ObjectUtil.isNotNull(projectSearchBo.getProjectStartTime()) && ObjectUtil.isNotNull(projectSearchBo.getProjectEndTime()),
"p.sign_date",
"p.contract_sign_date",
projectSearchBo.getProjectStartTime(),
projectSearchBo.getProjectEndTime())
//项目承接类型下拉选项
......@@ -142,31 +148,47 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
public TableDataInfo<CooperateProjectDetailSearchVo> queryCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
//先根据咨询机构CID查出所有该咨询机构下的项目主键keys
List<Long> projectKeys = advisoryBodyProjectMapper.selectProjectKeysByAdvisoryBodyCids(Collections.singletonList(cooperateProjectDetailSearchBo.getAdvisoryBodyCid()));
if (projectKeys.isEmpty()) {
return TableDataInfo.build();
}
//再根据记录终改的项目主键查询项目详情
QueryWrapper<DProject> wrapper = Wrappers.query();
wrapper
//项目主键
.in(!projectKeys.isEmpty(), "project_key", projectKeys)
.in("project_key", projectKeys)
//项目名称
.like(StringUtils.isNotBlank(cooperateProjectDetailSearchBo.getProjectName()), "project_name", cooperateProjectDetailSearchBo.getProjectName())
//项目承接类型
.in(!cooperateProjectDetailSearchBo.getIsinvestproject().isEmpty(), "isinvestproject", cooperateProjectDetailSearchBo.getIsinvestproject())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getIsinvestproject()), "isinvestproject", cooperateProjectDetailSearchBo.getIsinvestproject())
//工程基础大类
.in(!cooperateProjectDetailSearchBo.getProjectType1().isEmpty(), "project_type1", cooperateProjectDetailSearchBo.getProjectType1())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getProjectType1()), "project_type1", cooperateProjectDetailSearchBo.getProjectType1())
//工程类别明细
.in(!cooperateProjectDetailSearchBo.getProjectType().isEmpty(), "project_type", cooperateProjectDetailSearchBo.getProjectType())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getProjectType()), "project_type", cooperateProjectDetailSearchBo.getProjectType())
//项目地区
.in(!cooperateProjectDetailSearchBo.getProvinceName().isEmpty(), "province_name", cooperateProjectDetailSearchBo.getProvinceName())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getProvinceName()), "province_name", cooperateProjectDetailSearchBo.getProvinceName())
.or()
.in(!cooperateProjectDetailSearchBo.getCityName().isEmpty(), "city_name", cooperateProjectDetailSearchBo.getCityName());
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getCityName()), "city_name", cooperateProjectDetailSearchBo.getCityName());
Page<CooperateProjectDetailSearchVo> page = baseMapper.selectPageCooperateProjectDetailList(pageQuery.build(), wrapper);
//填充结算天数
for (CooperateProjectDetailSearchVo cooperateProjectDetailSearchVo : page.getRecords()) {
AdvisoryBodyProject advisoryBodyProject = advisoryBodyProjectMapper.selectById(cooperateProjectDetailSearchVo.getProjectKey());
long betweenDays = DateUtil.between(advisoryBodyProject.getSettleStartTime(), advisoryBodyProject.getSettleFinishTime(), DateUnit.DAY);
cooperateProjectDetailSearchVo.setSettlementDays(betweenDays);
//填充咨询机构与项目关联信息
cooperateProjectDetailSearchVo.setAdvisoryBodyProject(advisoryBodyProject);
//填充结算天数
if (ObjectUtil.isNotNull(advisoryBodyProject)) {
Date settleStartTime = advisoryBodyProject.getSettleStartTime();
Date settleFinishTime = advisoryBodyProject.getSettleFinishTime();
if (ObjectUtil.isNotNull(settleStartTime) && ObjectUtil.isNotNull(settleFinishTime)) {
cooperateProjectDetailSearchVo.setSettlementDays(DateUtil.between(settleStartTime, settleFinishTime, DateUnit.DAY));
} else {
cooperateProjectDetailSearchVo.setSettlementDays(0L);
}
}
//关键字标红
if (StringUtils.isNotBlank(cooperateProjectDetailSearchBo.getProjectName())) {
cooperateProjectDetailSearchVo.setProjectName(StringUtils.markInRed(cooperateProjectDetailSearchVo.getProjectName(), cooperateProjectDetailSearchBo.getProjectName()));
}
}
return TableDataInfo.build(page);
}
......@@ -194,6 +216,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
projectDetailVo.setCorporatePerson(MapUtils.getString(companyData, "corporatePerson", ""));
//注册地址
projectDetailVo.setRegAddress(MapUtils.getString(companyData, "addressDetail", ""));
//查询项目信息并填充
projectDetailVo.setAdvisoryBodyProject(advisoryBodyProjectMapper.selectById(projectDetailBo.getProjectKey()));
return projectDetailVo;
}
}
......
package com.dsk.jsk.controller;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.JskCompanyRelationTableV1Dto;
import com.dsk.jsk.service.CompanyRelationTableV1Service;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @ClassName CompanyRelationTableV1Controller
* @Description
* @Author Dgm
* @Date 2023/12/13 11:28
* @Version
*/
@RestController
@RequestMapping("/consultancy")
public class CompanyRelationTableV1Controller {
@Resource
private CompanyRelationTableV1Service relationTableV1Service;
/***
*@Description: 业主/施工/集团单位-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/page")
public TableDataInfo page(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception {
return relationTableV1Service.page(dto);
}
/***
*@Description: -业主/施工/集团单位详情-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/detailPage")
public TableDataInfo detailPage(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{
return relationTableV1Service.detailPage(dto);
}
/***
*@Description: -分页列表-下拉
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/pageSelect")
public R pageSelect(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{
return relationTableV1Service.pageSelect(dto);
}
/***
*@Description: -分页列表-统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics")
public R statistics(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{
return relationTableV1Service.statistics(dto);
}
/***
*@Description: 常合作集团成员详情-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/combinePage")
public TableDataInfo combinePage(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception {
return relationTableV1Service.combinePage(dto);
}
}
......@@ -18,6 +18,7 @@ public class EnterpriseStatisticBody
*/
@NotNull(message = "企业id不能为空")
private Integer companyId;
private String companyName;
private Boolean isFy = false;
......
package com.dsk.jsk.domain;
import lombok.Data;
import java.util.List;
/**
* @ClassName JskCompanyRelationTableV1Dto
* @Description
* @Author Dgm
* @Date 2023/12/11 20:37
* @Version
*/
@Data
public class JskCompanyRelationTableV1Dto extends BasePage {
/**
* 搜-关键字素
*/
private String keyword;
/**
* 企业类型
*/
private String companyRole;
/**
* 项目类型
*/
private List<String> counterpartCompanyRoles;
/**
* 工程类型
*/
private List<String> projectTypes;
/**
* 咨询机构业务类型
*/
private List<String> businessTypes;
/**
* 公布日期-开始时间
*/
private String beginTime;
/**
* 公布日期-结束时间
*/
private String endTime;
/**
* 本次合作合同金额(万元)-最大金额
*/
private Double maxAmount;
/**
* 本次合作合同金额(万元)-最小金额
*/
private Double minAmount;
/**
* 企业Id
*/
private Integer companyId;
/**
* 企业类型 1:业主 2:施工 3:集团
*/
private Integer companyType;
/**
* 排序 1:金额降序 2:金额升序 3: 时间降序 4: 时间升区5: 数量降序6:数量升序
*/
private Integer sort = 5;
/**
* 集团Id
*/
private String combineId;
}
package com.dsk.jsk.service;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.*;
import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @ClassName CompanyRelationTableV1Controller
* @Description
* @Author Dgm
* @Date 2023/12/13 11:28
* @Version
*/
@Slf4j
@Service
public class CompanyRelationTableV1Service {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public TableDataInfo page(JskCompanyRelationTableV1Dto dto) throws Exception {
Map<String, Object> map = null;
if (dto.getCompanyType().equals(3)) {
map = dskOpenApiUtil.requestBody("/operate/consultancy/combinePage", BeanUtil.beanToMap(dto, false, false));
} else {
map = dskOpenApiUtil.requestBody("/operate/consultancy/page", BeanUtil.beanToMap(dto, false, false));
}
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo detailPage(JskCompanyRelationTableV1Dto dto) throws Exception {
Map<String, Object> map = null;
if (dto.getCompanyType().equals(3) || dto.getCompanyType().equals(4)) {
map = dskOpenApiUtil.requestBody("/operate/consultancy/combineDetailPage", BeanUtil.beanToMap(dto, false, false));
} else {
map = dskOpenApiUtil.requestBody("/operate/consultancy/detailPage", BeanUtil.beanToMap(dto, false, false));
}
return dskOpenApiUtil.responsePage(map);
}
/***
*@Description: -分页列表-下拉
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
public R pageSelect(JskCompanyRelationTableV1Dto dto) throws Exception{
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/pageSelect", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, R.class);
}
/***
*@Description: -分页列表-下拉
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
public R statistics(JskCompanyRelationTableV1Dto dto) throws Exception{
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/statistics", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo combinePage(JskCompanyRelationTableV1Dto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/combineMemberPage", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
}
}
......@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.EncodeIdUtil;
import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.cscec.service.ICustomerInfoService;
import com.dsk.jsk.domain.*;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.CollectionUtils;
......@@ -39,6 +40,9 @@ public class EnterpriseService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private ICustomerInfoService iCustomerInfoService;
public R label(EnterpriseInfoLabelBody body) throws Exception {
List<Map<String, Object>> mapList = new ArrayList<>();
if (body.isVaildCid()) {
......@@ -104,6 +108,10 @@ public class EnterpriseService {
Map statisticMapData = MapUtils.getMap(statisticMap, "data", null);
if (MapUtils.isEmpty(statisticMapData)) return R.ok();
//内部合作
Map<String,Object> cooperation = iCustomerInfoService.cooperationStatistic(body.getCompanyName());
statisticMapData.put("cooperation",cooperation);
Map performance = MapUtils.getMap(statisticMapData, "performance");
Map business = MapUtils.getMap(statisticMapData, "business");
......
......@@ -21,43 +21,15 @@ public class PushMonitorInfo implements Serializable {
/**
* 对外开放的id
*/
private String id;
private Integer id;
/**
* 源表id
* 用户id
*/
private String sourceId;
private Long userId;
/**
* 源表名
* 动态次数
*/
private String sourceTable;
/**
* 公司Id
*/
private Integer companyId;
/**
* 企业名称
*/
private String companyName;
/**
* 风险等级:正向,负向,中立,警示
*/
private String riskLevel;
/**
* 监控维度父级
*/
private String parentDimension;
/**
* 监控维度
*/
private String dimension;
/**
* 动态内容
*/
private String details;
/**
* 发布时间
*/
private Date publishTime;
private Integer count;
/**
* 创建时间
*/
......@@ -66,27 +38,5 @@ public class PushMonitorInfo implements Serializable {
* 更新时间
*/
private Date updateTime;
/**
* 变更时间-暂时用于法人变更
*/
private Date changeDate;
/**
* 更新次数
*/
private Integer versionNum;
/**
* 是否发送 0否 1是
*/
private Integer isSend;
/**
* 数据来源(jsk,fy)
*/
private String source;
/**
* 系统类型 JSK/BRIS
*/
private String sysType;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 是否工作日
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushSettingHolidayVo {
/**
* 时间戳
*/
private Long timestamp;
}
//package com.dsk.monitor.job;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.dsk.common.utils.DateUtils;
//import com.dsk.monitor.domain.dto.PushMonitorRules;
//import com.dsk.monitor.mapper.PushMonitorInfoMapper;
//import com.dsk.monitor.mapper.PushMonitorRulesMapper;
//import com.dsk.monitor.util.SendMessageUtil;
//import org.springframework.scheduling.annotation.Scheduled;
//
//import javax.annotation.Resource;
//
///**
// * @ClassName PushScheduling
// * @Description 发送短信
// * @Author Dgm
// * @Date 2023/12/9 13:51
// * @Version
// */
//public class PushScheduling {
//
// @Resource
// private PushMonitorInfoMapper monitorInfoMapper;
//
// @Resource
// private PushMonitorRulesMapper rulesMapper;
//
// @Scheduled(cron = "0 0 5 * * * ?")
// public void receiveModePhone() {
// // 获取当前整点时间
// Integer concurrentHour = DateUtils.getHour();
// QueryWrapper queryWrapper = new QueryWrapper();
// PushMonitorRules detail = rulesMapper.selectOne(queryWrapper);
// // 推送时段-起
// Integer timePeriodStart = detail.getTimePeriodStart();
// // 推送时段-止
// Integer timePeriodEnd = detail.getTimePeriodEnd();
// if (concurrentHour > timePeriodStart && concurrentHour < timePeriodEnd) {
// QueryWrapper monitorInfoWrapper = new QueryWrapper();
// // 风险类型
// monitorInfoWrapper.in("risk_type", detail.getRiskType());
// // 监控维度
// monitorInfoWrapper.in("dimension", detail.getDimension());
// Long count = monitorInfoMapper.selectCount(monitorInfoWrapper);
// if (count >0 ) {
// SendMessageUtil.sendMessage(detail.getPhones(), count.toString());
// }
// }
// }
//}
package com.dsk.monitor.job;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.common.utils.DateUtils;
import com.dsk.monitor.domain.dto.PushMonitorInfo;
import com.dsk.monitor.domain.dto.PushMonitorRules;
import com.dsk.monitor.domain.vo.ConditionVo;
import com.dsk.monitor.domain.vo.PushMonitorDynamicPageVo;
import com.dsk.monitor.domain.vo.PushSettingHolidayVo;
import com.dsk.monitor.mapper.PushMonitorInfoMapper;
import com.dsk.monitor.mapper.PushMonitorRulesMapper;
import com.dsk.monitor.service.MonitorService;
import com.dsk.monitor.util.SendMessageUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @ClassName PushScheduling
* @Description 发送短信
* @Author Dgm
* @Date 2023/12/9 13:51
* @Version
*/
@Component
public class PushScheduling {
@Resource
private MonitorService monitorService;
@Resource
private PushMonitorInfoMapper monitorInfoMapper;
@Resource
private PushMonitorRulesMapper rulesMapper;
// @Scheduled(cron = "0 0/2 * * * ?")
@Scheduled(cron = "0 0 * * * ?")
public void receiveModePhone() throws Exception {
// 是否是周末
boolean isWeekend = DateUtil.isWeekend(new Date());
PushSettingHolidayVo holidayVo = new PushSettingHolidayVo();
holidayVo.setTimestamp(System.currentTimeMillis());
Map<String, Object> settingHolidayMap = monitorService.settingHoliday(holidayVo);
Integer settingHolidayCode = MapUtils.getInteger(settingHolidayMap, "code", 300);
Boolean settingHolidayData = MapUtils.getBoolean(settingHolidayMap, "data", null);
if (200 == settingHolidayCode) {
isWeekend = !settingHolidayData;
}
TenantHelper.setTenantId("1");
// 获取当前整点时间
Integer concurrentHour = DateUtils.getHour();
QueryWrapper<PushMonitorRules> queryWrapper = new QueryWrapper();
List<PushMonitorRules> detailList = rulesMapper.selectList(queryWrapper);
for (PushMonitorRules detail : detailList) {
// 推送时段-起
String timePeriodStart = detail.getTimePeriodStart();
timePeriodStart = timePeriodStart.substring(0,2);
if (timePeriodStart.contains("0")) {
timePeriodStart = timePeriodStart.substring(1,2);
}
// 推送时段-止
String timePeriodEnd = detail.getTimePeriodEnd();
timePeriodEnd = timePeriodEnd.substring(0,2);
if (timePeriodEnd.contains("0")) {
timePeriodEnd = timePeriodEnd.substring(1,2);
}
Integer pushFrequency = detail.getPushFrequency();
if (pushFrequency > 1) {
if (isWeekend) {
continue;
}
}
Integer timeStart = Integer.valueOf(timePeriodStart);
Integer timeEnd = Integer.valueOf(timePeriodEnd);
if (concurrentHour >= timeStart && concurrentHour <= timeEnd) {
PushMonitorDynamicPageVo pageVo = new PushMonitorDynamicPageVo();
pageVo.setUserId(detail.getUserId());
ConditionVo vo = new ConditionVo();
// 截止时间
vo.setEndTime(DateUtils.getDate());
vo.setBeginTime(DateUtils.format(DateUtils.addDays(new Date(),-1)));
// 监控维度
vo.setDimension(getParamList(detail.getDimension()));
vo.setUserId(detail.getUserId());
pageVo.setCondition(vo);;
Map<String, Object> resMap = monitorService.companyDynamicPageScheduled(pageVo);
Integer code = MapUtils.getInteger(resMap, "code", 300);
Map data = MapUtils.getMap(resMap, "data", null);
if (200 != code) {
continue;
}
Integer count = MapUtils.getInteger(data, "totalCount", 0);
if (count > 0 ) {
SendMessageUtil.sendMessage(detail.getPhones(), count.toString());
}
if (count > 0) {
PushMonitorInfo pushMonitorInfo = new PushMonitorInfo();
pushMonitorInfo.setUserId(detail.getUserId());
pushMonitorInfo.setCount(count);
monitorInfoMapper.insert(pushMonitorInfo);
}
}
}
}
public List<String> getParamList(String dimension) {
List<String> getParamList = Arrays.asList(dimension.split(","));
return getParamList;
}
}
......@@ -5,6 +5,8 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.vo.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
/**
* @ClassName MonitorService
* @Description 监控service
......@@ -52,7 +54,7 @@ public interface MonitorService {
/***
*@Description: 监控动态/监控报告 分页
*@Description: 监控动态 分页
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
......@@ -60,6 +62,15 @@ public interface MonitorService {
*/
TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception;
/***
*@Description: 监控动态分页(定时任务使用)
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
Map<String, Object> companyDynamicPageScheduled(PushMonitorDynamicPageVo pageVo) throws Exception;
/***
*@Description: 监控报告
*@Param: pageVo 信息
......@@ -125,4 +136,13 @@ public interface MonitorService {
*@date: 2023/12/9 10:03
*/
R systemDetail(PushMonitorSystemDetailVo importAddVo);
/***
*@Description: 是否工作日
*@Param: holidayVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
Map<String, Object> settingHoliday(PushSettingHolidayVo holidayVo) throws Exception;
}
......@@ -14,6 +14,7 @@ import com.dsk.monitor.mapper.PushMonitorRulesMapper;
import com.dsk.monitor.service.MonitorService;
import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
......@@ -92,7 +93,6 @@ public class MonitorServiceImpl implements MonitorService {
@Override
public TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception {
pageVo.setPageSize(3);
Long userId = LoginHelper.getUserId();
if (ObjectUtil.isNotEmpty(userId)) {
pageVo.setUserId(userId);
......@@ -103,6 +103,13 @@ public class MonitorServiceImpl implements MonitorService {
return dskOpenApiUtil.responsePageT(map);
}
@Override
public Map<String, Object> companyDynamicPageScheduled(PushMonitorDynamicPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/info/companyDynamicList", BeanUtil.beanToMap(pageVo, false, false));
log.info("companyDynamicPage=============================>"+map);
return map;
}
@Override
public TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception {
Long userId = LoginHelper.getUserId();
......@@ -195,13 +202,13 @@ public class MonitorServiceImpl implements MonitorService {
}
//进行excel格式判定
String name = sheet.getRow(0).getCell(0) + "";
String name = sheet.getRow(2).getCell(0) + "";
//只要其中一个不满足则格式有误
if (!"企业名称".equals(name)){
return R.fail("操作失败,数据异常,请使用正确的模板");
}
//行列皆从0开始
for (int i = 1; i <= lastRowNum; i++) {
for (int i = 3; i <= lastRowNum; i++) {
String companyNameStr = "";
// 统一社会信用代码
Cell companyName = sheet.getRow(i).getCell(0);
......@@ -307,4 +314,11 @@ public class MonitorServiceImpl implements MonitorService {
}
return detailVo;
}
@Override
public Map<String, Object> settingHoliday(PushSettingHolidayVo holidayVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/push/settingHoliday", BeanUtil.beanToMap(holidayVo, false, false));
log.info("companyDynamicPage=============================>"+map);
return map;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.AdvisoryBodyCustomFormMapper">
</mapper>
\ No newline at end of file
......@@ -14,7 +14,7 @@
abp.project_leader_phone,
ab.advisory_body_name,
dp.project_name,dp.project_code,dp.province_name,dp.city_name,dp.isinvestproject,dp.project_type1,
dp.project_type,dp.contract_orig_value,dp.owner_name,dp.contract_org_name,dp.load_time
dp.project_type2,dp.contract_value,dp.owner_name,dp.contract_org_name,dp.contract_sign_date
from advisory_body_project abp
left join advisory_body ab on ab.advisory_body_id = abp.advisory_body_id
left join d_project dp on dp.project_key = abp.project_key
......@@ -34,32 +34,55 @@
<if test="bo.contractOrgName != null and bo.contractOrgName != ''">
and dp.contract_org_name = #{bo.contractOrgName}
</if>
<if test="bo.province != null and bo.province.size > 0 and (bo.city == null or bo.city.size==0)">
and dp.province_name in
<foreach collection="bo.province" item="province" separator="," open="(" close=")">
#{province}
<if test="bo.area != null and bo.area.size > 0 or (bo.province != null and bo.province.size > 0) or (bo.city != null and bo.city.size > 0)">
and
<trim prefix="(" suffix=")" prefixOverrides="or">
<if test="bo.area != null and bo.area.size > 0 ">
or dp.area_name in
<foreach collection="bo.area" item="areaName" open="(" close=")" separator=",">
#{areaName}
</foreach>
</if>
<if test="(bo.province == null or bo.province.size==0) and bo.city != null and bo.city.size > 0 ">
and dp.city_name in
<foreach collection="bo.city" item="city" separator="," open="(" close=")">
#{city}
<if test="bo.province != null and bo.province.size > 0 ">
or dp.province_name in
<foreach collection="bo.province" item="provinceName" open="(" close=")" separator=",">
#{provinceName}
</foreach>
</if>
<if test="bo.province != null and bo.province.size > 0 and bo.city != null and bo.city.size > 0 ">
and (
dp.province_name in
<foreach collection="bo.province" item="province" separator="," open="(" close=")">
#{province}
</foreach>
<if test="bo.city != null and bo.city.size > 0 ">
or dp.city_name in
<foreach collection="bo.city" item="city" separator="," open="(" close=")">
#{city}
<foreach collection="bo.city" item="cityName" open="(" close=")" separator=",">
#{cityName}
</foreach>
)
</if>
</trim>
</if>
</where>
order by dp.contract_sign_date desc
</select>
<select id="countByBo" resultType="int">
select count(1)
from advisory_body_project abp
left join advisory_body ab on ab.advisory_body_id = abp.advisory_body_id
left join d_project dp on dp.project_key = abp.project_key
<where>
<if test="bo.advisoryBodyId != null and bo.advisoryBodyId != ''">
and ab.advisory_body_id = #{bo.advisoryBodyId}
</if>
<if test="bo.advisoryBodyCid != null and bo.advisoryBodyCid != ''">
and ab.advisory_body_cid = #{bo.advisoryBodyCid}
</if>
<if test="bo.advisoryBodyName != null and bo.advisoryBodyName != ''">
and ab.advisory_body_name = #{bo.advisoryBodyName}
</if>
<if test="bo.contractOrgId != null and bo.contractOrgId != ''">
and dp.contract_org_id = #{bo.contractOrgId}
</if>
<if test="bo.contractOrgName != null and bo.contractOrgName != ''">
and dp.contract_org_name = #{bo.contractOrgName}
</if>
</where>
order by dp.load_time desc
</select>
<select id="selectAdvisoryBodyCidsByName" resultType="java.lang.Long">
......
......@@ -9,7 +9,10 @@
from advisory_body_project abp
<where>
<if test="advisoryBodyCids != null">
abp.advisory_body_cid = #{advisoryBodyCids}
abp.advisory_body_cid in
<foreach collection="advisoryBodyCids" item="advisoryBodyCids" open="(" close=")" separator=",">
#{advisoryBodyCids}
</foreach>
</if>
</where>
</select>
......
......@@ -61,7 +61,7 @@
</foreach>
</if>
<if test="bo.approveDateBegion != null and bo.approveDateBegion != '' ">and approve_date2 &gt;= #{bo.approveDateBegion}</if>
<if test="bo.approveDateEnd != null and bo.approveDateEnd != '' ">and approve_date2 &lt;= #{bo.approveDateBegion} </if>
<if test="bo.approveDateEnd != null and bo.approveDateEnd != '' ">and approve_date2 &lt;= #{bo.approveDateEnd} </if>
<if test="bo.isTeam != null"> and leader_name is <if test="bo.isTeam == 1">not</if> null </if>
order by approve_date2 desc
</select>
......@@ -114,60 +114,59 @@
<if test="bo.customerName != null and bo.customerName != '' ">
and customer_name like concat('%',#{bo.customerName},'%')
</if>
<if test="bo.registerProvince != null and bo.registerCity == null">
and register_province in
<foreach collection="bo.registerProvince" item="registerProvince" separator="," open="(" close=")">
#{registerProvince}
</foreach>
</if>
<if test="bo.registerProvince == null and bo.registerCity != null ">
and register_city in
<foreach collection="bo.registerCity" item="registerCity" separator="," open="(" close=")">
#{registerCity}
<if test="bo.registerRegion != null and bo.registerRegion.size > 0 or (bo.registerProvince != null and bo.registerProvince.size > 0) or (bo.registerCity != null and bo.registerCity.size > 0)">
and
<trim prefix="(" suffix=")" prefixOverrides="or">
<if test="bo.registerRegion != null and bo.registerRegion.size > 0 ">
or register_region in
<foreach collection="bo.registerRegion" item="registerRegion" open="(" close=")" separator=",">
#{registerRegion}
</foreach>
</if>
<if test="bo.registerProvince != null and bo.registerCity != null ">
and (
register_province in
<foreach collection="bo.registerProvince" item="registerProvince" separator="," open="(" close=")">
<if test="bo.registerProvince != null and bo.registerProvince.size > 0 ">
or register_province in
<foreach collection="bo.registerProvince" item="registerProvince" open="(" close=")" separator=",">
#{registerProvince}
</foreach>
</if>
<if test="bo.registerCity != null and bo.registerCity.size > 0 ">
or register_city in
<foreach collection="bo.registerCity" item="registerCity" separator="," open="(" close=")">
<foreach collection="bo.registerCity" item="registerCity" open="(" close=")" separator=",">
#{registerCity}
</foreach>
)
</if>
<if test="bo.groupSpecialtyId != null ">
</trim>
</if>
<if test="bo.groupSpecialtyId != null and bo.groupSpecialtyId.size > 0 ">
<foreach collection="bo.groupSpecialtyId" item="groupSpecialtyId">
and find_in_set(#{groupSpecialtyId},group_specialty_id) > 0
</foreach>
</if>
<if test="bo.customerState != null ">
<if test="bo.customerState != null and bo.customerState.size > 0 ">
and customer_state in
<foreach collection="bo.customerState" item="customerState" separator="," open="(" close=")">
#{customerState}
</foreach>
</if>
<if test="bo.credential != null ">
<if test="bo.credential != null and bo.credential.size > 0 ">
and credential in
<foreach collection="bo.credential" item="credential" separator="," open="(" close=")">
#{credential}
</foreach>
</if>
<if test="bo.creditLevel != null ">
<if test="bo.creditLevel != null and bo.creditLevel.size > 0 ">
and credit_level in
<foreach collection="bo.creditLevel" item="creditLevel" separator="," open="(" close=")">
#{creditLevel}
</foreach>
</if>
<if test="bo.paytaxType != null">
<if test="bo.paytaxType != null and bo.paytaxType.size > 0 ">
and paytax_type in
<foreach collection="bo.paytaxType" item="paytaxType" separator="," open="(" close=")">
#{paytaxType}
</foreach>
</if>
<if test="bo.taxRate != null">
<if test="bo.taxRate != null and bo.taxRate.size > 0 ">
and tax_rate in
<foreach collection="bo.taxRate" item="taxRate" separator="," open="(" close=")">
#{taxRate}
......
......@@ -19,8 +19,8 @@
<select id="selectStatisticByCustomerId" resultType="com.dsk.cscec.domain.vo.DCustomerListVo">
select
count(DISTINCT org.customer_id) enterpriseCooperationCount,
count(DISTINCT project.customer_id) projectCooperationCount
count(DISTINCT org.sign_org_id) enterpriseCooperationCount,
count(DISTINCT project.project_id) projectCooperationCount
from d_customer dc
left join d_subcontract org on org.customer_id = dc.customer_id
left join d_subcontract project on project.customer_id = dc.customer_id
......@@ -45,15 +45,50 @@
<if test="bo.customerName != null and bo.customerName != ''">
and ds.customer_name =#{bo.customerName}
</if>
<if test="bo.areaName != null and bo.areaName.size > 0">
and (
ds.areaName in
<if test="bo.areaName != null and bo.areaName.size > 0 or (bo.provinceName != null and bo.provinceName.size > 0) or (bo.cityName != null and bo.cityName.size > 0)">
and
<trim prefix="(" suffix=")" prefixOverrides="or">
<if test="bo.areaName != null and bo.areaName.size > 0 ">
or dp.area_name in
<foreach collection="bo.areaName" item="areaName" open="(" close=")" separator=",">
#{areaName}
</foreach>
)
</if>
<if test="bo.provinceName != null and bo.provinceName.size > 0 ">
or dp.province_name in
<foreach collection="bo.provinceName" item="provinceName" open="(" close=")" separator=",">
#{provinceName}
</foreach>
</if>
<if test="bo.cityName != null and bo.cityName.size > 0 ">
or dp.city_name in
<foreach collection="bo.cityName" item="cityName" open="(" close=")" separator=",">
#{cityName}
</foreach>
</if>
</trim>
</if>
</where>
order by ds.sign_date desc
</select>
<select id="countByBo" resultType="int">
select count (1)
from d_subcontract ds
left join d_project dp on dp.project_id = ds.project_id
<where>
<if test="bo.signOrgId != null and bo.signOrgId != ''">
and ds.sign_org_id =#{bo.signOrgId}
</if>
<if test="bo.signOrgName != null and bo.signOrgName != ''">
and ds.sign_org_name =#{bo.signOrgName}
</if>
<if test="bo.customerId != null and bo.customerId != ''">
and ds.customer_id =#{bo.customerId}
</if>
<if test="bo.customerName != null and bo.customerName != ''">
and ds.customer_name =#{bo.customerName}
</if>
</where>
</select>
</mapper>
\ No newline at end of file
......@@ -26,6 +26,7 @@
},
"dependencies": {
"@cell-x/el-table-sticky": "^1.0.2",
"@form-create/element-ui": "^2.5.33",
"@riophae/vue-treeselect": "0.4.0",
"@vue/composition-api": "^1.7.2",
"axios": "0.24.0",
......
......@@ -41,3 +41,9 @@ export const getAreaListApi = () => request({
url: "/area/all/withoutRegion",
method: "get"
});
//获取地区树
export const getAllAreaApi = () => request({
url: '/area/all',
method: 'get',
});
......@@ -32,3 +32,14 @@ export const getConsultingOrgEenterpriseDetailWithSearchApi = (params) => reques
method: "get",
params
});
/**
* 咨询机构项目列表 项目跳转详情获取
* @param {*} params
* @returns
*/
export const getgetConsultingOrgProjectDetailApi = (params) => request({
url: "/advisory/body/getProjectDetail",
method: "get",
params
});
\ No newline at end of file
import request from '@/utils/request';
/**
* 获取(常合作业主单位、常合作施工单位、常合作集团)列表
* @param {*} data
* @returns
*/
export const getCooperativeOwnerUnitsListApi = (data) => request({
url: "/consultancy/page",
method: "post",
data
});
/**
* 获取(常合作业主单位、常合作施工单位、常合作集团)详情
* @param {*} data
* @returns
*/
export const getCooperativeOwnerUnitsDetailApi = (data) => request({
url: "/consultancy/detailPage",
method: "post",
data
});
/**
* 获取下拉列表选项
* @param {*} data
* @returns
*/
export const getCooperativeOwnerUnitsOptionsApi = (data) => request({
url: "/consultancy/pageSelect",
method: "post",
data
});
/**
* 当前页列表 amount 总数
* @param {*} data
* @returns
*/
export const getCooperativeOwnerUnitsCountAmountApi = (data) => request({
url: "/consultancy/statistics",
method: "post",
data
});
/**
* 常合作集团详情 合作成员列表
* @param {*} data
* @returns
*/
export const getCooperativeGroupMemberApi = (data) => request({
url: "/consultancy/combinePage",
method: "post",
data
});
\ No newline at end of file
import request from '@/utils/request';
/**
* 获取咨询机构合作列表
* @param {*} data
* @returns
*/
export const getConsultingAgencyCooperationListApi = (data) => request({
url: "/customerInfo/advisoryList",
method: "get",
data
});
/**
* 供应商准入情况
* @param {*} params
* @returns
*/
export const getSupplierAccessInfoApi = (params) => request({
url: "/customerInfo/approveInfo",
method: "get",
params
});
/**
* 导出咨询机构合作记录excel文件
* @param {*} params
* @returns
*/
export const exportRecordOfCooperationExcelApi = (params) => request({
url: "/customerInfo/advisoryExport",
method: "get",
params,
responseType: "blob"
});
/**
* 供应商合作记录列表
* @param {*} params
* @returns
*/
export const getSupplierCooperationRecordListApi = (params) => request({
url: "/customerInfo/cooperationList",
method: "get",
params,
});
\ No newline at end of file
import request from '@/utils/request'
export function zjyjAptitude (data) {
return request({
url: '/enterprise/zjyjAptitude',
method: 'post',
data
})
}
export function enterpriseAptitude (data) {
return request({
url: '/enterprise/zjyj/enterpriseAptitude',
method: 'post',
data
})
}
export function importTemplate (data) {
return request({
url: '/export/aptitude/importTemplate',
method: 'post',
responseType: "blob",
data
})
}
export function list (data) {
return request({
url: '/user/file/record/list',
method: 'get',
params:data
})
}
//资质标准
export function standard (data) {
return request({
url: '/enterprise/zjyj/cert/standard',
method: 'post',
data
})
}
......@@ -21,7 +21,8 @@ export function customerExport(param) {
url: '/customer/export',
method: 'post',
data:param,
responseType: 'blob'
responseType: 'blob',
timeout: 60000
});
}
//专业类别选项列表
......
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_181_024631"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_181_024631)"><g><g><g><rect x="0" y="0" width="16" height="16" rx="0" fill="#FFFFFF" fill-opacity="0.009999999776482582"/></g><g><path d="M3.9996778125,11.500654375L14.6663078125,11.500654375Q14.7156078125,11.500654375,14.7639078125,11.491044375Q14.8122078125,11.481434375,14.8577078125,11.462594375Q14.9032078125,11.443744375,14.9441078125,11.416384375Q14.9851078125,11.389024375,15.0199078125,11.354204375Q15.0547078125,11.319384375,15.0821078125,11.278434375Q15.1094078125,11.237494375,15.1283078125,11.191994375Q15.1471078125,11.146494375,15.1567078125,11.098194375Q15.1663078125,11.049894375,15.1663078125,11.000654375L15.1663078125,2.333984375Q15.1663078125,2.284738675,15.1567078125,2.236439275Q15.1471078125,2.188139375,15.1283078125,2.142642375Q15.1094078125,2.097145375,15.0821078125,2.056199375Q15.0547078125,2.015253375,15.0199078125,1.980431375Q14.9851078125,1.945609375,14.9441078125,1.918249375Q14.9032078125,1.8908903750000001,14.8577078125,1.872044375Q14.8122078125,1.853199375,14.7639078125,1.843591375Q14.7156078125,1.833984375,14.6663078125,1.833984375L1.3330078125,1.833984375Q1.2837621125,1.833984375,1.2354627125,1.843591375Q1.1871628125,1.853199375,1.1416658124999999,1.872044375Q1.0961688125,1.8908903750000001,1.0552228125,1.918249375Q1.0142768125,1.945609375,0.9794548125,1.980431375Q0.9446328125,2.015253375,0.9172728125,2.056199375Q0.8899138125,2.097145375,0.8710678125,2.142642375Q0.8522228125,2.188139375,0.8426148124999999,2.236439275Q0.8330078125,2.284738675,0.8330078125,2.333984375L0.8330078125,11.000654375Q0.8330078125,11.049894375,0.8426148124999999,11.098194375Q0.8522228125,11.146494375,0.8710678125,11.191994375Q0.8899138125,11.237484375,0.9172728125,11.278434375Q0.9446328125,11.319384375,0.9794548125,11.354204375Q1.0142768125,11.389024375,1.0552228125,11.416384375Q1.0961688125,11.443744375,1.1416658124999999,11.462584375Q1.1871628125,11.481434375,1.2354627125,11.491044375Q1.2837621125,11.500654375,1.3330078125,11.500654375L3.9996778125,11.500654375ZM14.1663078125,10.500654375L1.8330078125,10.500654375L1.8330078125,2.833984375L14.1663078125,2.833984375L14.1663078125,10.500654375Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M4.8330078125,7.333984375L4.8330078125,8.667314375Q4.8330078125,8.716564375,4.8426148125,8.764864375Q4.8522228125,8.813164375,4.8710678125,8.858664375Q4.8899138125,8.904154375000001,4.9172728125,8.945104375Q4.9446328125,8.986044375,4.9794548125,9.020874375Q5.0142768125,9.055694375,5.0552228125,9.083054375Q5.0961688125,9.110414375,5.1416658125,9.129254375Q5.1871628125,9.148104374999999,5.2354627125,9.157714375Q5.2837621125,9.167314375,5.3330078125,9.167314375Q5.3822535125,9.167314375,5.4305529125,9.157714375Q5.4788528125,9.148104374999999,5.5243498125,9.129254375Q5.5698468125,9.110414375,5.6107928125,9.083054375Q5.6517388125,9.055694375,5.6865608125,9.020874375Q5.7213828125,8.986044375,5.7487428125,8.945104375Q5.7761018125,8.904154375000001,5.7949478125,8.858664375Q5.8137928125,8.813164375,5.8234008125,8.764864375Q5.8330078125,8.716564375,5.8330078125,8.667314375L5.8330078125,7.333984375Q5.8330078125,7.284738675,5.8234008125,7.236439275Q5.8137928125,7.188139375,5.7949478125,7.142642375Q5.7761018125,7.097145375,5.7487428125,7.056199375Q5.7213828125,7.015253375,5.6865608125,6.980431375Q5.6517388125,6.945609375,5.6107928125,6.918249375Q5.5698468125,6.890890375,5.5243498125,6.872044375Q5.4788528125,6.853199375,5.4305529125,6.843591375Q5.3822535125,6.833984375,5.3330078125,6.833984375Q5.2837621125,6.833984375,5.2354627125,6.843591375Q5.1871628125,6.853199375,5.1416658125,6.872044375Q5.0961688125,6.890890375,5.0552228125,6.918249375Q5.0142768125,6.945609375,4.9794548125,6.980431375Q4.9446328125,7.015253375,4.9172728125,7.056199375Q4.8899138125,7.097145375,4.8710678125,7.142642375Q4.8522228125,7.188139375,4.8426148125,7.236439275Q4.8330078125,7.284738675,4.8330078125,7.333984375Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M7.5,11L7.5,13Q7.5,13.04925,7.509607,13.09754Q7.519215,13.14584,7.53806,13.19134Q7.556906,13.23684,7.584265,13.27778Q7.611625,13.31873,7.646447,13.35355Q7.681269,13.38838,7.722215,13.41573Q7.763161,13.44309,7.808658,13.46194Q7.854155,13.48078,7.9024549,13.49039Q7.9507543,13.5,8,13.5Q8.0492457,13.5,8.0975451,13.49039Q8.145845,13.48078,8.191342,13.46194Q8.236839,13.44309,8.277785,13.41573Q8.318731,13.38838,8.353553,13.35355Q8.388375,13.31873,8.415735,13.27779Q8.443094,13.23684,8.46194,13.19134Q8.480785000000001,13.14584,8.490393,13.09754Q8.5,13.04925,8.5,13L8.5,11Q8.5,10.9507543,8.490393,10.9024549Q8.480785000000001,10.854155,8.46194,10.808658Q8.443094,10.763161,8.415735,10.722215Q8.388375,10.681269,8.353553,10.646447Q8.318731,10.611625,8.277785,10.584265Q8.236839,10.556906,8.191342,10.53806Q8.145845,10.519214999999999,8.0975451,10.509607Q8.0492457,10.5,8,10.5Q7.9507543,10.5,7.9024549,10.509607Q7.854155,10.519214999999999,7.808658,10.53806Q7.763161,10.556906,7.722215,10.584265Q7.681269,10.611625,7.646447,10.646447Q7.611625,10.681269,7.584265,10.722215Q7.556906,10.763161,7.53806,10.808658Q7.519215,10.854155,7.509607,10.9024549Q7.5,10.9507543,7.5,11Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M7.5,6L7.5,8.66667Q7.5,8.715910000000001,7.509607,8.76421Q7.519215,8.81251,7.53806,8.85801Q7.556906,8.90351,7.584265,8.94445Q7.611625,8.9854,7.646447,9.02022Q7.681269,9.05504,7.722215,9.0824Q7.763161,9.10976,7.808658,9.12861Q7.854155,9.14745,7.9024549,9.15706Q7.9507543,9.16667,8,9.16667Q8.0492457,9.16667,8.0975451,9.15706Q8.145845,9.14745,8.191342,9.12861Q8.236839,9.10976,8.277785,9.0824Q8.318731,9.05504,8.353553,9.02022Q8.388375,8.9854,8.415735,8.94445Q8.443094,8.90351,8.46194,8.85801Q8.480785000000001,8.81251,8.490393,8.76421Q8.5,8.715910000000001,8.5,8.66667L8.5,6Q8.5,5.9507543,8.490393,5.9024549Q8.480785000000001,5.854155,8.46194,5.808658Q8.443094,5.763161,8.415735,5.722215Q8.388375,5.681269,8.353553,5.646447Q8.318731,5.611625,8.277785,5.584265Q8.236839,5.556906,8.191342,5.53806Q8.145845,5.519215,8.0975451,5.509607Q8.0492457,5.5,8,5.5Q7.9507543,5.5,7.9024549,5.509607Q7.854155,5.519215,7.808658,5.53806Q7.763161,5.556906,7.722215,5.584265Q7.681269,5.611625,7.646447,5.646447Q7.611625,5.681269,7.584265,5.722215Q7.556906,5.763161,7.53806,5.808658Q7.519215,5.854155,7.509607,5.9024549Q7.5,5.9507543,7.5,6Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M10.1669921875,4.666015625L10.1669921875,8.666015625Q10.1669921875,8.715265625,10.1765991875,8.763565625Q10.186207187499999,8.811855625,10.2050521875,8.857355625Q10.2238981875,8.902855625,10.2512571875,8.943795625Q10.2786171875,8.984745625,10.3134391875,9.019565625Q10.3482611875,9.054385625,10.3892071875,9.081745625Q10.4301531875,9.109105625,10.4756501875,9.127955625Q10.5211471875,9.146795625,10.5694470875,9.156405625Q10.6177464875,9.166015625,10.6669921875,9.166015625Q10.7162378875,9.166015625,10.7645372875,9.156405625Q10.8128371875,9.146795625,10.8583341875,9.127955625Q10.9038311875,9.109105625,10.9447771875,9.081745625Q10.9857231875,9.054385625,11.0205451875,9.019565625Q11.0553671875,8.984745625,11.0827271875,8.943795625Q11.1100861875,8.902855625,11.1289321875,8.857355625Q11.147777187500001,8.811855625,11.1573851875,8.763565625Q11.1669921875,8.715265625,11.1669921875,8.666015625L11.1669921875,4.666015625Q11.1669921875,4.616769925,11.1573851875,4.568470525Q11.147777187500001,4.520170625,11.1289321875,4.474673625Q11.1100861875,4.429176625,11.0827271875,4.388230625Q11.0553671875,4.347284625,11.0205451875,4.312462625Q10.9857231875,4.277640625,10.9447771875,4.250280625Q10.9038311875,4.222921625,10.8583341875,4.204075625Q10.8128371875,4.185230625,10.7645372875,4.175622625Q10.7162378875,4.166015625,10.6669921875,4.166015625Q10.6177464875,4.166015625,10.5694470875,4.175622625Q10.5211471875,4.185230625,10.4756501875,4.204075625Q10.4301531875,4.222921625,10.3892071875,4.250280625Q10.3482611875,4.277640625,10.3134391875,4.312462625Q10.2786171875,4.347284625,10.2512571875,4.388230625Q10.2238981875,4.429176625,10.2050521875,4.474673625Q10.186207187499999,4.520170625,10.1765991875,4.568470525Q10.1669921875,4.616769925,10.1669921875,4.666015625Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M4,14.166015625L12.00001,14.166015625Q12.04926,14.166015625,12.09756,14.156408625Q12.14586,14.146800625000001,12.19135,14.127955625Q12.23685,14.109109625,12.2778,14.081750625Q12.31874,14.054390625,12.35357,14.019568625Q12.38839,13.984746625,12.41575,13.943800625Q12.44311,13.902854625,12.46195,13.857357625Q12.4808,13.811860625,12.49041,13.763560725Q12.50001,13.715261325,12.50001,13.666015625Q12.50001,13.616769925,12.49041,13.568470525Q12.4808,13.520170625,12.46195,13.474673625Q12.44311,13.429176625,12.41575,13.388230625Q12.38839,13.347284625,12.35357,13.312462625Q12.31874,13.277640625,12.2778,13.250280625Q12.23685,13.222921625,12.19135,13.204075625Q12.14586,13.185230624999999,12.09756,13.175622625Q12.04926,13.166015625,12.00001,13.166015625L4,13.166015625Q3.9507543,13.166015625,3.9024549,13.175622625Q3.854155,13.185230624999999,3.808658,13.204075625Q3.763161,13.222921625,3.722215,13.250280625Q3.681269,13.277640625,3.646447,13.312462625Q3.611625,13.347284625,3.584265,13.388230625Q3.556906,13.429176625,3.5380599999999998,13.474673625Q3.519215,13.520170625,3.509607,13.568470525Q3.5,13.616769925,3.5,13.666015625Q3.5,13.715261325,3.509607,13.763560725Q3.519215,13.811860625,3.5380599999999998,13.857357625Q3.556906,13.902854625,3.584265,13.943800625Q3.611625,13.984746625,3.646447,14.019568625Q3.681269,14.054390625,3.722215,14.081750625Q3.763161,14.109109625,3.808658,14.127955625Q3.854155,14.146800625000001,3.9024549,14.156408625Q3.9507543,14.166015625,4,14.166015625Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g></g></g></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_181_024594"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_181_024594)"><g><path d="M6.8151546875,5.021609375000001L5.7810546875,5.241409375Q5.7393446875,5.250279375,5.6997346875,5.266079375Q5.6601246875,5.281879375,5.6237646875,5.304169375Q5.5874046875,5.326449375,5.5553346875,5.3545693750000005Q5.5232746875,5.382679375,5.4964346875,5.4158293749999995Q5.4696046875,5.448969375,5.448764687500001,5.486179375Q5.4279246875,5.523379375,5.4136946875,5.563579375Q5.3994546875000005,5.603779375,5.3922346875,5.645809375Q5.3850146875,5.687839374999999,5.3850146875,5.730489374999999L5.3850146875,5.7318693750000005Q5.3851546875,5.783719375,5.3959346875000005,5.8344393750000005Q5.4048046875,5.876149375,5.4206046875,5.915759375Q5.4364046875,5.955369375,5.4586946874999995,5.991729375Q5.4809746875,6.028099375,5.5090946875,6.060159375Q5.5372046875,6.092219375,5.5703546875,6.119059375Q5.6034946875,6.145899375,5.6407046875,6.166729375Q5.6779046875,6.187569375,5.7181046875,6.201809375Q5.7583046875,6.216039374999999,5.8003346875,6.223259375Q5.8423646875,6.230489374999999,5.8850146875,6.230489374999999L5.8863946875,6.230489374999999Q5.9382446875,6.230339375,5.9889646875,6.219559374999999L7.0230646875,5.999759375Q7.0905646875,5.985409375,7.1485046875,6.023029375L9.8481246875,7.776189375Q10.2535446875,8.039359375,10.7261246875,7.938889375L13.0644046875,7.441899375Q13.5371046875,7.341399375,13.8003046875,6.936109375Q14.0635046875,6.530819375,13.9630046875,6.058119375L13.7551046875,5.079999375Q13.6546046875,4.607329375,13.2493046875,4.344119375Q12.8440046875,4.080929375,12.3714046875,4.181379375L11.0112246875,4.470479375Q10.9436646875,4.484839375,10.8858246875,4.447269375L8.1861646875,2.694081375Q7.7808446875,2.4308843749999998,7.3081846875,2.531356375L1.3833496875,3.790712375Q1.3416356875,3.799578375,1.3020266875,3.815381375Q1.2624166875,3.831183375,1.2260556875,3.853465375Q1.1896946875,3.875748375,1.1576316875,3.9038663749999998Q1.1255696875,3.931984375,1.0987316875,3.965125375Q1.0718946875,3.998267375,1.0510566875,4.0354793749999995Q1.0302196875,4.072679375,1.0159836875,4.112879375Q1.0017486875000001,4.153079375,0.9945266875000001,4.1951093749999995Q0.9873046875,4.237139375,0.9873046875,4.279789375L0.9873066875000001,4.281169375Q0.9874496875000001,4.333019375,0.9982306875,4.383739375Q1.0189086875,4.481019375,1.0752416875,4.562989375Q1.1315736875,4.6449493749999995,1.2149846874999999,4.699119375Q1.3391976875,4.779789375,1.4873046875,4.779789375L1.4948042575,4.7797293750000005Q1.5435621875,4.778999375,1.5912596875,4.768859375L7.5161046875,3.509502375Q7.5836246875,3.495150375,7.6415246875,3.532750375L10.3411246875,5.285899375Q10.7463846875,5.549119375,11.2191346875,5.448629374999999L12.5792046875,5.159529375Q12.7423046875,5.124879375,12.7769046875,5.287899375L12.9848046875,6.266059375Q13.0195046875,6.429089375,12.8565046875,6.463749375L10.5181646875,6.960749375Q10.4506646875,6.975099375,10.3927646875,6.937519375L7.6931146875,5.184339375Q7.2877746875,4.921129375,6.8151546875,5.021609375000001Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M10.21899875,10.092180625000001L10.21929875,10.092120625Q10.316588750000001,10.071440625000001,10.39854875,10.015110625Q10.48050875,9.958780625,10.53467875,9.875370625Q10.61534875,9.751150625,10.61534875,9.603040625L10.61528875,9.595550625Q10.61455875,9.546790625,10.60441875,9.499090625000001Q10.58374875,9.401810625,10.52740875,9.319840625Q10.47107875,9.237880625,10.38766875,9.183710625Q10.26345875,9.103050625,10.115348749999999,9.103040625L10.107848749999999,9.103100625Q10.05908875,9.103830625,10.01139875,9.113970625L8.97728875,9.333770625Q8.909738749999999,9.348130625,8.85189875,9.310560625L6.15223875,7.557376625Q5.7468787500000005,7.294155625,5.27423875,7.394642625L2.93595875,7.891671725Q2.46328005,7.992118625,2.20007175,8.397427625Q1.93687575,8.802718625,2.03734975,9.275400625L2.24526375,10.253540625Q2.34573175,10.726240624999999,2.75102175,10.989440625Q3.1563197499999998,11.252640625,3.62901875,11.152150625L4.98913875,10.863050625Q5.05667875,10.848690625,5.11457875,10.886290625L7.81418875,12.639450625Q8.219548750000001,12.902670624999999,8.69219875,12.802180625L14.61701875,11.542820625000001Q14.65871875,11.533950625,14.69831875,11.518150625Q14.73791875,11.502350625,14.77431875,11.480060625Q14.81061875,11.457780625,14.84271875,11.429660625Q14.87481875,11.401550625,14.90161875,11.368400625Q14.92841875,11.335260625,14.94931875,11.298060625Q14.97011875,11.260850625,14.98431875,11.220650625000001Q14.99861875,11.180450625,15.00581875,11.138420625Q15.01301875,11.096390625,15.01301875,11.053750625L15.01301875,11.052360625Q15.01291875,11.000510625,15.00211875,10.949790625Q14.99321875,10.908070625,14.97741875,10.868470625Q14.96161875,10.828860625,14.93931875,10.792490625Q14.91711875,10.756130625,14.88891875,10.724070625Q14.86081875,10.692010625,14.82771875,10.665170625Q14.79451875,10.638330625,14.75731875,10.617500625Q14.72011875,10.596660625,14.67991875,10.582420625000001Q14.63971875,10.568190625,14.59771875,10.560970625Q14.55571875,10.553740625,14.51301875,10.553740625L14.51161875,10.553750625Q14.45981875,10.553890625000001,14.40911875,10.564670625L8.48423875,11.824040625Q8.41675875,11.838390625,8.35882875,11.800780625L5.65918875,10.047600625Q5.25388875,9.784410625,4.78122875,9.884900625L3.42107175,10.174010625000001Q3.35355375,10.188360625,3.2956647500000003,10.150770625Q3.23776675,10.113170625,3.22340975,10.045620625L3.01549675,9.067490625Q3.0011437499999998,8.999960625,3.03874575,8.942060625Q3.07634075,8.884170625,3.14387575,8.869820625L5.482188750000001,8.372780625Q5.54966875,8.358433625,5.60759875,8.396046625L8.307198750000001,10.149190625Q8.71244875,10.412410625,9.18519875,10.311920624999999L10.21899875,10.092180625000001Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
This diff is collapsed.
......@@ -97,29 +97,29 @@ div:focus {
}
}
aside {
background: #eef1f6;
padding: 8px 24px;
margin-bottom: 20px;
border-radius: 2px;
display: block;
line-height: 32px;
font-size: 16px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
color: #2c3e50;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
a {
color: #337ab7;
cursor: pointer;
&:hover {
color: rgb(32, 160, 255);
}
}
}
// aside {
// background: #eef1f6;
// padding: 8px 24px;
// margin-bottom: 20px;
// border-radius: 2px;
// display: block;
// line-height: 32px;
// font-size: 16px;
// font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
// Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
// color: #2c3e50;
// -webkit-font-smoothing: antialiased;
// -moz-osx-font-smoothing: grayscale;
// a {
// color: #337ab7;
// cursor: pointer;
// &:hover {
// color: rgb(32, 160, 255);
// }
// }
// }
.components-container {
margin: 30px 50px;
......@@ -453,14 +453,9 @@ li {
// 封装组件样式
.table-list-com-ins {
.table-item {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.el-table {
width: 100%;
height: 100%;
height: auto;
font-size: 14px;
color: #232323;
......@@ -976,3 +971,9 @@ li {
.min1370 {
min-width: 1370px;
}
// 重置全局 溢出弹出提示宽度
.el-tooltip__popper {
max-width: 70%;
}
.el-icon-arrow-down{
color: #C0C4CC;
}
.title_wrap,.el-divider{
border-color: #eee;
}
......@@ -203,3 +206,6 @@
}
}
.table-supplier .fixed-table .el-table__fixed-header-wrapper{
top: -16px !important;
}
......@@ -64,6 +64,7 @@ export default {
}
},
tabChoose(item) {
if (item.value == this.currentValue) return;
this.$emit("currentTabChange", item.value);
this.$emit("tabToggle", item.value);
this.initSlidingBar();
......
<template>
<div class="table-list-com-ins">
<div class="table-list-com-ins" :class="{'is-empty-table' : !tableDataTotal}">
<div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData"
element-loading-text="Loading" ref="tableRef" border fit highlight-current-row :default-sort="defaultSort?defaultSort:{}"
@sort-change="sortChange" @selection-change="selectionChange" :cell-class-name="cellClassName" :cell-style="cellStyle"
:row-class-name="rowClassName" :row-style="rowStyle" :height="height" :maxHeight="maxHeight" v-sticky-header="stickyHeader">
:row-class-name="rowClassName" :row-style="rowStyle" :height="height" :maxHeight="comMaxHeight" v-sticky-header="stickyHeader">
<el-table-column type="selection" :width="needSelection.width ? needSelection.width : '38px'" v-if="needSelection.flag"
:fixed="needSelection.fixed" :align="needSelection.align" :show-overflow-tooltip="needSelection.showOverflowTooltip">
</el-table-column>
......@@ -58,7 +58,7 @@
</template>
</el-table>
<div style="padding: 30px 0;box-sizing:border-box;" v-else>
<div class="table-empty-container" v-else>
<no-data />
</div>
</div>
......@@ -80,7 +80,7 @@ export default {
type: [String, Number]
},
maxHeight: {
type: [String, Number]
type: Boolean
},
isIndex: {
type: Boolean,
......@@ -168,7 +168,8 @@ export default {
data() {
return {
current_page: this.queryParams.pageNum,
show_page: this.paging
show_page: this.paging,
comMaxHeight: null
};
},
watch: {
......@@ -177,9 +178,24 @@ export default {
}
},
created() {
this.maxHeight ? this.maxHeightInit() : null;
},
methods: {
// 自适应当前容器
async maxHeightInit() {
try {
await this.$nextTick();
/**
* @type {HTMLDivElement}
*/
const container = this.$el.querySelector(".table-item");
if (container) {
this.comMaxHeight = `${container.offsetHeight}px`;
}
} catch (error) {
}
},
handleCurrentChange(e) {
if (this.MaxPage < e) {
this.show_page = false;
......@@ -214,7 +230,15 @@ export default {
<style lang="scss" scoped>
.table-list-com-ins {
&.is-empty-table {
.table-item {
max-height: unset;
height: 100%;
}
}
::v-deep .table-item {
width: 100%;
max-height: calc(100% - 40px);
.no-line-feed {
display: block;
color: #0081ff;
......@@ -250,11 +274,25 @@ export default {
height: 16px;
}
.el-table {
/* .cell {
// 空状态容器
.table-empty-container {
width: 100%;
height: 100%;
min-height: 360px;
box-sizing: border-box;
display: flex;
align-items: center;
} */
justify-content: center;
.no-data {
min-height: unset;
}
}
.el-table {
.el-table__header-wrapper {
min-height: 40px;
}
}
}
......
import Vue from 'vue';
import VCA from '@vue/composition-api' //composition APi
import VCA from '@vue/composition-api'; //composition APi
import Cookies from 'js-cookie';
import Element from 'element-ui';
import formCreate from '@form-create/element-ui';
import './assets/styles/element-variables.scss';
import "@/assets/styles/common.css";
......@@ -25,6 +26,11 @@ import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
// 分栏组件
import SubfieldModule from "@/views/consultingOrgManagement/components/CustomForm/components/SubfieldModule";
// 分栏子组件
import SubfieldItem from "@/views/consultingOrgManagement/components/CustomForm/components/SubfieldItem";
// 分页组件
import Pagination from "@/components/Pagination";
// 自定义表格工具组件
......@@ -63,6 +69,8 @@ Vue.component('Editor', Editor);
Vue.component('FileUpload', FileUpload);
Vue.component('ImageUpload', ImageUpload);
Vue.component('ImagePreview', ImagePreview);
Vue.component("subfield-module", SubfieldModule);
Vue.component("subfield-item", SubfieldItem);
Vue.use(VCA);
Vue.use(horizontalScroll);
......@@ -84,6 +92,7 @@ DictData.install();
Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size
});
Vue.use(formCreate);
Vue.config.productionTip = false;
......
// 默认自定义表单组件
/**
* 模块模板
*/
export const subfieldModuleTemplate = {
defaultSubfieldModuleName: "分栏名称",
subfieldModuleName: "",
subfieldModuleNameRules: {
message: "请输入分栏名称",
trigger: ["blur", "change"]
},
subfieldModulePlaceholder: "请输入分栏标题",
edit: false,
children: []
};
export const defaultComOptions = [
{
comLabel: "单行文本",
// 组件类型
comType: "el-input",
// 组件展示图标
comShowIcon: require("@/assets/images/consultingAgencyManagement/customForm/icon_single_line_text@2x.png"),
}
];
\ No newline at end of file
......@@ -634,14 +634,19 @@ export function getTreeSelectAreaList(nodeList = [], tree, idkey = "id") {
try {
if (Object.prototype.toString.call(nodeList) != "[object Array]") throw new Error("传入参数不是一个节点数组");
const _result = [];
// 克隆源数据
const _tempTree = JSON.parse(JSON.stringify(tree));
let _tempTree = JSON.parse(JSON.stringify(tree));
if (_tempTree instanceof Array) {
_tempTree = { childrenLength: _tempTree.length, children: _tempTree, level: 0 };
}
// 根据所选节点生成tree
const newTree = generateDirectSubtreeAndRemove(nodeList, _tempTree, idkey);
if (newTree) {
// 循环找到每个节点的父节点 的选中状态
return findParentStatus(nodeList, newTree, idkey);
const result = nodeList.map(item => {
return createAreaSelect(item, newTree, idkey);
});
}
} catch (error) {
......@@ -653,46 +658,67 @@ export function getTreeSelectAreaList(nodeList = [], tree, idkey = "id") {
/**
*
*/
export function findParentStatus(nodeList, tree, idkey) {
const _temp = nodeList.map(item => {
// 找节点parent
const parent = findParentNode(tree, item, idkey);
// 有parent
if (parent) {
const count = parent.childrenLength;
const len = parent.children?.length;
// 比较 count 跟 length 看子节点是否全选中
const flag = count == len && parent.children?.every(childItem => nodeList.includes(childItem[idkey])) ? true : false;
// flag为true 当前节点下的子节点全选中返回父节点id 没有则是根节点 根节点返回所有child id
if (flag) {
return parent[idkey] ? parent[idkey] : parent.children?.map(childItem => childItem[idkey]);
} else {
console.log("没有全选中");
// 没有全选中 看当前子节点是否有选中状态
const itemNode = findNodeFromTree(tree, item, [], idkey);
console.log(itemNode);
// 当前节点有子节点
if (itemNode?.children?.length) {
// 当前节点的子节点选中结果 子节点是全选状态 传递自身 否则传递子节点
const childResult = itemNode?.children?.every(childItem => nodeList.includes(childItem[idkey])) && itemNode?.children?.length == itemNode?.childrenLength;
if (childResult) {
return item;
}
const childNodes = itemNode?.children?.filter(childItem => nodeList.includes(childItem[idkey]));
return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
}
// 当前节点没有子节点 看父节点是否全选 父节点全选 返回父节点
const childResult = parent.children?.every(childItem => nodeList.includes(childItem[idkey])) && parent.children?.length == parent?.childrenLength;
if (childResult) {
return item;
}
const childNodes = parent.children?.filter(childItem => nodeList.includes(childItem[idkey]));
return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
}
}
});
return Array.from(new Set(_temp.flat()));
export function createAreaSelect(node, tree, idkey) {
// console.log(node, tree, idkey);
const selfNode = findNodeFromTree(tree, node, [], idkey);
console.log(selfNode);
// 查找chidren
if (selfNode?.children?.length) {
const childTempArray = [];
for (const child of selfNode?.children) {
const _temp = createAreaSelect(child[idkey], tree, idkey);
if (_temp) childTempArray.push(childTempArray);
}
return childTempArray;
}
// 没有children 已经是最底层 看parent
const parentNode = findParentNode(tree, node, idkey);
console.log(parentNode,"没有children");
// const _temp = nodeList.map(item => {
// // 找节点parent
// const parent = findParentNode(tree, item, idkey);
// console.log("父节点", parent);
// // 有parent
// if (parent) {
// const count = parent.childrenLength;
// const len = parent.children?.length;
// // 比较 count 跟 length 看子节点是否全选中
// const flag = count == len && parent.children?.every(childItem => nodeList.includes(childItem[idkey])) ? true : false;
// // flag为true 当前节点下的子节点全选中返回父节点id 没有则是根节点 根节点返回所有child id
// if (flag) {
// return parent[idkey] ? parent[idkey] : parent.children?.map(childItem => childItem[idkey]);
// } else {
// console.log("没有全选中");
// // 没有全选中 看当前子节点是否有选中状态
// const itemNode = findNodeFromTree(tree, item, [], idkey);
// console.log(itemNode);
// // 当前节点有子节点
// if (itemNode?.children?.length) {
// // 当前节点的子节点选中结果 子节点是全选状态 传递自身 否则传递子节点
// const childResult = itemNode?.children?.every(childItem => nodeList.includes(childItem[idkey])) && itemNode?.children?.length == itemNode?.childrenLength;
// if (childResult) {
// return item;
// }
// const childNodes = itemNode?.children?.filter(childItem => nodeList.includes(childItem[idkey]));
// return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
// }
// // 当前节点没有子节点 看父节点是否全选 父节点全选 返回父节点
// const childResult = parent.children?.every(childItem => nodeList.includes(childItem[idkey])) && parent.children?.length == parent?.childrenLength;
// if (childResult) {
// return item;
// }
// const childNodes = parent.children?.filter(childItem => nodeList.includes(childItem[idkey]));
// return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
// }
// }
// });
// return Array.from(new Set(_temp.flat()));
}
......
<template>
<div v-loading="loading" class="market-container">
<iframe id="companyIframe" class="market-iframe" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" width="100%" :src="src" />
<div v-loading="loading" class="advisoryOrgan-container">
<iframe id="companyIframe" class="advisoryOrgan-iframe" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" width="100%" :src="src" />
</div>
</template>
......@@ -81,7 +81,7 @@ export default {
async iframeObserver() {
try {
await this.$nextTick();
this.iframeIns = document.querySelector(".market-iframe");
this.iframeIns = document.querySelector(".advisoryOrgan-iframe");
} catch (error) {
console.log(error);
}
......@@ -101,7 +101,7 @@ export default {
if (res.code == 200) {
this.timelongs = res.data.expire;
this.ak = res.data.accessToken;
this.src = `${this.domain}/search/market?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`;
this.src = `${this.domain}/search/advisoryOrgan?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`;
this.refreshtoken();
} else {
clearTimeout(this.tokentimer);
......@@ -140,7 +140,7 @@ export default {
</script>
<style lang="scss" scoped>
.market-container {
.advisoryOrgan-container {
width: 100%;
height: 100%;
padding: 16px 24px;
......@@ -150,7 +150,7 @@ export default {
left: 0;
top: 0;
.market-iframe {
.advisoryOrgan-iframe {
width: 100%;
height: 100%;
}
......
<template>
<div class="subfield-item-container">
</div>
</template>
<script>
export default {
name: "subfieldItem",
data() {
return {
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
},
}
</script>
<style lang="scss" scoped>
.subfield-item-container {
}
</style>
<template>
<div class="consulting-agency-container">
</div>
</template>
<script>
export default {
name: "consultingAgency",
data() {
return {
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
},
}
</script>
<style lang="scss" scoped>
.consulting-agency-container {
width: 100%;
height: 100%;
background: #fff;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
padding: 16px;
box-sizing: border-box;
overflow: auto;
}
</style>
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment