一、在applicationContext-spring.xml 中配置
<!-- 定时导出患者列表job -->
<bean id="patientManagerJob" class="com.yibaomd.patient.job.PatientManagerJob"/>
<bean id="patientManagerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="patientManagerJob" />
</property>
<property name="targetMethod">
<value>run</value>
</property>
</bean>
<bean id="patientManagerJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="patientManagerJobDetail" />
</property>
<property name="cronExpression">
<value>0 0 0 * * ?</value>
<!--<value>0 0/1 * * * ?</value>--><!--每1分钟执行一次-->
</property>
</bean>
<bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="patientManagerJobTrigger" />
</list>
</property>
</bean>
二、启动定时任务
/**
* Created by luoxin on 2017/7/25.
*/
public class PatientManagerJob {
private static Logger logger = LoggerFactory.getLogger(PatientManagerJob.class);
@Autowired
private IPatientManagerService patientManagerService;
public void run() throws ParseException {
logger.info("PatientManagerJob start run.");
int result = patientManagerService.exportAllPatients();
logger.info("PatientManagerJob end run, result is [ {} ]", result);
}
}
三、接口类
/**
* Created by luoxin on 2017/7/25.
*/
public interface IPatientManagerService {
/**
* 导出所有的患者
*/
int exportAllPatients() throws ParseException;
}
四、接口实现类
@Override
public int exportAllPatients() throws ParseException {
List<TPatientBean> patientBeanList = patientCenterService.selectAllV2(null);
//logger.info("patientBeanList list is [ {} ]", JSON.toJSONString(patientBeanList));
String dateString = DateUtil.getFormatTime(new Date(),DateUtil.FORMAT_DATE_TIME_2);
String fileName = "客户管理"+dateString+".xls"; //文件名
String sheetName = "客户管理";//sheet名
String []title = new String[]{"客户姓名","客户账号","婚姻状况","出生日期","身高cm","体重kg","证件类型"
,"证件号码","出生地","性别","邮箱","联系地址","详细地址","过往诊断","药物过敏史","既往病史"
,"个人病史","家族病史","婚育史","标签","签约状态","签约医生","注册时间"};//标题
String [][]values = new String[patientBeanList.size()][];
for(int i=0;i<patientBeanList.size();i++){
values[i] = new String[title.length];
//将对象内容转换成string
TPatientBean obj = patientBeanList.get(i);
//values[i][0] = Convert.stringConvert(obj.getId()+"");
values[i][0] = Convert.stringConvert(obj.getPatName());
values[i][1] = Convert.stringConvert(obj.getMobile()+"");
String isMarryString = "";
if("0".equals(String.valueOf(obj.getIsmarry()))){
isMarryString = "已婚";
}else if("1".equals(String.valueOf(obj.getIsmarry()))){
isMarryString = "未婚";
}
values[i][2] = Convert.stringConvert(isMarryString);
String patBirthdayStr = "";
if(obj.getPatBirthday() != null){
patBirthdayStr = DateUtil.getFormatTime(obj.getPatBirthday(),DateUtil.FORMAT_DATE_TIME_7);
}
values[i][3] = Convert.stringConvert(patBirthdayStr);
values[i][4] = Convert.stringConvert(obj.getHeight()+"");
values[i][5] = Convert.stringConvert(obj.getWeight()+"");
String identityTypeStr = "";
if("0".equals(String.valueOf(obj.getIdentityType()))){
identityTypeStr = "身份证";
}else if("1".equals(String.valueOf(obj.getIdentityType()))){
identityTypeStr = "军官证";
}
values[i][6] = identityTypeStr;
values[i][7] = Convert.stringConvert(obj.getIdentityCard()+"");
values[i][8] = Convert.stringConvert(obj.getBirthAddress()+"");
String patSexString = "";
if("0".equals(String.valueOf(obj.getPatSex()))){
patSexString = "女";
}else if("1".equals(String.valueOf(obj.getPatSex()))){
patSexString = "男";
}
values[i][9] = Convert.stringConvert(patSexString);
values[i][10] = Convert.stringConvert(obj.getPatEmail()+"");
values[i][11] = Convert.stringConvert(obj.getAddress()+"");
values[i][12] = Convert.stringConvert(obj.getProvinceName())+ Convert.stringConvert(obj.getCityName())+
Convert.stringConvert(obj.getAreaName())+ Convert.stringConvert(obj.getAddress());
values[i][13] = Convert.stringConvert(obj.getCurrentResult()+"");
values[i][14] = Convert.stringConvert(obj.getDrugAllergy());
values[i][15] = Convert.stringConvert(obj.getPastHistory());
values[i][16] = Convert.stringConvert(obj.getPersionHistory());
values[i][17] = Convert.stringConvert(obj.getFamilyHistory());
values[i][18] = Convert.stringConvert(obj.getObstericalHistory());
List<JSONObject> tagList = patientTagService.findSelTagNameByPatId(obj.getId());
String tagNames = "";
for(JSONObject tag: tagList){
tagNames = tagNames + tag.getString("tagName") + " ";
}
values[i][19] = Convert.stringConvert(tagNames);
String isSignName = "";
int isSignResult = doctorPatientRelationService.selectIsSign(obj.getId());
if(isSignResult > 0){
isSignName = "已签约";
}else{
isSignName = "未签约";
}
values[i][20] = Convert.stringConvert(isSignName);
values[i][21] = Convert.stringConvert(getSignDocName(obj.getId()));
String registerTimeDate = obj.getRegisterTime();
String registerTime= DateUtil.formatDate(registerTimeDate, com.yibaomd.commom.utils.DateUtil.FORMAT_DATE_TIME_3, com.yibaomd.commom.utils.DateUtil.FORMAT_DATE_TIME_1);
values[i][22] = Convert.stringConvert(registerTime);
}
//logger.info("values list is [ {} ]", JSON.toJSONString(values));
HSSFWorkbook wb =ExcelUtil.getHSSFWorkbook(sheetName, title, values, null);
//HSSFWorkbook对象转成File
File file = new File(fileName);
try {
byte[] bytes= wb.getBytes();
OutputStream output = new FileOutputStream(file);
// BufferedOutputStream bufferedOutput = new BufferedOutputStream(output);
wb.write(output);
// bufferedOutput.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
//上传到阿里云
AliyunFileUpload upload = new AliyunFileUpload(oSSClient,file,config,"patient/upload/"+fileName);
upload.upload();
return 0;
}
五、工具类
/**
* Created by luoxin on 2017/7/25.
*/
public class ExcelUtil {
public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
// 第一步,创建一个webbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = null;
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
}
package com.yibaomd.oss.upload.strategy.impl;
import java.io.File;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.comm.ResponseMessage;
import com.aliyun.oss.model.PutObjectResult;
import com.yibaomd.oss.upload.OSSConfig;
import com.yibaomd.oss.upload.strategy.FileUpload;
public class AliyunFileUpload extends AbstractFileUpload implements FileUpload {
private OSSClient oSSClient;
private File file;
private OSSConfig config;
private String dest;
public AliyunFileUpload(OSSClient oSSClient,File file,OSSConfig config,String dest){
this.oSSClient = oSSClient;
this.file = file;
this.config = config;
this.dest = dest;
}
@Override
public boolean upload() {
PutObjectResult result = oSSClient.putObject(config.getBucketName(), dest, file);
String id = result.getRequestId();
if(null != id && !"".equals(id)){
return true;
}
return false;
}
}
<dependency>
<groupId>com.yibaomd</groupId>
<artifactId>oss-upload</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.5-FINAL</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>