22 changed files with 1013 additions and 103 deletions
@ -0,0 +1,45 @@ |
|||
package com.research.web.controller.client.project; |
|||
|
|||
import com.github.pagehelper.PageInfo; |
|||
import com.research.common.core.domain.JsonResponse; |
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
import com.research.system.service.ClientPrjProjInfoService; |
|||
import io.swagger.annotations.Api; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
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; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.web.controller.client.tenant |
|||
* @Date 2025/8/11 10:54 |
|||
* @description: |
|||
*/ |
|||
@Slf4j |
|||
@Api(tags = "填报端登录") |
|||
@RestController |
|||
@RequestMapping("/project") |
|||
public class ClientPrjProjInfoController { |
|||
|
|||
@Resource |
|||
private ClientPrjProjInfoService clientPrjProjInfoService; |
|||
|
|||
@PostMapping("/infor/upd") |
|||
public JsonResponse<Integer> aduit(@RequestBody @Validated ClientPrjProjInfoDto.Aduit dto){ |
|||
clientPrjProjInfoService.aduit(dto); |
|||
return JsonResponse.ok(); |
|||
|
|||
} |
|||
|
|||
@PostMapping("/infor/query") |
|||
public JsonResponse<PageInfo<ClientPrjProjInfoVo.Result>> query(){ |
|||
return JsonResponse.ok(new PageInfo<>(clientPrjProjInfoService.query())); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,76 @@ |
|||
package com.research.web.controller.client.project; |
|||
|
|||
import com.github.pagehelper.PageHelper; |
|||
import com.github.pagehelper.PageInfo; |
|||
import com.research.common.core.domain.BaseDto; |
|||
import com.research.common.core.domain.JsonResponse; |
|||
import com.research.system.domain.dto.ClientPrjProOrgDto; |
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import com.research.system.domain.dto.CommonDto; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
import com.research.system.service.CooperatorService; |
|||
import io.swagger.annotations.Api; |
|||
import liquibase.pro.packaged.J; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
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 org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import javax.annotation.Resource; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.web.controller.client.project |
|||
* @Date 2025/8/11 13:53 |
|||
* @description: |
|||
*/ |
|||
@Slf4j |
|||
@Api(tags = "填报端登录") |
|||
@RestController |
|||
@RequestMapping("/cooperator") |
|||
public class CooperatorController { |
|||
|
|||
@Resource |
|||
private CooperatorService cooperatorService; |
|||
|
|||
@PostMapping("/query") |
|||
public JsonResponse<PageInfo<ClientPrjProjInfoVo.OrgVo>> query(@RequestBody @Validated BaseDto<ClientPrjProOrgDto.Query> dto){ |
|||
PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); |
|||
return JsonResponse.ok(new PageInfo<>(cooperatorService.query(dto.getParam()))); |
|||
} |
|||
@PostMapping("/add") |
|||
public JsonResponse<Integer> add(@RequestBody @Validated ClientPrjProjInfoDto.OrgDto dto){ |
|||
cooperatorService.add(dto); |
|||
return JsonResponse.ok(); |
|||
} |
|||
@PostMapping("/upd") |
|||
public JsonResponse<Integer> upd(@RequestBody @Validated ClientPrjProjInfoDto.OrgDto dto){ |
|||
cooperatorService.update(dto); |
|||
return JsonResponse.ok(); |
|||
} |
|||
@PostMapping("/del") |
|||
public JsonResponse<Integer> del(@RequestBody @Validated CommonDto.DelDto dto){ |
|||
cooperatorService.delete(dto); |
|||
return JsonResponse.ok(); |
|||
} |
|||
@PostMapping("/export") |
|||
public JsonResponse<Integer> exportOrg(HttpServletResponse response, @RequestBody @Validated ClientPrjProOrgDto.Query dto){ |
|||
cooperatorService.exportOrg(response, dto); |
|||
return JsonResponse.ok(); |
|||
} |
|||
@PostMapping("/import") |
|||
public JsonResponse<Integer> importOrg(MultipartFile file){ |
|||
cooperatorService.importOrg(file); |
|||
return JsonResponse.ok(); |
|||
} |
|||
|
|||
@PostMapping("/template") |
|||
public JsonResponse<String> template(){ |
|||
return JsonResponse.ok(cooperatorService.template()); |
|||
} |
|||
} |
@ -0,0 +1,10 @@ |
|||
package com.research.web.controller.client.project; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.web.controller.tenant |
|||
* @Date 2025/8/11 15:44 |
|||
* @description: |
|||
*/ |
|||
public class GroupController { |
|||
} |
@ -1,19 +0,0 @@ |
|||
package com.research.web.controller.client.tenant; |
|||
|
|||
import io.swagger.annotations.Api; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.web.controller.client.tenant |
|||
* @Date 2025/8/11 10:54 |
|||
* @description: |
|||
*/ |
|||
@Slf4j |
|||
@Api(tags = "填报端登录") |
|||
@RestController |
|||
@RequestMapping("/project") |
|||
public class TmsTenantController { |
|||
} |
@ -0,0 +1,25 @@ |
|||
package com.research.system.domain.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.domain.dto |
|||
* @Date 2025/8/11 10:57 |
|||
* @description: |
|||
*/ |
|||
public class ClientPrjProOrgDto { |
|||
|
|||
@Data |
|||
public static class Query { |
|||
private String category; |
|||
private String orgName; |
|||
private String orgLeader; |
|||
private String orgLeaderPhone; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,119 @@ |
|||
package com.research.system.domain.dto; |
|||
|
|||
import com.research.system.domain.po.PrjProjDocument; |
|||
import com.research.system.domain.po.PrjProjInfo; |
|||
import com.research.system.domain.po.PrjProjOrg; |
|||
import com.sun.org.apache.xpath.internal.operations.Or; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.domain.dto |
|||
* @Date 2025/8/11 10:57 |
|||
* @description: |
|||
*/ |
|||
public class ClientPrjProjInfoDto { |
|||
|
|||
@Data |
|||
public static class Aduit { |
|||
@NotNull(message = "ID不能为空") |
|||
private Long id; |
|||
|
|||
private Long tenantId; |
|||
|
|||
private String title; |
|||
|
|||
private String titleEn; |
|||
|
|||
private String code; |
|||
|
|||
private String org; |
|||
|
|||
private String leader; |
|||
|
|||
private String leaderPhone; |
|||
|
|||
private String leaderEmail; |
|||
|
|||
private Date beginTime; |
|||
|
|||
private Date endTime; |
|||
|
|||
private String intro; |
|||
|
|||
private String fundingCategory; |
|||
|
|||
private String fundingCategorySub; |
|||
|
|||
private String fundingCategoryDeputy; |
|||
|
|||
private String funding; |
|||
|
|||
private String projSource; |
|||
|
|||
private String projCatgegory; |
|||
|
|||
private String createBy; |
|||
|
|||
private Date createTime; |
|||
|
|||
private String updateBy; |
|||
|
|||
private Date updateTime; |
|||
|
|||
private String remark; |
|||
|
|||
private List<OrgDto> PrjProjOrgList; |
|||
|
|||
private List<DocumentDto> PrjProjDocumentList; |
|||
|
|||
} |
|||
|
|||
@Data |
|||
public static class OrgDto{ |
|||
private Long id; |
|||
|
|||
private Long projId; |
|||
|
|||
private Byte category; |
|||
|
|||
private Integer sort; |
|||
|
|||
private String orgName; |
|||
|
|||
private String orgLeader; |
|||
|
|||
private String orgLeaderPhone; |
|||
|
|||
private String orgLeaderEmail; |
|||
|
|||
private String projRespIntro; |
|||
private String orgIntro; |
|||
} |
|||
|
|||
@Data |
|||
public static class DocumentDto{ |
|||
private Long id; |
|||
|
|||
private Long projId; |
|||
|
|||
private String docName; |
|||
|
|||
private String docType; |
|||
|
|||
private String docVisitPath; |
|||
|
|||
private String docPreviewImg; |
|||
|
|||
private String docLabels; |
|||
|
|||
private String uploader; |
|||
|
|||
private String uploadTime; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.research.system.domain.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Size; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.domain.dto |
|||
* @Date 2025/8/11 13:56 |
|||
* @description: |
|||
*/ |
|||
public class CommonDto { |
|||
|
|||
@Data |
|||
public static class IdDto{ |
|||
private Long id; |
|||
} |
|||
|
|||
@Data |
|||
public static class DelDto{ |
|||
@NotNull(message = "ID不能为空") |
|||
@Size(min = 1, message = "ID不能为空") |
|||
private List<Long> idList; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,118 @@ |
|||
package com.research.system.domain.vo; |
|||
|
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.domain.vo |
|||
* @Date 2025/8/11 11:04 |
|||
* @description: |
|||
*/ |
|||
public class ClientPrjProjInfoVo { |
|||
|
|||
@Data |
|||
public static class Result{ |
|||
private Long id; |
|||
|
|||
private Long tenantId; |
|||
|
|||
private String title; |
|||
|
|||
private String titleEn; |
|||
|
|||
private String code; |
|||
|
|||
private String org; |
|||
|
|||
private String leader; |
|||
|
|||
private String leaderPhone; |
|||
|
|||
private String leaderEmail; |
|||
|
|||
private Date beginTime; |
|||
|
|||
private Date endTime; |
|||
|
|||
private String intro; |
|||
|
|||
private String fundingCategory; |
|||
|
|||
private String fundingCategorySub; |
|||
|
|||
private String fundingCategoryDeputy; |
|||
|
|||
private String funding; |
|||
|
|||
private String projSource; |
|||
|
|||
private String projCatgegory; |
|||
|
|||
private String createBy; |
|||
|
|||
private Date createTime; |
|||
|
|||
private String updateBy; |
|||
|
|||
private Date updateTime; |
|||
|
|||
private String remark; |
|||
|
|||
private List<OrgVo> PrjProjOrgList; |
|||
|
|||
private List<DocumentVo> PrjProjDocumentList; |
|||
|
|||
} |
|||
|
|||
@Data |
|||
public static class OrgVo{ |
|||
private Long id; |
|||
|
|||
private String title; |
|||
|
|||
private Long projId; |
|||
|
|||
private Byte category; |
|||
|
|||
private Integer sort; |
|||
|
|||
private String orgName; |
|||
|
|||
private String orgLeader; |
|||
|
|||
private String orgLeaderPhone; |
|||
|
|||
private String orgLeaderEmail; |
|||
|
|||
private String projRespIntro; |
|||
private String orgIntro; |
|||
private String createBy; |
|||
private Date createTime; |
|||
} |
|||
|
|||
@Data |
|||
public static class DocumentVo{ |
|||
private Long id; |
|||
|
|||
private Long projId; |
|||
|
|||
private String docName; |
|||
|
|||
private String docType; |
|||
|
|||
private String docVisitPath; |
|||
|
|||
private String docPreviewImg; |
|||
|
|||
private String docLabels; |
|||
|
|||
private String uploader; |
|||
|
|||
private String uploadTime; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,18 @@ |
|||
package com.research.system.persist.dao; |
|||
|
|||
import com.research.system.domain.dto.ClientPrjProOrgDto; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.persist.dao |
|||
* @Date 2025/8/11 14:31 |
|||
* @description: |
|||
*/ |
|||
public interface ClientPrjProOrgDao { |
|||
|
|||
List<ClientPrjProjInfoVo.OrgVo> query(@Param("dto") ClientPrjProOrgDto.Query dto, @Param("tenantId") Long tenantId); |
|||
} |
@ -0,0 +1,22 @@ |
|||
package com.research.system.service; |
|||
|
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import com.research.system.domain.po.PrjProjInfo; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.service |
|||
* @Date 2025/8/11 10:57 |
|||
* @description: |
|||
*/ |
|||
public interface ClientPrjProjInfoService { |
|||
|
|||
void aduit(ClientPrjProjInfoDto.Aduit dto); |
|||
|
|||
List<ClientPrjProjInfoVo.Result> query(); |
|||
|
|||
PrjProjInfo getProInfoByTenantId(Long tenantId); |
|||
} |
@ -0,0 +1,33 @@ |
|||
package com.research.system.service; |
|||
|
|||
import com.research.system.domain.dto.ClientPrjProOrgDto; |
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import com.research.system.domain.dto.CommonDto; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.service |
|||
* @Date 2025/8/11 13:53 |
|||
* @description: |
|||
*/ |
|||
public interface CooperatorService { |
|||
|
|||
List<ClientPrjProjInfoVo.OrgVo> query(ClientPrjProOrgDto.Query dto); |
|||
|
|||
void add(ClientPrjProjInfoDto.OrgDto dto); |
|||
|
|||
void update(ClientPrjProjInfoDto.OrgDto dto); |
|||
|
|||
void delete(CommonDto.DelDto dto); |
|||
|
|||
void exportOrg(HttpServletResponse response, ClientPrjProOrgDto.Query dto); |
|||
|
|||
void importOrg(MultipartFile file); |
|||
|
|||
String template(); |
|||
} |
@ -0,0 +1,13 @@ |
|||
package com.research.system.service; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.service |
|||
* @Date 2025/8/11 15:44 |
|||
* @description: |
|||
*/ |
|||
public interface GroupService { |
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,127 @@ |
|||
package com.research.system.service.impl; |
|||
|
|||
import cn.hutool.core.bean.BeanUtil; |
|||
import cn.hutool.core.collection.CollUtil; |
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import cn.hutool.core.util.IdUtil; |
|||
import com.research.common.utils.SecurityUtils; |
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import com.research.system.domain.po.*; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
import com.research.system.persist.mapper.PrjProjDocumentMapper; |
|||
import com.research.system.persist.mapper.PrjProjInfoMapper; |
|||
import com.research.system.persist.mapper.PrjProjOrgMapper; |
|||
import com.research.system.service.ClientPrjProjInfoService; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.service.impl |
|||
* @Date 2025/8/11 11:05 |
|||
* @description: |
|||
*/ |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|||
public class ClientPrjProjInfoServiceImpl implements ClientPrjProjInfoService { |
|||
|
|||
@Resource |
|||
private PrjProjInfoMapper prjProjInfoMapper; |
|||
@Resource |
|||
private PrjProjOrgMapper prjProjOrgMapper; |
|||
@Resource |
|||
private PrjProjDocumentMapper prjProjDocumentMapper; |
|||
|
|||
@Override |
|||
public void aduit(ClientPrjProjInfoDto.Aduit dto) { |
|||
PrjProjInfo prjProjInfo = BeanUtil.copyProperties(dto, PrjProjInfo.class); |
|||
prjProjInfoMapper.updateByPrimaryKeySelective(prjProjInfo); |
|||
|
|||
//删除文书
|
|||
PrjProjDocumentExample prjProjDocumentExample = new PrjProjDocumentExample(); |
|||
prjProjDocumentExample.createCriteria().andProjIdEqualTo(dto.getId()); |
|||
List<PrjProjDocument> prjProjDocuments = prjProjDocumentMapper.selectByExample(prjProjDocumentExample); |
|||
if (CollUtil.isNotEmpty(prjProjDocuments)) { |
|||
for (PrjProjDocument prjProjDocument : prjProjDocuments) { |
|||
prjProjDocumentMapper.deleteByPrimaryKey(prjProjDocument.getId()); |
|||
} |
|||
} |
|||
//删除合作单位
|
|||
PrjProjOrgExample prjProjOrgExample = new PrjProjOrgExample(); |
|||
prjProjOrgExample.createCriteria().andProjIdEqualTo(dto.getId()); |
|||
List<PrjProjOrg> prjProjOrgs = prjProjOrgMapper.selectByExample(prjProjOrgExample); |
|||
if (CollUtil.isNotEmpty(prjProjOrgs)) { |
|||
for (PrjProjOrg prjProjOrg : prjProjOrgs) { |
|||
prjProjOrgMapper.deleteByPrimaryKey(prjProjOrg.getId()); |
|||
} |
|||
} |
|||
|
|||
//添加文书
|
|||
if (CollUtil.isNotEmpty(dto.getPrjProjDocumentList())) { |
|||
List<PrjProjDocument> prjProjDocuments1 = BeanUtil.copyToList(dto.getPrjProjDocumentList(), PrjProjDocument.class); |
|||
for (PrjProjDocument document : prjProjDocuments1) { |
|||
document.setId(IdUtil.getSnowflake().nextId()); |
|||
document.setProjId(dto.getId()); |
|||
document.setCreateBy(SecurityUtils.getUsername()); |
|||
document.setCreateTime(new Date()); |
|||
prjProjDocumentMapper.insertSelective(document); |
|||
} |
|||
} |
|||
|
|||
//添加合作单位
|
|||
if (CollUtil.isNotEmpty(dto.getPrjProjOrgList())) { |
|||
List<PrjProjOrg> prjProjOrgs1 = BeanUtil.copyToList(dto.getPrjProjOrgList(), PrjProjOrg.class); |
|||
for (PrjProjOrg prjProjOrg : prjProjOrgs1) { |
|||
prjProjOrg.setId(IdUtil.getSnowflake().nextId()); |
|||
prjProjOrg.setProjId(dto.getId()); |
|||
prjProjOrg.setCreateBy(SecurityUtils.getUsername()); |
|||
prjProjOrg.setCreateTime(new Date()); |
|||
prjProjOrgMapper.insertSelective(prjProjOrg); |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
@Override |
|||
public List<ClientPrjProjInfoVo.Result> query() { |
|||
List<PrjProjInfo> prjProjInfos = prjProjInfoMapper.selectByExample(new PrjProjInfoExample()); |
|||
if (CollUtil.isNotEmpty(prjProjInfos)) { |
|||
List<ClientPrjProjInfoVo.Result> results = BeanUtil.copyToList(prjProjInfos, ClientPrjProjInfoVo.Result.class); |
|||
for (ClientPrjProjInfoVo.Result result : results) { |
|||
//查询合作单位
|
|||
PrjProjOrgExample prjProjOrgExample = new PrjProjOrgExample(); |
|||
prjProjOrgExample.createCriteria().andProjIdEqualTo(result.getId()); |
|||
List<PrjProjOrg> prjProjOrgs = prjProjOrgMapper.selectByExample(prjProjOrgExample); |
|||
if (CollUtil.isNotEmpty(prjProjOrgs)) { |
|||
result.setPrjProjOrgList(BeanUtil.copyToList(prjProjOrgs, ClientPrjProjInfoVo.OrgVo.class)); |
|||
} |
|||
|
|||
//查询文书
|
|||
PrjProjDocumentExample prjProjDocumentExample = new PrjProjDocumentExample(); |
|||
prjProjDocumentExample.createCriteria().andProjIdEqualTo(result.getId()); |
|||
List<PrjProjDocument> prjProjDocuments = prjProjDocumentMapper.selectByExample(prjProjDocumentExample); |
|||
if (CollUtil.isNotEmpty(prjProjDocuments)) { |
|||
result.setPrjProjDocumentList(BeanUtil.copyToList(prjProjDocuments, ClientPrjProjInfoVo.DocumentVo.class)); |
|||
} |
|||
} |
|||
return results; |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public PrjProjInfo getProInfoByTenantId(Long tenantId) { |
|||
PrjProjInfoExample prjProjInfoExample = new PrjProjInfoExample(); |
|||
prjProjInfoExample.createCriteria().andTenantIdEqualTo(tenantId); |
|||
List<PrjProjInfo> prjProjInfos = prjProjInfoMapper.selectByExample(prjProjInfoExample); |
|||
if (CollUtil.isNotEmpty(prjProjInfos)) { |
|||
return prjProjInfos.get(0); |
|||
} |
|||
return null; |
|||
} |
|||
} |
@ -0,0 +1,177 @@ |
|||
package com.research.system.service.impl; |
|||
|
|||
import cn.hutool.core.bean.BeanUtil; |
|||
import cn.hutool.core.collection.CollUtil; |
|||
import cn.hutool.core.date.DateUtil; |
|||
import cn.hutool.core.io.IoUtil; |
|||
import cn.hutool.core.util.IdUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import cn.hutool.poi.excel.BigExcelWriter; |
|||
import cn.hutool.poi.excel.ExcelUtil; |
|||
import com.research.common.exception.base.BaseException; |
|||
import com.research.common.utils.SecurityUtils; |
|||
import com.research.system.domain.dto.ClientPrjProOrgDto; |
|||
import com.research.system.domain.dto.ClientPrjProjInfoDto; |
|||
import com.research.system.domain.dto.CommonDto; |
|||
import com.research.system.domain.po.PrjProjInfo; |
|||
import com.research.system.domain.po.PrjProjOrg; |
|||
import com.research.system.domain.po.PrjProjOrgExample; |
|||
import com.research.system.domain.vo.ClientPrjProjInfoVo; |
|||
import com.research.system.persist.dao.ClientPrjProOrgDao; |
|||
import com.research.system.persist.mapper.PrjProjOrgMapper; |
|||
import com.research.system.service.ClientPrjProjInfoService; |
|||
import com.research.system.service.CooperatorService; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import javax.annotation.Resource; |
|||
import javax.servlet.ServletOutputStream; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.io.IOException; |
|||
import java.util.ArrayList; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.research.system.service.impl |
|||
* @Date 2025/8/11 13:58 |
|||
* @description: |
|||
*/ |
|||
@Service |
|||
public class CooperatorServiceImpl implements CooperatorService { |
|||
|
|||
@Resource |
|||
private PrjProjOrgMapper prjProjOrgMapper; |
|||
@Resource |
|||
private ClientPrjProOrgDao prjProOrgDao; |
|||
@Resource |
|||
private ClientPrjProjInfoService clientPrjProjInfoService; |
|||
|
|||
@Override |
|||
public List<ClientPrjProjInfoVo.OrgVo> query(ClientPrjProOrgDto.Query dto) { |
|||
return prjProOrgDao.query(dto, SecurityUtils.isAdmin(SecurityUtils.getUserId()) ? null : SecurityUtils.getTenantId()); |
|||
} |
|||
|
|||
@Override |
|||
public void add(ClientPrjProjInfoDto.OrgDto dto) { |
|||
|
|||
//根据租户查询项目
|
|||
PrjProjInfo proInfoByTenantId = clientPrjProjInfoService.getProInfoByTenantId(SecurityUtils.getTenantId()); |
|||
if (proInfoByTenantId == null) { |
|||
throw new BaseException("未查询到租户"); |
|||
} |
|||
|
|||
PrjProjOrg prjProjOrg = BeanUtil.copyProperties(dto, PrjProjOrg.class); |
|||
prjProjOrg.setId(IdUtil.getSnowflakeNextId()); |
|||
prjProjOrg.setProjId(proInfoByTenantId.getId()); |
|||
prjProjOrg.setCreateBy(SecurityUtils.getUsername()); |
|||
prjProjOrg.setCreateTime(new Date()); |
|||
prjProjOrgMapper.insertSelective(prjProjOrg); |
|||
} |
|||
|
|||
@Override |
|||
public void update(ClientPrjProjInfoDto.OrgDto dto) { |
|||
PrjProjOrg prjProjOrg = BeanUtil.copyProperties(dto, PrjProjOrg.class); |
|||
prjProjOrg.setProjId(SecurityUtils.getTenantId()); |
|||
prjProjOrg.setUpdateBy(SecurityUtils.getUsername()); |
|||
prjProjOrg.setUpdateTime(new Date()); |
|||
prjProjOrgMapper.updateByPrimaryKeyWithBLOBs(prjProjOrg); |
|||
} |
|||
|
|||
@Override |
|||
public void delete(CommonDto.DelDto dto) { |
|||
PrjProjOrgExample prjProjOrgExample = new PrjProjOrgExample(); |
|||
prjProjOrgExample.createCriteria().andIdIn(dto.getIdList()); |
|||
List<PrjProjOrg> prjProjOrgs = prjProjOrgMapper.selectByExample(prjProjOrgExample); |
|||
if (CollUtil.isNotEmpty(prjProjOrgs)) { |
|||
for (PrjProjOrg prjProjOrg : prjProjOrgs) { |
|||
prjProjOrg.setDelFlag((byte) 1); |
|||
prjProjOrgMapper.updateByPrimaryKeyWithBLOBs(prjProjOrg); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void exportOrg(HttpServletResponse response, ClientPrjProOrgDto.Query dto) { |
|||
List<ClientPrjProjInfoVo.OrgVo> query = query(dto); |
|||
if (CollUtil.isEmpty(query)) { |
|||
throw new BaseException("暂无数据"); |
|||
} |
|||
BigExcelWriter writer = new BigExcelWriter(); |
|||
List<String> header = new ArrayList<>(); |
|||
header.add("项目名称"); |
|||
header.add("单位名称"); |
|||
header.add("单位负责人"); |
|||
header.add("负责人电话"); |
|||
header.add("项目中承担任务简介"); |
|||
header.add("单位简介"); |
|||
writer.writeHeadRow(header); |
|||
int row = 0; |
|||
for (int i = 0; i < query.size(); i++) { |
|||
row += 1; |
|||
writer.writeCellValue(0, row, query.get(i).getProjId()); |
|||
writer.writeCellValue(1, row, query.get(i).getOrgName()); |
|||
writer.writeCellValue(2, row, query.get(i).getOrgLeader()); |
|||
writer.writeCellValue(3, row, query.get(i).getOrgLeaderPhone()); |
|||
writer.writeCellValue(4, row, query.get(i).getProjRespIntro()); |
|||
writer.writeCellValue(5, row, query.get(i).getProjRespIntro()); |
|||
} |
|||
|
|||
|
|||
String filename = StrUtil.format("合作单位-{}.xlsx", DateUtil.date().toString("yyyyMMdd")); |
|||
|
|||
//response为HttpServletResponse对象
|
|||
response.setContentType("application/vnd.ms-excel;charset=utf-8"); |
|||
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|||
response.setHeader("Content-Disposition", "attachment;filename=" + filename); |
|||
ServletOutputStream out = null; |
|||
try { |
|||
out = response.getOutputStream(); |
|||
writer.flush(out); |
|||
} catch ( |
|||
IOException e) { |
|||
e.printStackTrace(); |
|||
} finally { |
|||
// 关闭writer,释放内存
|
|||
writer.close(); |
|||
//此处记得关闭输出Servlet流
|
|||
IoUtil.close(out); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void importOrg(MultipartFile file) { |
|||
|
|||
PrjProjOrgExample prjProjOrgExample = new PrjProjOrgExample(); |
|||
PrjProjOrg prjProjOrg1 = new PrjProjOrg(); |
|||
prjProjOrg1.setDelFlag((byte) 1); |
|||
prjProjOrgMapper.updateByExampleSelective(prjProjOrg1, prjProjOrgExample); |
|||
|
|||
try { |
|||
ExcelUtil.readBySax(file.getInputStream(), 0, (sheetIndex, rowIndex, rowList) -> { |
|||
if (rowIndex < 1) { |
|||
return; |
|||
} |
|||
PrjProjOrg prjProjOrg = new PrjProjOrg(); |
|||
prjProjOrg.setId(IdUtil.getSnowflakeNextId()); |
|||
prjProjOrg.setProjId(SecurityUtils.getTenantId()); |
|||
prjProjOrg.setOrgName(rowList.get(0).toString()); |
|||
prjProjOrg.setOrgLeader(rowList.get(1).toString()); |
|||
prjProjOrg.setOrgLeaderPhone(rowList.get(2).toString()); |
|||
prjProjOrg.setProjRespIntro(rowList.get(3).toString()); |
|||
prjProjOrg.setOrgIntro(rowList.get(4).toString()); |
|||
prjProjOrg.setCreateBy(SecurityUtils.getUsername()); |
|||
prjProjOrg.setCreateTime(new Date()); |
|||
prjProjOrgMapper.insertSelective(prjProjOrg); |
|||
}); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public String template() { |
|||
return "/profile/a.pdf"; |
|||
} |
|||
} |
@ -0,0 +1,44 @@ |
|||
<?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.research.system.persist.dao.ClientPrjProOrgDao"> |
|||
|
|||
<select id="query" resultType="com.research.system.domain.vo.ClientPrjProjInfoVo$OrgVo"> |
|||
select |
|||
o.proj_id as projId, |
|||
o.id, |
|||
o.category, |
|||
o.sort, |
|||
o.org_name as orgName, |
|||
o.org_leader as orgLeader, |
|||
o.org_leader_phone as orgLeaderPhone, |
|||
o.org_leader_email as orgLeaderEmail, |
|||
o.proj_resp_intro as projRespIntro, |
|||
o.org_intro as orgIntro, |
|||
p.title, |
|||
o.create_by as createBy, |
|||
o.create_time as createTime |
|||
from |
|||
prj_proj_org o |
|||
left join |
|||
prj_proj_info p on o.proj_id = p.id |
|||
<where> |
|||
o.del_flag = 0 |
|||
<if test="tenantId != null"> |
|||
and p.tenant_id = #{tenantId} |
|||
</if> |
|||
<if test="dto.category != null and dto.category != ''"> |
|||
and o.category = #{dto.category} |
|||
</if> |
|||
<if test="dto.orgName != null and dto.orgName != ''"> |
|||
and o.org_name like concat('%',#{dto.orgName},'%') |
|||
</if> |
|||
<if test="dto.orgLeader != null and dto.orgLeader != ''"> |
|||
and o.org_leader like concat('%',#{dto.orgLeader},'%') |
|||
</if> |
|||
<if test="dto.orgLeaderPhone != null and dto.orgLeaderPhone != ''"> |
|||
and o.org_leader_phone like concat('%',#{dto.orgLeaderPhone},'%') |
|||
</if> |
|||
</where> |
|||
|
|||
</select> |
|||
</mapper> |
Loading…
Reference in new issue