diff --git a/research-admin/src/main/java/com/research/web/controller/client/project/ClientPrjProjInfoController.java b/research-admin/src/main/java/com/research/web/controller/client/project/ClientPrjProjInfoController.java new file mode 100644 index 00000000..ab912026 --- /dev/null +++ b/research-admin/src/main/java/com/research/web/controller/client/project/ClientPrjProjInfoController.java @@ -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 aduit(@RequestBody @Validated ClientPrjProjInfoDto.Aduit dto){ + clientPrjProjInfoService.aduit(dto); + return JsonResponse.ok(); + + } + + @PostMapping("/infor/query") + public JsonResponse> query(){ + return JsonResponse.ok(new PageInfo<>(clientPrjProjInfoService.query())); + } + +} diff --git a/research-admin/src/main/java/com/research/web/controller/client/project/CooperatorController.java b/research-admin/src/main/java/com/research/web/controller/client/project/CooperatorController.java new file mode 100644 index 00000000..fdf9d7fd --- /dev/null +++ b/research-admin/src/main/java/com/research/web/controller/client/project/CooperatorController.java @@ -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> query(@RequestBody @Validated BaseDto dto){ + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + return JsonResponse.ok(new PageInfo<>(cooperatorService.query(dto.getParam()))); + } + @PostMapping("/add") + public JsonResponse add(@RequestBody @Validated ClientPrjProjInfoDto.OrgDto dto){ + cooperatorService.add(dto); + return JsonResponse.ok(); + } + @PostMapping("/upd") + public JsonResponse upd(@RequestBody @Validated ClientPrjProjInfoDto.OrgDto dto){ + cooperatorService.update(dto); + return JsonResponse.ok(); + } + @PostMapping("/del") + public JsonResponse del(@RequestBody @Validated CommonDto.DelDto dto){ + cooperatorService.delete(dto); + return JsonResponse.ok(); + } + @PostMapping("/export") + public JsonResponse exportOrg(HttpServletResponse response, @RequestBody @Validated ClientPrjProOrgDto.Query dto){ + cooperatorService.exportOrg(response, dto); + return JsonResponse.ok(); + } + @PostMapping("/import") + public JsonResponse importOrg(MultipartFile file){ + cooperatorService.importOrg(file); + return JsonResponse.ok(); + } + + @PostMapping("/template") + public JsonResponse template(){ + return JsonResponse.ok(cooperatorService.template()); + } +} diff --git a/research-admin/src/main/java/com/research/web/controller/client/project/GroupController.java b/research-admin/src/main/java/com/research/web/controller/client/project/GroupController.java new file mode 100644 index 00000000..7cc0cccf --- /dev/null +++ b/research-admin/src/main/java/com/research/web/controller/client/project/GroupController.java @@ -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 { +} diff --git a/research-admin/src/main/java/com/research/web/controller/client/tenant/TmsTenantController.java b/research-admin/src/main/java/com/research/web/controller/client/tenant/TmsTenantController.java deleted file mode 100644 index fea0cbb2..00000000 --- a/research-admin/src/main/java/com/research/web/controller/client/tenant/TmsTenantController.java +++ /dev/null @@ -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 { -} diff --git a/research-framework/src/main/java/com/research/framework/config/ApplicationConfig.java b/research-framework/src/main/java/com/research/framework/config/ApplicationConfig.java index e07d6b45..6a53546a 100644 --- a/research-framework/src/main/java/com/research/framework/config/ApplicationConfig.java +++ b/research-framework/src/main/java/com/research/framework/config/ApplicationConfig.java @@ -1,6 +1,19 @@ package com.research.framework.config; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.TimeZone; + +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; @@ -23,8 +36,33 @@ public class ApplicationConfig * 时区配置 */ @Bean - public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() - { - return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); + public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() { +// return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); + return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()) + //包装类型Long + .serializerByType(Long.class, ToStringSerializer.instance) + //基本类型long不转换,一般是total之类的字段要用 +// .serializerByType(Long.TYPE, ToStringSerializer.instance) + //日期类型序列化 + .serializerByType(LocalDateTime.class, + new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) + .serializerByType(LocalDate.class, + new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + .serializerByType(LocalTime.class, + new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"))) + //日期类型反序列化 + .deserializerByType(LocalDateTime.class, + new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) + .deserializerByType(LocalDate.class, + new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + .deserializerByType(LocalTime.class, + new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss"))) + .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + //不包含空值 + //.serializationInclusion(JsonInclude.Include.NON_NULL) + //指定日期格式 + .simpleDateFormat("yyyy-MM-dd HH:mm:ss") + //忽略未知字段 + .failOnUnknownProperties(false); } } diff --git a/research-framework/src/main/java/com/research/framework/web/service/SysPermissionService.java b/research-framework/src/main/java/com/research/framework/web/service/SysPermissionService.java index bd9d71a2..17da215d 100644 --- a/research-framework/src/main/java/com/research/framework/web/service/SysPermissionService.java +++ b/research-framework/src/main/java/com/research/framework/web/service/SysPermissionService.java @@ -3,6 +3,8 @@ package com.research.framework.web.service; import java.util.HashSet; import java.util.List; import java.util.Set; + +import com.research.system.domain.vo.TmsLoginUserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -15,12 +17,11 @@ import com.research.system.service.ISysRoleService; /** * 用户权限处理 - * + * * @author research */ @Component -public class SysPermissionService -{ +public class SysPermissionService { @Autowired private ISysRoleService roleService; @@ -29,20 +30,16 @@ public class SysPermissionService /** * 获取角色数据权限 - * + * * @param user 用户信息 * @return 角色权限信息 */ - public Set getRolePermission(SysUser user) - { + public Set getRolePermission(SysUser user) { Set roles = new HashSet(); // 管理员拥有所有权限 - if (user.isAdmin()) - { + if (user.isAdmin()) { roles.add("admin"); - } - else - { + } else { roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); } return roles; @@ -50,39 +47,55 @@ public class SysPermissionService /** * 获取菜单数据权限 - * + * * @param user 用户信息 * @return 菜单权限信息 */ - public Set getMenuPermission(SysUser user) - { + public Set getMenuPermission(SysUser user) { Set perms = new HashSet(); // 管理员拥有所有权限 - if (user.isAdmin()) - { + if (user.isAdmin()) { perms.add("*:*:*"); - } - else - { + } else { List roles = user.getRoles(); - if (!CollectionUtils.isEmpty(roles)) - { + if (!CollectionUtils.isEmpty(roles)) { // 多角色设置permissions属性,以便数据权限匹配权限 - for (SysRole role : roles) - { - if (StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL) && !role.isAdmin()) - { + for (SysRole role : roles) { + if (StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL) && !role.isAdmin()) { Set rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); role.setPermissions(rolePerms); perms.addAll(rolePerms); } } - } - else - { + } else { perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); } } return perms; } + + /** + * 获取菜单数据权限 + * + * @param user 用户信息 + * @return 菜单权限信息 + */ + public Set getMenuPermission(TmsLoginUserVo.DataScoreVo user) { + Set perms = new HashSet(); + // 管理员拥有所有权限 + List roles = user.getRoles(); + if (!CollectionUtils.isEmpty(roles)) { + // 多角色设置permissions属性,以便数据权限匹配权限 + for (SysRole role : roles) { + if (StringUtils.equals(role.getStatus(), UserConstants.ROLE_NORMAL) && !role.isAdmin()) { + Set rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); + role.setPermissions(rolePerms); + perms.addAll(rolePerms); + } + } + } else { + perms.addAll(menuService.selectMenuPermsByUserId(user.getDmsUserId())); + } + return perms; + } } diff --git a/research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java b/research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java index 3fa68e78..c00133ab 100644 --- a/research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java +++ b/research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java @@ -1,9 +1,12 @@ package com.research.framework.web.service; import cn.hutool.core.collection.CollUtil; +import com.research.common.core.domain.entity.SysRole; import com.research.framework.datasource.DataSourceManager; import com.research.framework.datasource.DynamicDataSourceContextHolder; import com.research.system.domain.vo.TmsLoginUserVo; +import com.research.system.mapper.SysRoleMapper; +import com.research.system.service.ISysRoleService; import com.research.system.service.TmsLoginService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,6 +24,8 @@ import com.research.common.utils.StringUtils; import com.research.system.service.ISysUserService; import javax.annotation.Resource; +import java.util.List; +import java.util.Set; /** * 用户验证处理 @@ -44,6 +49,9 @@ public class UserDetailsServiceImpl implements UserDetailsService @Resource private TmsLoginService dmsLoginService; + @Resource + private SysRoleMapper roleMapper; + @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { @@ -92,15 +100,21 @@ public class UserDetailsServiceImpl implements UserDetailsService DynamicDataSourceContextHolder.setDataSourceType(dataScoreVo.getDataSourceKey()); //查询用户密码 SysUser sysUser = userService.selectUserByUserName(dataScoreVo.getUsername()); - //销毁 - DynamicDataSourceContextHolder.clearDataSourceType(); if (sysUser == null) { + DynamicDataSourceContextHolder.clearDataSourceType(); throw new ServiceException(MessageUtils.message("user.not.exists")); } + //查询角色 + List sysRoles = roleMapper.selectRolesByUserName(sysUser.getUserName()); + dataScoreVo.setRoles(sysRoles); + + //销毁 + DynamicDataSourceContextHolder.clearDataSourceType(); + dataScoreVo.setDmsUserNickName(sysUser.getNickName()); dataScoreVo.setPassword(sysUser.getPassword()); passwordService.validate(dataScoreVo); - return createLoginUser(dataScoreVo); + return createLoginUser(dataScoreVo, dataScoreVo.getDataSourceKey()); } public UserDetails createLoginUser(SysUser user) @@ -108,12 +122,16 @@ public class UserDetailsServiceImpl implements UserDetailsService return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user)); } - public UserDetails createLoginUser(TmsLoginUserVo.DataScoreVo user) + public UserDetails createLoginUser(TmsLoginUserVo.DataScoreVo user, String dataSourceKey) { SysUser sysUser = new SysUser(); sysUser.setUserName(user.getUsername()); sysUser.setPassword(user.getPassword()); sysUser.setUserId(user.getDmsUserId()); - return new LoginUser(user.getDmsUserId(), user.getHospitalId(), sysUser, CollUtil.newHashSet(), user.getTenantId() ,user.getScoreId()); + sysUser.setRoles(user.getRoles()); + DynamicDataSourceContextHolder.setDataSourceType(dataSourceKey); + Set menuPermission = permissionService.getMenuPermission(user); + DynamicDataSourceContextHolder.clearDataSourceType(); + return new LoginUser(user.getDmsUserId(), user.getHospitalId(), sysUser, menuPermission, user.getTenantId() ,user.getScoreId()); } } diff --git a/research-system/src/main/java/com/research/system/domain/dto/ClientPrjProOrgDto.java b/research-system/src/main/java/com/research/system/domain/dto/ClientPrjProOrgDto.java new file mode 100644 index 00000000..864f17dc --- /dev/null +++ b/research-system/src/main/java/com/research/system/domain/dto/ClientPrjProOrgDto.java @@ -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; + } + +} diff --git a/research-system/src/main/java/com/research/system/domain/dto/ClientPrjProjInfoDto.java b/research-system/src/main/java/com/research/system/domain/dto/ClientPrjProjInfoDto.java new file mode 100644 index 00000000..66d118f9 --- /dev/null +++ b/research-system/src/main/java/com/research/system/domain/dto/ClientPrjProjInfoDto.java @@ -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 PrjProjOrgList; + + private List 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; + } + +} diff --git a/research-system/src/main/java/com/research/system/domain/dto/CommonDto.java b/research-system/src/main/java/com/research/system/domain/dto/CommonDto.java new file mode 100644 index 00000000..e7120e4d --- /dev/null +++ b/research-system/src/main/java/com/research/system/domain/dto/CommonDto.java @@ -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 idList; + } + +} diff --git a/research-system/src/main/java/com/research/system/domain/po/AchAchievement.java b/research-system/src/main/java/com/research/system/domain/po/AchAchievement.java index b4edb0a1..45d7ab6a 100644 --- a/research-system/src/main/java/com/research/system/domain/po/AchAchievement.java +++ b/research-system/src/main/java/com/research/system/domain/po/AchAchievement.java @@ -42,7 +42,7 @@ public class AchAchievement implements Serializable { private Byte ysktStatus; - private String abstract; + private String abstracts; private String keywords; @@ -218,12 +218,12 @@ public class AchAchievement implements Serializable { this.ysktStatus = ysktStatus; } - public String getAbstract() { - return abstract; + public String getAbstracts() { + return abstracts; } - public void setAbstract(String abstract) { - this.abstract = abstract == null ? null : abstract.trim(); + public void setAbstracts(String abstracts) { + this.abstracts = abstracts == null ? null : abstracts.trim(); } public String getKeywords() { @@ -331,7 +331,7 @@ public class AchAchievement implements Serializable { sb.append(", ysktFunds=").append(ysktFunds); sb.append(", ysktLxpzwh=").append(ysktLxpzwh); sb.append(", ysktStatus=").append(ysktStatus); - sb.append(", abstract=").append(abstract); + sb.append(", abstracts=").append(abstracts); sb.append(", keywords=").append(keywords); sb.append(", paperLink=").append(paperLink); sb.append(", pdfDownloadUrl=").append(pdfDownloadUrl); diff --git a/research-system/src/main/java/com/research/system/domain/po/AchAchievementExample.java b/research-system/src/main/java/com/research/system/domain/po/AchAchievementExample.java index fda96024..b0bc5ba3 100644 --- a/research-system/src/main/java/com/research/system/domain/po/AchAchievementExample.java +++ b/research-system/src/main/java/com/research/system/domain/po/AchAchievementExample.java @@ -1352,73 +1352,73 @@ public class AchAchievementExample { return (Criteria) this; } - public Criteria andAbstractIsNull() { - addCriterion("abstract is null"); + public Criteria andAbstractsIsNull() { + addCriterion("abstracts is null"); return (Criteria) this; } - public Criteria andAbstractIsNotNull() { - addCriterion("abstract is not null"); + public Criteria andAbstractsIsNotNull() { + addCriterion("abstracts is not null"); return (Criteria) this; } - public Criteria andAbstractEqualTo(String value) { - addCriterion("abstract =", value, "abstract"); + public Criteria andAbstractsEqualTo(String value) { + addCriterion("abstracts =", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractNotEqualTo(String value) { - addCriterion("abstract <>", value, "abstract"); + public Criteria andAbstractsNotEqualTo(String value) { + addCriterion("abstracts <>", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractGreaterThan(String value) { - addCriterion("abstract >", value, "abstract"); + public Criteria andAbstractsGreaterThan(String value) { + addCriterion("abstracts >", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractGreaterThanOrEqualTo(String value) { - addCriterion("abstract >=", value, "abstract"); + public Criteria andAbstractsGreaterThanOrEqualTo(String value) { + addCriterion("abstracts >=", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractLessThan(String value) { - addCriterion("abstract <", value, "abstract"); + public Criteria andAbstractsLessThan(String value) { + addCriterion("abstracts <", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractLessThanOrEqualTo(String value) { - addCriterion("abstract <=", value, "abstract"); + public Criteria andAbstractsLessThanOrEqualTo(String value) { + addCriterion("abstracts <=", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractLike(String value) { - addCriterion("abstract like", value, "abstract"); + public Criteria andAbstractsLike(String value) { + addCriterion("abstracts like", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractNotLike(String value) { - addCriterion("abstract not like", value, "abstract"); + public Criteria andAbstractsNotLike(String value) { + addCriterion("abstracts not like", value, "abstracts"); return (Criteria) this; } - public Criteria andAbstractIn(List values) { - addCriterion("abstract in", values, "abstract"); + public Criteria andAbstractsIn(List values) { + addCriterion("abstracts in", values, "abstracts"); return (Criteria) this; } - public Criteria andAbstractNotIn(List values) { - addCriterion("abstract not in", values, "abstract"); + public Criteria andAbstractsNotIn(List values) { + addCriterion("abstracts not in", values, "abstracts"); return (Criteria) this; } - public Criteria andAbstractBetween(String value1, String value2) { - addCriterion("abstract between", value1, value2, "abstract"); + public Criteria andAbstractsBetween(String value1, String value2) { + addCriterion("abstracts between", value1, value2, "abstracts"); return (Criteria) this; } - public Criteria andAbstractNotBetween(String value1, String value2) { - addCriterion("abstract not between", value1, value2, "abstract"); + public Criteria andAbstractsNotBetween(String value1, String value2) { + addCriterion("abstracts not between", value1, value2, "abstracts"); return (Criteria) this; } diff --git a/research-system/src/main/java/com/research/system/domain/vo/ClientPrjProjInfoVo.java b/research-system/src/main/java/com/research/system/domain/vo/ClientPrjProjInfoVo.java new file mode 100644 index 00000000..2ca242d2 --- /dev/null +++ b/research-system/src/main/java/com/research/system/domain/vo/ClientPrjProjInfoVo.java @@ -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 PrjProjOrgList; + + private List 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; + } + +} diff --git a/research-system/src/main/java/com/research/system/domain/vo/TmsLoginUserVo.java b/research-system/src/main/java/com/research/system/domain/vo/TmsLoginUserVo.java index fe32587d..91accfb2 100644 --- a/research-system/src/main/java/com/research/system/domain/vo/TmsLoginUserVo.java +++ b/research-system/src/main/java/com/research/system/domain/vo/TmsLoginUserVo.java @@ -1,9 +1,11 @@ package com.research.system.domain.vo; +import com.research.common.core.domain.entity.SysRole; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; +import java.util.List; /** * @Author zzc @@ -84,5 +86,7 @@ public class TmsLoginUserVo { private String delFlag; @ApiModelProperty("") private String status; + + List roles; } } diff --git a/research-system/src/main/java/com/research/system/persist/dao/ClientPrjProOrgDao.java b/research-system/src/main/java/com/research/system/persist/dao/ClientPrjProOrgDao.java new file mode 100644 index 00000000..b6c4e3a9 --- /dev/null +++ b/research-system/src/main/java/com/research/system/persist/dao/ClientPrjProOrgDao.java @@ -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 query(@Param("dto") ClientPrjProOrgDto.Query dto, @Param("tenantId") Long tenantId); +} diff --git a/research-system/src/main/java/com/research/system/service/ClientPrjProjInfoService.java b/research-system/src/main/java/com/research/system/service/ClientPrjProjInfoService.java new file mode 100644 index 00000000..41b340bd --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/ClientPrjProjInfoService.java @@ -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 query(); + + PrjProjInfo getProInfoByTenantId(Long tenantId); +} diff --git a/research-system/src/main/java/com/research/system/service/CooperatorService.java b/research-system/src/main/java/com/research/system/service/CooperatorService.java new file mode 100644 index 00000000..6088c4d6 --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/CooperatorService.java @@ -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 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(); +} diff --git a/research-system/src/main/java/com/research/system/service/GroupService.java b/research-system/src/main/java/com/research/system/service/GroupService.java new file mode 100644 index 00000000..a8569065 --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/GroupService.java @@ -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 { + + + +} diff --git a/research-system/src/main/java/com/research/system/service/impl/ClientPrjProjInfoServiceImpl.java b/research-system/src/main/java/com/research/system/service/impl/ClientPrjProjInfoServiceImpl.java new file mode 100644 index 00000000..af6f3457 --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/impl/ClientPrjProjInfoServiceImpl.java @@ -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 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 prjProjOrgs = prjProjOrgMapper.selectByExample(prjProjOrgExample); + if (CollUtil.isNotEmpty(prjProjOrgs)) { + for (PrjProjOrg prjProjOrg : prjProjOrgs) { + prjProjOrgMapper.deleteByPrimaryKey(prjProjOrg.getId()); + } + } + + //添加文书 + if (CollUtil.isNotEmpty(dto.getPrjProjDocumentList())) { + List 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 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 query() { + List prjProjInfos = prjProjInfoMapper.selectByExample(new PrjProjInfoExample()); + if (CollUtil.isNotEmpty(prjProjInfos)) { + List results = BeanUtil.copyToList(prjProjInfos, ClientPrjProjInfoVo.Result.class); + for (ClientPrjProjInfoVo.Result result : results) { + //查询合作单位 + PrjProjOrgExample prjProjOrgExample = new PrjProjOrgExample(); + prjProjOrgExample.createCriteria().andProjIdEqualTo(result.getId()); + List 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 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 prjProjInfos = prjProjInfoMapper.selectByExample(prjProjInfoExample); + if (CollUtil.isNotEmpty(prjProjInfos)) { + return prjProjInfos.get(0); + } + return null; + } +} diff --git a/research-system/src/main/java/com/research/system/service/impl/CooperatorServiceImpl.java b/research-system/src/main/java/com/research/system/service/impl/CooperatorServiceImpl.java new file mode 100644 index 00000000..f821ecf4 --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/impl/CooperatorServiceImpl.java @@ -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 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 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 query = query(dto); + if (CollUtil.isEmpty(query)) { + throw new BaseException("暂无数据"); + } + BigExcelWriter writer = new BigExcelWriter(); + List 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"; + } +} diff --git a/research-system/src/main/resources/mapper/dao/ClientPrjProOrgDao.xml b/research-system/src/main/resources/mapper/dao/ClientPrjProOrgDao.xml new file mode 100644 index 00000000..1872913e --- /dev/null +++ b/research-system/src/main/resources/mapper/dao/ClientPrjProOrgDao.xml @@ -0,0 +1,44 @@ + + + + + + diff --git a/research-system/src/main/resources/mapper/system/AchAchievementMapper.xml b/research-system/src/main/resources/mapper/system/AchAchievementMapper.xml index 472e9f52..58f4e26b 100644 --- a/research-system/src/main/resources/mapper/system/AchAchievementMapper.xml +++ b/research-system/src/main/resources/mapper/system/AchAchievementMapper.xml @@ -21,7 +21,7 @@ - + @@ -94,7 +94,7 @@ id, proj_id, proj_org_id, kt_group_id, category_id_1, category_id_2, title, no, authors, apply_date, publish_date, place, ach_type, source, paper_source_type, yskt_xmfzr, - yskt_funds, yskt_lxpzwh, yskt_status, abstract, keywords, paper_link, pdf_download_url, + yskt_funds, yskt_lxpzwh, yskt_status, abstracts, keywords, paper_link, pdf_download_url, commitment_letter_url, del_flag, create_by, create_time, update_by, update_time, remark @@ -129,7 +129,7 @@ apply_date, publish_date, place, ach_type, source, paper_source_type, yskt_xmfzr, yskt_funds, yskt_lxpzwh, - yskt_status, abstract, keywords, + yskt_status, abstracts, keywords, paper_link, pdf_download_url, commitment_letter_url, del_flag, create_by, create_time, update_by, update_time, remark @@ -140,7 +140,7 @@ #{applyDate,jdbcType=DATE}, #{publishDate,jdbcType=DATE}, #{place,jdbcType=VARCHAR}, #{achType,jdbcType=TINYINT}, #{source,jdbcType=VARCHAR}, #{paperSourceType,jdbcType=TINYINT}, #{ysktXmfzr,jdbcType=VARCHAR}, #{ysktFunds,jdbcType=VARCHAR}, #{ysktLxpzwh,jdbcType=VARCHAR}, - #{ysktStatus,jdbcType=TINYINT}, #{abstract,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, + #{ysktStatus,jdbcType=TINYINT}, #{abstracts,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, #{paperLink,jdbcType=VARCHAR}, #{pdfDownloadUrl,jdbcType=VARCHAR}, #{commitmentLetterUrl,jdbcType=VARCHAR}, #{delFlag,jdbcType=TINYINT}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR} @@ -206,8 +206,8 @@ yskt_status, - - abstract, + + abstracts, keywords, @@ -298,8 +298,8 @@ #{ysktStatus,jdbcType=TINYINT}, - - #{abstract,jdbcType=VARCHAR}, + + #{abstracts,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, @@ -399,8 +399,8 @@ yskt_status = #{record.ysktStatus,jdbcType=TINYINT}, - - abstract = #{record.abstract,jdbcType=VARCHAR}, + + abstracts = #{record.abstracts,jdbcType=VARCHAR}, keywords = #{record.keywords,jdbcType=VARCHAR}, @@ -458,7 +458,7 @@ yskt_funds = #{record.ysktFunds,jdbcType=VARCHAR}, yskt_lxpzwh = #{record.ysktLxpzwh,jdbcType=VARCHAR}, yskt_status = #{record.ysktStatus,jdbcType=TINYINT}, - abstract = #{record.abstract,jdbcType=VARCHAR}, + abstracts = #{record.abstracts,jdbcType=VARCHAR}, keywords = #{record.keywords,jdbcType=VARCHAR}, paper_link = #{record.paperLink,jdbcType=VARCHAR}, pdf_download_url = #{record.pdfDownloadUrl,jdbcType=VARCHAR}, @@ -530,8 +530,8 @@ yskt_status = #{ysktStatus,jdbcType=TINYINT}, - - abstract = #{abstract,jdbcType=VARCHAR}, + + abstracts = #{abstracts,jdbcType=VARCHAR}, keywords = #{keywords,jdbcType=VARCHAR}, @@ -586,7 +586,7 @@ yskt_funds = #{ysktFunds,jdbcType=VARCHAR}, yskt_lxpzwh = #{ysktLxpzwh,jdbcType=VARCHAR}, yskt_status = #{ysktStatus,jdbcType=TINYINT}, - abstract = #{abstract,jdbcType=VARCHAR}, + abstracts = #{abstracts,jdbcType=VARCHAR}, keywords = #{keywords,jdbcType=VARCHAR}, paper_link = #{paperLink,jdbcType=VARCHAR}, pdf_download_url = #{pdfDownloadUrl,jdbcType=VARCHAR},