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