parent
0cb02195fc
commit
f5d6506490
9 changed files with 863 additions and 5 deletions
@ -0,0 +1,138 @@ |
|||||||
|
package org.jeecg.modules.demo.departext.dto; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||||
|
import io.swagger.annotations.ApiModel; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
import org.jeecg.common.aspect.annotation.Dict; |
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel; |
||||||
|
import org.springframework.format.annotation.DateTimeFormat; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: 部门扩展表 |
||||||
|
* @Author: jeecg-boot |
||||||
|
* @Date: 2024-10-18 |
||||||
|
* @Version: V1.0 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@ApiModel(value = "depart_ext对象", description = "部门扩展表") |
||||||
|
public class DepartExtDto implements Serializable { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(type = IdType.ASSIGN_ID) |
||||||
|
@ApiModelProperty(value = "主键") |
||||||
|
private String id; |
||||||
|
/** |
||||||
|
* 创建人 |
||||||
|
*/ |
||||||
|
@ApiModelProperty(value = "创建人") |
||||||
|
private String createBy; |
||||||
|
/** |
||||||
|
* 创建日期 |
||||||
|
*/ |
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
@ApiModelProperty(value = "创建日期") |
||||||
|
private Date createTime; |
||||||
|
/** |
||||||
|
* 更新人 |
||||||
|
*/ |
||||||
|
@ApiModelProperty(value = "更新人") |
||||||
|
private String updateBy; |
||||||
|
/** |
||||||
|
* 更新日期 |
||||||
|
*/ |
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
@ApiModelProperty(value = "更新日期") |
||||||
|
private Date updateTime; |
||||||
|
/** |
||||||
|
* 部门表id |
||||||
|
*/ |
||||||
|
@Excel(name = "部门表id", width = 15) |
||||||
|
@ApiModelProperty(value = "部门表id") |
||||||
|
private String departId; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "项目id") |
||||||
|
private String projectId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 单位性质 |
||||||
|
*/ |
||||||
|
@Excel(name = "单位性质", width = 15, dicCode = "depart_category") |
||||||
|
@Dict(dicCode = "depart_category") |
||||||
|
@ApiModelProperty(value = "单位性质") |
||||||
|
private String category; |
||||||
|
/** |
||||||
|
* 企业登记注册类型 |
||||||
|
*/ |
||||||
|
@Excel(name = "企业登记注册类型", width = 15) |
||||||
|
@ApiModelProperty(value = "企业登记注册类型") |
||||||
|
private String type; |
||||||
|
/** |
||||||
|
* 开户银行 |
||||||
|
*/ |
||||||
|
@Excel(name = "开户银行", width = 15) |
||||||
|
@ApiModelProperty(value = "开户银行") |
||||||
|
private String bankName; |
||||||
|
/** |
||||||
|
* 账号 |
||||||
|
*/ |
||||||
|
@Excel(name = "账号", width = 15) |
||||||
|
@ApiModelProperty(value = "账号") |
||||||
|
private String bankNo; |
||||||
|
/** |
||||||
|
* 职工总数 |
||||||
|
*/ |
||||||
|
@Excel(name = "职工总数", width = 15) |
||||||
|
@ApiModelProperty(value = "职工总数") |
||||||
|
private String employeeNum; |
||||||
|
/** |
||||||
|
* 上年度研发经费 |
||||||
|
*/ |
||||||
|
@Excel(name = "上年度研发经费", width = 15) |
||||||
|
@ApiModelProperty(value = "上年度研发经费") |
||||||
|
private BigDecimal lastYearFee; |
||||||
|
/** |
||||||
|
* 注册时间 |
||||||
|
*/ |
||||||
|
@Excel(name = "注册时间", width = 15, format = "yyyy-MM-dd") |
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") |
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd") |
||||||
|
@ApiModelProperty(value = "注册时间") |
||||||
|
private Date registerDate; |
||||||
|
|
||||||
|
private String regDate; |
||||||
|
/** |
||||||
|
* 联系人 |
||||||
|
*/ |
||||||
|
@Excel(name = "联系人", width = 15) |
||||||
|
@ApiModelProperty(value = "联系人") |
||||||
|
private String linkmanName; |
||||||
|
/** |
||||||
|
* 手机 |
||||||
|
*/ |
||||||
|
@Excel(name = "手机", width = 15) |
||||||
|
@ApiModelProperty(value = "手机") |
||||||
|
private String linkmanPhone; |
||||||
|
/** |
||||||
|
* 电子邮箱 |
||||||
|
*/ |
||||||
|
@Excel(name = "电子邮箱", width = 15) |
||||||
|
@ApiModelProperty(value = "电子邮箱") |
||||||
|
private String linkmanEmail; |
||||||
|
|
||||||
|
private String departNameAbbr; |
||||||
|
} |
@ -0,0 +1,286 @@ |
|||||||
|
package org.jeecg.modules.demo.project.dto; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableField; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
import org.jeecg.common.aspect.annotation.Dict; |
||||||
|
import org.jeecg.modules.demo.projectMember.entity.ProjectMember; |
||||||
|
import org.jeecg.modules.demo.userext.entity.UserExt; |
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel; |
||||||
|
import org.springframework.format.annotation.DateTimeFormat; |
||||||
|
import org.jeecg.modules.demo.departext.dto.DepartExtDto; |
||||||
|
import java.io.Serializable; |
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: 项目表 |
||||||
|
* @Author: jeecg-boot |
||||||
|
* @Date: 2024-10-17 |
||||||
|
* @Version: V1.0 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class ProjectDto implements Serializable { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(type = IdType.ASSIGN_ID) |
||||||
|
@ApiModelProperty(value = "主键") |
||||||
|
private String id; |
||||||
|
/** |
||||||
|
* 创建人 |
||||||
|
*/ |
||||||
|
@ApiModelProperty(value = "创建人") |
||||||
|
private String createBy; |
||||||
|
/** |
||||||
|
* 创建日期 |
||||||
|
*/ |
||||||
|
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
// @DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "创建日期") |
||||||
|
private String createTime; |
||||||
|
/** |
||||||
|
* 更新人 |
||||||
|
*/ |
||||||
|
@ApiModelProperty(value = "更新人") |
||||||
|
private String updateBy; |
||||||
|
/** |
||||||
|
* 更新日期 |
||||||
|
*/ |
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
@ApiModelProperty(value = "更新日期") |
||||||
|
private Date updateTime; |
||||||
|
/** |
||||||
|
* 所属部门 |
||||||
|
*/ |
||||||
|
@Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "org_code") |
||||||
|
@ApiModelProperty(value = "所属部门") |
||||||
|
private String sysOrgCode; |
||||||
|
/** |
||||||
|
* 项目名称 |
||||||
|
*/ |
||||||
|
@Excel(name = "项目名称", width = 15) |
||||||
|
@ApiModelProperty(value = "项目名称") |
||||||
|
private String projectName; |
||||||
|
/** |
||||||
|
* 项目领域 |
||||||
|
*/ |
||||||
|
@Excel(name = "项目领域", width = 15, dicCode = "project_domain") |
||||||
|
@Dict(dicCode = "project_domain") |
||||||
|
@ApiModelProperty(value = "项目领域") |
||||||
|
private String projectDomain; |
||||||
|
/** |
||||||
|
* 新兴产业 |
||||||
|
*/ |
||||||
|
@Excel(name = "新兴产业", width = 15, dicCode = "emerging_industry") |
||||||
|
@Dict(dicCode = "emerging_industry") |
||||||
|
@ApiModelProperty(value = "新兴产业") |
||||||
|
private String emergingIndustry; |
||||||
|
/** |
||||||
|
* 传统产业 |
||||||
|
*/ |
||||||
|
@Excel(name = "传统产业", width = 15, dicCode = "traditional_industry") |
||||||
|
@Dict(dicCode = "traditional_industry") |
||||||
|
@ApiModelProperty(value = "传统产业") |
||||||
|
private String traditionalIndustry; |
||||||
|
/** |
||||||
|
* 技术来源 |
||||||
|
*/ |
||||||
|
@Excel(name = "技术来源", width = 15, dicCode = "technical_source") |
||||||
|
@Dict(dicCode = "technical_source") |
||||||
|
@ApiModelProperty(value = "技术来源") |
||||||
|
private String technicalSource; |
||||||
|
/** |
||||||
|
* 技术水平 |
||||||
|
*/ |
||||||
|
@Excel(name = "技术水平", width = 15, dicCode = "technical_level") |
||||||
|
@Dict(dicCode = "technical_level") |
||||||
|
@ApiModelProperty(value = "技术水平") |
||||||
|
private String technicalLevel; |
||||||
|
/** |
||||||
|
* 预期主要成果形式 |
||||||
|
*/ |
||||||
|
@Excel(name = "预期主要成果形式", width = 15, dicCode = "result_form") |
||||||
|
@Dict(dicCode = "result_form") |
||||||
|
@ApiModelProperty(value = "预期主要成果形式") |
||||||
|
private String resultForm; |
||||||
|
/** |
||||||
|
* 经费投入(万元) |
||||||
|
*/ |
||||||
|
@Excel(name = "经费投入(万元)", width = 15) |
||||||
|
@ApiModelProperty(value = "经费投入(万元)") |
||||||
|
private BigDecimal fundInput; |
||||||
|
/** |
||||||
|
* 申请省财政拨款(万元) |
||||||
|
*/ |
||||||
|
@Excel(name = "申请省财政拨款(万元)", width = 15) |
||||||
|
@ApiModelProperty(value = "申请省财政拨款(万元)") |
||||||
|
private BigDecimal applyFund; |
||||||
|
/** |
||||||
|
* 如无经费支持是否接受指导项目立项 |
||||||
|
*/ |
||||||
|
@Excel(name = "如无经费支持是否接受指导项目立项", width = 15, replace = {"是_Y", "否_N"}) |
||||||
|
@ApiModelProperty(value = "如无经费支持是否接受指导项目立项") |
||||||
|
private String isAcceptInitProject; |
||||||
|
/** |
||||||
|
* 所属实验室、研究中心 |
||||||
|
*/ |
||||||
|
@Excel(name = "所属实验室、研究中心", width = 15) |
||||||
|
@ApiModelProperty(value = "所属实验室、研究中心") |
||||||
|
private String laboratory; |
||||||
|
/** |
||||||
|
* 地方投入 |
||||||
|
*/ |
||||||
|
@Excel(name = "地方投入", width = 15) |
||||||
|
@ApiModelProperty(value = "地方投入") |
||||||
|
private BigDecimal localInput; |
||||||
|
/** |
||||||
|
* 银行贷款 |
||||||
|
*/ |
||||||
|
@Excel(name = "银行贷款", width = 15) |
||||||
|
@ApiModelProperty(value = "银行贷款") |
||||||
|
private BigDecimal bankLoan; |
||||||
|
/** |
||||||
|
* 自筹 |
||||||
|
*/ |
||||||
|
@Excel(name = "自筹", width = 15) |
||||||
|
@ApiModelProperty(value = "自筹") |
||||||
|
private BigDecimal selfRaise; |
||||||
|
/** |
||||||
|
* 项目开始时间 |
||||||
|
*/ |
||||||
|
// @Excel(name = "项目开始时间", width = 15, format = "yyyy-MM-dd")
|
||||||
|
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
// @DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "项目开始时间") |
||||||
|
private String startTime; |
||||||
|
/** |
||||||
|
* 项目结束时间 |
||||||
|
*/ |
||||||
|
// @Excel(name = "项目结束时间", width = 15, format = "yyyy-MM-dd")
|
||||||
|
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
// @DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "项目结束时间") |
||||||
|
private String endTime; |
||||||
|
/** |
||||||
|
* 年生产能力 |
||||||
|
*/ |
||||||
|
@Excel(name = "年生产能力", width = 15) |
||||||
|
@ApiModelProperty(value = "年生产能力") |
||||||
|
private BigDecimal yearlyCapacity; |
||||||
|
/** |
||||||
|
* 就业人数 |
||||||
|
*/ |
||||||
|
@Excel(name = "就业人数", width = 15) |
||||||
|
@ApiModelProperty(value = "就业人数") |
||||||
|
private String employmentFigure; |
||||||
|
/** |
||||||
|
* 年销售收入 |
||||||
|
*/ |
||||||
|
@Excel(name = "年销售收入", width = 15) |
||||||
|
@ApiModelProperty(value = "年销售收入") |
||||||
|
private BigDecimal annualSalesRevenue; |
||||||
|
/** |
||||||
|
* 年出口创汇 |
||||||
|
*/ |
||||||
|
@Excel(name = "年出口创汇", width = 15) |
||||||
|
@ApiModelProperty(value = "年出口创汇") |
||||||
|
private BigDecimal annualExportEarnings; |
||||||
|
/** |
||||||
|
* 年纳税总额 |
||||||
|
*/ |
||||||
|
@Excel(name = "年纳税总额", width = 15) |
||||||
|
@ApiModelProperty(value = "年纳税总额") |
||||||
|
private BigDecimal totalAnnualTaxPayment; |
||||||
|
/** |
||||||
|
* 年净利润 |
||||||
|
*/ |
||||||
|
@Excel(name = "年净利润", width = 15) |
||||||
|
@ApiModelProperty(value = "年净利润") |
||||||
|
private BigDecimal annualProfit; |
||||||
|
/** |
||||||
|
* 申请专利数 |
||||||
|
*/ |
||||||
|
@Excel(name = "申请专利数", width = 15) |
||||||
|
@ApiModelProperty(value = "申请专利数") |
||||||
|
private String applyPatentNumber; |
||||||
|
/** |
||||||
|
* 发明专利数 |
||||||
|
*/ |
||||||
|
@Excel(name = "发明专利数", width = 15) |
||||||
|
@ApiModelProperty(value = "发明专利数") |
||||||
|
private String invevtionPatentNumber; |
||||||
|
/** |
||||||
|
* 授权专利数 |
||||||
|
*/ |
||||||
|
@Excel(name = "授权专利数", width = 15) |
||||||
|
@ApiModelProperty(value = "授权专利数") |
||||||
|
private String creditPatentNumber; |
||||||
|
/** |
||||||
|
* 项目类别表id |
||||||
|
*/ |
||||||
|
@Excel(name = "项目类别表id", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") |
||||||
|
@ApiModelProperty(value = "项目类别表id") |
||||||
|
@Dict(dictTable = "project_type", dicCode = "id", dicText = "type_name") |
||||||
|
private String projectTypeid; |
||||||
|
|
||||||
|
@TableField(exist = false) |
||||||
|
private String projectTypeName; |
||||||
|
|
||||||
|
@TableField(exist = false) |
||||||
|
private String annualName; |
||||||
|
|
||||||
|
@TableField(exist = false) |
||||||
|
private String departName; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 批次 |
||||||
|
*/ |
||||||
|
@Excel(name = "批次", width = 15) |
||||||
|
@ApiModelProperty(value = "批次") |
||||||
|
private String batchNo; |
||||||
|
/** |
||||||
|
* 项目书状态 |
||||||
|
*/ |
||||||
|
@Excel(name = "项目书状态", width = 15, dicCode = "project_status") |
||||||
|
@Dict(dicCode = "project_status") |
||||||
|
@ApiModelProperty(value = "项目书状态") |
||||||
|
private String projectStatus; |
||||||
|
/** |
||||||
|
* 预算书状态 |
||||||
|
*/ |
||||||
|
@Excel(name = "预算书状态", width = 15, dicCode = "budget_status") |
||||||
|
@Dict(dicCode = "budget_status") |
||||||
|
@ApiModelProperty(value = "预算书状态") |
||||||
|
private String budgetStatus; |
||||||
|
/** |
||||||
|
* 负责人 |
||||||
|
*/ |
||||||
|
@Excel(name = "负责人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id") |
||||||
|
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") |
||||||
|
@ApiModelProperty(value = "负责人") |
||||||
|
private String projectCharger; |
||||||
|
@ApiModelProperty(value = "负责人手机") |
||||||
|
private String fzrPhone; |
||||||
|
@ApiModelProperty(value = "负责人邮箱") |
||||||
|
private String fzrEmail; |
||||||
|
private String fzrIdNo; |
||||||
|
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "项目主要内容") |
||||||
|
private String projectContent; |
||||||
|
|
||||||
|
private UserExt fzr; |
||||||
|
|
||||||
|
private DepartExtDto sqdw; |
||||||
|
|
||||||
|
private List<ProjectMember> pms; |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package org.jeecg.modules.demo.project.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import org.jeecg.modules.demo.project.dto.ProjectShenBaoDto; |
||||||
|
import org.jeecg.modules.demo.project.entity.Project; |
||||||
|
import org.jeecg.modules.demo.project.service.impl.Project4WordServiceImpl; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: 项目表 |
||||||
|
* @Author: jeecg-boot |
||||||
|
* @Date: 2024-10-17 |
||||||
|
* @Version: V1.0 |
||||||
|
*/ |
||||||
|
public interface IProject4WordService extends IService<Project> { |
||||||
|
|
||||||
|
Object getInfo4Word(Project project); |
||||||
|
} |
@ -0,0 +1,236 @@ |
|||||||
|
package org.jeecg.modules.demo.project.service.impl; |
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.apache.poi.ss.usermodel.Workbook; |
||||||
|
import org.jeecg.common.system.vo.DictModel; |
||||||
|
import org.jeecg.common.util.DateUtils; |
||||||
|
import org.jeecg.modules.demo.departext.dto.DepartExtDto; |
||||||
|
import org.jeecg.modules.demo.departext.entity.DepartExt; |
||||||
|
import org.jeecg.modules.demo.departext.service.IDepartExtService; |
||||||
|
import org.jeecg.modules.demo.project.dto.ProjectDto; |
||||||
|
import org.jeecg.modules.demo.project.entity.Project; |
||||||
|
import org.jeecg.modules.demo.project.mapper.ProjectMapper; |
||||||
|
import org.jeecg.modules.demo.project.service.IProject4WordService; |
||||||
|
import org.jeecg.modules.demo.projectMember.entity.ProjectMember; |
||||||
|
import org.jeecg.modules.demo.projectMember.service.IProjectMemberService; |
||||||
|
import org.jeecg.modules.demo.projectType.entity.ProjectType; |
||||||
|
import org.jeecg.modules.demo.projectType.service.IProjectTypeService; |
||||||
|
import org.jeecg.modules.demo.userext.entity.UserExt; |
||||||
|
import org.jeecg.modules.demo.userext.service.IUserExtService; |
||||||
|
import org.jeecg.modules.system.entity.SysDepart; |
||||||
|
import org.jeecg.modules.system.entity.SysUser; |
||||||
|
import org.jeecg.modules.system.service.ISysDepartService; |
||||||
|
import org.jeecg.modules.system.service.ISysUserService; |
||||||
|
import org.jeecg.modules.system.service.impl.SysBaseApiImpl; |
||||||
|
import org.jeecgframework.poi.excel.ExcelExportUtil; |
||||||
|
import org.jeecgframework.poi.excel.entity.TemplateExportParams; |
||||||
|
import org.springframework.beans.BeanUtils; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.util.ObjectUtils; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.FileOutputStream; |
||||||
|
import java.io.IOException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: 项目表 |
||||||
|
* @Author: jeecg-boot |
||||||
|
* @Date: 2024-10-17 |
||||||
|
* @Version: V1.0 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class Project4WordServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProject4WordService { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IDepartExtService iDepartExtService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private ISysDepartService iSysDepartService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private ISysUserService iSysUserService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IUserExtService iUserExtService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private SysBaseApiImpl sysBaseApi; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IProjectTypeService iProjectTypeService; |
||||||
|
@Autowired |
||||||
|
private IProjectMemberService iProjectMemberService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getInfo4Word(Project obj) { |
||||||
|
Project project = this.getById("1849284130146025473"); |
||||||
|
if (ObjectUtils.isEmpty(project)) return null; |
||||||
|
|
||||||
|
ProjectDto dto = new ProjectDto(); |
||||||
|
BeanUtils.copyProperties(project, dto); |
||||||
|
|
||||||
|
if (!ObjectUtils.isEmpty(project.getProjectTypeid())) { |
||||||
|
ProjectType projectType = iProjectTypeService.getById(project.getProjectTypeid()); |
||||||
|
dto.setProjectTypeName(projectType.getTypeName()); |
||||||
|
} |
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日"); |
||||||
|
dto.setCreateTime(DateUtils.date2Str(project.getCreateTime(), format)); |
||||||
|
dto.setStartTime(DateUtils.date2Str(project.getStartTime(), format)); |
||||||
|
dto.setEndTime(DateUtils.date2Str(project.getEndTime(), format)); |
||||||
|
|
||||||
|
if (!ObjectUtils.isEmpty(project.getProjectTypeid())) { |
||||||
|
ProjectType projectType = iProjectTypeService.getById(project.getProjectTypeid()); |
||||||
|
dto.setProjectTypeName(projectType.getTypeName()); |
||||||
|
} |
||||||
|
SysDepart sysDepart = iSysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getOrgCode, project.getSysOrgCode())); |
||||||
|
if (ObjectUtil.isNotEmpty(sysDepart)) { |
||||||
|
dto.setSysOrgCode(sysDepart.getDepartName()); |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(project.getProjectDomain())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("project_domain"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(project.getProjectDomain())) { |
||||||
|
dto.setProjectDomain(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(project.getEmergingIndustry())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("emerging_industry"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(project.getEmergingIndustry())) { |
||||||
|
dto.setEmergingIndustry(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(project.getTraditionalIndustry())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("traditional_industry"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(project.getTraditionalIndustry())) { |
||||||
|
dto.setTraditionalIndustry(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(project.getTechnicalSource())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("technical_source"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(project.getTechnicalSource())) { |
||||||
|
dto.setTechnicalSource(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(project.getTechnicalLevel())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("technical_level"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(project.getTechnicalLevel())) { |
||||||
|
dto.setTechnicalLevel(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(project.getResultForm())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("result_form"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
String[] split = project.getResultForm().split(","); |
||||||
|
if (!ObjectUtils.isEmpty(split)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(split[0])) { |
||||||
|
dto.setResultForm(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
SysUser sysUser = iSysUserService.getById(project.getProjectCharger()); |
||||||
|
UserExt userExt = iUserExtService.getOne(new LambdaQueryWrapper<UserExt>().eq(UserExt::getUserId, project.getProjectCharger()).eq(UserExt::getProjectId, project.getId())); |
||||||
|
if (ObjectUtil.isNotEmpty(userExt)) { |
||||||
|
if (!ObjectUtils.isEmpty(userExt.getNation())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("nation"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(userExt.getNation())) { |
||||||
|
userExt.setNation(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(userExt.getPolitical())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("political"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(userExt.getPolitical())) { |
||||||
|
userExt.setPolitical(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
dto.setProjectCharger(sysUser.getRealname()); |
||||||
|
dto.setFzrEmail(sysUser.getEmail()); |
||||||
|
dto.setFzrPhone(sysUser.getPhone()); |
||||||
|
dto.setFzrIdNo(sysUser.getIdNo()); |
||||||
|
dto.setFzr(userExt); |
||||||
|
|
||||||
|
DepartExt departExt = iDepartExtService.getOne(new LambdaQueryWrapper<DepartExt>() |
||||||
|
.eq(DepartExt::getDepartId, sysDepart.getId()) |
||||||
|
.eq(DepartExt::getProjectId, project.getId())); |
||||||
|
DepartExtDto departExtDto = new DepartExtDto(); |
||||||
|
BeanUtils.copyProperties(departExt, departExtDto); |
||||||
|
departExtDto.setDepartNameAbbr(sysDepart.getDepartNameAbbr()); |
||||||
|
departExtDto.setRegDate(DateUtils.date2Str(departExtDto.getRegisterDate(), format)); |
||||||
|
if (!ObjectUtils.isEmpty(departExtDto.getCategory())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("depart_category"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(departExtDto.getCategory())) { |
||||||
|
departExtDto.setCategory(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
dto.setSqdw(departExtDto); |
||||||
|
List<ProjectMember> projectMemberList = iProjectMemberService.list(new LambdaQueryWrapper<ProjectMember>().eq(ProjectMember::getProjectId, project.getId())); |
||||||
|
if(ObjectUtil.isNotEmpty(projectMemberList)){ |
||||||
|
projectMemberList.stream().forEach(pm -> { |
||||||
|
pm.setZy(pm.getCurrentPerfession()); |
||||||
|
if (!ObjectUtils.isEmpty(pm.getPolitical())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("political"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(pm.getPolitical())) { |
||||||
|
pm.setPolitical(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
if (!ObjectUtils.isEmpty(pm.getNation())) { |
||||||
|
List<DictModel> dictModels = sysBaseApi.queryDictItemsByCode("nation"); |
||||||
|
if (ObjectUtil.isNotEmpty(dictModels)) { |
||||||
|
dictModels.forEach(e -> { |
||||||
|
if (e.getValue().equals(pm.getNation())) { |
||||||
|
pm.setNation(e.getText()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
dto.setPms(projectMemberList); |
||||||
|
return dto; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,145 @@ |
|||||||
|
package org.jeecg.modules.word; |
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil; |
||||||
|
import com.alibaba.fastjson.JSON; |
||||||
|
import org.apache.poi.openxml4j.opc.OPCPackage; |
||||||
|
import org.apache.poi.xwpf.usermodel.BreakType; |
||||||
|
import org.apache.poi.xwpf.usermodel.Document; |
||||||
|
import org.apache.poi.xwpf.usermodel.XWPFDocument; |
||||||
|
import org.apache.poi.xwpf.usermodel.XWPFPictureData; |
||||||
|
import org.apache.xmlbeans.XmlOptions; |
||||||
|
import org.jeecg.JeecgSystemApplication; |
||||||
|
import org.jeecg.modules.demo.project.service.IProject4WordService; |
||||||
|
import org.jeecg.modules.demo.project.service.IProjectService; |
||||||
|
//import org.jeecgframework.poi.word.WordExportUtil;
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.boot.test.context.SpringBootTest; |
||||||
|
import org.springframework.test.context.junit4.SpringRunner; |
||||||
|
import cn.afterturn.easypoi.word.WordExportUtil; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.FileInputStream; |
||||||
|
import java.io.FileOutputStream; |
||||||
|
import java.io.OutputStream; |
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description: TODO |
||||||
|
* @Author: Z.H.C |
||||||
|
* @CreateTime: 2024-11-18 15:33 |
||||||
|
* @Version: 1.0 |
||||||
|
*/ |
||||||
|
@RunWith(SpringRunner.class) |
||||||
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = JeecgSystemApplication.class) |
||||||
|
public class WordExportUtil_test { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IProjectService iProjectService; |
||||||
|
@Autowired |
||||||
|
private IProject4WordService iProject4WordService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 简单导出没有图片和Excel |
||||||
|
*/ |
||||||
|
@Test |
||||||
|
public void SimpleWordExport() { |
||||||
|
Object info4Word = iProject4WordService.getInfo4Word(null); |
||||||
|
Map<String, Object> map = BeanUtil.beanToMap(info4Word); |
||||||
|
// List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
|
||||||
|
System.out.println("map = " + JSON.toJSONString(map)); |
||||||
|
List<Map<String, Object>> edu = new ArrayList<>(); |
||||||
|
|
||||||
|
try { |
||||||
|
XWPFDocument doc = WordExportUtil.exportWord07("C:\\Users\\YX\\Desktop\\testword\\model.docx", map); |
||||||
|
FileOutputStream fos = new FileOutputStream("C:\\Users\\YX\\Desktop\\testword\\test1120.docx"); |
||||||
|
doc.write(fos); |
||||||
|
fos.close(); |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test2() { |
||||||
|
File newFile = new File("C:\\Users\\YX\\Desktop\\testword\\合并2.docx"); |
||||||
|
List<File> srcfile = new ArrayList<>(); |
||||||
|
|
||||||
|
File file1 = new File("C:\\Users\\YX\\Desktop\\testword\\1.docx"); |
||||||
|
File file2 = new File("C:\\Users\\YX\\Desktop\\testword\\2.docx"); |
||||||
|
File file3 = new File("C:\\Users\\YX\\Desktop\\testword\\3.docx"); |
||||||
|
srcfile.add(file1); |
||||||
|
srcfile.add(file2); |
||||||
|
srcfile.add(file3); |
||||||
|
try { |
||||||
|
OutputStream dest = new FileOutputStream(newFile); |
||||||
|
ArrayList<XWPFDocument> documentList = new ArrayList<>(); |
||||||
|
XWPFDocument doc = null; |
||||||
|
for (int i = 0; i < srcfile.size(); i++) { |
||||||
|
FileInputStream in = new FileInputStream(srcfile.get(i).getPath()); |
||||||
|
OPCPackage open = OPCPackage.open(in); |
||||||
|
XWPFDocument document = new XWPFDocument(open); |
||||||
|
documentList.add(document); |
||||||
|
} |
||||||
|
for (int i = 0; i < documentList.size(); i++) { |
||||||
|
doc = documentList.get(0); |
||||||
|
if (i == 0) {//首页直接分页,不再插入首页文档内容
|
||||||
|
documentList.get(i).createParagraph().createRun().addBreak(BreakType.PAGE); |
||||||
|
// appendBody(doc,documentList.get(i));
|
||||||
|
} else if (i == documentList.size() - 1) {//尾页不再分页,直接插入最后文档内容
|
||||||
|
appendBody(doc, documentList.get(i)); |
||||||
|
} else { |
||||||
|
documentList.get(i).createParagraph().createRun().addBreak(BreakType.PAGE); |
||||||
|
appendBody(doc, documentList.get(i)); |
||||||
|
} |
||||||
|
} |
||||||
|
doc.write(dest); |
||||||
|
dest.close(); |
||||||
|
|
||||||
|
System.out.println("*****合成成功********"); |
||||||
|
|
||||||
|
// Runtime.getRuntime().exec("cmd /c start winword C:/Users/gouwe/合并.docx");//直接调用cmd打开合成文档
|
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static void appendBody(XWPFDocument src, XWPFDocument append) throws Exception { |
||||||
|
CTBody src1Body = src.getDocument().getBody(); |
||||||
|
CTBody src2Body = append.getDocument().getBody(); |
||||||
|
|
||||||
|
List<XWPFPictureData> allPictures = append.getAllPictures(); |
||||||
|
// 记录图片合并前及合并后的ID
|
||||||
|
Map<String, String> map = new HashMap<String, String>(); |
||||||
|
for (XWPFPictureData picture : allPictures) { |
||||||
|
String before = append.getRelationId(picture); |
||||||
|
//将原文档中的图片加入到目标文档中
|
||||||
|
String after = src.addPictureData(picture.getData(), Document.PICTURE_TYPE_PNG); |
||||||
|
map.put(before, after); |
||||||
|
} |
||||||
|
appendBody(src1Body, src2Body, map); |
||||||
|
} |
||||||
|
|
||||||
|
private static void appendBody(CTBody src, CTBody append, Map<String, String> map) throws Exception { |
||||||
|
XmlOptions optionsOuter = new XmlOptions(); |
||||||
|
optionsOuter.setSaveOuter(); |
||||||
|
String appendString = append.xmlText(optionsOuter); |
||||||
|
|
||||||
|
String srcString = src.xmlText(); |
||||||
|
String prefix = srcString.substring(0, srcString.indexOf(">") + 1); |
||||||
|
String mainPart = srcString.substring(srcString.indexOf(">") + 1, srcString.lastIndexOf("<")); |
||||||
|
String sufix = srcString.substring(srcString.lastIndexOf("<")); |
||||||
|
String addPart = appendString.substring(appendString.indexOf(">") + 1, appendString.lastIndexOf("<")); |
||||||
|
if (map != null && !map.isEmpty()) { |
||||||
|
//对xml字符串中图片ID进行替换
|
||||||
|
for (Map.Entry<String, String> set : map.entrySet()) { |
||||||
|
addPart = addPart.replace(set.getKey(), set.getValue()); |
||||||
|
} |
||||||
|
} |
||||||
|
//将两个文档的xml内容进行拼接
|
||||||
|
CTBody makeBody = CTBody.Factory.parse(prefix + mainPart + addPart + sufix); |
||||||
|
src.set(makeBody); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue