Compare commits

...

7 Commits

Author SHA1 Message Date
xiang2lin fd6ec2e156 报销单附件处理 2025-04-09 10:43:37 +08:00
xiang2lin 9ef284e9f3 报销单附件问题处理 2025-04-08 18:39:30 +08:00
xiang2lin f19ee30d0b 日志打印 2025-04-07 18:42:31 +08:00
xiang2lin e1faf486ce 本地配置 2025-04-07 17:25:30 +08:00
xiang2lin bf4d9f2e19 打印日志跟踪 2025-04-07 17:25:12 +08:00
xiang2lin f84c0a37bf loginName默认值修改 2025-04-07 17:24:51 +08:00
xiang2lin cbeb66f9dd 打印日志报错处理 2025-04-07 17:24:30 +08:00
10 changed files with 221 additions and 73 deletions

View File

@ -1,11 +1,14 @@
package com.hzya.frame.plugin.grp.service.impl; package com.hzya.frame.plugin.grp.service.impl;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.grpU8.nxproof.oerdjml.entity.OerDjmlEntity;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlExtService; import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlExtService;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlService; import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlService;
import com.hzya.frame.plugin.grp.service.IExpensePluginService; import com.hzya.frame.plugin.grp.service.IExpensePluginService;
import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -14,7 +14,7 @@ spring:
master: master:
url: jdbc:mysql://ufidahz.com.cn:9014/businesscenter?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowLoadLocalInfile=false&autoReconnect=true&failOverReadOnly=false&connectTimeout=30000&socketTimeout=30000&autoReconnectForPools=true url: jdbc:mysql://ufidahz.com.cn:9014/businesscenter?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowLoadLocalInfile=false&autoReconnect=true&failOverReadOnly=false&connectTimeout=30000&socketTimeout=30000&autoReconnectForPools=true
username: root username: root
password: 62e4295b615a30dbf3b8ee96f41c820b password: bd993088e8a7c3dc5f44441617f9b4bf
driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
savefile: savefile:
# 文件保存路径 # 文件保存路径

View File

@ -1,6 +1,9 @@
package com.hzya.frame; package com.hzya.frame;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.grpU8.nxproof.oerdjml.dto.FileInfoDTO;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlExtService;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.impl.OerDjmlExtServiceImpl;
import com.hzya.frame.plugin.grp.plugin.ExpensePluginInitializer; import com.hzya.frame.plugin.grp.plugin.ExpensePluginInitializer;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@ -8,6 +11,8 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File;
import java.util.List;
/** /**
* @Description * @Description
@ -20,7 +25,8 @@ public class PluginTest {
@Resource @Resource
private ExpensePluginInitializer expensePluginInitializer; private ExpensePluginInitializer expensePluginInitializer;
@Resource
private OerDjmlExtServiceImpl oerDjmlExtServiceImpl;
@Test @Test
public void dingTest(){ public void dingTest(){
JSONObject jsonObject = JSONObject.parseObject("{\n" + JSONObject jsonObject = JSONObject.parseObject("{\n" +
@ -39,4 +45,13 @@ public class PluginTest {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
@Test
public void fileDownloadTest(){
List<FileInfoDTO> fileInfoDTOList = oerDjmlExtServiceImpl.fileDownloadV1("3304665242408406647", "8000400011");
String djmlStr = JSONObject.toJSONString(fileInfoDTOList);
System.out.println(djmlStr);
File file = new File(fileInfoDTOList.get(0).getZip_file_path());
System.out.println(fileInfoDTOList.size());
}
} }

View File

@ -77,8 +77,7 @@
FROM FROM
OER_ANNEX OER_ANNEX
<trim prefix="where" prefixOverrides="and"> <trim prefix="where" prefixOverrides="and">
<if test="kjnd != null and kjnd !='' "> KJND = #{kjnd} </if> <if test="gsdm != null and gsdm !='' "> GSDM = #{gsdm} </if>
<if test="gsdm != null and gsdm !='' ">and GSDM = #{gsdm} </if>
</trim> </trim>
</select> </select>

View File

@ -9,7 +9,10 @@ public class FileInfoDTO {
private byte[] data;//附件压缩成zip后的数据 private byte[] data;//附件压缩成zip后的数据
private String file_name;//附件名字 private String file_name;//附件名字
private String file_size;//附件大小 private String file_size;//附件大小
//压缩后附件路径
private String zip_file_path;
//原始附件路径
private String original_file_path;
public byte[] getData() { public byte[] getData() {
return data; return data;
} }
@ -33,4 +36,20 @@ public class FileInfoDTO {
public void setFile_size(String file_size) { public void setFile_size(String file_size) {
this.file_size = file_size; this.file_size = file_size;
} }
public String getZip_file_path() {
return zip_file_path;
}
public void setZip_file_path(String zip_file_path) {
this.zip_file_path = zip_file_path;
}
public String getOriginal_file_path() {
return original_file_path;
}
public void setOriginal_file_path(String original_file_path) {
this.original_file_path = original_file_path;
}
} }

View File

@ -528,11 +528,8 @@ GSDM,KJND,mlId
<if test="zt != null and zt != ''"> ZT = #{zt},</if> <if test="zt != null and zt != ''"> ZT = #{zt},</if>
<if test="curshjd != null and curshjd != ''"> curshjd = #{curshjd},</if> <if test="curshjd != null and curshjd != ''"> curshjd = #{curshjd},</if>
<if test="nextshjd != null and nextshjd != ''"> nextshjd = #{nextshjd},</if> <if test="nextshjd != null and nextshjd != ''"> nextshjd = #{nextshjd},</if>
ssrid = #{ssrid}, <if test="shrId != null and shrId != ''"> shrid = #{shrId},</if>
ssr = #{ssr}, <if test="shrq != null and shrq != ''"> shrq = #{shrq}</if>
ssrq = #{ssrq},
shrid = #{ssrid},
shrq = #{shrq}
</trim> </trim>
where MLID = #{mlId} and DJBH = #{djbh} where MLID = #{mlId} and DJBH = #{djbh}
</update> </update>

View File

@ -177,10 +177,13 @@ public class RestUtil {
} }
} }
login_name = hashMap.get("loginName"); login_name = hashMap.get("loginName");
hashMap.put("loginName",login_name);
if (StrUtil.isEmpty(login_name)){ if (StrUtil.isEmpty(login_name)){
hashMap.put("loginName","hzya"); hashMap.put("loginName","seeyon");
} }
String result = HttpRequest.post(url).body(JSON.toJSONString(hashMap)).execute().body(); String params = JSON.toJSONString(hashMap);
logger.info("获取token的url:{},请求参数:{}",url,params);
String result = HttpRequest.post(url).body(params).execute().body();
JSONObject jsonObject = JSONObject.parseObject(result); JSONObject jsonObject = JSONObject.parseObject(result);
if (null != jsonObject) { if (null != jsonObject) {
logger.info("======token{}======" ,jsonObject.getString("id")); logger.info("======token{}======" ,jsonObject.getString("id"));

View File

@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
@ -17,6 +18,7 @@ import com.hzya.frame.grpU8.nxproof.oerdjml.entity.OerDjmlEntity;
import com.hzya.frame.grpU8.nxproof.oerdjml.entity.RestUtil; import com.hzya.frame.grpU8.nxproof.oerdjml.entity.RestUtil;
import com.hzya.frame.grpU8.nxproof.oerdjml.enums.ColEventTypeEnum; import com.hzya.frame.grpU8.nxproof.oerdjml.enums.ColEventTypeEnum;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlExtService; import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlExtService;
import com.hzya.frame.grpU8.nxproof.oerdjml.util.OerDjmlUtil;
import com.hzya.frame.grpU8.nxproof.oerdjnr.entity.OerDjnrEntity; import com.hzya.frame.grpU8.nxproof.oerdjnr.entity.OerDjnrEntity;
import com.hzya.frame.grpU8.nxproof.oeryszb.entity.OerYszbEntity; import com.hzya.frame.grpU8.nxproof.oeryszb.entity.OerYszbEntity;
import com.hzya.frame.sysnew.application.database.entity.SysApplicationDatabaseEntity; import com.hzya.frame.sysnew.application.database.entity.SysApplicationDatabaseEntity;
@ -75,6 +77,7 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
Map<String, String> headers = entity.getHeaders(); Map<String, String> headers = entity.getHeaders();
JSONObject bodyObj = JSONObject.parseObject(bodys); JSONObject bodyObj = JSONObject.parseObject(bodys);
String res = oerValuOf(bodyObj, headers, grpDataSourceCode); String res = oerValuOf(bodyObj, headers, grpDataSourceCode);
logger.info("oerValuOf接收到return");
// String formmainTableName = headers.get("formmainTableName"); // String formmainTableName = headers.get("formmainTableName");
// String forsonTableName = headers.get("forsonTableName"); // String forsonTableName = headers.get("forsonTableName");
// String djlx = headers.get("djlx"); // String djlx = headers.get("djlx");
@ -108,7 +111,9 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
// } // }
// } // }
if (StrUtil.isNotEmpty(res)){ if (StrUtil.isNotEmpty(res)){
logger.info("参数准备设置到entity.bodys里");
entity.setBodys(res); entity.setBodys(res);
logger.info("设置到entity.bodys里完成准备return");
return entity; return entity;
} }
}catch (Exception ex ){ }catch (Exception ex ){
@ -175,9 +180,11 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
logger.info("准备组装费用报销单参数"); logger.info("准备组装费用报销单参数");
//费用报销 expense //费用报销 expense
res = expense(headers,eventType,summaryId,dataSourceCode, formmainData, forsonData); res = expense(headers,eventType,summaryId,dataSourceCode, formmainData, forsonData);
logger.info("oerValuOf方法已经组装好参数准备return");
}else if (DjlxEnum.LABOR.type.equals(djlx)){ }else if (DjlxEnum.LABOR.type.equals(djlx)){
//劳务费 labor //劳务费 labor
} }
logger.info("oerValuOf方法return");
return res; return res;
} }
} }
@ -231,7 +238,7 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
djml.setCurshjd("-9"); djml.setCurshjd("-9");
djml.setNextshjd("999"); djml.setNextshjd("999");
djml.setFlowcode(flowcode); djml.setFlowcode(flowcode);
djml.setJsfs(spliceStr(forsonData0.getString("field0042"),forsonData0.getString("field0043")));//结算方式 djml.setJsfs(OerDjmlUtil.spliceStr(forsonData0.getString("field0042"),forsonData0.getString("field0043")));//结算方式
djml.setTel("");//电话 djml.setTel("");//电话
djml.setSsrq(DateUtil.format(formmainData.getDate("field0039"),"yyyyMMddHHmmssSSS"));//送审日期 djml.setSsrq(DateUtil.format(formmainData.getDate("field0039"),"yyyyMMddHHmmssSSS"));//送审日期
djml.setSsrid(formmainData.getString("field0037"));//送审人id djml.setSsrid(formmainData.getString("field0037"));//送审人id
@ -336,8 +343,10 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
djml.setZt("3"); djml.setZt("3");
djml.setCurshjd("999"); djml.setCurshjd("999");
djml.setNextshjd("-1"); djml.setNextshjd("-1");
djml.setCrerdm(formmainData.getString("field0037"));//制单人代码
djml.setCrermc(formmainData.getString("field0038"));//制单人名称
//查询协同附件 //查询协同附件
List<FileInfoDTO> fileInfoList = fileDownload(summaryId, fileApiCode); List<FileInfoDTO> fileInfoList = fileDownloadV1(summaryId, fileApiCode);
djml.setFileInfoList(fileInfoList); djml.setFileInfoList(fileInfoList);
} }
String djmlStr = JSONObject.toJSONString(djml); String djmlStr = JSONObject.toJSONString(djml);
@ -399,7 +408,7 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
djml.setCurshjd("-9"); djml.setCurshjd("-9");
djml.setNextshjd("999"); djml.setNextshjd("999");
djml.setFlowcode(flowcode); djml.setFlowcode(flowcode);
djml.setJsfs(spliceStr(forjsonData0.getString("field0086"), forjsonData0.getString("field0042"))); djml.setJsfs(OerDjmlUtil.spliceStr(forjsonData0.getString("field0086"), forjsonData0.getString("field0042")));
//电话 //电话
djml.setTel(formmainData.getString("field0005")); djml.setTel(formmainData.getString("field0005"));
djml.setClf_ccr(formmainData.getString("field0089")); djml.setClf_ccr(formmainData.getString("field0089"));
@ -537,7 +546,7 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
djml.setCurshjd("999"); djml.setCurshjd("999");
djml.setNextshjd("-1"); djml.setNextshjd("-1");
//查询协同附件 //查询协同附件
List<FileInfoDTO> fileInfoList = fileDownload(summaryId, fileApiCode); List<FileInfoDTO> fileInfoList = fileDownloadV1(summaryId, fileApiCode);
djml.setFileInfoList(fileInfoList); djml.setFileInfoList(fileInfoList);
} }
String djmlStr = JSONObject.toJSONString(djml); String djmlStr = JSONObject.toJSONString(djml);
@ -569,46 +578,49 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
} }
return timestamp; return timestamp;
} }
//这个方法暂时没用
/** public List<FileInfoDTO> fileDownloadDiscard(String summaryId, String apiCode) {
* 附件下载并压缩成zip
* @param summaryId
* @param apiCode
* @return
*/
private List<FileInfoDTO> fileDownload(String summaryId,String apiCode){
try { try {
List<GrpU8CollAttachmentResDTO> colAttachmentList = restUtil.getColAttachments(summaryId, "0", apiCode, null); List<GrpU8CollAttachmentResDTO> colAttachmentList = restUtil.getColAttachments(summaryId, "0", apiCode, null);
//下载协同附件 // 下载协同附件
if (CollectionUtils.isNotEmpty(colAttachmentList)){ if (CollectionUtils.isNotEmpty(colAttachmentList)) {
String token = restUtil.getToken(null, apiCode); String token = restUtil.getToken(null, apiCode);
List<FileInfoDTO> fileList = new ArrayList<>(); List<FileInfoDTO> fileList = new ArrayList<>();
String today = DateUtil.today();
String zipPath = DSK + File.separator + today + File.separator + "attachments.zip";
// 确保目录存在
if (!FileUtil.isDirectory(DSK + File.separator + today)) {
FileUtil.mkdir(DSK + File.separator + today);
}
// 创建 ZipOutputStream
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipPath), Charset.forName("GBK"))) {
for (GrpU8CollAttachmentResDTO att : colAttachmentList) { for (GrpU8CollAttachmentResDTO att : colAttachmentList) {
FileInfoDTO fileInfoDTO = new FileInfoDTO(); FileInfoDTO fileInfoDTO = new FileInfoDTO();
String fileName = URLDecoder.decode(att.getFilename(), "UTF-8"); String fileName = URLDecoder.decode(att.getFilename(), "UTF-8");
byte[] bytes = restUtil.downloadFileBytes(null, apiCode, att.getFileUrl(), fileName,token); String fileUrl = att.getFileUrl();
if (!FileUtil.isDirectory(DSK+ File.separator+DateUtil.today())){ byte[] bytes = restUtil.downloadFileBytes(null, apiCode, att.getFileUrl(), fileName, token);
FileUtil.mkdir(DSK+ File.separator+DateUtil.today()); String filePath = DSK + File.separator + today + File.separator + att.getFileUrl() + "." + att.getExtension();
}
String filePath = DSK+ File.separator+DateUtil.today()+File.separator+att.getFileUrl()+"."+att.getExtension();
File file = new File(filePath); File file = new File(filePath);
// 使用 FileOutputStream 写入字节数组到文件 // 使用 FileOutputStream 写入字节数组到文件
try (FileOutputStream fos = new FileOutputStream(file)) { try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(bytes); fos.write(bytes);
} }
if (null != file){
String zipPath = DSK+File.separator+DateUtil.today()+File.separator+att.getFileUrl()+".zip"; if (null != file) {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipPath), Charset.forName("GBK")); // 将文件添加到压缩包
writeZipFile(file, zos, fileName); writeZipFile(file, zos, fileName, fileUrl);
zos.close();
// 取压缩文件的字节数组 // 取压缩文件的字节数组
File zipFile = new File(zipPath); File zipFile = new File(zipPath);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream((int) zipFile.length()); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream((int) zipFile.length());
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(zipFile)); try (BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(zipFile))) {
int buf_size = 1024; int buf_size = 1024;
byte[] buffer = new byte[buf_size]; byte[] buffer = new byte[buf_size];
int len = 0; int len;
while (-1 != (len = bufferedInputStream.read(buffer, 0, buf_size))) { while (-1 != (len = bufferedInputStream.read(buffer, 0, buf_size))) {
byteArrayOutputStream.write(buffer, 0, len); byteArrayOutputStream.write(buffer, 0, len);
} }
@ -617,12 +629,71 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
fileInfoDTO.setFile_size(att.getSize()); fileInfoDTO.setFile_size(att.getSize());
fileInfoDTO.setFile_name(fileName); fileInfoDTO.setFile_name(fileName);
fileList.add(fileInfoDTO); fileList.add(fileInfoDTO);
logger.info("压缩后的文件读取字节数组完成");
} catch (Exception e) {
logger.error("压缩附件&读取字节数组出错:{}", e);
}
}
}
logger.info("压缩文件1111111");
return fileList;
} catch (Exception ex) {
logger.error("压缩附件添加到fileList出错{}", ex);
}
}
} catch (Exception e) {
logger.error("下载附件出错:{}", e);
}
return null;
}
//从OA下载附件
public List<FileInfoDTO> fileDownloadV1(String summaryId, String apiCode) {
Assert.notEmpty(summaryId,"summaryId不能为空");
Assert.notEmpty(apiCode,"apiCode不能为空");
try {
//1查询协同附件
List<GrpU8CollAttachmentResDTO> colAttachmentList = restUtil.getColAttachments(summaryId, "0", apiCode, null);
//2下载协同附件
if (CollectionUtils.isNotEmpty(colAttachmentList)){
//获取OA token
String token = restUtil.getToken(null, apiCode);
List<FileInfoDTO> fileList = new ArrayList<>();
String today = DateUtil.today();
String basePath = DSK + File.separator + today + File.separator;
// 确保目录存在
if (!FileUtil.isDirectory(basePath)) {
FileUtil.mkdir(basePath);
}
for (GrpU8CollAttachmentResDTO att : colAttachmentList) {
String fileName = URLDecoder.decode(att.getFilename(), "UTF-8");
String fileUrl = att.getFileUrl();
byte[] bytes = restUtil.downloadFileBytes(null, apiCode, att.getFileUrl(), fileName, token);
String filePath = basePath + att.getFileUrl() + "." + att.getExtension();
File file = new File(filePath);
// 使用 FileOutputStream 写入字节数组到文件
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(bytes);
}
//3把协同附件压缩成.zip
if (null != file){
String zipPath = basePath + att.getFileUrl() + ".zip";
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipPath), Charset.forName("GBK"));
writeZipFile(file, zos, fileName,fileUrl);
zos.close();
//4返回.zip附件路径
FileInfoDTO fileInfo = new FileInfoDTO();
fileInfo.setZip_file_path(zipPath);
fileInfo.setOriginal_file_path(filePath);
fileInfo.setFile_name(fileName);
fileInfo.setFile_size(att.getSize());
fileList.add(fileInfo);
} }
} }
return fileList; return fileList;
} }
}catch (Exception e){ }catch(Exception e){
logger.error("下载附件出错:{}",e); logger.error("下载OA附件出错:{}",e);
} }
return null; return null;
} }
@ -631,39 +702,29 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
* @param file 要压缩的文件 * @param file 要压缩的文件
* @param zos 文件压缩流 * @param zos 文件压缩流
* @param fileName 文件名 * @param fileName 文件名
* @param fileUrl 文件id
*/ */
private void writeZipFile(File file, ZipOutputStream zos, String fileName) { private void writeZipFile(File file, ZipOutputStream zos, String fileName, String fileUrl) {
if (null != file && null != zos) { if (null != file && null != zos) {
try { try (FileInputStream fos = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fos)) {
logger.info("=====压缩文件====="); logger.info("=====压缩文件=====");
zos.putNextEntry(new ZipEntry(fileName)); zos.putNextEntry(new ZipEntry(fileName ));
FileInputStream fos = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fos);
int len; int len;
byte[] buf = new byte[1024]; byte[] buf = new byte[1024];
while ((len = bis.read(buf, 0, 1024)) != -1) { while ((len = bis.read(buf, 0, 1024)) != -1) {
zos.write(buf, 0, len); zos.write(buf, 0, len);
} }
bis.close();
fos.close();
logger.info("=====压缩完成====="); logger.info("=====压缩完成=====");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.error("=====压缩文件出错====="); logger.error("=====压缩文件出错=====:{}", e);
} }
} }
} }
/**
* code和name拼接[]
* @param code
* @param name
* @return 格式03[公务卡]
*/
private String spliceStr(String code,String name){
String template = "{}[{}]";
return StrUtil.format(template,code,name);
}
public enum DjlxEnum { public enum DjlxEnum {
TRAVEL("travel","差旅报销单"), TRAVEL("travel","差旅报销单"),

View File

@ -23,6 +23,7 @@ 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.entity.OerDjmlEntity;
import com.hzya.frame.grpU8.nxproof.oerdjml.enums.ColEventTypeEnum; import com.hzya.frame.grpU8.nxproof.oerdjml.enums.ColEventTypeEnum;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlService; import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlService;
import com.hzya.frame.grpU8.nxproof.oerdjml.util.OerDjmlUtil;
import com.hzya.frame.grpU8.nxproof.oerdjnr.dao.IOerDjnrDao; import com.hzya.frame.grpU8.nxproof.oerdjnr.dao.IOerDjnrDao;
import com.hzya.frame.grpU8.nxproof.oerdjnr.entity.OerDjnrEntity; import com.hzya.frame.grpU8.nxproof.oerdjnr.entity.OerDjnrEntity;
import com.hzya.frame.grpU8.nxproof.oeryszb.dao.IOerYszbDao; import com.hzya.frame.grpU8.nxproof.oeryszb.dao.IOerYszbDao;
@ -41,6 +42,10 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -837,14 +842,16 @@ public class OerDjmlServiceImpl implements IOerDjmlService {
delete.setGsdm(oerDjmlAllEntities.get(0).getGsdm()); delete.setGsdm(oerDjmlAllEntities.get(0).getGsdm());
delete.setDataSourceCode(entity.getDataSourceCode()); delete.setDataSourceCode(entity.getDataSourceCode());
oerAnnexDao.deleteAnnex(delete); oerAnnexDao.deleteAnnex(delete);
int no = 1; int no = 0;
for (FileInfoDTO fileInfo : entity.getFileInfoList()) { for (FileInfoDTO fileInfo : entity.getFileInfoList()) {
try { try {
AttachmentFileEntity fileEntity = new AttachmentFileEntity(); AttachmentFileEntity fileEntity = new AttachmentFileEntity();
fileEntity.setDataSourceCode(entity.getDataSourceCode()); fileEntity.setDataSourceCode(entity.getDataSourceCode());
String fileName = URLDecoder.decode(fileInfo.getFile_name(), "UTF-8"); String fileName = URLDecoder.decode(fileInfo.getFile_name(), "UTF-8");
fileEntity.setaTFileName(fileName); fileEntity.setaTFileName(fileName);
fileEntity.setaTFile(fileInfo.getData()); fileEntity.setaTFile(file2bytes(fileInfo.getZip_file_path()));
fileEntity.setCreateID(OerDjmlUtil.spliceStr(entity.getCrerdm(),entity.getCrermc()));
fileEntity.setUpdateID(OerDjmlUtil.spliceStr(entity.getCrerdm(),entity.getCrermc()));
saveAttachment(fileEntity); saveAttachment(fileEntity);
//保存附件关系 //保存附件关系
OerAnnexEntity annexEntity = new OerAnnexEntity(); OerAnnexEntity annexEntity = new OerAnnexEntity();
@ -870,7 +877,7 @@ public class OerDjmlServiceImpl implements IOerDjmlService {
annexEntity.setShowSize(showSize); annexEntity.setShowSize(showSize);
} }
annexEntity.setFjType("其它"); //annexEntity.setFjType("其它");
oerAnnexDao.saveData(annexEntity); oerAnnexDao.saveData(annexEntity);
no++; no++;
}catch (Exception e){ }catch (Exception e){
@ -887,6 +894,28 @@ public class OerDjmlServiceImpl implements IOerDjmlService {
return BaseResult.getSuccessMessageEntity("处理成功"); return BaseResult.getSuccessMessageEntity("处理成功");
} }
//附件转成字节数组
private byte[] file2bytes(String filePath){
if (null != filePath){
File zipFile = new File(filePath);
if (null != zipFile){
try(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;
while (-1 != (len = bufferedInputStream.read(buffer, 0, buf_size))) {
byteArrayOutputStream.write(buffer, 0, len);
}
byte[] fileByte = byteArrayOutputStream.toByteArray();
return fileByte;
}catch (Exception ex){
logger.error("附件转成字节数组出错:{}",ex);
}
}
}
return null;
}
public String queryMaxId(OerAnnexEntity entity) { public String queryMaxId(OerAnnexEntity entity) {
if (null == entity){ if (null == entity){
entity = new OerAnnexEntity(); entity = new OerAnnexEntity();

View File

@ -0,0 +1,22 @@
package com.hzya.frame.grpU8.nxproof.oerdjml.util;
import cn.hutool.core.util.StrUtil;
/**
* @Description 报销单工具类
* @Author xiangerlin
* @Date 2025/4/8 18:01
**/
public class OerDjmlUtil {
/**
* code和name拼接[]
* @param code
* @param name
* @return 格式03[公务卡]
*/
public static String spliceStr(String code,String name){
String template = "{}[{}]";
return StrUtil.format(template,code,name);
}
}