Java中通过spring来管理的定时任务导出

一、在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>

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值