diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/Test.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/Test.java new file mode 100644 index 00000000..3c764140 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/Test.java @@ -0,0 +1,9 @@ +package com.hzya.frame.grpU8.nxproof.attachment; + +/** + * @Description + * @Author xiangerlin + * @Date 2024/8/16 11:07 + **/ +public class Test { +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/dao/IAttachmentFileDao.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/dao/IAttachmentFileDao.java new file mode 100644 index 00000000..07a9028e --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/dao/IAttachmentFileDao.java @@ -0,0 +1,12 @@ +package com.hzya.frame.grpU8.nxproof.attachment.dao;/* +* @Description 附件 +* @Author xiangerlin + @Date 2022-10-26 11:17 +*/ + + +import com.hzya.frame.basedao.dao.IBaseDao; +import com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity; + +public interface IAttachmentFileDao extends IBaseDao<AttachmentFileEntity, String> { +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/dao/impl/AttachmentFileDaoImpl.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/dao/impl/AttachmentFileDaoImpl.java new file mode 100644 index 00000000..88c1dbd6 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/dao/impl/AttachmentFileDaoImpl.java @@ -0,0 +1,15 @@ +package com.hzya.frame.grpU8.nxproof.attachment.dao.impl;/* +* @Description 附件 +* @Author xiangerlin + @Date 2022-10-26 11:18 +*/ + + +import com.hzya.frame.basedao.dao.MybatisGenericDao; +import com.hzya.frame.grpU8.nxproof.attachment.dao.IAttachmentFileDao; +import com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity; +import org.springframework.stereotype.Repository; + +@Repository +public class AttachmentFileDaoImpl extends MybatisGenericDao<AttachmentFileEntity, String> implements IAttachmentFileDao { +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/entity/AttachmentFileEntity.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/entity/AttachmentFileEntity.java new file mode 100644 index 00000000..719706e4 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/entity/AttachmentFileEntity.java @@ -0,0 +1,120 @@ +package com.hzya.frame.grpU8.nxproof.attachment.entity;/* +* @Description 附件表 +* @Author xiangerlin + @Date 2022-10-26 10:40 +*/ + + +import com.hzya.frame.web.entity.BaseEntity; + +public class AttachmentFileEntity extends BaseEntity { + + private String aTGuid;//主键id + private String createDate;//创建日期 + private String createID;//创建人id + private String updateDate;//更新日期 + private String updateID;//更新人id + private String deleteDate;//删除日期 + private String deleteID;//删除人 + private String aTFileName;//附件名 + private String aTExtName;//附件后缀名 + private byte[] aTFile;//附件 二进制文件 + private String relationApp;//固定传 OER + private String isDELETE;//删除标记 0是未删除 + + public String getaTGuid() { + return aTGuid; + } + + public void setaTGuid(String aTGuid) { + this.aTGuid = aTGuid; + } + + public String getCreateDate() { + return createDate; + } + + public void setCreateDate(String createDate) { + this.createDate = createDate; + } + + public String getCreateID() { + return createID; + } + + public void setCreateID(String createID) { + this.createID = createID; + } + + public String getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(String updateDate) { + this.updateDate = updateDate; + } + + public String getUpdateID() { + return updateID; + } + + public void setUpdateID(String updateID) { + this.updateID = updateID; + } + + public String getDeleteDate() { + return deleteDate; + } + + public void setDeleteDate(String deleteDate) { + this.deleteDate = deleteDate; + } + + public String getDeleteID() { + return deleteID; + } + + public void setDeleteID(String deleteID) { + this.deleteID = deleteID; + } + + public String getaTFileName() { + return aTFileName; + } + + public void setaTFileName(String aTFileName) { + this.aTFileName = aTFileName; + } + + public String getaTExtName() { + return aTExtName; + } + + public void setaTExtName(String aTExtName) { + this.aTExtName = aTExtName; + } + + public byte[] getaTFile() { + return aTFile; + } + + public void setaTFile(byte[] aTFile) { + this.aTFile = aTFile; + } + + public String getRelationApp() { + return relationApp; + } + + public void setRelationApp(String relationApp) { + this.relationApp = relationApp; + } + + public String getIsDELETE() { + return isDELETE; + } + + public void setIsDELETE(String isDELETE) { + this.isDELETE = isDELETE; + } +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/entity/AttachmentFileEntity.xml b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/entity/AttachmentFileEntity.xml new file mode 100644 index 00000000..0833a4d1 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/entity/AttachmentFileEntity.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity"> + <resultMap id="get-AttachmentFileEntity-result" type="com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity"> + + <result property="aTGuid" column="aTGuid" /> + <result property="createDate" column="createDate" /> + <result property="createID" column="createID" /> + <result property="updateDate" column="updateDate" /> + <result property="updateID" column="updateID" /> + <result property="deleteDate" column="deleteDate" /> + <result property="deleteID" column="deleteID" /> + <result property="aTFileName" column="aTFileName" /> + <result property="aTExtName" column="aTExtName" /> + <result column="aTFile" property="aTFile" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" /> + <result property="relationApp" column="relationApp" /> + <result property="isDELETE" column="isDELETE" /> + </resultMap> + + + <sql id="AttachmentFileEntity_Base_Column_List"> + ATGuid, + CreateDate, + CreateID, + UpdateDate, + UpdateID, + DeleteDate, + DeleteID, + ATFileName, + ATExtName, + ATFile, + RelationApp, + ISDELETE + </sql> + + + + <!-- 查询 采用==查询 --> + <select id="AttachmentFileEntity_list_base" resultMap="get-AttachmentFileEntity-result" parameterType="com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity"> + select + <include refid="AttachmentFileEntity_Base_Column_List" /> + FROM + AT_AttachmentFile + <trim prefix="where" prefixOverrides="and"> + <if test="aTGuid != null and aTGuid !='' "> aTGuid = #{aTGuid} </if> + <if test="aTFileName != null and aTFileName !='' ">and aTFileName = #{aTFileName} </if> + </trim> + </select> + + + <insert id="AttachmentFileEntity_insert" parameterType="com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity"> + insert into AT_AttachmentFile( + <trim suffix="" suffixOverrides=","> + <if test="aTGuid != null and aTGuid !='' ">aTGuid,</if> + <if test="createDate != null and createDate !='' "> createDate, </if> + <if test="createID != null and createID !='' "> createID, </if> + <if test="updateDate != null and updateDate !='' "> updateDate ,</if> + <if test="updateID != null and updateID !='' ">updateID,</if> + <if test="deleteDate != null and deleteDate !='' ">deleteDate,</if> + <if test="deleteID != null and deleteID !='' ">deleteID,</if> + <if test="aTFileName != null and aTFileName !='' ">aTFileName,</if> + <if test="aTExtName != null and aTExtName !='' ">aTExtName,</if> + <if test="aTFile != null and aTFile !='' ">aTFile,</if> + relationApp, + isDELETE + </trim> + )values + ( + <trim suffix="" suffixOverrides=","> + <if test="aTGuid != null and aTGuid !='' ">#{aTGuid},</if> + <if test="createDate != null and createDate !='' "> #{createDate}, </if> + <if test="createID != null and createID !='' "> #{createID}, </if> + <if test="updateDate != null and updateDate !='' "> #{updateDate} ,</if> + <if test="updateID != null and updateID !='' ">#{updateID},</if> + <if test="deleteDate != null and deleteDate !='' ">#{deleteDate},</if> + <if test="deleteID != null and deleteID !='' ">#{deleteID},</if> + <if test="aTFileName != null and aTFileName !='' ">#{aTFileName},</if> + <if test="aTExtName != null and aTExtName !='' ">#{aTExtName},</if> + <if test="aTFile != null and aTFile !='' ">#{aTFile,typeHandler=org.apache.ibatis.type.BlobTypeHandler},</if> + 'OER', + 0 + + </trim> + ) + </insert> +</mapper> diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/service/IAttachmentFileService.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/service/IAttachmentFileService.java new file mode 100644 index 00000000..39c98d48 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/service/IAttachmentFileService.java @@ -0,0 +1,37 @@ +package com.hzya.frame.grpU8.nxproof.attachment.service;/* +* @Description +* @Author xiangerlin + @Date 2022-10-26 11:19 +*/ + +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity; + +import java.util.List; + +public interface IAttachmentFileService { + + /** + * 保存附件 + * @param entity + */ + void saveAttachment(AttachmentFileEntity entity); + + List<AttachmentFileEntity> queryFile(AttachmentFileEntity entity)throws Exception; + + /** + * 调用http接口查询单据附件 + * @param billCode + * @return + * @throws Exception + */ + List<JSONObject> queryFileByCode(String billCode)throws Exception; + + /** + * 附件上传 + * @param fileList + * @param mlid + * @param kjnd + */ + void uploadAttachment(List<JSONObject> fileList,String mlid,String kjnd); +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/service/impl/AttachmentFileServiceImpl.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/service/impl/AttachmentFileServiceImpl.java new file mode 100644 index 00000000..cb2d31ac --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/attachment/service/impl/AttachmentFileServiceImpl.java @@ -0,0 +1,231 @@ +package com.hzya.frame.grpU8.nxproof.attachment.service.impl;/* +* @Description +* @Author xiangerlin + @Date 2022-10-26 11:20 +*/ + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.basedao.service.impl.BaseService; +import com.hzya.frame.grpU8.nxproof.attachment.dao.IAttachmentFileDao; +import com.hzya.frame.grpU8.nxproof.attachment.entity.AttachmentFileEntity; +import com.hzya.frame.grpU8.nxproof.attachment.service.IAttachmentFileService; +import com.hzya.frame.grpU8.nxproof.oerannex.service.IOerAnnexService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.net.URLDecoder; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +@Service +public class AttachmentFileServiceImpl extends BaseService<AttachmentFileEntity,String> implements IAttachmentFileService { + + Logger logger = LogManager.getLogger(getClass()); + + protected IAttachmentFileDao attachmentFileDao; + + @Autowired + public void setBillLogDao(IAttachmentFileDao dao) { + this.attachmentFileDao = dao; + this.dao=dao; + } + @Autowired + private IOerAnnexService oerAnnexService; + @Autowired + private IAttachmentFileService attachmentFileService; + + /** + * 保存附件 + * @param entity + */ + @Override + public void saveAttachment(AttachmentFileEntity entity) { + entity.setaTGuid("A1:"+IdUtil.fastUUID()); + String date = DateUtil.format(new Date(), "yyyyMMdd HH:mm:ss"); + entity.setCreateDate(date); + entity.setUpdateDate(date); + String fileName = entity.getaTFileName(); + if (StrUtil.isNotEmpty(fileName)){ + int index = fileName.lastIndexOf("."); + if (index > 0){ + String suffix = fileName.substring(index); + entity.setaTExtName(suffix); + String prefix = fileName.substring(0,index); + entity.setaTFileName(prefix); + } + } + attachmentFileDao.save("AttachmentFileEntity_insert",entity); + } + + @Override + public List<AttachmentFileEntity> queryFile(AttachmentFileEntity entity) throws Exception { + entity.setAcc_name(Constant.CONFIGMAP.get("file_acc_name")); + List<AttachmentFileEntity> list = attachmentFileDao.query(entity); + return list; + } + + /** + * 调用http接口查询单据附件 + * + * @param billCode 单据号 + * @return + * @throws Exception + */ + @Override + public List<JSONObject> queryFileByCode(String billCode) throws Exception { + List<JSONObject> list = new ArrayList<>(); + if (StrUtil.isNotEmpty(billCode)){ + JSONObject params = new JSONObject(); + params.put("billNo",billCode); + String res = HttpRequest.post(Constant.CONFIGMAP.get("grp_file_download_url")+"/grp/af/findFilesBB").body(params.toString()).execute().body(); + logger.info("根据单号:{},查询到到附件列表为:{}",billCode,res); + if (StrUtil.isNotEmpty(res)){ + JSONObject resJson = JSONObject.parseObject(res); + int pageCount = resJson.getIntValue("pageCount"); + boolean success = resJson.getBoolean("success"); + if (success){ + String dataStr = resJson.getString("data"); + list = JSONObject.parseArray(dataStr,JSONObject.class); + if (null != list && list.size() >0){ + for (JSONObject jsonObject : list) { + String fileName = jsonObject.getString("fileName"); + if (StrUtil.isNotEmpty(fileName)){ + // 使用indexOf找到"."的位置 + int dotIndex = fileName.lastIndexOf('.'); + // 确保找到了".",防止indexOf返回-1的情况 + if (dotIndex != -1){ + String ext_name = fileName.substring(dotIndex); + jsonObject.put("Ext",ext_name); + } + } + } + } + } + } + } + return list; + } + + /** + * 附件上传 + * + * @param fileList + * @param mlid + * @param kjnd + */ + @Override + public void uploadAttachment(List<JSONObject> fileList, String mlid, String kjnd) { + if (CollectionUtils.isNotEmpty(fileList) && StrUtil.isNotEmpty(mlid) && StrUtil.isNotEmpty(kjnd)){ + try { + //附件下载 + List<FileInfoDTO> fileInfoList = fileDownload(fileList); + //附件保存到grp库里 + if (CollectionUtils.isNotEmpty(fileInfoList)){ + //保存前先删一下历史附件 + OerAnnexEntity delete = new OerAnnexEntity(); + delete.setGsdm(Constant.CONFIGMAP.get("gsdm")); + delete.setKjnd(kjnd); + delete.setMlid(mlid); + //oerAnnexService.deleteAnnex(delete); + int no = 1; + for (FileInfoDTO fileInfo : fileInfoList) { + try { + AttachmentFileEntity fileEntity = new AttachmentFileEntity(); + String fileName = URLDecoder.decode(fileInfo.getFile_name(), "UTF-8"); + fileEntity.setaTFileName(fileName); + fileEntity.setaTFile(fileInfo.getData()); + attachmentFileService.saveAttachment(fileEntity); + //保存附件关系 + OerAnnexEntity annexEntity = new OerAnnexEntity(); + annexEntity.setMlid(mlid); + annexEntity.setKjnd(kjnd); + annexEntity.setAnnexName(fileName); + annexEntity.setAnnexSize(Convert.toLong(fileInfo.getFile_size())); + annexEntity.setOnlyid(fileEntity.getaTGuid()); + annexEntity.setXh(String.valueOf(no)); + oerAnnexService.saveAnnex(annexEntity); + no++; + }catch (Exception e){ + logger.error("保存附件到grp出错:{}",e); + } + } + } + }catch (Exception e){ + logger.error("保存附件到grp出错:{}",e); + } + } + } + + private List<FileInfoDTO> fileDownload(List<JSONObject> fileList){ + String dir = Constant.CONFIGMAP.get("file_dest_temp"); + List<FileInfoDTO> files = new ArrayList<>(); + //1、下载附件 + for (JSONObject fileObj : fileList) { + try { + FileInfoDTO fileInfoDTO = new FileInfoDTO(); + String url = fileObj.getString("url"); + String fileName = URLDecoder.decode(fileObj.getString("fileName")); + File file = HttpUtil.downloadFileFromUrl(url, dir); + if (null != file){ + String zipPath = dir + File.separator + fileName.split("\\.")[0] + ".zip"; + ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipPath), Charset.forName("GBK")); + writeZipFile(file, zos,fileName); + zos.close(); + // 获取压缩文件的字节数组 + File zipFile = new File(zipPath); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream((int) zipFile.length()); + BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(zipFile)); + int buf_size = 1024; + byte[] buffer = new byte[buf_size]; + int len = 0; + while (-1 != (len = bufferedInputStream.read(buffer, 0, buf_size))) { + byteArrayOutputStream.write(buffer, 0, len); + } + byte[] fileByte = byteArrayOutputStream.toByteArray(); + fileInfoDTO.setData(fileByte); + fileInfoDTO.setFile_size(fileObj.getString("size")); + fileInfoDTO.setFile_name(fileName); + files.add(fileInfoDTO); + } + }catch (Exception e){ + logger.error("上传附件出错:{}",e); + } + } + return files; + } + private void writeZipFile(File file,ZipOutputStream zos,String fileName){ + if (null != file && null !=zos){ + try { + logger.info("=====压缩文件====="); + zos.putNextEntry(new ZipEntry(fileName)); + FileInputStream fos = new FileInputStream(file); + BufferedInputStream bis = new BufferedInputStream(fos); + int len; + byte[] buf = new byte[1024]; + while ((len = bis.read(buf, 0, 1024)) != -1) { + zos.write(buf, 0, len); + } + bis.close(); + fos.close(); + logger.info("=====压缩完成====="); + }catch (Exception e){ + e.printStackTrace(); + logger.error("=====压缩文件出错====="); + } + } + } +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/Test.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/Test.java new file mode 100644 index 00000000..8587d225 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/Test.java @@ -0,0 +1,9 @@ +package com.hzya.frame.grpU8.nxproof.oerannex; + +/** + * @Description + * @Author xiangerlin + * @Date 2024/8/16 10:40 + **/ +public class Test { +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/dao/IOerAnnexDao.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/dao/IOerAnnexDao.java new file mode 100644 index 00000000..1ca2489d --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/dao/IOerAnnexDao.java @@ -0,0 +1,12 @@ +package com.hzya.frame.grpU8.nxproof.oerannex.dao;/* +* @Description 附件关系表 +* @Author xiangerlin + @Date 2022-10-26 10:04 +*/ + + +import com.hzya.frame.basedao.dao.IBaseDao; +import com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity; + +public interface IOerAnnexDao extends IBaseDao<OerAnnexEntity, String> { +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/dao/impl/OerAnnexDaoImpl.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/dao/impl/OerAnnexDaoImpl.java new file mode 100644 index 00000000..3dd204c6 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/dao/impl/OerAnnexDaoImpl.java @@ -0,0 +1,16 @@ +package com.hzya.frame.grpU8.nxproof.oerannex.dao.impl;/* +* @Description 附件关系表 +* @Author xiangerlin + @Date 2022-10-26 10:05 +*/ + + + +import com.hzya.frame.basedao.dao.MybatisGenericDao; +import com.hzya.frame.grpU8.nxproof.oerannex.dao.IOerAnnexDao; +import com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity; +import org.springframework.stereotype.Repository; + +@Repository +public class OerAnnexDaoImpl extends MybatisGenericDao<OerAnnexEntity, String> implements IOerAnnexDao { +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/entity/OerAnnexEntity.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/entity/OerAnnexEntity.java new file mode 100644 index 00000000..ebbddd5a --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/entity/OerAnnexEntity.java @@ -0,0 +1,149 @@ +package com.hzya.frame.grpU8.nxproof.oerannex.entity; + +import com.hzya.frame.web.entity.BaseEntity; + +/* +* @Description 附件关系表 +* @Author xiangerlin + @Date 2022-10-26 8:44 +*/ +public class OerAnnexEntity extends BaseEntity { + + private String annexid; //主键id + private String mlid;//报销单id + private String gsdm;//公司代码 默认001 + private String kjnd;//会计年度 + private String bnxid;// 不知道是什么 填0 + private String xh;//序号 + private String onlyid;// AT_AttachmentFile 表的主键ATGuid + private String annexName;//附件名 + private Long annexSize;//附件大小 + private String showSize;//附件大小显示值 + private String ole;// 不知道是什么,填空 + private String fjType;//附件类型, 数据库中只有 其他、其他其他(&Z)、合同3种类型 + private String fpid;//不知道是什么 填空 + + private String maxAnnexid;//最大id + + private String aTextName;//后缀名 + + public String getAnnexid() { + return annexid; + } + + public void setAnnexid(String annexid) { + this.annexid = annexid; + } + + public String getMlid() { + return mlid; + } + + public void setMlid(String mlid) { + this.mlid = mlid; + } + + public String getGsdm() { + return gsdm; + } + + public void setGsdm(String gsdm) { + this.gsdm = gsdm; + } + + public String getKjnd() { + return kjnd; + } + + public void setKjnd(String kjnd) { + this.kjnd = kjnd; + } + + public String getBnxid() { + return bnxid; + } + + public void setBnxid(String bnxid) { + this.bnxid = bnxid; + } + + public String getXh() { + return xh; + } + + public void setXh(String xh) { + this.xh = xh; + } + + public String getOnlyid() { + return onlyid; + } + + public void setOnlyid(String onlyid) { + this.onlyid = onlyid; + } + + public String getAnnexName() { + return annexName; + } + + public void setAnnexName(String annexName) { + this.annexName = annexName; + } + + public Long getAnnexSize() { + return annexSize; + } + + public void setAnnexSize(Long annexSize) { + this.annexSize = annexSize; + } + + public String getShowSize() { + return showSize; + } + + public void setShowSize(String showSize) { + this.showSize = showSize; + } + + public String getOle() { + return ole; + } + + public void setOle(String ole) { + this.ole = ole; + } + + public String getFjType() { + return fjType; + } + + public void setFjType(String fjType) { + this.fjType = fjType; + } + + public String getFpid() { + return fpid; + } + + public void setFpid(String fpid) { + this.fpid = fpid; + } + + public String getMaxAnnexid() { + return maxAnnexid; + } + + public void setMaxAnnexid(String maxAnnexid) { + this.maxAnnexid = maxAnnexid; + } + + public String getaTextName() { + return aTextName; + } + + public void setaTextName(String aTextName) { + this.aTextName = aTextName; + } +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/entity/OerAnnexEntity.xml b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/entity/OerAnnexEntity.xml new file mode 100644 index 00000000..d9bd9cdd --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/entity/OerAnnexEntity.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + <resultMap id="get-OerAnnexEntity-result" type="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + <result property="annexid" column="annexid" /> + <result property="mlid" column="mlid" /> + <result property="gsdm" column="gsdm" /> + <result property="kjnd" column="kjnd" /> + <result property="bnxid" column="bnxid" /> + <result property="xh" column="xh" /> + <result property="onlyid" column="onlyid" /> + <result property="annexName" column="annexName" /> + <result property="annexSize" column="annexSize" /> + <result property="showSize" column="showSize" /> + <result property="ole" column="ole" /> + <result property="fjType" column="fjType" /> + <result property="fpid" column="fpid" /> + <result property="maxAnnexid" column="maxAnnexid" /> + <result property="aTextName" column="aTextName" /> + </resultMap> + + <sql id="OerAnnexEntity_Base_Column_List"> + AnnexID, + MLID, + GSDM, + KJND, + BNXID, + XH, + OnlyID, + AnnexName, + AnnexSize, + ShowSize, + OLE, + FJType, + FPID + </sql> + + + + <!-- 查询 采用==查询 --> + <select id="OerAnnexEntity_list_base" resultMap="get-OerAnnexEntity-result" parameterType="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + select + <include refid="OerAnnexEntity_Base_Column_List" /> + FROM + OER_ANNEX + <trim prefix="where" prefixOverrides="and"> + <if test="mlid != null and mlid !='' "> MLID = #{mlid} </if> + <if test="kjnd != null and kjnd !='' ">and KJND = #{kjnd} </if> + <if test="gsdm != null and gsdm !='' ">and gsdm = #{gsdm} </if> + </trim> + </select> + + + <!-- 查询 采用==查询 联查附件表 --> + <select id="OerAnnexEntity_list_base_join_attachment" resultMap="get-OerAnnexEntity-result" parameterType="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + select + OER_ANNEX.AnnexID, + OER_ANNEX.mlid, + OER_ANNEX.OnlyID, + OER_ANNEX.AnnexName, + OER_ANNEX.AnnexSize, + AT_AttachmentFile.AtextName + FROM + OER_ANNEX + LEFT JOIN AT_AttachmentFile ON AT_AttachmentFile.ATGuid = OER_ANNEX.OnlyID + <trim prefix="where" prefixOverrides="and"> + <if test="mlid != null and mlid !='' "> MLID = #{mlid} </if> + <if test="kjnd != null and kjnd !='' ">and KJND = #{kjnd} </if> + <if test="gsdm != null and gsdm !='' ">and gsdm = #{gsdm} </if> + </trim> + </select> + + <!--查询最大id--> + <select id="OerAnnexEntity_max_id" resultMap="get-OerAnnexEntity-result" parameterType="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + SELECT + MAX(AnnexID) as maxAnnexid + FROM + OER_ANNEX + <trim prefix="where" prefixOverrides="and"> + <if test="kjnd != null and kjnd !='' "> KJND = #{kjnd} </if> + <if test="gsdm != null and gsdm !='' ">and GSDM = #{gsdm} </if> + </trim> + </select> + + <insert id="OerAnnexEntity_insert" parameterType="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + insert into OER_ANNEX( + <trim suffix="" suffixOverrides=","> + <if test="annexid != null and annexid !='' ">AnnexID,</if> + <if test="mlid != null and mlid !='' "> MLID, </if> + <if test="gsdm != null and gsdm !='' "> gsdm, </if> + <if test="kjnd != null and kjnd !='' "> kjnd ,</if> + <if test="xh != null and xh !='' ">xh,</if> + <if test="onlyid != null and onlyid !='' ">onlyid,</if> + <if test="annexName != null and annexName !='' ">annexName,</if> + <if test="annexSize != null and annexSize !='' ">annexSize,</if> + <if test="showSize != null and showSize !='' ">showSize,</if> + <if test="fjType != null and fjType !='' ">fjType,</if> + bnxid, + ole, + fpid + </trim> + )values + ( + <trim suffix="" suffixOverrides=","> + <if test="annexid != null and annexid !='' ">#{annexid},</if> + <if test="mlid != null and mlid !='' "> #{mlid}, </if> + <if test="gsdm != null and gsdm !='' "> #{gsdm}, </if> + <if test="kjnd != null and kjnd !='' "> #{kjnd} ,</if> + <if test="xh != null and xh !='' ">#{xh},</if> + <if test="onlyid != null and onlyid !='' ">#{onlyid},</if> + <if test="annexName != null and annexName !='' ">#{annexName},</if> + <if test="annexSize != null and annexSize !='' ">#{annexSize},</if> + <if test="showSize != null and showSize !='' ">#{showSize},</if> + <if test="fjType != null and fjType !='' ">#{fjType},</if> + 0, + null, + '' + </trim> + ) + </insert> + <!-- 删除附件 --> + <delete id="OerAnnexEntity_delete" parameterType="com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity"> + delete from OER_ANNEX where mlid = #{mlid} and kjnd = #{kjnd} and gsdm = #{gsdm} + </delete> +</mapper> diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/service/IOerAnnexService.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/service/IOerAnnexService.java new file mode 100644 index 00000000..4f1ffaa9 --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/service/IOerAnnexService.java @@ -0,0 +1,51 @@ +package com.hzya.frame.grpU8.nxproof.oerannex.service; +/* +* @Description 附件关系表 +* @Author xiangerlin + @Date 2022-10-26 10:06 +*/ + + +import com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity; + +import java.util.List; + +public interface IOerAnnexService { + + /** + * 查询附件关系 + * @param entity + * @return + * @throws Exception + */ + List<OerAnnexEntity> queryAnnex(OerAnnexEntity entity)throws Exception; + /** + * 查询最大id + * @param entity + * @return + * @throws Exception + */ + String queryMaxId(OerAnnexEntity entity)throws Exception; + + /** + * 保存附件关系 + * @param entity + * @throws Exception + */ + void saveAnnex(OerAnnexEntity entity)throws Exception; + + /** + * 删除附件关系 + * @param entity + * @throws Exception + */ + void deleteAnnex(OerAnnexEntity entity)throws Exception; + + /** + * 查询附件关系,联查附件对象表 + * @param mlid + * @return + * @throws Exception + */ + List<OerAnnexEntity> queryAnnexAndFile(String mlid)throws Exception; +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/service/impl/OerAnnexServiceImpl.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/service/impl/OerAnnexServiceImpl.java new file mode 100644 index 00000000..5207b78e --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerannex/service/impl/OerAnnexServiceImpl.java @@ -0,0 +1,132 @@ +package com.hzya.frame.grpU8.nxproof.oerannex.service.impl;/* +* @Description 附件关系表 +* @Author xiangerlin + @Date 2022-10-26 10:07 +*/ + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.hzya.frame.basedao.service.impl.BaseService; +import com.hzya.frame.grpU8.nxproof.oerannex.dao.IOerAnnexDao; +import com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity; +import com.hzya.frame.grpU8.nxproof.oerannex.service.IOerAnnexService; +import com.hzya.frame.web.exception.BaseSystemException; +import org.apache.commons.collections.CollectionUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Service +public class OerAnnexServiceImpl extends BaseService<OerAnnexEntity,String> implements IOerAnnexService { + + Logger logger = LogManager.getLogger(getClass()); + + protected IOerAnnexDao oerAnnexDao; + + @Autowired + public void setBillLogDao(IOerAnnexDao dao) { + this.oerAnnexDao = dao; + this.dao=dao; + } + + /** + * 查询附件关系 + * + * @param entity + * @return + * @throws Exception + */ + @Override + public List<OerAnnexEntity> queryAnnex(OerAnnexEntity entity) throws Exception { + List<OerAnnexEntity> annexList = oerAnnexDao.query(entity); + return annexList; + } + + /** + * 删除附件关系 + * + * @param entity + * @throws Exception + */ + @Override + public void deleteAnnex(OerAnnexEntity entity) throws Exception { + if (null != entity && StrUtil.isNotEmpty(entity.getMlid()) && StrUtil.isNotEmpty(entity.getKjnd())){ + oerAnnexDao.delete("OerAnnexEntity_delete",entity); + } + } + + /** + * 查询最大id + * @param entity + * @return + * @throws Exception + */ + @Override + public String queryMaxId(OerAnnexEntity entity) throws Exception { + if (null == entity){ + entity = new OerAnnexEntity(); + } + if (StrUtil.isEmpty(entity.getKjnd())){ + entity.setKjnd(String.valueOf(DateUtil.year(new Date()))); + } + OerAnnexEntity max = oerAnnexDao.query(entity,"OerAnnexEntity_max_id"); + if (null != max){ + Long max_value = Long.valueOf(max.getMaxAnnexid()); + return String.valueOf(max_value+1); + } + return null; + } + + /** + * 保存附件关系 + * @param entity + * @throws Exception + */ + @Override + public void saveAnnex(OerAnnexEntity entity) throws Exception { + if (null == entity){ + throw new BaseSystemException("参数不能为空"); + } + //entity.setAcc_name(Constant.CONFIGMAP.get("file_acc_name")); + entity.setAnnexid(queryMaxId(entity)); + if (null != entity.getAnnexSize()){ + int fileSize = entity.getAnnexSize().intValue(); + String showSize = ""; + if (fileSize < 1000) { + showSize = fileSize + "b"; + } else if (1000 < fileSize && fileSize < 1000000) { + showSize = (fileSize / 1000) + " KB"; + } else { + showSize = (fileSize / 1000000) + " MB"; + } + entity.setShowSize(showSize); + } + /* if (!entity.getAnnexName().contains("合同")) { + entity.setFjType("其它"); + }else { + entity.setFjType("合同"); + }*/ + entity.setFjType("其它"); + oerAnnexDao.save(entity); + } + + /** + * 查询附件关系,联查附件对象表 + * + * @param mlid + * @return + * @throws Exception + */ + @Override + public List<OerAnnexEntity> queryAnnexAndFile(String mlid) throws Exception { + OerAnnexEntity entity = new OerAnnexEntity(); + entity.setMlid(mlid); + List<OerAnnexEntity> oerAnnexList = oerAnnexDao.queryList(entity, "OerAnnexEntity_list_base_join_attachment"); + return oerAnnexList; + } +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/dto/FileInfoDTO.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/dto/FileInfoDTO.java new file mode 100644 index 00000000..9604dd9d --- /dev/null +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/dto/FileInfoDTO.java @@ -0,0 +1,36 @@ +package com.hzya.frame.grpU8.nxproof.oerdjml.dto; + +/** + * @Description 附件对象 + * @Author xiangerlin + * @Date 2024/8/16 10:28 + **/ +public class FileInfoDTO { + private byte[] data;//附件压缩成zip后的数据 + private String file_name;//附件名字 + private String file_size;//附件大小 + + public byte[] getData() { + return data; + } + + public void setData(byte[] data) { + this.data = data; + } + + public String getFile_name() { + return file_name; + } + + public void setFile_name(String file_name) { + this.file_name = file_name; + } + + public String getFile_size() { + return file_size; + } + + public void setFile_size(String file_size) { + this.file_size = file_size; + } +} diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/entity/OerDjmlEntity.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/entity/OerDjmlEntity.java index d4a1bc95..867c0635 100644 --- a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/entity/OerDjmlEntity.java +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/entity/OerDjmlEntity.java @@ -1,5 +1,6 @@ package com.hzya.frame.grpU8.nxproof.oerdjml.entity; +import com.alibaba.fastjson.annotation.JSONField; import com.hzya.frame.grpU8.nxproof.gbizbsyrec.entity.GbiZbsyrecEntity; import com.hzya.frame.grpU8.nxproof.oerdjjsfs.entity.OerDjjsfsEntity; import com.hzya.frame.grpU8.nxproof.oerdjnr.entity.OerDjnrEntity; @@ -73,10 +74,14 @@ public class OerDjmlEntity extends BaseEntity { private String ssrid; //送审人 private String ssr; - private List<GbiZbsyrecEntity> gbiZbsyrecEntitylist; + @JSONField(ordinal = 9996) private List<OerDjnrEntity> oerDjnrEntityList; + @JSONField(ordinal = 9997) private List<OerYszbEntity> oerYszbEntityList; + @JSONField(ordinal = 9998) private List<OerDjjsfsEntity> oerDjjsfsEntityList; + @JSONField(ordinal = 9999) + private List<GbiZbsyrecEntity> gbiZbsyrecEntitylist; public String getMlId() { return mlId; diff --git a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/service/impl/OerDjmlServiceImpl.java b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/service/impl/OerDjmlServiceImpl.java index 84f3903c..e65101d5 100644 --- a/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/service/impl/OerDjmlServiceImpl.java +++ b/service/src/main/java/com/hzya/frame/grpU8/nxproof/oerdjml/service/impl/OerDjmlServiceImpl.java @@ -2,6 +2,7 @@ package com.hzya.frame.grpU8.nxproof.oerdjml.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -9,9 +10,11 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hzya.frame.grpU8.nxproof.gbizbsyrec.dao.IGbiZbsyrecDao; import com.hzya.frame.grpU8.nxproof.gbizbsyrec.entity.GbiZbsyrecEntity; +import com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity; import com.hzya.frame.grpU8.nxproof.oerdjjsfs.dao.IOerDjjsfsDao; import com.hzya.frame.grpU8.nxproof.oerdjjsfs.entity.OerDjjsfsEntity; import com.hzya.frame.grpU8.nxproof.oerdjml.dao.IOerDjmlDao; +import com.hzya.frame.grpU8.nxproof.oerdjml.dto.FileInfoDTO; import com.hzya.frame.grpU8.nxproof.oerdjml.entity.GbiZbsyrecAllEntity; import com.hzya.frame.grpU8.nxproof.oerdjml.entity.OerDjmlEntity; import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlService; @@ -24,19 +27,28 @@ import com.hzya.frame.grpU8.nxproof.pubauditlog.entity.PubAuditLogEntity; import com.hzya.frame.grpU8.nxproof.pubobjflow.dao.IPubObjFlowDao; import com.hzya.frame.grpU8.nxproof.pubobjflow.entity.PubObjFlowEntity; import com.hzya.frame.mdm.entity.MdmDto; +import com.hzya.frame.seeyon.entity.CollAttachmentResDTO; import com.hzya.frame.seeyon.enums.ColEventTypeEnum; +import com.hzya.frame.seeyon.util.RestUtil; import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.exception.BaseSystemException; +import org.apache.commons.collections.CollectionUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.io.*; +import java.net.URLDecoder; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; /** * @Author:hecan @@ -63,7 +75,10 @@ public class OerDjmlServiceImpl implements IOerDjmlService { private IPubAuditLogDao iPubAuditLogDao; @Autowired private IPubObjFlowDao iPubObjFlowDao; - + @Autowired + private RestUtil restUtil; + @Value("${savefile.path}") + public String DSK; @Override public String saveExpenseDocuments(JSONObject jsonObject) { @@ -816,6 +831,7 @@ public class OerDjmlServiceImpl implements IOerDjmlService { String forsonTableName = headers.get("forsonTableName"); String djlxid = headers.get("djlxid"); String flowcode = headers.get("flowcode"); + String fileApiCode = headers.get("file_api_code"); JSONObject bodyObj = JSONObject.parseObject(bodys); JSONObject seeyonData = bodyObj.getJSONObject("businessDataStr"); if (null != seeyonData){ @@ -830,6 +846,7 @@ public class OerDjmlServiceImpl implements IOerDjmlService { JSONObject forjsonData0 = forsonData.getJSONObject(0); OerDjmlEntity djml = new OerDjmlEntity(); djml.setDjbh(formmainData.getString("field0001")); + djml.setLclb(eventType); //流程发起 if (ColEventTypeEnum.ONSTART.getType().equals(eventType)){ djml.setGsdm(forjsonData0.getString("field0084")); @@ -838,8 +855,8 @@ public class OerDjmlServiceImpl implements IOerDjmlService { djml.setZt("2"); djml.setCrerdm(formmainData.getString("field0107")); djml.setCrermc(""); - djml.setCrerdate(formmainData.getString("startDate")); - djml.setDjdate(formmainData.getString("field0002")); + djml.setCrerdate(timestampConvert(formmainData.getString("start_date"))); + djml.setDjdate((formmainData.getString("field0002"))); djml.setJe(formmainData.getString("field0080")); djml.setJedx( Convert.numberToChinese(Double.valueOf(formmainData.getString("field0080")),true)); djml.setYjje("0.00"); @@ -970,17 +987,61 @@ public class OerDjmlServiceImpl implements IOerDjmlService { logger.info("报销单结算方式:{}",JSONObject.toJSONString(jsfsList)); logger.info("报销单预算指标:{}",JSONObject.toJSONString(yszbList)); djml.setOerDjnrEntityList(djnrList); + djml.setOerDjjsfsEntityList(jsfsList); djml.setOerYszbEntityList(yszbList); - String djmlStr = JSONObject.toJSONString(djml); - JSONObject param = new JSONObject(new LinkedHashMap<>()); - param = JSONObject.parseObject(djmlStr); - param.put("lclb",eventType); - param.put("oerDjnrEntityList",djnrList); - param.put("oerYszbEntityList",yszbList); - param.put("oerDjjsfsEntityList",jsfsList); - //param.put("gbiZbsyrecEntitylist",null); - logger.info("差旅报销单报文:{}",param.toString()); + }else if (ColEventTypeEnum.ONSTOP.getType().equals(eventType)){ + //流程终止 修改状态,释放指标 + djml.setZt("0"); + }else if (ColEventTypeEnum.ONCANCEL.getType().equals(eventType)){ + //流程撤销 修改状态,释放指标 + djml.setZt("1"); + }else if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){ + //流程处理事件 + djml.setZt("3"); + djml.setCurshjd("999"); + djml.setNextshjd("-1"); + //查询协同附件 + List<CollAttachmentResDTO> colAttachmentList = restUtil.getColAttachments(bodyObj.getString("summaryId"), "0", "fileApiCode", "hzya"); + //下载协同附件 + if (CollectionUtils.isNotEmpty(colAttachmentList)){ + List<FileInfoDTO> fileList = new ArrayList<>(); + for (CollAttachmentResDTO att : colAttachmentList) { + FileInfoDTO fileInfoDTO = new FileInfoDTO(); + + String fileName = URLDecoder.decode(att.getFilename(), "UTF-8"); + byte[] bytes = restUtil.downloadFileBytes("hzya", fileApiCode, att.getFileUrl(), fileName); + String filePath = DSK+File.separator+DateUtil.today()+File.separator+att.getFileUrl()+"."+att.getExtension(); + File file = new File(filePath); + // 使用 FileOutputStream 写入字节数组到文件 + try (FileOutputStream fos = new FileOutputStream(file)) { + fos.write(bytes); + } + if (null != file){ + String zipPath = DSK+File.separator+DateUtil.today()+File.separator+att.getSubReference()+".zip"; + ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipPath), Charset.forName("GBK")); + writeZipFile(file, zos, fileName); + zos.close(); + // 获取压缩文件的字节数组 + File zipFile = new File(zipPath); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream((int) zipFile.length()); + BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(zipFile)); + int buf_size = 1024; + byte[] buffer = new byte[buf_size]; + int len = 0; + while (-1 != (len = bufferedInputStream.read(buffer, 0, buf_size))) { + byteArrayOutputStream.write(buffer, 0, len); + } + byte[] fileByte = byteArrayOutputStream.toByteArray(); + fileInfoDTO.setData(fileByte); + fileInfoDTO.setFile_size(att.getSize()); + fileInfoDTO.setFile_name(fileName); + fileList.add(fileInfoDTO); + } + } + } } + String djmlStr = JSONObject.toJSONString(djml); + logger.info("差旅报销单报文:{}",djmlStr); } }catch (Exception ex ){ logger.error("保存报销单之前组装参数出错",ex); @@ -988,6 +1049,45 @@ public class OerDjmlServiceImpl implements IOerDjmlService { return null; } + private String timestampConvert(String timestamp){ + if (StrUtil.isNotEmpty(timestamp)){ + try { + DateTime date = DateUtil.date(Long.valueOf(timestamp)); + String formattedDate = DateUtil.format(date, "yyyyMMdd"); + return formattedDate; + }catch (Exception e){ + logger.error("日期转换出错:{}",e); + } + } + return null; + } + /** + * 把文件压缩成zip + * @param file 要压缩的文件 + * @param zos 文件压缩流 + * @param fileName 文件名 + */ + private void writeZipFile(File file, ZipOutputStream zos, String fileName) { + if (null != file && null != zos) { + try { + logger.info("=====压缩文件====="); + zos.putNextEntry(new ZipEntry(fileName)); + FileInputStream fos = new FileInputStream(file); + BufferedInputStream bis = new BufferedInputStream(fos); + int len; + byte[] buf = new byte[1024]; + while ((len = bis.read(buf, 0, 1024)) != -1) { + zos.write(buf, 0, len); + } + bis.close(); + fos.close(); + logger.info("=====压缩完成====="); + } catch (Exception e) { + e.printStackTrace(); + logger.error("=====压缩文件出错====="); + } + } + } /**