|  |  |  | 
|---|
|  |  |  | package com.doumee.core.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cn.hutool.core.io.IoUtil; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | import com.doumee.core.constants.ResponseStatus; | 
|---|
|  |  |  | import com.doumee.core.exception.BusinessException; | 
|---|
|  |  |  | import com.doumee.core.model.LoginUserInfo; | 
|---|
|  |  |  | import com.fasterxml.jackson.annotation.JsonInclude; | 
|---|
|  |  |  | import com.fasterxml.jackson.core.JsonProcessingException; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.fasterxml.jackson.databind.PropertyNamingStrategy; | 
|---|
|  |  |  | import io.swagger.models.auth.In; | 
|---|
|  |  |  | import org.apache.batik.util.Platform; | 
|---|
|  |  |  | import org.apache.commons.compress.archivers.zip.Zip64Mode; | 
|---|
|  |  |  | import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; | 
|---|
|  |  |  | import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.springframework.util.CollectionUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.File; | 
|---|
|  |  |  | import java.io.FileInputStream; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.io.OutputStream; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.net.URLDecoder; | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | 
|---|
|  |  |  | public static final String YW_DEVICE ="YW_DEVICE" ; | 
|---|
|  |  |  | public static final String YW_PATROL ="YW_PATROL" ; | 
|---|
|  |  |  | public static final String YW_CONTRACT_BILL ="YW_CONTRACT_BILL" ; | 
|---|
|  |  |  | public static final String YW_MATERIAL ="YW_MATERIAL" ; | 
|---|
|  |  |  | public static final String YW_PROBLEM ="YW_PROBLEM" ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ; | 
|---|
|  |  |  | public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ; | 
|---|
|  |  |  | 
|---|
|  |  |  | public static final String TIMEOUT_WARNING = "TIMEOUT_WARNING"; | 
|---|
|  |  |  | // FTP文件服务器资源访问地址 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | *    付款周期类型 0=元每平米天;1=元每平米月;2=元每平米年;3=元每天;4=元每月;5=元每年;6=元每场; | 
|---|
|  |  |  | * @param circleType | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static String getUnitTypeByNum(Integer circleType) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int zlPayType = Constants.formatIntegerNum(circleType); | 
|---|
|  |  |  | if(zlPayType == 1){ | 
|---|
|  |  |  | return "元/㎡·月"; | 
|---|
|  |  |  | }else   if(zlPayType == 2){ | 
|---|
|  |  |  | return "元/㎡·天"; | 
|---|
|  |  |  | }else  if(zlPayType == 3){ | 
|---|
|  |  |  | return "元/天"; | 
|---|
|  |  |  | }else  if(zlPayType == 4){ | 
|---|
|  |  |  | return "元/月"; | 
|---|
|  |  |  | }else  if(zlPayType == 5){ | 
|---|
|  |  |  | return "元/年"; | 
|---|
|  |  |  | }else  if(zlPayType == 6){ | 
|---|
|  |  |  | return "元/场"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return "元/㎡·天"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | *  周期支付方式 0=一次性付款;1=每三个月一付;2=六个月一付;3=一年一付 | 
|---|
|  |  |  | * @param zlPayType | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static String getPayTypeByNum(Integer zlPayType) { | 
|---|
|  |  |  | if(zlPayType == null){ | 
|---|
|  |  |  | return  ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(zlPayType == 1){ | 
|---|
|  |  |  | return "3个月一付"; | 
|---|
|  |  |  | }else   if(zlPayType == 2){ | 
|---|
|  |  |  | return "6个月一付"; | 
|---|
|  |  |  | }else  if(zlPayType == 3){ | 
|---|
|  |  |  | return "1年一付"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return "一次性付款"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static String getRandom6Num( ) { | 
|---|
|  |  |  | Random random = new Random(); | 
|---|
|  |  |  | 
|---|
|  |  |  | public static final long EXPIRE_TIME = 7200; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static final String INTERNAL_TOKEN ="INTERNAL_TOKEN"; | 
|---|
|  |  |  | public static final String COM_OUTBOUND_OUT_KEY = "obout_"; | 
|---|
|  |  |  | public static final String COM_OUTBOUND_IN_KEY = "obin_"; | 
|---|
|  |  |  | public static final String COM_OUTBOUND_TAKING_KEY = "obtaking_"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static final String GOODSORDER_KEY = "ordercode_"; | 
|---|
|  |  |  | public static final String ACTIVITY_SIGN_KEY = "actcode_"; | 
|---|
|  |  |  | 
|---|
|  |  |  | int otherDeal = 5;//他人已处理 | 
|---|
|  |  |  | int otherUnPass = 6;//他人拒绝 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //类型 0采购入库 1领用退回 2库存调整入库 3其他入库 4盘盈入库 5领用出库 6仓库出库 7调整出库 8采购出库 9其他出库 10盘亏出库 | 
|---|
|  |  |  | public  enum ywOutInType{ | 
|---|
|  |  |  | BUY_IN(0, 0), | 
|---|
|  |  |  | USE_RETURN_IN(1, 0), | 
|---|
|  |  |  | STOCK_IN(2, 0), | 
|---|
|  |  |  | OTHER_IN(3, 0), | 
|---|
|  |  |  | TAKING_IN(4, 0), | 
|---|
|  |  |  | USE_OUT(5, 1), | 
|---|
|  |  |  | HOUSE_OUT(6, 1), | 
|---|
|  |  |  | STOCK_OUT(7, 1), | 
|---|
|  |  |  | OTHER_UN_PASS_OUT(8, 1), | 
|---|
|  |  |  | BUY_OUT(9, 1), | 
|---|
|  |  |  | TAKING_OUT(10, 1) | 
|---|
|  |  |  | ; | 
|---|
|  |  |  | // 成员变量 | 
|---|
|  |  |  | private int key; | 
|---|
|  |  |  | private int inOut; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构造方法 | 
|---|
|  |  |  | ywOutInType(int key, int inOut) { | 
|---|
|  |  |  | this.inOut = inOut; | 
|---|
|  |  |  | this.key = key; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 普通方法 | 
|---|
|  |  |  | public static Integer getInOutValue(int index) { | 
|---|
|  |  |  | for (ywOutInType c : ywOutInType.values()) { | 
|---|
|  |  |  | if (c.getKey() == index) { | 
|---|
|  |  |  | return c.getInOut(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 普通方法 | 
|---|
|  |  |  | public static ywOutInType getYwOutInType(int index) { | 
|---|
|  |  |  | for (ywOutInType c : ywOutInType.values()) { | 
|---|
|  |  |  | if (c.getKey() == index) { | 
|---|
|  |  |  | return c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据出入库类型获取所有的具体类型 | 
|---|
|  |  |  | * @param inOutType | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static List<Integer> getAllTypeKey(int inOutType) { | 
|---|
|  |  |  | List<Integer> list = new ArrayList<>(); | 
|---|
|  |  |  | for (ywOutInType c : ywOutInType.values()) { | 
|---|
|  |  |  | if (c.getInOut() == inOutType) { | 
|---|
|  |  |  | list.add(c.getKey()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return list; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // get set 方法 | 
|---|
|  |  |  | public int getInOut() { | 
|---|
|  |  |  | return inOut; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void setInOut(int inOut) { | 
|---|
|  |  |  | this.inOut = inOut; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public int getKey() { | 
|---|
|  |  |  | return key; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void setKey(int key) { | 
|---|
|  |  |  | this.key = key; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取车牌类型信息 | 
|---|
|  |  |  | 
|---|
|  |  |  | FN_DEVICE_RECORD_FILE(6, "阜宁服务平台运维记录图片 ", "阜宁服务平台运维记录图片 "), | 
|---|
|  |  |  | FN_PATROL_POINT_FILE(7, "巡检点附件 ", "巡检点附件 "), | 
|---|
|  |  |  | FN_CONTRACT_BILL_FILE(8, "合同账单附件 ", "合同账单附件 "), | 
|---|
|  |  |  | YW_CONTRACT_FILE(9, "合同附件 ", "合同附件 ") | 
|---|
|  |  |  | YW_CONTRACT_FILE(9, "合同附件 ", "合同附件 "), | 
|---|
|  |  |  | FN_CONTRACT_REVENUE_FILE(10, "收支流水附件 ", "合同账单附件 "), | 
|---|
|  |  |  | FN_PATROL_TASK_RECORD_FILE(11, "巡检任务点处理附件 ", "巡检任务点处理附件 "), | 
|---|
|  |  |  | MATERIAL_FILE(12, "资产附件 ", "资产附件 "), | 
|---|
|  |  |  | PROBLEM_FILE(13, "问题附件 ", "问题附件 "), | 
|---|
|  |  |  | FN_DEVICE_MAINTENANCE_FILE(14, "阜宁服务平台设备文件 ", "阜宁服务平台设备文件 "), | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ; | 
|---|
|  |  |  | // 成员变量 | 
|---|
|  |  |  | 
|---|
|  |  |  | * 操作类型 0工单创建 1指派 2处理 3合同创建 4合同变更 5合同退租 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public  enum YwLogType{ | 
|---|
|  |  |  | WORKORDER_CREATE(0, "工单创建", "工单创建"), | 
|---|
|  |  |  | WORKORDER_DISPATCH(1, "工单指派", "工单指派"), | 
|---|
|  |  |  | WORKORDER_DEAL(2, "工单处理 ", "工单处理 "), | 
|---|
|  |  |  | CONTRACT_CREATE(3, "合同创建 ", "合同创建 "), | 
|---|
|  |  |  | CONTRACT_UPDATE(4, "合同变更 ", "合同变更 "), | 
|---|
|  |  |  | CONTRACT_BACK(5, "合同退租 ", "合同退租 "), | 
|---|
|  |  |  | WORKORDER_CREATE(0, "创建工单", "创建工单"), | 
|---|
|  |  |  | WORKORDER_DISPATCH(1, "分派工单", "分派工单"), | 
|---|
|  |  |  | WORKORDER_DEAL(2, "处理工单", "处理工单"), | 
|---|
|  |  |  | CONTRACT_CREATE(3, "合同新建", "新建"), | 
|---|
|  |  |  | CONTRACT_UPDATE(4, "合同变更", "变更"), | 
|---|
|  |  |  | CONTRACT_BACK(5, "合同退租", "退租"), | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ; | 
|---|
|  |  |  | // 成员变量 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //邮箱格式的验证 | 
|---|
|  |  |  | public static boolean validEmail(String email) { | 
|---|
|  |  |  | Pattern p = Pattern.compile("[a-zA-Z0-9]+@[A-Za-z0-9]+\\.[a-z0-9]"); | 
|---|
|  |  |  | Matcher m = p.matcher(email); | 
|---|
|  |  |  | if(m.find()){ | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void packFilesToZip(List<File> files, OutputStream os) throws IOException { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(os); | 
|---|
|  |  |  | zipOutputStream.setUseZip64(Zip64Mode.AsNeeded); | 
|---|
|  |  |  | for (File file : files) { | 
|---|
|  |  |  | if(!file.exists()){ | 
|---|
|  |  |  | System.out.println("===文件不存在======="+file.getPath()); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | System.out.println("===文件存在======="+file.getPath()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ZipArchiveEntry entry = new ZipArchiveEntry(file.getName()); | 
|---|
|  |  |  | zipOutputStream.putArchiveEntry(entry); | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | zipOutputStream.flush(); | 
|---|
|  |  |  | IoUtil.close(fileInputStream); | 
|---|
|  |  |  | file.delete(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR.getCode(),"对不起,下载压缩文件失败"); | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | if (os != null) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | os.close(); | 
|---|
|  |  |  | } catch (IOException e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|