Commit f21f98dd authored by tianhongyang's avatar tianhongyang

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

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 495bda5f 8ae08519
......@@ -178,4 +178,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
int year = localDate.getYear();
return year;
}
/***
*@Description: 获取当前 小时
*@Param:
*@return: int
*@Author: Dgm
*@date: 2023/11/29 16:05
*/
public static int getHour() {
LocalTime localDate = LocalTime.now();
int year = localDate.getHour();
return year;
}
}
......@@ -6,10 +6,7 @@ import lombok.NoArgsConstructor;
import org.redisson.api.*;
import java.time.Duration;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -486,4 +483,17 @@ public class RedisUtils {
RKeys rKeys = CLIENT.getKeys();
return rKeys.countExists(key) > 0;
}
/***
*@Description: 锁-释放
*@Param:
*@return: boolean
*@Author: Dgm
*@date: 2022/6/15 9:41
*/
public static void hasValueDelete (String lockKey, String value) {
if (value.contentEquals(Objects.requireNonNull(CLIENT.getBucket(lockKey).get()+""))) {
CLIENT.getBucket(lockKey).delete();
}
}
}
package com.dsk.cscec.constant;
/**
* 搜索常量信息
*
* @author sxk
* @date 2023.12.11
* @time 14:22
*/
public interface QueryConstants {
/**
* 筛选数据一级公司名称
*/
String LEVEL1_COMPANY_NAME = "中建一局集团第二建筑有限公司";
/**
* 筛选数据一级公司ID
*/
String LEVEL1_COMPANY_ID = "F17305B4EA4444CBAB12892C7B99E475";
/**
* 筛选数据二级公司名称
* 备用,需要时请填入内容
*/
String LEVEL2_COMPANY_NAME = "";
/**
* 筛选数据二级公司ID
* 备用,需要时请填入内容
*/
String LEVEL2_COMPANY_ID = "";
}
package com.dsk.cscec.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
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.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.service.IDCustomerService;
import com.dsk.system.domain.SysDept;
import com.dsk.system.domain.vo.SysDeptVo;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* 组织维表(DCustomer)表控制层
......@@ -14,14 +27,30 @@ import javax.annotation.Resource;
* @author lcl
* @since 2023-12-08 14:57:22
*/
@RequiredArgsConstructor
@RestController
@RequestMapping("/customer")
public class DCustomerController extends BaseController {
/**
* 服务对象
*/
@Resource
private IDCustomerService baseService;
private final IDCustomerService baseService;
/**
* 供应商总台账筛选
*/
@GetMapping("/all/searchList")
public TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query) {
return baseService.allSearchList(bo,query);
}
/**
* 供应商信息
*/
@GetMapping("/info/{customerKey}")
public R<DCustomer> info(@PathVariable String customerKey) {
return R.ok(baseService.getById(customerKey));
}
}
......
package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 项目维表(DProject)表控制层
*
* @author makejava
* @since 2023-12-10 15:34:46
*/
@RestController
@RequestMapping("dProject")
public class DProjectController extends BaseController {
/**
* 服务对象
*/
@Resource
private IDProjectService IDProjectService;
///**
// * 分页查询所有数据
// *
// * @param page 分页对象
// * @param dProject 查询实体
// * @return 所有数据
// */
//@GetMapping
//public R selectAll(Page<DProject> page, DProject dProject) {
// return success(this.dProjectService.page(page, new QueryWrapper<>(dProject)));
//}
//
///**
// * 通过主键查询单条数据
// *
// * @param id 主键
// * @return 单条数据
// */
//@GetMapping("{id}")
//public R selectOne(@PathVariable Serializable id) {
// return success(this.dProjectService.getById(id));
//}
//
///**
// * 新增数据
// *
// * @param dProject 实体对象
// * @return 新增结果
// */
//@PostMapping
//public R insert(@RequestBody DProject dProject) {
// return success(this.dProjectService.save(dProject));
//}
//
///**
// * 修改数据
// *
// * @param dProject 实体对象
// * @return 修改结果
// */
//@PutMapping
//public R update(@RequestBody DProject dProject) {
// return success(this.dProjectService.updateById(dProject));
//}
//
///**
// * 删除数据
// *
// * @param idList 主键结合
// * @return 删除结果
// */
//@DeleteMapping
//public R delete(@RequestParam("idList") List<Long> idList) {
// return success(this.dProjectService.removeByIds(idList));
//}
}
package com.dsk.cscec.domain;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* 分包分供合同(DSubcontract)表实体类
*
* @author lcl
* @since 2023-12-11 15:31:44
*/
@Data
public class DSubcontract implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 分包合同主键
*/
private Long subcontractKey;
/**
* 分包合同ID
*/
private String subcontractId;
/**
* 分包合同编码
*/
private String subcontractCode;
/**
* 分包合同名称
*/
private String subcontractName;
/**
* 财务一体化分包合同编码
*/
private String fipSubcontractCode;
/**
* 财务一体化分包合同名称
*/
private String fipSubcontractName;
/**
* 业务类型
*/
private String contractScope;
/**
* 合同类型
*/
private String contractType;
/**
* 项目ID
*/
private String projectId;
/**
* 项目编码
*/
private String projectCode;
/**
* 项目名称
*/
private String projectName;
/**
* 分包合同金额
*/
private Double subcontractValue;
/**
* 分包合同不含税金额
*/
private Double subcontractValueExcl;
/**
* 分包合同税额
*/
private Double subcontractTaxValue;
/**
* 签订单位ID
*/
private String signOrgId;
/**
* 签订单位名称
*/
private String signOrgName;
/**
* 合同签订日期
*/
private String signDate;
/**
* 合同盖章日期
*/
private String stampDate;
/**
* 合同返回日期
*/
private String returnDate;
/**
* 交底日期
*/
private String noticeDate;
/**
* 实际完成时间
*/
private String completeDate;
/**
* 合同开始日期
*/
private String subcontractStartDate;
/**
* 合同结束日期
*/
private String subcontractEndDate;
/**
* 是否甲指
*/
private String isownerappoint;
/**
* 施工专业ID
*/
private String specialtyId;
/**
* 施工专业
*/
private String specialtyType;
/**
* 履约状态
*/
private String contractState;
/**
* 供应商ID
*/
private String customerId;
/**
* 供应商名称
*/
private String customerName;
/**
* 客商类型
*/
private String customerType;
/**
* 分包范围
*/
private String jobScope;
/**
* 付款方式
*/
private String payType;
/**
* 付款比例是否固定
*/
private Double isfixedpayratio;
/**
* 过程中付款比例
*/
private Double processPayRatio;
/**
* 完工后付款比例
*/
private Double completePayRatio;
/**
* 结算后付款比例
*/
private Double settlePayRatio;
/**
* 保修金比例
*/
private Double warrantyGoldRatio;
/**
* 分包合同应付金额
*/
private Double subcontractPayableValue;
/**
* 分包合同已付金额
*/
private Double subcontractPaidValue;
/**
* 预付款
*/
private Double prepayValue;
/**
* 已付款
*/
private Double paidValue;
/**
* 垫付款
*/
private Double advanceValue;
/**
* 结算方式
*/
private String settleType;
/**
* 结算价
*/
private Double settleValue;
/**
* 人工费
*/
private Double laborFee;
/**
* 备注
*/
private String remark;
/**
* 合同分类
*/
private String contractClass;
/**
* 成本科目ID
*/
private String costSubjectId;
/**
* 成本科目名称
*/
private String costSubjectName;
/**
* 成本科目全路径名称
*/
private String costSubjectFullname;
/**
* 执行备案
*/
private String contractTextType;
/**
* 税率
*/
private Double taxRate;
/**
* 盖章份数
*/
private Double noOfStamp;
/**
* 盖章明晰
*/
private String signRemark;
/**
* 返回明晰
*/
private String issign;
/**
* 承包类型
*/
private String contractForm;
/**
* 是否为一局内部公司
*/
private String iscscec1bcompany;
/**
* 是否主体结构分包合同
*/
private String isfirststruct;
/**
* 建筑面积
*/
private Double areaSum;
/**
* 锁定金额
*/
private Double lockValue;
/**
* 战采资源级别
*/
private String gpResLevel;
/**
* 战采资源类别
*/
private String gpResScope;
/**
* 战采资源品类
*/
private String gpResCategory;
/**
* 战略采购供应商年度
*/
private Double gpSupplierYear;
/**
* 是否集中采购(是/否)
*/
private String isGp;
/**
* 战采管理要求
*/
private String gpApplication;
/**
* 合同是否执行战采价格
*/
private String isUseGpprice;
/**
* 战采供应商ID
*/
private String fgpcustomerid;
/**
* 分包合同版本
*/
private Double subcontractVersion;
/**
* 流程状态
*/
private String fbizstatename;
/**
* 流程状态
*/
private String fbizstate;
/**
* 材料类型
*/
private String materialType;
/**
* 数据加载时间
*/
private String loadTime;
}
package com.dsk.cscec.domain.bo;
import lombok.Data;
import java.util.List;
/**
* @Author lcl
* @Data 2023/12/8 16:07
*/
@Data
public class DCustomerSearchBo {
/**
* 供应商名称
*/
private String customerName;
/**
* 区域
*/
private List<String> region;
/**
* 省
*/
private List<String> province;
/**
* 市
*/
private List<String> city;
/**
* 供应商类别
*/
private List<String> customerClass;
/**
* 供应商状态
*/
private List<String> customerState;
/**
* 评价等级
*/
private List<String> creditLevel;
/**
* 资质等级
*/
private List<String> credential;
/**
* 准入时间(开始)
*/
private String approveDateBegion;
/**
* 准入时间(结束)
*/
private String approveDateEnd;
/**
* 是否队伍 0:否 1:是
*/
private Integer isTeam;
}
......@@ -2,7 +2,13 @@ package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 组织维表(DCustomer)表数据库访问层
......@@ -12,5 +18,7 @@ import com.dsk.cscec.domain.DCustomer;
*/
public interface DCustomerMapper extends BaseMapper<DCustomer> {
Page<DCustomer> allSearchList(IPage<DCustomerSearchBo> build, @Param("bo") DCustomerSearchBo bo);
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.DProject;
/**
* 项目维表(DProject)表数据库访问层
*
* @author makejava
* @since 2023-12-10 15:34:46
*/
public interface DProjectMapper extends BaseMapper<DProject> {
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.DSubcontract;
/**
* 分包分供合同(DSubcontract)表数据库访问层
*
* @author lcl
* @since 2023-12-11 15:31:44
*/
public interface DSubcontractMapper extends BaseMapper<DSubcontract> {
Integer selectEnterpriseCountByCustomerId(String customerId);
Integer selectProjectCountByCustomerId(String customerId);
}
package com.dsk.cscec.service;
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.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
/**
* 组织维表(DCustomer)表服务接口
......@@ -11,5 +14,7 @@ import com.dsk.cscec.domain.DCustomer;
*/
public interface IDCustomerService extends IService<DCustomer> {
TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query);
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.DProject;
/**
* 项目维表(DProject)表服务接口
*
* @author makejava
* @since 2023-12-10 15:34:51
*/
public interface IDProjectService extends IService<DProject> {
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
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.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.mapper.DSubcontractMapper;
import com.dsk.cscec.service.IDCustomerService;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 组织维表(DCustomer)表服务实现类
......@@ -15,5 +26,62 @@ import org.springframework.stereotype.Service;
@Service
public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer> implements IDCustomerService {
@Resource
private DSubcontractMapper subcontractMapper;
@Override
public TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query) {
dealWithCustomerClass(bo);
Page<DCustomer> page = baseMapper.allSearchList(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) {
for (DCustomer customer : page.getRecords()) {
//企业合作数量
customer.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(customer.getCustomerId()));
//项目合作数量
customer.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(customer.getCustomerId()));
}
}
return TableDataInfo.build(page);
}
private void dealWithCustomerClass(DCustomerSearchBo bo) {
if (!ObjectUtils.isEmpty(bo.getCustomerClass())) {
List<String> list = new ArrayList<>();
Integer isTeam = null;
for (String customerClass : bo.getCustomerClass()) {
switch (customerClass){
case "专业分包":
list.add("专业分包");
break;
case "物资设备":
list.add("分供");
break;
case "施工机械":
list.add("租赁");
break;
case "劳务分包":
if(isTeam == null){
isTeam = 0;
}else if(isTeam == 1) {
isTeam = null;
}
list.add("劳务分包");
break;
case "劳务队伍":
if(isTeam == null) {
isTeam = 1;
}else if(isTeam == 0) {
isTeam = null;
}
list.add("劳务分包");
break;
default:
break;
}
}
bo.setCustomerClass(list);
bo.setIsTeam(isTeam);
}
}
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.mapper.DProjectMapper;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.stereotype.Service;
/**
* 项目维表(DProject)表服务实现类
*
* @author makejava
* @since 2023-12-10 15:34:51
*/
@Service("dProjectService")
public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject> implements IDProjectService {
}
package com.dsk.monitor.controlelr;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.vo.*;
import com.dsk.monitor.service.MonitorService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
/**
* @ClassName MonitorController
* @Description 监控企业相关
* @Author Dgm
* @Date 2023/12/8 10:19
* @Version 1.0.0
*/
@RestController
@RequestMapping("/monitor")
public class MonitorController {
@Resource
private MonitorService monitorService;
/***
*@Description: 同步推送数据入库
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "push/insert")
public R insert(@RequestBody PushMonitorInfoVo pushMonitorInfoVo) {
return monitorService.insert(pushMonitorInfoVo);
}
/***
*@Description: 监控维度下拉选择
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "push/rulesSelect")
public R rulesSelect() {
return monitorService.rulesSelect();
}
/***
*@Description: 新增修改我的规则
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "push/rules/insertOrUpdate")
public R insertRules(@RequestBody PushMonitorRulesVo rulesVo) {
return monitorService.insertRules(rulesVo);
}
/***
*@Description: 我的推送规则
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "push/rulesDetail")
public R rulesDetail(@RequestBody PushMonitorRulesDetailVo detailVo) {
return monitorService.rulesDetail(detailVo);
}
/***
*@Description: 监控动态/监控报告详情 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "company/dynamicPage")
public TableDataInfo companyDynamicPage(@RequestBody PushMonitorDynamicPageVo pageVo) throws Exception{
return monitorService.companyDynamicPage(pageVo);
}
/***
*@Description: 监控动态详情
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "company/dynamicDetail")
public R companyDynamicDetail(@RequestBody PushMonitorDynamicDetailVo detailVo) {
return monitorService.companyDynamicDetail(detailVo);
}
/***
*@Description: 监控报告 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "reportPage")
public TableDataInfo reportPage(@RequestBody PushMonitorReportPageVo pageVo) throws Exception{
return monitorService.reportPage(pageVo);
}
/***
*@Description: 企业监控列表 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "system/companyPage")
public TableDataInfo companyPage(@RequestBody PushMonitorCompanyPageVo pageVo) throws Exception{
return monitorService.companyPage(pageVo);
}
/***
*@Description: 添加监控
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "system/add")
public R systemAdd(@RequestBody PushMonitorCompanyAddVo addVo) {
return monitorService.systemAdd(addVo);
}
/***
*@Description: 取消监控
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "system/cancel")
public R systemCancel(@RequestBody PushMonitorCompanyCancelVo cancelVo) throws Exception{
return monitorService.systemCancel(cancelVo);
}
/***
*@Description: 导入
*@Param:
*@return: java.lang.String
*@Author: Dgm
*@date: 2022/6/14 10:45
*/
@RequestMapping("/system/import")
public R importGuarantee(@RequestParam MultipartFile file) throws Exception{
return monitorService.importGuarantee(file);
}
}
package com.dsk.monitor.domain.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @ClassName PushMonitorInfoDto
* @Description 推送监控信息
* @Author Dgm
* @Date 2023/12/9 9:43
* @Version
*/
@Data
public class PushMonitorInfo implements Serializable {
private static final long serialVersionUID = 6732846953537725830L;
/**
* 对外开放的id
*/
private String id;
/**
* 源表id
*/
private String sourceId;
/**
* 源表名
*/
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 Date createTime;
/**
* 更新时间
*/
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.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @ClassName PushMonitorRulesDto
* @Description 推送监控规则信息
* @Author Dgm
* @Date 2023/12/9 9:43
* @Version
*/
@Data
public class PushMonitorRules implements Serializable {
private static final long serialVersionUID = -2226356282137776096L;
/**
* id
*/
private Integer id;
/**
* 创建人Id
*/
private String userId = "98";
/**
* 风险类型,多个逗号隔开
*/
private String riskType;
/**
* 监控维度,多个逗号隔开
*/
private String dimension;
/**
* 推送频率 每小时:0 每天:1 工作日:2
*/
private Integer pushFrequency;
/**
* 推送时段-起
*/
private Integer timePeriodStart;
/**
* 推送时段-止
*/
private Integer timePeriodEnd;
/**
* 接收方式 手机:0 PC:1
*/
private String receiveMode;
/**
* 手机号码,多个逗号隔开
*/
private String phones;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新次数
*/
private Integer versionNum;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName ConditionVo
* @Description 共用条件
* @Author Dgm
* @Date 2023/12/9 15:36
* @Version
*/
@Data
public class ConditionVo {
/**
* 用户id
*/
private Integer userId = 98;
/**
* 条件查询企业id
*/
private Integer companyOrstaffId;
/**
* 条件查询企业名称(模糊查询)
*/
private String companyName;
/**
* 条件查询风险等级:正向,负向,中立,警示
*/
private String riskLevel;
/**
* 条件查询监控维度子级名称
*/
private String dimensionId;
/**
* 条件查询监控维度父级名称
*/
private String parentId;
/**
* 条件查询开始时间
*/
private String beginTime;
/**
* 条件查询结束时间
*/
private String endTime;
/**
* 报告类型(1.日报,2.周报,3.月报)
*/
private Integer reportType;
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
import java.util.List;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控报告 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorCompanyAddVo {
/**
* 用户id
*/
private Integer userId = 98;
/**
* 多个企业id数组
*/
private List<Integer> cid;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控报告 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorCompanyCancelVo {
/**
* 用户id
*/
private Integer userId = 98;
/**
* 多个企业id数组
*/
private List<Integer> cid;
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控报告 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorCompanyPageVo extends BasePage {
/**
* 查询条件
*/
private ConditionVo condition;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控动态详情
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorDynamicDetailVo {
private String sourceId;
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控动态/监控报告详情 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorDynamicPageVo extends BasePage {
private ConditionVo condition;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @ClassName PushMonitorImportCompanyVo
* @Description
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorImportCompanyVo {
/**
* 条件查询企业名称
*/
private String companyName;
}
package com.dsk.monitor.domain.vo;
import com.dsk.monitor.domain.dto.PushMonitorInfo;
import lombok.Data;
/**
* @ClassName PushMonitorInfoDto
* @Description 推送监控信息
* @Author Dgm
* @Date 2023/12/9 9:43
* @Version
*/
@Data
public class PushMonitorInfoVo extends PushMonitorInfo {
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 企业监控列表 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorReportPageVo extends BasePage {
/**
* 查询条件
*/
private ConditionVo condition;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 我的推送规则
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorRulesDetailVo {
/**
* 创建人Id
*/
private String userId = "98";
}
package com.dsk.monitor.domain.vo;
import com.dsk.monitor.domain.dto.PushMonitorRules;
/**
* @ClassName PushMonitorRulesVo
* @Description
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
public class PushMonitorRulesVo extends PushMonitorRules {
}
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.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.monitor.domain.dto.PushMonitorInfo;
/**
* @ClassName PushMonitorInfoMapper
* @Description 推送监控内容
* @Author Dgm
* @Date 2023/12/9 9:38
* @Version 1.0.0
*/
public interface PushMonitorInfoMapper extends BaseMapper<PushMonitorInfo> {
}
package com.dsk.monitor.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.monitor.domain.dto.PushMonitorRules;
/**
* @ClassName PushMonitorInfoMapper
* @Description 推送监控规则信息
* @Author Dgm
* @Date 2023/12/9 9:38
* @Version 1.0.0
*/
public interface PushMonitorRulesMapper extends BaseMapper<PushMonitorRules> {
}
package com.dsk.monitor.service;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.vo.*;
import org.springframework.web.multipart.MultipartFile;
/**
* @ClassName MonitorService
* @Description 监控service
* @Author Dgm
* @Date 2023/12/9 10:01
* @Version
*/
public interface MonitorService {
/***
*@Description: 保存监控信息
*@Param: pushMonitorInfoDto 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R insert(PushMonitorInfoVo pushMonitorInfoDto);
/***
*@Description: 监控维度下拉选择
*@Param:
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R rulesSelect();
/***
*@Description: 保存监控规则信息
*@Param: monitorRulesDto 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R insertRules(PushMonitorRulesVo monitorRulesDto);
/***
*@Description: 我的推送规则
*@Param: detailVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R rulesDetail(PushMonitorRulesDetailVo detailVo);
/***
*@Description: 监控动态/监控报告 分页
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception;
/***
*@Description: 监控动态详情
*@Param: detailVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R companyDynamicDetail(PushMonitorDynamicDetailVo detailVo);
/***
*@Description: 监控报告
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception;
/***
*@Description: 企业监控列表 分页
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception;
/***
*@Description: 添加监控
*@Param: addVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R systemAdd(PushMonitorCompanyAddVo addVo);
/***
*@Description: 取消监控
*@Param: cancelVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R systemCancel(PushMonitorCompanyCancelVo cancelVo);
/***
*@Description: 取消监控
*@Param: cancelVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R importGuarantee(MultipartFile file) throws Exception;
}
package com.dsk.monitor.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.monitor.domain.dto.PushMonitorInfo;
import com.dsk.monitor.domain.dto.PushMonitorRules;
import com.dsk.monitor.domain.vo.*;
import com.dsk.monitor.mapper.PushMonitorInfoMapper;
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.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* @ClassName MonitorServiceImpl
* @Description
* @Author Dgm
* @Date 2023/12/9 10:04
* @Version
*/
@Slf4j
@Service
public class MonitorServiceImpl implements MonitorService {
@Resource
private PushMonitorInfoMapper monitorInfoMapper;
@Resource
private PushMonitorRulesMapper rulesMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Override
public R insert(PushMonitorInfoVo pushMonitorInfoDto) {
monitorInfoMapper.insert(pushMonitorInfoDto);
return R.ok();
}
@Override
public R rulesSelect() {
// todo 20231209 产品出细致 具体全部类型
Map<String, Object> objectMap = new HashMap<>(2);
List<String> riskType = new ArrayList<>(2);
riskType.add("工商风险");
riskType.add("司法风险");
objectMap.put("riskType", riskType);
// 维度
List<String> dimension = new ArrayList<>(10);
dimension.add("法院公告");
dimension.add("裁判文书");
dimension.add("开庭公告");
dimension.add("股权冻结");
dimension.add("限制高消费");
dimension.add("被执行人");
dimension.add("失信被执行人");
dimension.add("限制高消费");
objectMap.put("dimension", dimension);
return R.ok(objectMap);
}
@Override
public R insertRules(PushMonitorRulesVo monitorRulesDto) {
// todo 20231211 规则是否与使用登录人强关联
if (ObjectUtil.isEmpty(monitorRulesDto.getId())) {
rulesMapper.insert(monitorRulesDto);
} else {
rulesMapper.updateById(monitorRulesDto);
}
return R.ok();
}
@Override
public R rulesDetail(PushMonitorRulesDetailVo detailVo) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", detailVo.getUserId());
PushMonitorRules detail = rulesMapper.selectOne(queryWrapper);
return R.ok(detail);
}
@Override
public TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/info/companyDynamicList", BeanUtil.beanToMap(pageVo, false, false));
return dskOpenApiUtil.responsePage(map);
}
@Override
public R companyDynamicDetail(PushMonitorDynamicDetailVo detailVo) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("source_id", detailVo.getSourceId());
PushMonitorInfo detail = monitorInfoMapper.selectOne(queryWrapper);
return R.ok(detail);
}
@Override
public TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/info/monitor/report", BeanUtil.beanToMap(pageVo, false, false));
return dskOpenApiUtil.responsePage(map);
}
@Override
public TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/paging", BeanUtil.beanToMap(pageVo, false, false));
return dskOpenApiUtil.responsePage(map);
}
@Override
public R systemAdd(PushMonitorCompanyAddVo addVo) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/add", BeanUtil.beanToMap(addVo, false, false));
return BeanUtil.toBean(map, R.class);
}
@Override
public R systemCancel(PushMonitorCompanyCancelVo cancelVo) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/cancel", BeanUtil.beanToMap(cancelVo, false, false));
return BeanUtil.toBean(map, R.class);
}
@Override
public R importGuarantee(MultipartFile file) {
//存放保单信息
List<PushMonitorImportCompanyVo> companyVoListList = new ArrayList<PushMonitorImportCompanyVo>();
String userId = "98";
// 设置redisKey
String lockKey = "stockKey" + userId;
// 设置redisValue
String value = UUID.randomUUID().toString();
try {
// 这里默认设置超时时间为30秒
boolean hasKey = RedisUtils.setObjectIfAbsent(lockKey, value, Duration.ofMillis(1000 * 30));
if (!hasKey) {
return R.fail("数据正在上传请等待");
}
//如果文件不存在 则文件上传失败
if (file == null){
return R.fail("操作失敗,数据异常,請使用正确的模板");
}
if (file.isEmpty()){
return R.fail("操作失敗,数据异常,請使用正确的模板");
}
//得到整个excel
XSSFWorkbook wook = new XSSFWorkbook((file.getInputStream()));
//得到第一个表单sheet
Sheet sheet = wook.getSheetAt(0);
//得到最后一行的行号
int lastRowNum = sheet.getLastRowNum();
//如果总行数小于等于2 (没有数据)提示数据异常
if ((lastRowNum) < 1){
return R.fail("未提供有效数据,请确认!");
}
//进行excel格式判定
String name = sheet.getRow(0).getCell(0) + "";
//只要其中一个不满足则格式有误
if (!"企业名称".equals(name)){
return R.fail("操作失败,数据异常,请使用正确的模板");
}
//行列皆从0开始
for (int i = 1; i <= lastRowNum; i++) {
PushMonitorImportCompanyVo vo = new PushMonitorImportCompanyVo();
// 统一社会信用代码
Cell companyName = sheet.getRow(i).getCell(0);
if (ObjectUtil.isNotEmpty(companyName)) {
String cn = companyName.toString();
vo.setCompanyName(cn.trim());
}
companyVoListList.add(vo);
}
} catch (Exception e) {
log.error("",e.getMessage());
} finally {
RedisUtils.hasValueDelete(lockKey, value);
}
if (ObjectUtil.isEmpty(companyVoListList)) {
return R.fail("操作失败");
}
Map<String, Object> param = new HashMap<>(1);
param.put("names", companyVoListList);
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/addPatch", param);
return BeanUtil.toBean(map, R.class);
}
}
package com.dsk.monitor.util;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.provider.enumerate.SupplierType;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
/**
* @ClassName SendMessageUtil
* @Description 发送短息
* @Author Dgm
* @Date 2023/12/9 14:14
* @Version
*/
@Slf4j
public class SendMessageUtil {
public static void sendMessage(String phones, String message) {
String[] array = phones.split(",");
List<String> stringList = Arrays.asList(array);
for (String phone : stringList) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", message);
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(phone, "SMS_181860796", map);
if (!"OK".equals(smsResponse.getCode())) {
log.error("验证码短信发送异常 => {}", smsResponse);
}
}
}
}
......@@ -4,5 +4,60 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.DCustomerMapper">
<select id="allSearchList" resultType="com.dsk.cscec.domain.DCustomer">
select
customer_key, customer_id, customer_code, customer_name, recommend_org, register_region, register_province, register_city, customer_class, primary_business,
paytax_type, tax_rate, customer_state, leader_name, labor_captain_phone, labor_captain_idcard, service_team_personnum, service_team_speciality,
construct_job_scope, credential, register_capital, contact_person, contact_phone, approve_date2, credit_level
from d_customer
where recommend_org_id = 'F17305B4EA4444CBAB12892C7B99E475'
<if test="bo.customerName != null and bo.customerName != '' "> and customer_name like concat('%',#{bo.customerName},'%')</if>
<if test="bo.region != null and bo.region != '' ">
and register_region in
<foreach collection="region" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="bo.province != null and bo.province != '' ">
and register_province in
<foreach collection="province" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="bo.city != null and bo.city != '' ">
and register_city in
<foreach collection="city" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="bo.customerClass != null and bo.customerClass != '' ">
and customer_class in
<foreach collection="customerClass" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="bo.customerState != null and bo.customerState != '' ">
and customer_state in
<foreach collection="customerState" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="bo.creditLevel != null and bo.creditLevel != '' ">
and credit_level in
<foreach collection="creditLevel" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="bo.credential != null and bo.credential != '' ">
and credential in
<foreach collection="credential" item="item" open="(" separator="," close=")">
#{item}
</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.isTeam != null"> and leader_name is <if test="bo.isTeam == 0">not</if> null </if>
order by approve_date2 desc
</select>
</mapper>
\ No newline at end of file
<?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.DProjectMapper">
</mapper>
\ No newline at end of file
<?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.DSubcontractMapper">
<select id="selectEnterpriseCountByCustomerId" resultType="java.lang.Integer">
select count(num) from (
select count(sign_org_id) num from d_subcontract where customer_id = #{customerId} group by sign_org_id
) a
</select>
<select id="selectProjectCountByCustomerId" resultType="java.lang.Integer">
select count(num) from (
select count(project_id) num from d_subcontract where customer_id = #{customerId} group by project_id
) a
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1543827393750" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4695" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: rbicon; src: url("chrome-extension://dipiagiiohfljcicegpgffpbnjmgjcnf/fonts/rbicon.woff2") format("woff2"); font-weight: normal; font-style: normal; }
</style></defs><path d="M64 64V640H896V64H64zM0 0h960v704H0V0z" p-id="4696"></path><path d="M192 896H768v64H192zM448 640H512v256h-64z" p-id="4697"></path><path d="M479.232 561.604267l309.9904-348.330667-47.803733-42.5472-259.566934 291.669333L303.957333 240.008533 163.208533 438.6048l52.224 37.009067 91.6224-129.28z" p-id="4698"></path></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_233_92225/11_04949"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_233_92225/11_04949)"><g><path d="M6.5,14L6.5,11Q6.5,10.9507543,6.509607,10.9024549Q6.519215,10.854155,6.53806,10.808658Q6.556906,10.763161,6.584265,10.722215Q6.611625,10.681269,6.646447,10.646447Q6.681269,10.611625,6.722215,10.584265Q6.763161,10.556906,6.808658,10.53806Q6.854155,10.519214999999999,6.9024549,10.509607Q6.9507543,10.5,7,10.5L9,10.5Q9.04925,10.5,9.09754,10.509607Q9.14584,10.519214999999999,9.19134,10.53806Q9.23684,10.556906,9.27778,10.584265Q9.31873,10.611625,9.35355,10.646447Q9.38838,10.681269,9.41573,10.722215Q9.44309,10.763161,9.46194,10.808658Q9.48078,10.854155,9.49039,10.9024549Q9.5,10.9507543,9.5,11L9.5,14Q9.5,14.04925,9.49039,14.09754Q9.48078,14.14584,9.46194,14.19134Q9.44309,14.23684,9.41573,14.27778Q9.38838,14.31873,9.35355,14.35355Q9.31873,14.38837,9.27779,14.41573Q9.23684,14.44309,9.19134,14.46194Q9.14584,14.48078,9.09754,14.49039Q9.04925,14.5,9,14.5L7,14.5Q6.9507543,14.5,6.9024549,14.49039Q6.854155,14.48078,6.808658,14.46194Q6.763161,14.44309,6.722215,14.41573Q6.681269,14.38837,6.646447,14.35355Q6.611625,14.31873,6.584265,14.27778Q6.556906,14.23684,6.53806,14.19134Q6.519215,14.14584,6.509607,14.09754Q6.5,14.04925,6.5,14ZM7.5,11.5L7.5,13.5L8.5,13.5L8.5,11.5L7.5,11.5Z" fill="#FFFFFF" fill-opacity="1"/></g><g><rect x="2" y="3" width="12" height="8" rx="1" fill-opacity="0" stroke-opacity="1" stroke="#FFFFFF" fill="none" stroke-width="1"/></g><g transform="matrix(1,0.0000922808758332394,-0.00009228093404090032,1,0.0012919330765726045,-0.0003691235033329576)"><path d="M4,14.5L12.00001,14.5Q12.04926,14.5,12.09756,14.490393Q12.14586,14.480785000000001,12.19135,14.46194Q12.23685,14.443094,12.2778,14.415735Q12.31874,14.388375,12.35357,14.353553Q12.38839,14.318731,12.41575,14.277785Q12.44311,14.236839,12.46195,14.191342Q12.4808,14.145845,12.49041,14.0975451Q12.50001,14.0492457,12.50001,14Q12.50001,13.9507543,12.49041,13.9024549Q12.4808,13.854155,12.46195,13.808658Q12.44311,13.763161,12.41575,13.722215Q12.38839,13.681269,12.35357,13.646447Q12.31874,13.611625,12.2778,13.584265Q12.23685,13.556906,12.19135,13.53806Q12.14586,13.519214999999999,12.09756,13.509607Q12.04926,13.5,12.00001,13.5L4,13.5Q3.9507543,13.5,3.9024549,13.509607Q3.854155,13.519214999999999,3.808658,13.53806Q3.763161,13.556906,3.722215,13.584265Q3.681269,13.611625,3.646447,13.646447Q3.611625,13.681269,3.584265,13.722215Q3.556906,13.763161,3.5380599999999998,13.808658Q3.519215,13.854155,3.509607,13.9024549Q3.5,13.9507543,3.5,14Q3.5,14.0492457,3.509607,14.0975451Q3.519215,14.145845,3.5380599999999998,14.191342Q3.556906,14.236839,3.584265,14.277785Q3.611625,14.318731,3.646447,14.353553Q3.681269,14.388375,3.722215,14.415735Q3.763161,14.443094,3.808658,14.46194Q3.854155,14.480785000000001,3.9024549,14.490393Q3.9507543,14.5,4,14.5Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M11.85355,5.353553Q11.92388,5.283227,11.96194,5.191342Q12,5.0994562,12,5Q12,4.9507543,11.99039,4.9024549Q11.98078,4.854155,11.96194,4.808658Q11.94309,4.763161,11.91573,4.722215Q11.88837,4.681269,11.85355,4.646447Q11.81873,4.611625,11.77778,4.584265Q11.73684,4.556906,11.69134,4.53806Q11.64584,4.519215,11.59754,4.509607Q11.54925,4.5,11.5,4.5Q11.40054,4.5,11.30866,4.53806Q11.21677,4.57612,11.14645,4.646447L11.14626,4.646634L8.5,7.29289L7.35355,6.14645Q7.31873,6.11162,7.27778,6.08427Q7.23684,6.05691,7.19134,6.03806Q7.14584,6.01921,7.09754,6.00961Q7.04925,6,7,6Q6.95075,6,6.90245,6.00961Q6.85416,6.01921,6.80866,6.03806Q6.76316,6.05691,6.7222100000000005,6.08427Q6.68127,6.11162,6.64645,6.14645L4.646634,8.14626L4.646447,8.14645Q4.57612,8.21677,4.53806,8.30866Q4.5,8.40054,4.5,8.5Q4.5,8.54925,4.509607,8.59754Q4.519215,8.64584,4.53806,8.69134Q4.556906,8.73684,4.584265,8.77778Q4.611625,8.81873,4.646447,8.85355Q4.681269,8.88838,4.722215,8.91573Q4.763161,8.94309,4.808658,8.96194Q4.854155,8.98078,4.9024549,8.99039Q4.9507543,9,5,9Q5.0994562,9,5.191342,8.96194Q5.283227,8.92388,5.353553,8.85355L5.353741,8.85337L7,7.20711L8.14645,8.35355Q8.21677,8.42388,8.30866,8.46194Q8.40054,8.5,8.5,8.5Q8.59946,8.5,8.69134,8.46194Q8.78323,8.42388,8.85355,8.35355L11.85337,5.353741L11.85355,5.353553L11.85355,5.353553Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></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="14" height="14" viewBox="0 0 14 14"><defs><clipPath id="master_svg0_264_80210"><rect x="0" y="0" width="14" height="14" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_264_80210)"><g><path d="M5.625,12.25L5.625,9.625Q5.625,9.5757543,5.634607,9.5274549Q5.644215,9.479155,5.66306,9.433658Q5.681906,9.388161,5.709265,9.347215Q5.736625,9.306269,5.771447,9.271447Q5.806269,9.236625,5.847215,9.209265Q5.888161,9.181906,5.933658,9.16306Q5.979155,9.144214999999999,6.0274549,9.134607Q6.0757543,9.125,6.125,9.125L7.875,9.125Q7.92425,9.125,7.97254,9.134607Q8.02084,9.144214999999999,8.06634,9.16306Q8.11184,9.181906,8.15278,9.209265Q8.19373,9.236625,8.22855,9.271447Q8.26337,9.306269,8.29073,9.347215Q8.31809,9.388161,8.33694,9.433658Q8.35578,9.479155,8.36539,9.5274549Q8.375,9.5757543,8.375,9.625L8.375,12.25Q8.375,12.29925,8.36539,12.34755Q8.35578,12.39584,8.33694,12.44134Q8.31809,12.48684,8.29073,12.52778Q8.26337,12.56873,8.22855,12.60355Q8.19373,12.63838,8.15278,12.66573Q8.11184,12.69309,8.06634,12.71194Q8.02084,12.73078,7.97254,12.74039Q7.92425,12.75,7.875,12.75L6.125,12.75Q6.0757543,12.75,6.0274549,12.74039Q5.979155,12.73078,5.933658,12.71194Q5.888161,12.69309,5.847215,12.66573Q5.806269,12.63838,5.771447,12.60355Q5.736625,12.56873,5.709265,12.52778Q5.681906,12.48684,5.66306,12.44134Q5.644215,12.39584,5.634607,12.34755Q5.625,12.29925,5.625,12.25ZM6.625,10.125L6.625,11.75L7.375,11.75L7.375,10.125L6.625,10.125Z" fill="#86909C" fill-opacity="1"/></g><g><rect x="1.75" y="2.625" width="10.5" height="7" rx="1" fill-opacity="0" stroke-opacity="1" stroke="#86909C" fill="none" stroke-width="1"/></g><g transform="matrix(1,0.0000922808758332394,-0.00009228093404090032,1,0.001130441442001029,-0.0003229830654163379)"><path d="M3.5,12.75L10.50001,12.75Q10.54926,12.75,10.59756,12.740393Q10.645859999999999,12.730785000000001,10.69135,12.71194Q10.73685,12.693094,10.7778,12.665735Q10.81874,12.638375,10.85356,12.603553Q10.888390000000001,12.568731,10.91575,12.527785Q10.943100000000001,12.486839,10.96195,12.441342Q10.9808,12.395845,10.990400000000001,12.3475451Q11.00001,12.2992457,11.00001,12.25Q11.00001,12.2007543,10.990400000000001,12.1524549Q10.9808,12.104155,10.96195,12.058658Q10.943100000000001,12.013161,10.91575,11.972215Q10.888390000000001,11.931269,10.85356,11.896447Q10.81874,11.861625,10.7778,11.834265Q10.73685,11.806906,10.69135,11.78806Q10.645859999999999,11.769214999999999,10.59756,11.759607Q10.54926,11.75,10.50001,11.75L3.5,11.75Q3.4507543,11.75,3.4024549,11.759607Q3.354155,11.769214999999999,3.308658,11.78806Q3.263161,11.806906,3.222215,11.834265Q3.181269,11.861625,3.146447,11.896447Q3.111625,11.931269,3.084265,11.972215Q3.056906,12.013161,3.0380599999999998,12.058658Q3.019215,12.104155,3.009607,12.1524549Q3,12.2007543,3,12.25Q3,12.2992457,3.009607,12.3475451Q3.019215,12.395845,3.0380599999999998,12.441342Q3.056906,12.486839,3.084265,12.527785Q3.111625,12.568731,3.146447,12.603553Q3.181269,12.638375,3.222215,12.665735Q3.263161,12.693094,3.308658,12.71194Q3.354155,12.730785000000001,3.4024549,12.740393Q3.4507543,12.75,3.5,12.75Z" fill-rule="evenodd" fill="#86909C" fill-opacity="1"/></g><g><path d="M10.41605,4.728553Q10.48638,4.658227,10.52444,4.566342Q10.5625,4.4744562,10.5625,4.375Q10.5625,4.3257543,10.55289,4.2774549Q10.54328,4.229155,10.52444,4.183658Q10.50559,4.138161,10.47823,4.097215Q10.45087,4.056269,10.41605,4.021447Q10.38123,3.986625,10.34028,3.959265Q10.29934,3.931906,10.25384,3.9130599999999998Q10.20834,3.894215,10.16004,3.884607Q10.11175,3.875,10.0625,3.875Q9.96304,3.875,9.87116,3.9130599999999998Q9.77927,3.95112,9.70895,4.021447L9.70876,4.021634L7.4375,6.29289L6.47855,5.333947Q6.44373,5.299124,6.40278,5.271765Q6.36184,5.244406,6.31634,5.22556Q6.27084,5.206715,6.22254,5.197107Q6.17425,5.1875,6.125,5.1875Q6.07575,5.1875,6.02745,5.197107Q5.97916,5.206715,5.93366,5.22556Q5.88816,5.244406,5.8472100000000005,5.271765Q5.80627,5.299124,5.77145,5.333947L4.021634,7.08376L4.021447,7.08395Q3.95112,7.15427,3.9130599999999998,7.24616Q3.875,7.3380399999999995,3.875,7.4375Q3.875,7.48675,3.884607,7.53504Q3.894215,7.58334,3.9130599999999998,7.62884Q3.931906,7.67434,3.959265,7.71528Q3.986625,7.75623,4.021447,7.79105Q4.056269,7.82588,4.097215,7.85323Q4.138161,7.88059,4.183658,7.89944Q4.229155,7.91829,4.2774549,7.92789Q4.3257543,7.9375,4.375,7.9375Q4.4744562,7.9375,4.566342,7.89944Q4.658227,7.8613800000000005,4.728553,7.79105L4.728741,7.79087L6.125,6.39461L7.08395,7.35355Q7.15427,7.4238800000000005,7.24616,7.46194Q7.3380399999999995,7.5,7.4375,7.5Q7.5369600000000005,7.5,7.62884,7.46194Q7.72073,7.4238800000000005,7.79105,7.35355L10.41587,4.728741L10.41605,4.728553L10.41605,4.728553Z" fill-rule="evenodd" fill="#86909C" fill-opacity="1"/></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="14" height="14" viewBox="0 0 14 14"><defs><clipPath id="master_svg0_264_80210"><rect x="0" y="0" width="14" height="14" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_264_80210)"><g><path d="M5.625,12.25L5.625,9.625Q5.625,9.5757543,5.634607,9.5274549Q5.644215,9.479155,5.66306,9.433658Q5.681906,9.388161,5.709265,9.347215Q5.736625,9.306269,5.771447,9.271447Q5.806269,9.236625,5.847215,9.209265Q5.888161,9.181906,5.933658,9.16306Q5.979155,9.144214999999999,6.0274549,9.134607Q6.0757543,9.125,6.125,9.125L7.875,9.125Q7.92425,9.125,7.97254,9.134607Q8.02084,9.144214999999999,8.06634,9.16306Q8.11184,9.181906,8.15278,9.209265Q8.19373,9.236625,8.22855,9.271447Q8.26337,9.306269,8.29073,9.347215Q8.31809,9.388161,8.33694,9.433658Q8.35578,9.479155,8.36539,9.5274549Q8.375,9.5757543,8.375,9.625L8.375,12.25Q8.375,12.29925,8.36539,12.34755Q8.35578,12.39584,8.33694,12.44134Q8.31809,12.48684,8.29073,12.52778Q8.26337,12.56873,8.22855,12.60355Q8.19373,12.63838,8.15278,12.66573Q8.11184,12.69309,8.06634,12.71194Q8.02084,12.73078,7.97254,12.74039Q7.92425,12.75,7.875,12.75L6.125,12.75Q6.0757543,12.75,6.0274549,12.74039Q5.979155,12.73078,5.933658,12.71194Q5.888161,12.69309,5.847215,12.66573Q5.806269,12.63838,5.771447,12.60355Q5.736625,12.56873,5.709265,12.52778Q5.681906,12.48684,5.66306,12.44134Q5.644215,12.39584,5.634607,12.34755Q5.625,12.29925,5.625,12.25ZM6.625,10.125L6.625,11.75L7.375,11.75L7.375,10.125L6.625,10.125Z" fill="#86909C" fill-opacity="1"/></g><g><rect x="1.75" y="2.625" width="10.5" height="7" rx="1" fill-opacity="0" stroke-opacity="1" stroke="#86909C" fill="none" stroke-width="1"/></g><g transform="matrix(1,0.0000922808758332394,-0.00009228093404090032,1,0.001130441442001029,-0.0003229830654163379)"><path d="M3.5,12.75L10.50001,12.75Q10.54926,12.75,10.59756,12.740393Q10.645859999999999,12.730785000000001,10.69135,12.71194Q10.73685,12.693094,10.7778,12.665735Q10.81874,12.638375,10.85356,12.603553Q10.888390000000001,12.568731,10.91575,12.527785Q10.943100000000001,12.486839,10.96195,12.441342Q10.9808,12.395845,10.990400000000001,12.3475451Q11.00001,12.2992457,11.00001,12.25Q11.00001,12.2007543,10.990400000000001,12.1524549Q10.9808,12.104155,10.96195,12.058658Q10.943100000000001,12.013161,10.91575,11.972215Q10.888390000000001,11.931269,10.85356,11.896447Q10.81874,11.861625,10.7778,11.834265Q10.73685,11.806906,10.69135,11.78806Q10.645859999999999,11.769214999999999,10.59756,11.759607Q10.54926,11.75,10.50001,11.75L3.5,11.75Q3.4507543,11.75,3.4024549,11.759607Q3.354155,11.769214999999999,3.308658,11.78806Q3.263161,11.806906,3.222215,11.834265Q3.181269,11.861625,3.146447,11.896447Q3.111625,11.931269,3.084265,11.972215Q3.056906,12.013161,3.0380599999999998,12.058658Q3.019215,12.104155,3.009607,12.1524549Q3,12.2007543,3,12.25Q3,12.2992457,3.009607,12.3475451Q3.019215,12.395845,3.0380599999999998,12.441342Q3.056906,12.486839,3.084265,12.527785Q3.111625,12.568731,3.146447,12.603553Q3.181269,12.638375,3.222215,12.665735Q3.263161,12.693094,3.308658,12.71194Q3.354155,12.730785000000001,3.4024549,12.740393Q3.4507543,12.75,3.5,12.75Z" fill-rule="evenodd" fill="#86909C" fill-opacity="1"/></g><g><path d="M10.41605,4.728553Q10.48638,4.658227,10.52444,4.566342Q10.5625,4.4744562,10.5625,4.375Q10.5625,4.3257543,10.55289,4.2774549Q10.54328,4.229155,10.52444,4.183658Q10.50559,4.138161,10.47823,4.097215Q10.45087,4.056269,10.41605,4.021447Q10.38123,3.986625,10.34028,3.959265Q10.29934,3.931906,10.25384,3.9130599999999998Q10.20834,3.894215,10.16004,3.884607Q10.11175,3.875,10.0625,3.875Q9.96304,3.875,9.87116,3.9130599999999998Q9.77927,3.95112,9.70895,4.021447L9.70876,4.021634L7.4375,6.29289L6.47855,5.333947Q6.44373,5.299124,6.40278,5.271765Q6.36184,5.244406,6.31634,5.22556Q6.27084,5.206715,6.22254,5.197107Q6.17425,5.1875,6.125,5.1875Q6.07575,5.1875,6.02745,5.197107Q5.97916,5.206715,5.93366,5.22556Q5.88816,5.244406,5.8472100000000005,5.271765Q5.80627,5.299124,5.77145,5.333947L4.021634,7.08376L4.021447,7.08395Q3.95112,7.15427,3.9130599999999998,7.24616Q3.875,7.3380399999999995,3.875,7.4375Q3.875,7.48675,3.884607,7.53504Q3.894215,7.58334,3.9130599999999998,7.62884Q3.931906,7.67434,3.959265,7.71528Q3.986625,7.75623,4.021447,7.79105Q4.056269,7.82588,4.097215,7.85323Q4.138161,7.88059,4.183658,7.89944Q4.229155,7.91829,4.2774549,7.92789Q4.3257543,7.9375,4.375,7.9375Q4.4744562,7.9375,4.566342,7.89944Q4.658227,7.8613800000000005,4.728553,7.79105L4.728741,7.79087L6.125,6.39461L7.08395,7.35355Q7.15427,7.4238800000000005,7.24616,7.46194Q7.3380399999999995,7.5,7.4375,7.5Q7.5369600000000005,7.5,7.62884,7.46194Q7.72073,7.4238800000000005,7.79105,7.35355L10.41587,4.728741L10.41605,4.728553L10.41605,4.728553Z" fill-rule="evenodd" fill="#86909C" fill-opacity="1"/></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_233_92225/11_04949"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_233_92225/11_04949)"><g><path d="M6.5,14L6.5,11Q6.5,10.9507543,6.509607,10.9024549Q6.519215,10.854155,6.53806,10.808658Q6.556906,10.763161,6.584265,10.722215Q6.611625,10.681269,6.646447,10.646447Q6.681269,10.611625,6.722215,10.584265Q6.763161,10.556906,6.808658,10.53806Q6.854155,10.519214999999999,6.9024549,10.509607Q6.9507543,10.5,7,10.5L9,10.5Q9.04925,10.5,9.09754,10.509607Q9.14584,10.519214999999999,9.19134,10.53806Q9.23684,10.556906,9.27778,10.584265Q9.31873,10.611625,9.35355,10.646447Q9.38838,10.681269,9.41573,10.722215Q9.44309,10.763161,9.46194,10.808658Q9.48078,10.854155,9.49039,10.9024549Q9.5,10.9507543,9.5,11L9.5,14Q9.5,14.04925,9.49039,14.09754Q9.48078,14.14584,9.46194,14.19134Q9.44309,14.23684,9.41573,14.27778Q9.38838,14.31873,9.35355,14.35355Q9.31873,14.38837,9.27779,14.41573Q9.23684,14.44309,9.19134,14.46194Q9.14584,14.48078,9.09754,14.49039Q9.04925,14.5,9,14.5L7,14.5Q6.9507543,14.5,6.9024549,14.49039Q6.854155,14.48078,6.808658,14.46194Q6.763161,14.44309,6.722215,14.41573Q6.681269,14.38837,6.646447,14.35355Q6.611625,14.31873,6.584265,14.27778Q6.556906,14.23684,6.53806,14.19134Q6.519215,14.14584,6.509607,14.09754Q6.5,14.04925,6.5,14ZM7.5,11.5L7.5,13.5L8.5,13.5L8.5,11.5L7.5,11.5Z" fill="#FFFFFF" fill-opacity="1"/></g><g><rect x="2" y="3" width="12" height="8" rx="1" fill-opacity="0" stroke-opacity="1" stroke="#FFFFFF" fill="none" stroke-width="1"/></g><g transform="matrix(1,0.0000922808758332394,-0.00009228093404090032,1,0.0012919330765726045,-0.0003691235033329576)"><path d="M4,14.5L12.00001,14.5Q12.04926,14.5,12.09756,14.490393Q12.14586,14.480785000000001,12.19135,14.46194Q12.23685,14.443094,12.2778,14.415735Q12.31874,14.388375,12.35357,14.353553Q12.38839,14.318731,12.41575,14.277785Q12.44311,14.236839,12.46195,14.191342Q12.4808,14.145845,12.49041,14.0975451Q12.50001,14.0492457,12.50001,14Q12.50001,13.9507543,12.49041,13.9024549Q12.4808,13.854155,12.46195,13.808658Q12.44311,13.763161,12.41575,13.722215Q12.38839,13.681269,12.35357,13.646447Q12.31874,13.611625,12.2778,13.584265Q12.23685,13.556906,12.19135,13.53806Q12.14586,13.519214999999999,12.09756,13.509607Q12.04926,13.5,12.00001,13.5L4,13.5Q3.9507543,13.5,3.9024549,13.509607Q3.854155,13.519214999999999,3.808658,13.53806Q3.763161,13.556906,3.722215,13.584265Q3.681269,13.611625,3.646447,13.646447Q3.611625,13.681269,3.584265,13.722215Q3.556906,13.763161,3.5380599999999998,13.808658Q3.519215,13.854155,3.509607,13.9024549Q3.5,13.9507543,3.5,14Q3.5,14.0492457,3.509607,14.0975451Q3.519215,14.145845,3.5380599999999998,14.191342Q3.556906,14.236839,3.584265,14.277785Q3.611625,14.318731,3.646447,14.353553Q3.681269,14.388375,3.722215,14.415735Q3.763161,14.443094,3.808658,14.46194Q3.854155,14.480785000000001,3.9024549,14.490393Q3.9507543,14.5,4,14.5Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M11.85355,5.353553Q11.92388,5.283227,11.96194,5.191342Q12,5.0994562,12,5Q12,4.9507543,11.99039,4.9024549Q11.98078,4.854155,11.96194,4.808658Q11.94309,4.763161,11.91573,4.722215Q11.88837,4.681269,11.85355,4.646447Q11.81873,4.611625,11.77778,4.584265Q11.73684,4.556906,11.69134,4.53806Q11.64584,4.519215,11.59754,4.509607Q11.54925,4.5,11.5,4.5Q11.40054,4.5,11.30866,4.53806Q11.21677,4.57612,11.14645,4.646447L11.14626,4.646634L8.5,7.29289L7.35355,6.14645Q7.31873,6.11162,7.27778,6.08427Q7.23684,6.05691,7.19134,6.03806Q7.14584,6.01921,7.09754,6.00961Q7.04925,6,7,6Q6.95075,6,6.90245,6.00961Q6.85416,6.01921,6.80866,6.03806Q6.76316,6.05691,6.7222100000000005,6.08427Q6.68127,6.11162,6.64645,6.14645L4.646634,8.14626L4.646447,8.14645Q4.57612,8.21677,4.53806,8.30866Q4.5,8.40054,4.5,8.5Q4.5,8.54925,4.509607,8.59754Q4.519215,8.64584,4.53806,8.69134Q4.556906,8.73684,4.584265,8.77778Q4.611625,8.81873,4.646447,8.85355Q4.681269,8.88838,4.722215,8.91573Q4.763161,8.94309,4.808658,8.96194Q4.854155,8.98078,4.9024549,8.99039Q4.9507543,9,5,9Q5.0994562,9,5.191342,8.96194Q5.283227,8.92388,5.353553,8.85355L5.353741,8.85337L7,7.20711L8.14645,8.35355Q8.21677,8.42388,8.30866,8.46194Q8.40054,8.5,8.5,8.5Q8.59946,8.5,8.69134,8.46194Q8.78323,8.42388,8.85355,8.35355L11.85337,5.353741L11.85355,5.353553L11.85355,5.353553Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
<template>
</template>
<script>
export default {
}
</script>
<style>
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<!--监控维度设置-->
<div class="app-container MonitorSettings">
<div class="content">
<div class="m-title">监控维度设置</div>
<div class="m-main">
<div class="main-item">
<div class="label">风险类型</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkFx" @change="checkFxBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="queryParams.fxType" class="keyword_checkbox" @change="checkFx1Btn">
<el-checkbox v-for="item in fxlx" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
<div class="main-item">
<div class="label">监控维度</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkJkwd" @change="checkJkwdBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="queryParams.jkwdType" class="keyword_checkbox" @change="checkJkwd1Btn">
<el-checkbox v-for="item in jkwd" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
</div>
<div class="m-title">监控推送时间设置</div>
<div class="m-main">
<div class="main-item">
<div class="label">推送频率</div>
<el-radio v-model="queryParams.radio" label="1">每天</el-radio>
<el-radio v-model="queryParams.radio" label="2">工作日(排除节假日)</el-radio>
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">推送时段</div>
<el-time-picker
is-range
class="timePicker"
v-model="queryParams.time"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围">
</el-time-picker>
</div>
</div>
<div class="m-title">监控接收方式</div>
<div class="m-main">
<div class="main-item">
<div class="label">接收方式</div>
<el-radio v-model="queryParams.radio" label="1">全部</el-radio>
<el-radio v-model="queryParams.radio" label="2">手机短信</el-radio>
<el-radio v-model="queryParams.radio" label="3">PC</el-radio>
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">手机号码</div>
<el-input class="phone" v-model="queryParams.phone" placeholder="请输入手机号"></el-input>
</div>
</div>
<div class="search">
<span class="btn1">保存</span>
<span class="btn2">重置</span>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'MonitorSettings',
data() {
return {
fxlx:[
{
value:'1',
label:'工商风险'
},
{
value:'2',
label:'司法风险'
},
],
jkwd:[
{
value:'1',
label:'法院公告'
},
{
value:'2',
label:'裁判文书'
},
{
value:'3',
label:'开庭公告'
},
{
value:'3',
label:'股权冻结'
},
],
checkFx: true,
checkJkwd: true,
queryParams:{
fxType:[],
jkwdType:[],
time:[new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)],
radio:'1',
phone:''
}
}
},
created() {
},
methods: {
checkFxBtn(val) {
this.queryParams.fxType = [];
this.checkFx = true;
},
checkFx1Btn(val){
if (val.length > 0) {
this.checkFx = false;
} else if (val.length == 0) {
this.checkFx = true;
}
},
checkJkwdBtn(val) {
this.queryParams.jkwdType = [];
this.checkJkwd = true;
},
checkJkwd1Btn(val){
console.log(val)
if (val.length > 0) {
this.checkJkwd = false;
} else if (val.length == 0) {
this.checkJkwd = true;
}
},
}
}
</script>
<style lang="scss" scoped>
.MonitorSettings{
.content{
background: #ffffff;
padding: 16px;
}
.m-title{
border-left: 2px solid rgba(35,35,35,0.8);;
padding-left: 8px;
font-size: 16px;
height: 16px;
line-height: 16px;
font-weight: 700;
color: #232323;
margin-bottom: 16px;
}
.m-main{
border-bottom: 1px solid #EEEEEE;
margin-bottom: 16px;
}
.main-item {
margin-bottom: 16px;
display: -webkit-box;
align-items: flex-start;
.label {
width: 88px;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
.main-right {
width: calc(100% - 112px);
.checkbox{
display: flex;
align-items: flex-start;
.checkbox-content-qx{
margin-right: 24px;
}
}
}
::v-deep .timePicker{
width: 228px;
height: 32px;
.el-range__icon{
line-height: 27px;
}
.el-range__close-icon{
line-height: 27px;
}
}
::v-deep .phone{
width: 228px;
height: 32px;
border-radius: 2px 2px 2px 2px;
}
}
.search{
margin: 24px 0 0 88px;
span{
width: 60px;
height: 32px;
line-height: 32px;
border-radius: 4px 4px 4px 4px;
cursor: pointer;
display: inline-block;
text-align: center;
font-size: 14px;
}
.btn1{
background: #0081FF;
border: 1px solid #0081FF;
color: #FFFFFF;
margin-right: 12px;
}
.btn2{
border: 1px solid #DCDFE6;
background: #ffffff;
color: rgba(35,35,35,0.8);
}
}
}
</style>
This diff is collapsed.
This diff is collapsed.
<template>
<div class="app-container enterprise_contatiner">
<div class="header">
<el-tabs v-model="activeName" >
<el-tab-pane label="查资质" name="first"></el-tab-pane>
<el-tab-pane label="现行资质标准" name="second"></el-tab-pane>
<el-tab-pane label="历史批量查询结果" name="third"></el-tab-pane>
</el-tabs>
</div>
<SearchAptitude v-if="activeName === 'first'"></SearchAptitude>
<AptitudeStandard v-if="activeName === 'second'"></AptitudeStandard>
<SearchResult v-if="activeName === 'third'"></SearchResult>
</div>
</template>
<script>
import SearchAptitude from './components/SearchAptitude'
import AptitudeStandard from './components/AptitudeStandard'
import SearchResult from './components/SearchResult'
export default {
name: 'Assistant',
components: {
SearchAptitude,AptitudeStandard,SearchResult
},
data() {
return {
activeName: 'first'
}
},
}
</script>
<style lang="scss" scoped>
.header{
justify-content: space-between;
height: 48px;
background: #FFFFFF;
border-radius: 4px 4px 0 0 ;
border-bottom: 1px solid #EEEEEE;
color: #232323;
position: sticky;
top: 54px;
z-index: 999;
::v-deep .el-tabs{
height: 48px;
line-height: 48px;
.el-tabs__nav-wrap::after {
position: static !important;
}
.el-tabs__header{
margin: 0;
.el-tabs__item{
padding: 0 16px;
font-size: 16px;
}
.is-active{
font-weight: bold;
}
}
.el-tabs__content{
width: 100%;
}
}
.location{
font-size: 14px;
color: #0081FF;
i{
margin-right: 6px;
font-size: 16px;
}
}
}
</style>
\ No newline at end of file
<template>
<div>
<div class="apt_stan_header">
<span v-for="(item,index) in list" class="apt_stan_header_span" :class="activeIndex==index?'active_span':''" :key="index" @click="activeIndex=index">{{item}}</span>
</div>
<div class="apt_stan_content">
<div class="apt_stan_content_header">
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div style="padding:16px;">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
class="table-item1 fixed-table" border highlight-current-row>
<el-table-column label="资质名称" fixed >
<template slot-scope="scope">
{{scope.row.province}}
</template>
</el-table-column>
<el-table-column label="等级" width="274">
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
</template>
</el-table-column>
<el-table-column label="经营范围" >
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
</template>
</el-table-column>
</el-table>
<div class="apt_stan_content_text_box">·建筑工程是指各类结构形式的民用建筑工程、工业建筑工程、构筑物工程以及相配套的道路、通信、管网管线等设施工程。工程内容包括地基与基础、主体结构、建筑屋面、装修装饰、建筑幕墙、附建人防工程以及给水排水及供暖、通风与空调、电气、消防、智能化、防雷等配套工程;</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
tableData:[],
activeIndex:0,
list:['建筑业企业资质','工程监理','工程设计','工程勘察','工程造价咨询'],
options: [
{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}
],
value: ''
}
},
}
</script>
<style lang="scss" scoped>
.apt_stan_header{
border-radius: 0px 0px 4px 4px;
display: flex;
padding: 16px;
background: #FFFFFF;
.apt_stan_header_span{
cursor: pointer;
font-size: 14px;
color: #3D3D3D;
height: 32px;
border-radius: 4px;
padding: 5px 12px;
margin-right: 12px;
display: inline-block;
background: #F3F4F5;
}
.active_span{
background: #F6F9FC;
color: #0081FF;
}
}
.apt_stan_content{
margin-top: 16px;
background: #FFFFFF;
border-radius: 4px 4px 0px 0px;
.apt_stan_content_header{
padding: 16px;
border-width: 0px 0px 1px 0px;
border-style: solid;
border-color: #EEEEEE;
}
::v-deep .el-input__inner{
border: none;
}
.apt_stan_content_text_box{
border-radius: 0px 0px 4px 4px;
padding: 16px;
background: #FFFFFF;
border: 1px solid #E6EAF1;
color: #3D3D3D;
font-size: 12px;
margin-top: 16px;
}
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<div class="search_result_box">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
class="table-item1 fixed-table" border highlight-current-row>
<el-table-column type="index" label="序号" fixed width="60">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="表格名称" >
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
</template>
</el-table-column>
<el-table-column label="查询时间" width="189">
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
</template>
</el-table-column>
<el-table-column label="操作" width="154">
<template slot-scope="scope">
{{scope.row.bondBalance||"--"}}
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</template>
<script>
export default {
data(){
return{
tableData:[],
total: 0,
pageNum: 1,
}
},
methods:{
handleCurrentChange(pageNum) {
this.pageNum = pageNum;
},
}
}
</script>
<style lang="scss" scoped>
.search_result_box{
background: #ffffff;
padding: 16px;
.el-pagination{
display: flex;
justify-content: end;
padding: 0;
margin-right: -5px;
margin-top: 16px;
}
}
</style>
\ No newline at end of file
......@@ -293,6 +293,11 @@
{{scope.row.legalPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="备注说明" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="考察项目" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
......
<template>
<!--供应商考评-->
<!--供应商处置-->
<div class="supplier">
<div class="search-supplier">
<div class="title_wrap i">
<div class="enterprise_title">
供应商考评
供应商处置
</div>
</div>
</div>
......
......@@ -13,28 +13,26 @@
<el-input v-model="formdata.user" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
:options="options"></el-cascader>
:options="addressList" :collapse-tags="true"
:props="provienceprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="资质等级">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="专业类别">
......@@ -46,21 +44,18 @@
</el-row>
<el-row>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
......@@ -270,6 +265,8 @@
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import { getDicts } from "@/api/system/dict/data";
export default {
name: 'laborSubcontracting',
components:{skeleton},
......@@ -277,6 +274,18 @@
return{
encodeStr,
formdata:{},
addressList:[],
arealist:[],
creditlevel:[],
customstate:[],
credential:[],
paytaxtype:[],
taxrate:[],
provienceprops:{
checkStrictly:true,
multiple:true,
value:'id',
},
options: [
{
value: 'zhinan',
......@@ -488,10 +497,52 @@
}
},
created() {
this.init()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
})
//供应商状态
getDicts('custom_state').then(res=>{
this.customstate = res.data
})
//纳税人身份
getDicts('paytaxtype').then(res=>{
this.paytaxtype = res.data
})
//纳税人税率
getDicts('taxrate').then(res=>{
this.taxrate = res.data
})
//资质等级
getDicts('credential').then(res=>{
this.credential = res.data
})
this.dataRegion()
},
handleCurrentChange(){
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
}
})
}
})
this.addressList = addrs;
},
setHeaderRow() {
return "owner-table-list-header";
......
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