|  |  | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.dao.business.model.Solutions; | 
 |  |  | import com.doumee.dao.business.vo.CountCyclePriceVO; | 
 |  |  | import io.swagger.models.auth.In; | 
 |  |  | import org.apache.commons.collections4.CollectionUtils; | 
 |  |  | import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; | 
 |  |  | import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.io.FileOutputStream; | 
 |  |  | import java.io.InputStream; | 
 |  |  | import java.io.OutputStream; | 
 |  |  | import javax.servlet.ServletOutputStream; | 
 |  |  | import java.io.*; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.net.URL; | 
 |  |  | import java.net.URLDecoder; | 
 |  |  | import java.time.LocalDate; | 
 |  |  | import java.time.temporal.ChronoUnit; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.regex.Matcher; | 
 |  |  | 
 |  |  |     public static final String TAXES_FILE = "TAXES_FILE"; | 
 |  |  |     public static final String APPLY_FILE ="APPLY_FILE" ; | 
 |  |  |     public static final String SETTLE_FILE ="SETTLE_FILE" ; | 
 |  |  |     public static final String DU_FILE ="DU_FILE" ; | 
 |  |  |     public static final String SIGN_DONE_NOTIFY_URL = "SIGN_DONE_NOTIFY_URL"; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 企业数据来源 0平台注册 1后台导入 | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return d.intValue(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static long getAgeByIdCard(String idCard){ | 
 |  |  |         int birthYear = Integer.parseInt(idCard.substring(6, 10)); | 
 |  |  |         int birthMonth = Integer.parseInt(idCard.substring(10, 12)); | 
 |  |  |         int birthDay = Integer.parseInt(idCard.substring(12, 14)); | 
 |  |  |  | 
 |  |  |         LocalDate birthDate = LocalDate.of(birthYear, birthMonth, birthDay); | 
 |  |  |         LocalDate currentDate = LocalDate.now(); | 
 |  |  |         long age = ChronoUnit.YEARS.between(birthDate, currentDate); | 
 |  |  |         return age; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public static CountCyclePriceVO countPriceVO(Date startDate, Solutions solutions){ | 
 |  |  |         CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO(); | 
 |  |  |         if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){ | 
 |  |  |             countCyclePriceVO.setEndDate(DateUtil.afterDateByType(startDate,0,solutions.getInsureCycle())); | 
 |  |  |         }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){ | 
 |  |  |             Integer monthDays = DateUtil.monthDays(startDate); | 
 |  |  |             Date afterDate = DateUtil.afterDateByType(startDate,0,monthDays); | 
 |  |  |             countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1)); | 
 |  |  |         }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){ | 
 |  |  |             Date afterDate = DateUtil.afterDateByType(startDate,2,solutions.getInsureCycle()); | 
 |  |  |             countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1)); | 
 |  |  |         } | 
 |  |  |         countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),startDate)); | 
 |  |  |         return countCyclePriceVO; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static Integer getSexByIdCard(String idCard){ | 
 |  |  |         Pattern pattern = Pattern.compile("\\d{17}[\\d|x]"); // 定义身份证号码格式的正则表达式 | 
 |  |  |         Matcher matcher = pattern.matcher(idCard); | 
 |  |  |         Integer sex = 1; | 
 |  |  |         if (matcher.matches()) { | 
 |  |  |             int genderCode = Integer.parseInt(idCard.substring(16, 17)); // 从第17位开始提取性别编码(奇数为男性,偶数为女性) | 
 |  |  |             if ((genderCode % 2 == 1) ) { | 
 |  |  |                 sex = 1; | 
 |  |  |             } else { | 
 |  |  |                 sex = 2; | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |            sex = -1; | 
 |  |  |         } | 
 |  |  |         return sex; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 状态 0已保存、1待审核、2审核通过、3退回修改、4审核驳回、5待服务机构确认、6服务机构拒绝、7已分配服务机构、8诊断中 | 
 |  |  |      * (成功上传第一份服务资料)、9服务完成、10已分配评分专家、11已完成(专家上传评分) 12退回修改中 13 已完成退回修改 | 
 |  |  | 
 |  |  |         BD_SIGNED_PDF(9, "签署后保单申请表PDF", "签署后保单申请表PDF"), | 
 |  |  |         COM_SING_IMG(10, "企业印章", "企业印章"), | 
 |  |  |         BD_DONE_PDF(11, "最终报单", "最终报单"), | 
 |  |  |  | 
 |  |  |         CA_PD_PDF(12, "最终报单", "最终报单"), | 
 |  |  |         CA_APPLY_JIAJIAN_SIGN(13, "加减保申请签章文件", "加减保申请签章文件"), | 
 |  |  |         CA_APPLY_CHANGEUNIT_SIGN(14, "换厂申请签章文件", "换厂申请签章文件"), | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         ; | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public  enum ApplyCollectStatus { | 
 |  |  |         DSP(0, "待审批"), | 
 |  |  |         DCD(1, "待出单"), | 
 |  |  |         BZZ(2, "保障中"), | 
 |  |  |         YGQ(3, "已过期"), | 
 |  |  |         YTH(4, "已退回"), | 
 |  |  |         THSQZ(5, "申请退回"), | 
 |  |  |         YGB(6, "已关闭"), | 
 |  |  |         DQYQZ(7, "待签署"), | 
 |  |  |         ; | 
 |  |  |         // 成员变量 | 
 |  |  |         private String name; | 
 |  |  |         private int key; | 
 |  |  |  | 
 |  |  |         // 构造方法 | 
 |  |  |         ApplyCollectStatus(int key, String name) { | 
 |  |  |             this.name = name; | 
 |  |  |             this.key = key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 普通方法 | 
 |  |  |         public static String getName(int index) { | 
 |  |  |             for (ApplyCollectStatus c : ApplyCollectStatus.values()) { | 
 |  |  |                 if (c.getKey() == index) { | 
 |  |  |                     return c.name; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // get set 方法 | 
 |  |  |         public String getName() { | 
 |  |  |             return name; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setName(String name) { | 
 |  |  |             this.name = name; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public int getKey() { | 
 |  |  |             return key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setKey(int key) { | 
 |  |  |             this.key = key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public  enum ApplyLogType { | 
 |  |  |         UPLOAD(0, "提交投保","提交意见:${param}"), | 
 |  |  | 
 |  |  |         CA_PALTFORM_REFUSE_APPLY(20, "驳回退回申请",""), | 
 |  |  |         CA_PALTFORM_EDIT_PIDAN(21, "修改批单","修改原因:${param}"), | 
 |  |  |         PALTFORM_EDIT_BD(22, "修改保单","修改原因:${param}"), | 
 |  |  |         CA_JIAJIAN_APPLY_SIGN(23, "加减保申请企业签章",""), | 
 |  |  |  | 
 |  |  |         CA_CHANGUNIT_APPLY_SIGN(24, "换成申请企业签章",""), | 
 |  |  |         ; | 
 |  |  |         // 成员变量 | 
 |  |  |         private String name; | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public  enum InsuranceApplyStatus { | 
 |  |  |         UPLOAD(0, "提交投保",""), | 
 |  |  |         PLATFORM_RETURN(1, "审核不通过","提交意见:${param}"), | 
 |  |  |         WAIT_SIGNATURE(2, "已上传代签申请表待企业签章",""), | 
 |  |  |         SIGNATURE(3, "已签章待上传保险单",""), | 
 |  |  |         FAIL_RETURN(4, "保单出具失败退回",""), | 
 |  |  |         UPLOAD_INSURANCE(5, "保单完成","保险生效起期:${param}变更为${param1}"), | 
 |  |  |         COMPANY_BACK_APPLY_UPLOAD(6, "企业申请退回(提交投保)","提交意见:${param}"), | 
 |  |  |         COMPANY_BACK_APPLY_WAIT_SIGNATURE(7, "企业申请退回(待签章)","提交意见:${param}"), | 
 |  |  |         COMPANY_BACK_APPLY_SIGNATURE(8, "企业申请退回(已签章)","提交意见:${param}"), | 
 |  |  |         CLOSE(9, "订单关闭",""), | 
 |  |  |         PLATFORM_CHECK_PASS(10,"平台投保审核通过",""), | 
 |  |  |         UPLOAD(0, "提交投保","",0), | 
 |  |  |         PLATFORM_RETURN(1, "审核不通过","提交意见:${param}",4), | 
 |  |  |         WAIT_SIGNATURE(2, "已上传代签申请表待企业签章","",7), | 
 |  |  |         SIGNATURE(3, "已签章待上传保险单","",1), | 
 |  |  |         FAIL_RETURN(4, "保单出具失败退回","",4), | 
 |  |  |         UPLOAD_INSURANCE(5, "保单完成","保险生效起期:${param}变更为${param1}",2), | 
 |  |  |         COMPANY_BACK_APPLY_UPLOAD(6, "企业申请退回(提交投保)","提交意见:${param}",5), | 
 |  |  |         COMPANY_BACK_APPLY_WAIT_SIGNATURE(7, "企业申请退回(待签章)","提交意见:${param}",5), | 
 |  |  |         COMPANY_BACK_APPLY_SIGNATURE(8, "企业申请退回(已签章)","提交意见:${param}",5), | 
 |  |  |         CLOSE(9, "订单关闭","",6), | 
 |  |  |         PLATFORM_CHECK_PASS(10,"平台投保审核通过","提交意见:${param}",1), | 
 |  |  |         ; | 
 |  |  |         // 成员变量 | 
 |  |  |         private String name; | 
 |  |  |         private String info; | 
 |  |  |         private int key; | 
 |  |  |         private int collectStatus; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         // 构造方法 | 
 |  |  |         InsuranceApplyStatus(int key, String name,String info) { | 
 |  |  |         InsuranceApplyStatus(int key, String name,String info,int collectStatus) { | 
 |  |  |             this.name = name; | 
 |  |  |             this.key = key; | 
 |  |  |             this.info = info; | 
 |  |  |             this.collectStatus = collectStatus; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 普通方法 | 
 |  |  | 
 |  |  |             for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { | 
 |  |  |                 if (c.getKey() == index) { | 
 |  |  |                     return c.name; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         public static List<Integer> getKesByStatus(Integer collectStatus) { | 
 |  |  |             List<Integer>  list = new ArrayList<>(); | 
 |  |  |             if(collectStatus!=null){ | 
 |  |  |                 for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { | 
 |  |  |                     if (Constants.equalsInteger(c.getCollectStatus() ,collectStatus)) { | 
 |  |  |                         list.add(c.getKey()); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return list; | 
 |  |  |         } | 
 |  |  |         public static Integer getCollectStatus(Integer index) { | 
 |  |  |             for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { | 
 |  |  |                 if (Constants.equalsInteger(c.getKey() , index)) { | 
 |  |  |                     return c.collectStatus; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  | 
 |  |  |         public void setInfo(String info) { | 
 |  |  |             this.info = info; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public int getCollectStatus() { | 
 |  |  |             return collectStatus; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setCollectStatus(int collectStatus) { | 
 |  |  |             this.collectStatus = collectStatus; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public  enum NoticeObjectType { | 
 |  |  |         INSURANCE_APPLY(0, "投保申请","保险方案"), | 
 |  |  |         APPLY_CHANGE(1, "加减保申请","保险方案"), | 
 |  |  |         CHANGE_FACTORY(2, "员工换厂申请","保险方案"), | 
 |  |  |         DISPATCH_UNIT(3, "派遣单位申请","派遣单位"), | 
 |  |  |         TAXES(4, "开票申请","开票金额"), | 
 |  |  |         SETTLE_CLAIMS(5, "报案理赔","报案人") | 
 |  |  |         ; | 
 |  |  |         // 成员变量 | 
 |  |  |         private int key; | 
 |  |  |         private String name; | 
 |  |  |         private String info; | 
 |  |  |  | 
 |  |  |         // 构造方法 | 
 |  |  |         NoticeObjectType(int key, String name,String info) { | 
 |  |  |             this.name = name; | 
 |  |  |             this.key = key; | 
 |  |  |             this.info = info; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 普通方法 | 
 |  |  |         public static String getName(int index) { | 
 |  |  |             for (NoticeObjectType c : NoticeObjectType.values()) { | 
 |  |  |                 if (c.getKey() == index) { | 
 |  |  |                     return c.name; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         // get set 方法 | 
 |  |  |         public String getName() { | 
 |  |  |             return name; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setName(String name) { | 
 |  |  |             this.name = name; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public int getKey() { | 
 |  |  |             return key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setKey(int key) { | 
 |  |  |             this.key = key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getInfo() { | 
 |  |  |             return info; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setInfo(String info) { | 
 |  |  |             this.info = info; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public  enum NoticeType { | 
 |  |  |  | 
 |  |  |         ZERO(0, "待审批","","","待审核","已申请","待受理"), | 
 |  |  |         ONE(1, "企业待签署","","","工种待审核","","完成受理"), | 
 |  |  |         TWO(2, "待出单","待审批","待审批","","",""), | 
 |  |  |         THREE(3, "申请退回","申请退回","申请退回","","",""), | 
 |  |  |         FOUR(4, "已退回","已退回","已退回","","",""), | 
 |  |  |         FIVE(5, "申请驳回","申请驳回","申请驳回","","","") | 
 |  |  |         ; | 
 |  |  |  | 
 |  |  |         // 成员变量 | 
 |  |  |         private int status; | 
 |  |  |         private String insuranceApplyDetail; | 
 |  |  |         private String applyChangeDetail; | 
 |  |  |         private String changeFactoryDetail; | 
 |  |  |         private String dispatchUnitDetail; | 
 |  |  |         private String taxesDetail; | 
 |  |  |         private String settleClaimsDetail; | 
 |  |  |  | 
 |  |  |         // 构造方法 | 
 |  |  |         NoticeType(int status, String insuranceApplyDetail,String applyChangeDetail | 
 |  |  |                 , String changeFactoryDetail,String dispatchUnitDetail | 
 |  |  |                 , String taxesDetail,String settleClaimsDetail) { | 
 |  |  |             this.status = status; | 
 |  |  |             this.insuranceApplyDetail = insuranceApplyDetail; | 
 |  |  |             this.applyChangeDetail = applyChangeDetail; | 
 |  |  |             this.changeFactoryDetail = changeFactoryDetail; | 
 |  |  |             this.dispatchUnitDetail = dispatchUnitDetail; | 
 |  |  |             this.taxesDetail = taxesDetail; | 
 |  |  |             this.settleClaimsDetail = settleClaimsDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 普通方法 | 
 |  |  |         public static String getDetail(int status,int type) { | 
 |  |  |             for (NoticeType c : NoticeType.values()) { | 
 |  |  |                 if (c.getStatus() == status) { | 
 |  |  |                     if(type==NoticeObjectType.INSURANCE_APPLY.getKey() ){ | 
 |  |  |                         return c.getInsuranceApplyDetail(); | 
 |  |  |                     }else if(type == NoticeObjectType.APPLY_CHANGE.getKey()){ | 
 |  |  |                         return c.getApplyChangeDetail(); | 
 |  |  |                     }else if(type == NoticeObjectType.CHANGE_FACTORY.getKey()){ | 
 |  |  |                         return c.getChangeFactoryDetail(); | 
 |  |  |                     }else if(type == NoticeObjectType.DISPATCH_UNIT.getKey()){ | 
 |  |  |                         return c.getDispatchUnitDetail(); | 
 |  |  |                     }else if(type == NoticeObjectType.TAXES.getKey()){ | 
 |  |  |                         return c.getTaxesDetail(); | 
 |  |  |                     }else if(type == NoticeObjectType.SETTLE_CLAIMS.getKey()){ | 
 |  |  |                         return c.getSettleClaimsDetail(); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // get set 方法 | 
 |  |  |         public int getStatus() { | 
 |  |  |             return status; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setStatus(int status) { | 
 |  |  |             this.status = status; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getInsuranceApplyDetail() { | 
 |  |  |             return insuranceApplyDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setInsuranceApplyDetail(String name) { | 
 |  |  |             this.insuranceApplyDetail = insuranceApplyDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getApplyChangeDetail() { | 
 |  |  |             return applyChangeDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setApplyChangeDetail(String info) { | 
 |  |  |             this.applyChangeDetail = applyChangeDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getChangeFactoryDetail() { | 
 |  |  |             return changeFactoryDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setChangeFactoryDetail(String info) { | 
 |  |  |             this.changeFactoryDetail = changeFactoryDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getDispatchUnitDetail() { | 
 |  |  |             return dispatchUnitDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setDispatchUnitDetail(String info) { | 
 |  |  |             this.dispatchUnitDetail = dispatchUnitDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getTaxesDetail() { | 
 |  |  |             return taxesDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setTaxesDetail(String info) { | 
 |  |  |             this.taxesDetail = taxesDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getSettleClaimsDetail() { | 
 |  |  |             return settleClaimsDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setSettleClaimsDetail(String info) { | 
 |  |  |             this.settleClaimsDetail = settleClaimsDetail; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public static BigDecimal countDetailFee(Solutions solutions,Date startDate, Date endDate){ | 
 |  |  |         //查询保险实际周期 | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return solutions.getPrice().multiply(new BigDecimal(cycle)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static BigDecimal countDetailFee(int timeUnit ,BigDecimal price,Date startDate, Date endDate){ | 
 |  |  |         //查询保险实际周期 | 
 |  |  |         Integer cycle = DateUtil.calculateBetween(endDate,startDate,timeUnit); | 
 |  |  | 
 |  |  |         UPLOAD(0, "提交报案","提交意见:${param}"), | 
 |  |  |         PLATFORM_RETURN(1, "平台退回","提交意见:${param}"), | 
 |  |  |         PLATFORM_CONFIRM_INFORMATION(2, "平台确认资料",""), | 
 |  |  |         PLATFORM_FINISH(3, "平台完成受理","提交意见:${param}"), | 
 |  |  |         PLATFORM_FINISH(3, "结案提交","提交意见:${param}"), | 
 |  |  |         UPDATE_DATA(4, "修改信息","提交意见:${param}"), | 
 |  |  |         SUPPLEMENT(5, "补充说明","提交意见:${param}"), | 
 |  |  |         PLATFORM_LP_DEAL(6, "平台理赔处理","提交意见:${param}"), | 
 |  |  |         PLATFORM_REMARK(7, "平台备注标签",""), | 
 |  |  |         PLATFORM_ADDCODE(8, "平台添加报案号",""), | 
 |  |  |         PLATFORM_REMARK(7, "平台备注标签","${param}"), | 
 |  |  |         PLATFORM_ADDCODE(8, "平台添加报案号","备案号:${param}"), | 
 |  |  |         PLATFORM_UN_AGREE_BACK(9, "企业下载资料",""), | 
 |  |  |         PLATFORM_DOWNLOAD(10, "平台下载资料",""), | 
 |  |  |         PLATFORM_CHECK_PASS(11, "平台上传资料",""), | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public  enum ApplyChangeLogStatus { | 
 |  |  |         UPLOAD(0, "发起申请"), | 
 |  |  |         RETURN_APPLY(3, "发起退回申请"), | 
 |  |  |         PLATFORM_AGREE(4, "平台审批通过"), | 
 |  |  |         PLATFORM_UN_AGREE(0, "审批驳回"), | 
 |  |  |         CLOSE(5, "关闭"), | 
 |  |  |         UPLOAD(0, "发起申请",""), | 
 |  |  |         RETURN_APPLY(3, "发起退回申请","提交意见:${param}"), | 
 |  |  |         PLATFORM_AGREE(4, "平台审批通过" ,"提交意见:${param}"), | 
 |  |  |         PLATFORM_UN_AGREE(0, "审批驳回","提交意见:${param}"), | 
 |  |  |         CLOSE(5, "关闭",""), | 
 |  |  |         ; | 
 |  |  |         // 成员变量 | 
 |  |  |         private String name; | 
 |  |  |         private String info; | 
 |  |  |         private int key; | 
 |  |  |  | 
 |  |  |         // 构造方法 | 
 |  |  |         ApplyChangeLogStatus(int key, String name) { | 
 |  |  |         ApplyChangeLogStatus(int key, String name,String info) { | 
 |  |  |             this.name = name; | 
 |  |  |             this.info = info; | 
 |  |  |             this.key = key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 普通方法 | 
 |  |  |         public static String getName(int index) { | 
 |  |  |             for (ApplyLogType c : ApplyLogType.values()) { | 
 |  |  |             for (ApplyChangeLogStatus c : ApplyChangeLogStatus.values()) { | 
 |  |  |                 if (c.getKey() == index) { | 
 |  |  |                     return c.name; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         public static String getInfo(int index) { | 
 |  |  |             for (ApplyChangeLogStatus c : ApplyChangeLogStatus.values()) { | 
 |  |  |                 if (c.getKey() == index) { | 
 |  |  |                     return c.info; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             return null; | 
 |  |  | 
 |  |  |  | 
 |  |  |         public void setKey(int key) { | 
 |  |  |             this.key = key; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public String getInfo() { | 
 |  |  |             return info; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public void setInfo(String info) { | 
 |  |  |             this.info = info; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | 
 |  |  |             InputStream inStream = null; | 
 |  |  |             OutputStream os = null; | 
 |  |  |             try { | 
 |  |  |                 file = File.createTempFile("", fileName); | 
 |  |  |                 String tempDir = System.getProperty("java.io.tmpdir")+fileName; | 
 |  |  |                 file = new File(tempDir); | 
 |  |  |                 //下载 | 
 |  |  |                 urlfile = new URL(url); | 
 |  |  |                 inStream = urlfile.openStream(); | 
 |  |  | 
 |  |  |  | 
 |  |  |         return file; | 
 |  |  |     } | 
 |  |  |     public static void packFilesToZip(List<File> files,    ServletOutputStream os) throws IOException { | 
 |  |  |         try (ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(os)) { | 
 |  |  |             for (File file : files) { | 
 |  |  |                 ZipArchiveEntry entry = new ZipArchiveEntry(file.getName()); | 
 |  |  |                 zipOutputStream.putArchiveEntry(entry); | 
 |  |  |                 try (FileInputStream fileInputStream = new FileInputStream(file)) { | 
 |  |  |                     byte[] buffer = new byte[1024]; | 
 |  |  |                     int length; | 
 |  |  |                     while ((length = fileInputStream.read(buffer)) > 0) { | 
 |  |  |                         zipOutputStream.write(buffer, 0, length); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 zipOutputStream.closeArchiveEntry(); | 
 |  |  |                 file.delete(); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |