Commit 3ff79dda authored by 施翔轲's avatar 施翔轲

定时更新咨询机构经营范围+更新咨询机构管理相关内容

parent fb0d5fde
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
......@@ -5,23 +5,19 @@ 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.bo.*;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
/**
* 咨询机构管理控制层
......@@ -65,10 +61,26 @@ public class AdvisoryBodyManageController extends BaseController {
}
/**
* 根据项目主键查询项目详情
* 获取项目详情
*/
@GetMapping("/getProjectDetail")
public R<ProjectDetailVo> getProjectDetail(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(AddAdvisoryBodyBo addAdvisoryBodyBo) {
return toAjax(advisoryBodyService.addAdvisoryBody(addAdvisoryBodyBo));
}
}
\ No newline at end of file
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 java.io.Serializable;
import java.util.Date;
......@@ -11,8 +13,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;
......@@ -61,20 +64,4 @@ public class AdvisoryBodyProject implements Serializable {
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
}
package com.dsk.cscec.domain;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
......@@ -11,9 +13,10 @@ import java.util.Date;
* @author sxk
* @since 2023-12-10 15:34:49
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class DProject implements Serializable {
private static final long serialVersionUID = -39953154592938442L;
public class DProject extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目主键
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
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;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
}
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
......
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;
......@@ -22,11 +23,15 @@ public class ProjectDetailVo extends DProject {
*/
private AdvisoryBody advisoryBody;
/**
* 法定代表人
* 法定代表人
*/
private String corporatePerson;
/**
* 注册地址
*/
private String regAddress;
/**
* 项目信息
*/
private AdvisoryBodyProject advisoryBodyProject;
}
......@@ -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();
}
......@@ -9,10 +9,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 +24,11 @@ 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.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -100,5 +106,83 @@ 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) {
//企业名称完全匹配上,则直接返回给前端
if (advisoryBodyName.equals(companyData.get("name"))) {
AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo();
advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
advisoryBodyExistVo.setAdvisoryBodyName(MapUtils.getString(companyData, "name"));
advisoryBodyExistVo.setBusinessScope(MapUtils.getString(companyData, "businessScope"));
advisoryBodyExistVo.setIsNewAdvisoryBody(true);
break;
}
}
//查不到则抛异常
throw new ServiceException("咨询机构不存在");
}
}
return null;
}
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
//如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
newAdvisoryBody.setCreateTime(new Date());
baseMapper.insert(newAdvisoryBody);
}
return advisoryBodyProjectMapper.insert(BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class));
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Override
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);
}
}
}
}
......@@ -194,6 +194,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;
}
}
......
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