commit
c2a041eac2
@ -0,0 +1,35 @@ |
|||||||
|
package com.dxhy.order.consumer.dao; |
||||||
|
|
||||||
|
import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity; |
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description 集团物料库 集团物料库和 |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 10:36 |
||||||
|
**/ |
||||||
|
public interface GroupCommodityCodeMapper { |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询集团物料库 |
||||||
|
* |
||||||
|
* @param commodityCodeEntity |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
List<CommodityCodeEntity> queryGroupCommodityCodeList(CommodityCodeEntity commodityCodeEntity); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 根据物料编码和销方税号查询物料信息 |
||||||
|
* |
||||||
|
* @param zxbm |
||||||
|
* @param xhfNsrsbh |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
CommodityCodeEntity queryCommodityCodeByZxbmAndXhfNsrsbh(@Param("zxbm") String zxbm, @Param("xhfNsrsbh") String xhfNsrsbh); |
||||||
|
|
||||||
|
|
||||||
|
int insertCommodityCode(CommodityCodeEntity entity); |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package com.dxhy.order.consumer.modules.commodity.controller; |
||||||
|
|
||||||
|
import cn.hutool.json.JSONObject; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.domain.dto.QueryGroupCommodityDTO; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.domain.dto.QuoteGroupCommodityDTO; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.service.IGroupCommodityCodeService; |
||||||
|
import com.dxhy.order.model.PageUtils; |
||||||
|
import com.dxhy.order.model.R; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.validation.annotation.Validated; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description 集团物料库 |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 08:19 |
||||||
|
**/ |
||||||
|
@RequestMapping(value = "/groupCommodity") |
||||||
|
@RestController |
||||||
|
@Slf4j |
||||||
|
public class GroupCommodityCodeController { |
||||||
|
|
||||||
|
private final static String LOGGER_MSG = "(集团物料库)"; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IGroupCommodityCodeService groupCommodityCodeService; |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
public R list(QueryGroupCommodityDTO queryGroupCommodityDTO) { |
||||||
|
try { |
||||||
|
PageUtils pageUtil = groupCommodityCodeService.queryGroupCommodityCodeList(queryGroupCommodityDTO); |
||||||
|
return R.ok().put("page", pageUtil); |
||||||
|
} catch (NumberFormatException e) { |
||||||
|
log.error("{},分页参数类型转换异常:{}", LOGGER_MSG, e.getMessage()); |
||||||
|
return R.error("商品信息列表查询异常"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 物料引用 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PostMapping("/quote") |
||||||
|
public R quote(@RequestBody @Validated QuoteGroupCommodityDTO dto) { |
||||||
|
return groupCommodityCodeService.quoteGroupCommodityCode(dto); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package com.dxhy.order.consumer.modules.commodity.domain.dto; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description 带分页的基础dto |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 10:09 |
||||||
|
**/ |
||||||
|
public class PageBaseDTO { |
||||||
|
|
||||||
|
private Integer currPage; |
||||||
|
private Integer pageSize; |
||||||
|
|
||||||
|
public Integer getCurrPage() { |
||||||
|
return currPage == null ? 0 : currPage; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCurrPage(Integer currPage) { |
||||||
|
this.currPage = currPage; |
||||||
|
} |
||||||
|
|
||||||
|
public Integer getPageSize() { |
||||||
|
return pageSize == null ? 0 : pageSize; |
||||||
|
} |
||||||
|
|
||||||
|
public void setPageSize(Integer pageSize) { |
||||||
|
this.pageSize = pageSize; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
package com.dxhy.order.consumer.modules.commodity.domain.dto; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Builder; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description 集团物料编码查询 |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 08:22 |
||||||
|
**/ |
||||||
|
@Data |
||||||
|
@NoArgsConstructor |
||||||
|
@AllArgsConstructor |
||||||
|
@Builder |
||||||
|
public class QueryGroupCommodityDTO extends PageBaseDTO { |
||||||
|
|
||||||
|
// 物料分类编码
|
||||||
|
private String wlflbm; |
||||||
|
|
||||||
|
// 物料分类名称
|
||||||
|
private String wlflmc; |
||||||
|
|
||||||
|
// 物料自行编码
|
||||||
|
private String zxbm; |
||||||
|
|
||||||
|
// 物料名称
|
||||||
|
private String xmmc; |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.dxhy.order.consumer.modules.commodity.domain.dto; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description 引用物料 |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 11:01 |
||||||
|
**/ |
||||||
|
@Data |
||||||
|
public class QuoteGroupCommodityDTO { |
||||||
|
|
||||||
|
/** |
||||||
|
* 自行编码 |
||||||
|
*/ |
||||||
|
@NotBlank(message = "物料编码不能为空!") |
||||||
|
private String zxbm; |
||||||
|
|
||||||
|
@NotBlank(message = "接收引用物料的销方纳税人识别号不能为空!") |
||||||
|
private String xhfNsrsbh; |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.dxhy.order.consumer.modules.commodity.service; |
||||||
|
|
||||||
|
import com.dxhy.order.consumer.modules.commodity.domain.dto.QueryGroupCommodityDTO; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.domain.dto.QuoteGroupCommodityDTO; |
||||||
|
import com.dxhy.order.model.PageUtils; |
||||||
|
import com.dxhy.order.model.R; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description 集团物料库 |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 10:06 |
||||||
|
**/ |
||||||
|
public interface IGroupCommodityCodeService { |
||||||
|
|
||||||
|
PageUtils queryGroupCommodityCodeList(QueryGroupCommodityDTO queryGroupCommodityDTO); |
||||||
|
|
||||||
|
R quoteGroupCommodityCode(QuoteGroupCommodityDTO quoteGroupCommodityDTO); |
||||||
|
} |
@ -0,0 +1,116 @@ |
|||||||
|
package com.dxhy.order.consumer.modules.commodity.service.impl; |
||||||
|
|
||||||
|
import com.dxhy.order.baseservice.module.base.service.BaseService; |
||||||
|
import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity; |
||||||
|
import com.dxhy.order.constant.ConfigureConstant; |
||||||
|
import com.dxhy.order.consumer.dao.GroupCommodityCodeMapper; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.domain.dto.QueryGroupCommodityDTO; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.domain.dto.QuoteGroupCommodityDTO; |
||||||
|
import com.dxhy.order.consumer.modules.commodity.service.IGroupCommodityCodeService; |
||||||
|
import com.dxhy.order.model.PageUtils; |
||||||
|
import com.dxhy.order.model.R; |
||||||
|
import com.dxhy.order.utils.CommonUtils; |
||||||
|
import com.github.pagehelper.PageHelper; |
||||||
|
import com.github.pagehelper.PageInfo; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.apache.commons.beanutils.BeanUtils; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.lang.reflect.InvocationTargetException; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Description |
||||||
|
* @Author 巩权林 |
||||||
|
* @Date 2023/3/9 10:06 |
||||||
|
**/ |
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class GroupCommodityCodeServiceImpl implements IGroupCommodityCodeService { |
||||||
|
|
||||||
|
private final static String LOGGER_MSG = "(集团物料库)"; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private GroupCommodityCodeMapper groupCommodityMapper; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private BaseService baseService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询集团物料库 |
||||||
|
* |
||||||
|
* @param queryGroupCommodityDTO |
||||||
|
* @param shList |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public PageUtils queryGroupCommodityCodeList(QueryGroupCommodityDTO queryGroupCommodityDTO) { |
||||||
|
int pageSize = queryGroupCommodityDTO.getPageSize(); |
||||||
|
int currPage = queryGroupCommodityDTO.getCurrPage(); |
||||||
|
PageHelper.startPage(currPage, pageSize); |
||||||
|
CommodityCodeEntity query = new CommodityCodeEntity(); |
||||||
|
query.setWlflbm(queryGroupCommodityDTO.getWlflbm()); |
||||||
|
query.setWlflmc(queryGroupCommodityDTO.getWlflmc()); |
||||||
|
query.setZxbm(queryGroupCommodityDTO.getZxbm()); |
||||||
|
query.setXmmc(queryGroupCommodityDTO.getXmmc()); |
||||||
|
List<CommodityCodeEntity> result = groupCommodityMapper.queryGroupCommodityCodeList(query); |
||||||
|
result = result.stream().map(i -> { |
||||||
|
if (StringUtils.isNotEmpty(i.getSl())) { |
||||||
|
i.setSl(CommonUtils.formatSl(i.getSl())); |
||||||
|
} |
||||||
|
return i; |
||||||
|
}).collect(Collectors.toList()); |
||||||
|
PageInfo<CommodityCodeEntity> pageInfo = new PageInfo<>(result); |
||||||
|
return new PageUtils(pageInfo.getList(), (int) pageInfo.getTotal(), pageInfo.getPageSize(), pageInfo.getPageNum()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 引用物料 |
||||||
|
* |
||||||
|
* @param quoteGroupCommodityDTO |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public R quoteGroupCommodityCode(QuoteGroupCommodityDTO quoteGroupCommodityDTO) { |
||||||
|
// 判断销方税号是否合法,因为某些情况下可能会传递list过来
|
||||||
|
if (StringUtils.isBlank(quoteGroupCommodityDTO.getXhfNsrsbh())) { |
||||||
|
return R.error(ConfigureConstant.STRING_0000, "销方税号不能为空"); |
||||||
|
} |
||||||
|
|
||||||
|
if (quoteGroupCommodityDTO.getXhfNsrsbh().contains(ConfigureConstant.STRING_CHARSET_1)) { |
||||||
|
return R.error(ConfigureConstant.STRING_0000, "销方税号非法"); |
||||||
|
} |
||||||
|
|
||||||
|
CommodityCodeEntity commodityCodeEntity = groupCommodityMapper.queryCommodityCodeByZxbmAndXhfNsrsbh(quoteGroupCommodityDTO.getZxbm(), quoteGroupCommodityDTO.getXhfNsrsbh()); |
||||||
|
// 根据文档4.2.1.2 (6) 若物料编码重复时,引用后不对子公司物料进行更新
|
||||||
|
if (commodityCodeEntity != null) { |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
commodityCodeEntity = groupCommodityMapper.queryCommodityCodeByZxbmAndXhfNsrsbh(quoteGroupCommodityDTO.getZxbm(), "-1"); |
||||||
|
if (commodityCodeEntity == null) { |
||||||
|
return R.error("引用失败,集团物料不存在"); |
||||||
|
} |
||||||
|
|
||||||
|
CommodityCodeEntity newCommodityCodeEntity = new CommodityCodeEntity(); |
||||||
|
try { |
||||||
|
BeanUtils.copyProperties(newCommodityCodeEntity, commodityCodeEntity); |
||||||
|
} catch (IllegalAccessException e) { |
||||||
|
log.error("{}引用物料异常", LOGGER_MSG, e); |
||||||
|
} catch (InvocationTargetException e) { |
||||||
|
log.error("{}引用物料异常", LOGGER_MSG, e); |
||||||
|
} |
||||||
|
|
||||||
|
newCommodityCodeEntity.setId(baseService.getGenerateShotKey()); |
||||||
|
newCommodityCodeEntity.setXhfNsrsbh(quoteGroupCommodityDTO.getXhfNsrsbh()); |
||||||
|
if (groupCommodityMapper.insertCommodityCode(newCommodityCodeEntity) > 0) { |
||||||
|
return R.ok(); |
||||||
|
} else { |
||||||
|
return R.error("引用失败"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,199 @@ |
|||||||
|
import com.sun.mail.pop3.POP3Folder; |
||||||
|
import com.sun.mail.pop3.POP3Store; |
||||||
|
import com.sun.mail.util.MailSSLSocketFactory; |
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
import javax.mail.*; |
||||||
|
import javax.mail.internet.InternetAddress; |
||||||
|
import javax.mail.internet.MimeMessage; |
||||||
|
import javax.mail.internet.MimeMultipart; |
||||||
|
import javax.mail.internet.MimeUtility; |
||||||
|
import javax.mail.search.FlagTerm; |
||||||
|
import java.io.*; |
||||||
|
import java.security.GeneralSecurityException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.Properties; |
||||||
|
|
||||||
|
public class Pop3Test { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void main() throws Exception { |
||||||
|
|
||||||
|
POP3Store pop3Store = null; |
||||||
|
try { |
||||||
|
Session session = setCollectProperties(); |
||||||
|
pop3Store = (POP3Store)session.getStore("pop3"); |
||||||
|
pop3Store.connect("pop.qq.com", 995, "1021674882@qq.com", "szcrvcsoakumbcid"); |
||||||
|
POP3Folder pop3Folder = (POP3Folder) pop3Store.getFolder("INBOX"); |
||||||
|
pop3Folder.open(Folder.READ_WRITE); //打开收件箱
|
||||||
|
FetchProfile fetchProfile = new FetchProfile(); |
||||||
|
fetchProfile.add(FetchProfile.Item.ENVELOPE); |
||||||
|
FlagTerm flagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN),false); |
||||||
|
Message[] messages = pop3Folder.search(flagTerm); |
||||||
|
pop3Folder.fetch(messages,fetchProfile); |
||||||
|
int length = messages.length; |
||||||
|
System.out.println("收件箱的邮件数:" + length); |
||||||
|
Folder folder = pop3Folder.getStore().getDefaultFolder(); |
||||||
|
Folder[] folders = folder.list(); |
||||||
|
|
||||||
|
for (int i = 0; i < folders.length; i++) { |
||||||
|
System.out.println("名称:"+folders[i].getName()); |
||||||
|
} |
||||||
|
|
||||||
|
for (int i = 0; i < length; i++) { |
||||||
|
MimeMessage msg = (MimeMessage) messages[i]; |
||||||
|
String from = MimeUtility.decodeText(messages[i].getFrom()[0].toString()); |
||||||
|
InternetAddress ia = new InternetAddress(from); |
||||||
|
System.out.println("发件人:" + ia.getPersonal() + '(' + ia.getAddress() + ')'); |
||||||
|
System.out.println("主题:" + messages[i].getSubject()); |
||||||
|
System.out.println("邮件发送时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(messages[i].getSentDate())); |
||||||
|
boolean isContainerAttachment = isContainAttachment(msg); |
||||||
|
System.out.println("是否包含附件:" + isContainerAttachment); |
||||||
|
if (isContainerAttachment) { |
||||||
|
//设置需要保存的目录并保存附件
|
||||||
|
// saveAttachment(msg, "F:\\test\\"+msg.getSubject() + "_"+i+"_"); //保存附件
|
||||||
|
} |
||||||
|
messages[i].setFlag(Flags.Flag.SEEN, true); |
||||||
|
} |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} finally { |
||||||
|
if(pop3Store != null){ |
||||||
|
pop3Store.close(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置连接邮箱属性 |
||||||
|
* @return |
||||||
|
* @throws GeneralSecurityException |
||||||
|
*/ |
||||||
|
private static Session setCollectProperties() throws GeneralSecurityException { |
||||||
|
Properties props = new Properties(); |
||||||
|
props.setProperty("mail.popStore.protocol", "pop3"); // 使用pop3协议
|
||||||
|
props.setProperty("mail.pop3.port", "995"); // 端口
|
||||||
|
|
||||||
|
MailSSLSocketFactory sf = new MailSSLSocketFactory(); |
||||||
|
sf.setTrustAllHosts(true); |
||||||
|
props.put("mail.pop3.ssl.enable",true); |
||||||
|
props.put("mail.pop3.ssl.socketFactory",sf); |
||||||
|
props.setProperty("mail.pop3.host", "pop.qq.com"); |
||||||
|
|
||||||
|
|
||||||
|
return Session.getInstance(props); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 判断邮件中是否包含附件 |
||||||
|
* @param |
||||||
|
* @return 邮件中存在附件返回true,不存在返回false |
||||||
|
* @throws MessagingException |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
public static boolean isContainAttachment(Part part) throws Exception { |
||||||
|
boolean flag = false; |
||||||
|
if (part.isMimeType("multipart/*")) { |
||||||
|
MimeMultipart multipart = (MimeMultipart) part.getContent(); |
||||||
|
int partCount = multipart.getCount(); |
||||||
|
for (int i = 0; i < partCount; i++) { |
||||||
|
BodyPart bodyPart = multipart.getBodyPart(i); |
||||||
|
String disp = bodyPart.getDisposition(); |
||||||
|
if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { |
||||||
|
flag = true; |
||||||
|
} else if (bodyPart.isMimeType("multipart/*")) { |
||||||
|
flag = isContainAttachment(bodyPart); |
||||||
|
} else { |
||||||
|
String contentType = bodyPart.getContentType(); |
||||||
|
if (contentType.indexOf("application") != -1) { |
||||||
|
flag = true; |
||||||
|
} |
||||||
|
|
||||||
|
if (contentType.indexOf("name") != -1) { |
||||||
|
flag = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (flag) break; |
||||||
|
} |
||||||
|
} else if (part.isMimeType("message/rfc822")) { |
||||||
|
flag = isContainAttachment((Part)part.getContent()); |
||||||
|
} |
||||||
|
return flag; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 保存附件 |
||||||
|
* @param part 邮件中多个组合体中的其中一个组合体 |
||||||
|
* @param destDir 附件保存目录 |
||||||
|
* @throws UnsupportedEncodingException |
||||||
|
* @throws MessagingException |
||||||
|
* @throws FileNotFoundException |
||||||
|
* @throws IOException |
||||||
|
*/ |
||||||
|
public static void saveAttachment(Part part, String destDir) throws Exception{ |
||||||
|
if (part.isMimeType("multipart/*")) { |
||||||
|
Multipart multipart = (Multipart) part.getContent(); //复杂体邮件
|
||||||
|
//复杂体邮件包含多个邮件体
|
||||||
|
int partCount = multipart.getCount(); |
||||||
|
for (int i = 0; i < partCount; i++) { |
||||||
|
//获得复杂体邮件中其中一个邮件体
|
||||||
|
BodyPart bodyPart = multipart.getBodyPart(i); |
||||||
|
//某一个邮件体也有可能是由多个邮件体组成的复杂体
|
||||||
|
String disp = bodyPart.getDisposition(); |
||||||
|
if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { |
||||||
|
InputStream is = bodyPart.getInputStream(); |
||||||
|
saveFile(is, destDir, decodeText(bodyPart.getFileName())); |
||||||
|
} else if (bodyPart.isMimeType("multipart/*")) { |
||||||
|
saveAttachment(bodyPart,destDir); |
||||||
|
} else { |
||||||
|
String contentType = bodyPart.getContentType(); |
||||||
|
if (contentType.indexOf("name") != -1 || contentType.indexOf("application") != -1) { |
||||||
|
saveFile(bodyPart.getInputStream(), destDir, decodeText(bodyPart.getFileName())); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} else if (part.isMimeType("message/rfc822")) { |
||||||
|
saveAttachment((Part) part.getContent(),destDir); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 读取输入流中的数据保存至指定目录 |
||||||
|
* @param is 输入流 |
||||||
|
* @param fileName 文件名 |
||||||
|
* @param destDir 文件存储目录 |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
private static void saveFile(InputStream is, String destDir, String fileName) |
||||||
|
throws Exception { |
||||||
|
//如果文件名称包含关键字则进行保存
|
||||||
|
BufferedInputStream bis = new BufferedInputStream(is); |
||||||
|
BufferedOutputStream bos = new BufferedOutputStream( |
||||||
|
new FileOutputStream(new File(destDir + fileName))); |
||||||
|
int len = -1; |
||||||
|
while ((len = bis.read()) != -1) { |
||||||
|
bos.write(len); |
||||||
|
bos.flush(); |
||||||
|
} |
||||||
|
bos.close(); |
||||||
|
bis.close(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 文本解码 |
||||||
|
* @param encodeText 解码MimeUtility.encodeText(String text)方法编码后的文本 |
||||||
|
* @return 解码后的文本 |
||||||
|
* @throws UnsupportedEncodingException |
||||||
|
*/ |
||||||
|
public static String decodeText(String encodeText) throws UnsupportedEncodingException { |
||||||
|
if (encodeText == null || "".equals(encodeText)) { |
||||||
|
return ""; |
||||||
|
} else { |
||||||
|
return MimeUtility.decodeText(encodeText); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
Loading…
Reference in new issue