1、最近在做一个数据迁移的功能,其中涉及到附件的迁移,这些老的附件数据是以二进制的形式存储在Oracle中,现在要将这些图片上传到第三方物理存储系统上去。下面是我写的一个demo。
@Autowired
private ReimbursementService reimbursementService;
@Autowired
private IBillAttachmentUtilService billAttachmentUtilService;
@Autowired
private ExtBillAttachmentService extBillAttachmentService;
@Autowired
private TaskService taskService;
@Autowired
private IBillDataService billDataService;
@Autowired
private IWFProjectService iwfProjectService;
@Autowired
private IBillAttachmentService attachmentService;
private static final Logger logger = LoggerFactory.getLogger(ReimbursementQuartz.class);
@RequestMapping("/data")
public void reimbursement(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info("*********************历史报销单数据迁移开始********************");
while (true) {
PageHelper.startPage(1, 500);
List<HisBillBxmainDto> hisBillBxmainDtoList = reimbursementService.queryHisBxmainDtoList();
if (CollectionUtils.isEmpty(hisBillBxmainDtoList)) {
break;
}
for (HisBillBxmainDto hisBillBxmainDto : hisBillBxmainDtoList) {
String billNumber = hisBillBxmainDto.getBillNumber();
logger.info("***********单据编号**************" + billNumber);
BillSceneDataVO billData = new BillSceneDataVO();
billData.setAppId("49b40250e12311eaa301376aabe45f36");
billData.setBillDefineId("fa35d557af8311ea94ee8f80aef88a99");
billData.setScene(BOSceneEnum.WRITE);
billData.setBillCode(billNumber);
//过滤 公司id 、部门id、申请人id 不能为空
if (StringUtils.isNotEmpty(hisBillBxmainDto.getStaffId()) && StringUtils.isNotEmpty(hisBillBxmainDto.getDeptId()) && StringUtils.isNotEmpty(hisBillBxmainDto.getOrgId())) {
//封装申请人信息
List<ApplicantUserAndDepartmentVO> applicantInfo = new ArrayList<>();
ApplicantUserAndDepartmentVO applicantUserAndDepartmentVO = new ApplicantUserAndDepartmentVO();
billData.setApplicantId(hisBillBxmainDto.getStaffId());
SysUserDO sysUserDO = taskService.queryUser(hisBillBxmainDto.getStaffId());
SysUserVO sysUserVO = new SysUserVO();
sysUserVO.setDefaultCompanyId(hisBillBxmainDto.getOrgId());
sysUserVO.setDefaultDeptId(hisBillBxmainDto.getDeptId());
sysUserVO.setDefaultPostId("1963");//普通员工
sysUserVO.setId(sysUserDO.getId());
sysUserVO.setEmail(sysUserDO.getEmail());
sysUserVO.setIdentityCard(sysUserDO.getIdentityCard());
sysUserVO.setLoginName(sysUserDO.getLoginName());
sysUserVO.setRankId(sysUserDO.getRankId());
sysUserVO.setMobilePhone(sysUserDO.getMobilePhone());
sysUserVO.setSex(sysUserDO.getSex());
sysUserVO.setStatus(sysUserDO.getStatus());
sysUserVO.setUserCode(sysUserDO.getUserCode());
sysUserVO.setUserName(sysUserDO.getUserName());
sysUserVO.setWorkStatus(sysUserDO.getWorkStatus());
applicantUserAndDepartmentVO.setUserVO(sysUserVO);
List<DimObjectVO> dimObjectVOList = new ArrayList<>();
DimObjectVO dimObjectVO = new DimObjectVO();
//部门代码
dimObjectVO.setCode(hisBillBxmainDto.getDeptCode());
//部门名称
dimObjectVO.setDescription(hisBillBxmainDto.getOrgDept());
//
dimObjectVO.setLeafed(true);
dimObjectVO.setName(hisBillBxmainDto.getOrgDept());
//部门ID
dimObjectVO.setObjectId(hisBillBxmainDto.getDeptId());
dimObjectVOList.add(dimObjectVO);
Map<String, Object> externalSysAttr = new HashMap<>();
externalSysAttr.put("CODE", hisBillBxmainDto.getDeptId());
externalSysAttr.put("DESCRIPTION", hisBillBxmainDto.getMemo());
externalSysAttr.put("NAME", hisBillBxmainDto.getOrgDept());
dimObjectVO.setExternalSysAttr(externalSysAttr);
applicantUserAndDepartmentVO.setDims(dimObjectVOList);
applicantInfo.add(applicantUserAndDepartmentVO);
billData.setApplicantInfo(applicantInfo);
//主表区数据封装
BillAreaDataVO area = new BillAreaDataVO();
//area.setBillMainId("9a0dac30dd2f11eaa246530f525c349a");
area.setBillDefineId("fa35d557af8311ea94ee8f80aef88a99");
area.setAppId("e3d5e4787ff911e88b1997bee3518b4d");
//主表区
area.setBoAreaId("59b6f7cec84e441db2fea4a63700a175");
List<BillRowDataVO> rowDatas = new ArrayList<>();//最外围数组
Map<String, BillAreaDataVO> subAreaDatas = new HashMap();//这个是主表区的subAreaDatas 封装预算区和审核区的数据 subAreaDatas内层封装rowDatas,rowDatas内层封装datas
Map<String, BillValueObjectVO> datas = new HashMap<>();//主表字段分装对象
//单据编号
BillValueObjectVO billCode = BillDataUtils.createBillValue(billNumber, BOColumnDataTypeEnum.STEXT);
datas.put("BILL_CODE", billCode);
//userId(单选)
DimValueVO person = new DimValueVO();
person.setValue(hisBillBxmainDto.getStaffId());
person.setTitle(ImmutableMap.of("zh_CN", "普通员工"));
BillValueObjectVO userId = BillDataUtils.createBillValue(person, BOColumnDataTypeEnum.PERSON);
datas.put("USERS_ID", userId);
//主表区文本字段
//报销单类型-历史
BillValueObjectVO billType = BillDataUtils.createBillValue(hisBillBxmainDto.getBillType(), BOColumnDataTypeEnum.STEXT);
datas.put("FBX_DEF_002", billType);
//报销日期-历史 FBX_DEF_003
BillValueObjectVO busDate = BillDataUtils.createBillValue(hisBillBxmainDto.getBusDate(), BOColumnDataTypeEnum.DATE);
datas.put("FBX_DEF_003", busDate);
// 固定电话-历史 FGD_DEF_001
BillValueObjectVO phone = BillDataUtils.createBillValue(hisBillBxmainDto.getTelNumber(), BOColumnDataTypeEnum.STEXT);
datas.put("FGD_DEF_001", phone);
//岗位-历史FGW_DEF_001
BillValueObjectVO post = BillDataUtils.createBillValue(hisBillBxmainDto.getPost(), BOColumnDataTypeEnum.STEXT);
datas.put("FGW_DEF_001", post);
//是否有发票-历史 FSF_DEF_001
BillValueObjectVO hashInvoice = BillDataUtils.createBillValue(hisBillBxmainDto.getHashInvoice(), BOColumnDataTypeEnum.STEXT);
datas.put("FSF_DEF_001", hashInvoice);
//附件数_历史FFJ_DEF_001
BillValueObjectVO attachCount = BillDataUtils.createBillValue(hisBillBxmainDto.getAttachCount(), BOColumnDataTypeEnum.STEXT);
datas.put("FFJ_DEF_001", attachCount);
//申请人_历史 FSQ_DEF_001
BillValueObjectVO staffId = BillDataUtils.createBillValue(hisBillBxmainDto.getRequestStaff(), BOColumnDataTypeEnum.STEXT);
datas.put("FSQ_DEF_001", staffId);
//制单人 FZD_DEF_001
BillValueObjectVO operStaff = BillDataUtils.createBillValue(hisBillBxmainDto.getOperStaff(), BOColumnDataTypeEnum.STEXT);
datas.put("FZD_DEF_001", operStaff);
//事项编号-历史
BillValueObjectVO itemCode = BillDataUtils.createBillValue(hisBillBxmainDto.getItemCode(), BOColumnDataTypeEnum.STEXT);
datas.put("FSX_DEF_002", itemCode);
//说明 DESCRIPTION
BillValueObjectVO descrition = BillDataUtils.createBillValue(hisBillBxmainDto.getMemo(), BOColumnDataTypeEnum.STEXT);
datas.put("DESCRIPTION", descrition);
//状态
BillValueObjectVO billStatus = BillDataUtils.createBillValue("UNCOMMITTED", BOColumnDataTypeEnum.STEXT);
datas.put("BILL_STATUS", billStatus);
//Update_date(UPDATE_DATE)
BillValueObjectVO updateDate = BillDataUtils.createBillValue(hisBillBxmainDto.getBusDate(), BOColumnDataTypeEnum.DATE);
datas.put("UPDATE_DATE", updateDate);
//EXCLUDE_TAX_AMOUNT_CURRENCY_ID
BillValueObjectVO EXCLUDE_TAX_AMOUNT_CURRENCY_ID = BillDataUtils.createBillValue("", BOColumnDataTypeEnum.STEXT);
datas.put("EXCLUDE_TAX_AMOUNT_CURRENCY_ID", EXCLUDE_TAX_AMOUNT_CURRENCY_ID);
//SPECIAL_INVOICE_COUNT
BillValueObjectVO specialInvoiceCout = BillDataUtils.createBillValue(0, BOColumnDataTypeEnum.NUMBER);
datas.put("SPECIAL_INVOICE_COUNT", specialInvoiceCout);
DimValueVO create = new DimValueVO();
create.setValue(hisBillBxmainDto.getStaffId());
create.setTitle(ImmutableMap.of("zh_CN", "普通员工"));
BillValueObjectVO creatorId = BillDataUtils.createBillValue(create, BOColumnDataTypeEnum.PERSON);
datas.put("CREATOR_ID", creatorId);
BillValueObjectVO billTypeMajor = BillDataUtils.createBillValue("MAJOR_TYPE_BX", BOColumnDataTypeEnum.STEXT);
datas.put("BILL_TYPE_MAJOR", billTypeMajor);
//APPLICANT_CREDIT_RANK
BillValueObjectVO applicantCreditRank = BillDataUtils.createBillValue("", BOColumnDataTypeEnum.STEXT);
datas.put("APPLICANT_CREDIT_RANK", applicantCreditRank);
//单据类型id
BillValueObjectVO billTypeId = BillDataUtils.createBillValue("43373ddd567a47dfa8f5bf075c66098a", BOColumnDataTypeEnum.STEXT);
datas.put("BILL_TYPE_ID", billTypeId);
//BILL_TYPE_CODE 单据类型编码
BillValueObjectVO billTypeCode = BillDataUtils.createBillValue("FYBXDL", BOColumnDataTypeEnum.STEXT);
datas.put("BILL_TYPE_CODE", billTypeCode);
//APPLICANT_PHONE_NUMBER
BillValueObjectVO applicantPhoneNumber = BillDataUtils.createBillValue("", BOColumnDataTypeEnum.STEXT);
datas.put("APPLICANT_PHONE_NUMBER", applicantPhoneNumber);
DimValueVO applicant = new DimValueVO();
applicant.setValue(hisBillBxmainDto.getStaffId());
applicant.setTitle(ImmutableMap.of("zh_CN", "普通员工"));
BillValueObjectVO applicantId = BillDataUtils.createBillValue(applicant, BOColumnDataTypeEnum.DROPDOWN);
datas.put("APPLICANT_ID", applicantId);
//APPLICANT_RANK_ID
DimValueVO applicantRank = new DimValueVO();
applicantRank.setValue(hisBillBxmainDto.getStaffId());
applicantRank.setTitle(ImmutableMap.of("zh_CN", "普通员工"));
BillValueObjectVO applicantRankId = BillDataUtils.createBillValue(applicantRank, BOColumnDataTypeEnum.DROPDOWN);
datas.put("APPLICANT_RANK_ID", applicantRankId);
//DATA_SOURCE_TYPE
BillValueObjectVO dataSourceType = BillDataUtils.createBillValue("PC_INPUT", BOColumnDataTypeEnum.STEXT);
datas.put("DATA_SOURCE_TYPE", dataSourceType);
//ENABLE_BUDGET
BillValueObjectVO enableBuget = BillDataUtils.createBillValue("FALSE", BOColumnDataTypeEnum.STEXT);
datas.put("ENABLE_BUDGET", enableBuget);
//LOAN_SUM_CURRENCY_ID
BillValueObjectVO londSum = BillDataUtils.createBillValue("6e589eb2dd9f11e8b5a69590a14a4e34", BOColumnDataTypeEnum.STEXT);
datas.put("LOAN_SUM_CURRENCY_ID", londSum);
//APPLICANT_POST_ID
DimValueVO applicantPost = new DimValueVO();
applicantPost.setValue(hisBillBxmainDto.getPost());
applicantPost.setTitle(ImmutableMap.of("zh_CN", "普通员工"));
BillValueObjectVO applicantPostId = BillDataUtils.createBillValue(applicantPost, BOColumnDataTypeEnum.DROPDOWN);
datas.put("APPLICANT_POST_ID", applicantPostId);
//申请人部门APPLICANT_DEPARTMENT_ID
DimValueVO applicantmet = new DimValueVO();
applicantmet.setValue(hisBillBxmainDto.getDeptId());
applicantmet.setTitle(ImmutableMap.of("zh_CN", "计划财务部"));
BillValueObjectVO applicantmetId = BillDataUtils.createBillValue(applicantmet, BOColumnDataTypeEnum.DROPDOWN);
datas.put("APPLICANT_DEPARTMENT_ID", applicantmetId);
//APP_ID
BillValueObjectVO appId = BillDataUtils.createBillValue("49b40250e12311eaa301376aabe45f36", BOColumnDataTypeEnum.STEXT);
datas.put("APP_ID", appId);
//APPLICANT_EMAIL
BillValueObjectVO applicantMeail = BillDataUtils.createBillValue("lixiang01@yuanian.com", BOColumnDataTypeEnum.STEXT);
datas.put("APPLICANT_EMAIL", applicantMeail);
//APPLICANT_ORG_ID
DimValueVO applicantOrg = new DimValueVO();
applicantOrg.setValue(hisBillBxmainDto.getOrgId());
BillValueObjectVO applicantOrgId = BillDataUtils.createBillValue(applicantOrg, BOColumnDataTypeEnum.DROPDOWN);
datas.put("APPLICANT_ORG_ID", applicantOrgId);
//IS_OVER_STANDARD
BillValueObjectVO isOverStandard = BillDataUtils.createBillValue("FALSE", BOColumnDataTypeEnum.STEXT);
datas.put("IS_OVER_STANDARD", isOverStandard);
//LOAN_SUM_APPROVAL_CURRENCY_ID
BillValueObjectVO lond = BillDataUtils.createBillValue("6e589eb2dd9f11e8b5a69590a14a4e34", BOColumnDataTypeEnum.STEXT);
datas.put("LOAN_SUM_APPROVAL_CURRENCY_ID", lond);
//BILL_TYPE_CATEGORY
BillValueObjectVO billTypeCateGory = BillDataUtils.createBillValue("BILL", BOColumnDataTypeEnum.STEXT);
datas.put("BILL_TYPE_CATEGORY", billTypeCateGory);
//另外增加几个字段
//REPAYMENT_SUM_CURRENCY_ID
BillValueObjectVO payment = BillDataUtils.createBillValue("6e589eb2dd9f11e8b5a69590a14a4e34", BOColumnDataTypeEnum.STEXT);
datas.put("REPAYMENT_SUM_CURRENCY_ID", payment);
//EXPENSE_RECORD_SUM_CURRENCY_ID
BillValueObjectVO repayment = BillDataUtils.createBillValue("6e589eb2dd9f11e8b5a69590a14a4e34", BOColumnDataTypeEnum.STEXT);
datas.put("EXPENSE_RECORD_SUM_CURRENCY_ID", repayment);
//ACCOUNT_CURRENCY_ID
DimValueVO applicantOrg1 = new DimValueVO();
applicantOrg1.setValue("6e589eb2dd9f11e8b5a69590a14a4e34");
applicantOrg1.setTitle(ImmutableMap.of("zh_CN", "人民币"));
BillValueObjectVO applicantOrgId1 = BillDataUtils.createBillValue(applicantOrg1, BOColumnDataTypeEnum.DROPDOWN);
datas.put("ACCOUNT_CURRENCY_ID", applicantOrgId1);
//EXPENSE_RECORD_SUM_CURRENCY_ID
BillValueObjectVO repayment1 = BillDataUtils.createBillValue("6e589eb2dd9f11e8b5a69590a14a4e34", BOColumnDataTypeEnum.STEXT);
datas.put("EXPENSE_RECORD_SUM_CURRENCY_ID", repayment1);
//REPAYMENT_SUM_CURRENCY_ID
BillValueObjectVO repayments = BillDataUtils.createBillValue("6e589eb2dd9f11e8b5a69590a14a4e34", BOColumnDataTypeEnum.STEXT);
datas.put("REPAYMENT_SUM_CURRENCY_ID", repayments);
//主表区历史Id
BillValueObjectVO billDefineHistoryId = BillDataUtils.createBillValue("1d01adc8eb5811eaa52d831201b28bec", BOColumnDataTypeEnum.STEXT);
datas.put("BILL_DEFINE_HISTORY_ID", billDefineHistoryId);
BillValueObjectVO busDate1 = BillDataUtils.createBillValue(hisBillBxmainDto.getBusDate(), BOColumnDataTypeEnum.DATE);
datas.put("APPLICANT_DATE", busDate1);
BillRowDataVO billRowDataVO = new BillRowDataVO();
area.setBoAreaCode("MAIN");
area.setBoAreaName("主表区");
area.setBoAreaId("59b6f7cec84e441db2fea4a63700a175");
billRowDataVO.setDatas(datas);
//预算区数据
BillRowDataVO billRowDataVO5 = new BillRowDataVO();
Map<String, BillAreaDataVO> subAreaDatas2 = new HashMap();
List<HisBillBxDetailDto> hisBillBxDetailDtoList = reimbursementService.queryHisBillBxDetailDtoList(billNumber);
if (hisBillBxDetailDtoList.size() > 0) {
List<BillRowDataVO> rowDatas1 = new ArrayList<>();
for (HisBillBxDetailDto hisBillBxDetailDto : hisBillBxDetailDtoList) {
Map<String, BillValueObjectVO> datas1 = new HashMap();
//申请单号-历史 FSQ_DEF_005
BillValueObjectVO hBillNumber = BillDataUtils.createBillValue(hisBillBxDetailDto.getRelationBillNumber(), BOColumnDataTypeEnum.STEXT);
datas1.put("FSQ_DEF_005", hBillNumber);
//业务期间 DEDUCT_DATE
BillValueObjectVO period = BillDataUtils.createBillValue(hisBillBxDetailDto.getPeriod(), BOColumnDataTypeEnum.DATE);
datas1.put("DEDUCT_DATE", period);
//描述 FMS_DEF_001
BillValueObjectVO memo = BillDataUtils.createBillValue(hisBillBxDetailDto.getMemo(), BOColumnDataTypeEnum.STEXT);
datas1.put("FMS_DEF_001", memo);
//地点FDD_DEF_001
BillValueObjectVO place = BillDataUtils.createBillValue(hisBillBxDetailDto.getPlace(), BOColumnDataTypeEnum.STEXT);
datas1.put("FDD_DEF_001", place);
//出发日期
BillValueObjectVO dateFrom = BillDataUtils.createBillValue(hisBillBxDetailDto.getDateFrom(), BOColumnDataTypeEnum.DATE);
datas1.put("FRQ_DEF_001", dateFrom);
//日期到
BillValueObjectVO dateTo = BillDataUtils.createBillValue(hisBillBxDetailDto.getDateTo(), BOColumnDataTypeEnum.DATE);
datas1.put("FRQ_DEF_002", dateTo);
//组织机构 APPLICANT_DEPARTMENT_ID
DimValueVO org = new DimValueVO();
org.setValue(hisBillBxDetailDto.getOrgId());
BillValueObjectVO orgId = BillDataUtils.createBillValue(org, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("DIM_ORG", orgId);
//预算中心 FYS_DEF_002
DimValueVO buger = new DimValueVO();
buger.setValue(hisBillBxDetailDto.getBudgeTcenterId());
BillValueObjectVO budgeTcenterId = BillDataUtils.createBillValue(buger, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("FYS_DEF_002", budgeTcenterId);
//报销类型 FBX_DEF_004
BillValueObjectVO feeType = BillDataUtils.createBillValue(hisBillBxDetailDto.getFeeTye(), BOColumnDataTypeEnum.STEXT);
datas1.put("FBX_DEF_004", feeType);
//费用项目-历史 FFY_DEF_004
BillValueObjectVO feeDetail = BillDataUtils.createBillValue(hisBillBxDetailDto.getFeeDetail(), BOColumnDataTypeEnum.STEXT);
datas1.put("FFY_DEF_004", feeDetail);
//预算项目 DIM_ACCOUNT
DimValueVO dim = new DimValueVO();
dim.setValue(hisBillBxDetailDto.getBudAccountId());
BillValueObjectVO dimAccount = BillDataUtils.createBillValue(dim, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("DIM_ACCOUNT", dimAccount);
//项目 DIM_PROJECT
DimValueVO project = new DimValueVO();
project.setValue(hisBillBxDetailDto.getProjectId());
BillValueObjectVO projectId = BillDataUtils.createBillValue(project, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("DIM_PROJECT", projectId);
//渠道类型 DIM_QDZL_DEF001
DimValueVO channel = new DimValueVO();
channel.setValue(hisBillBxDetailDto.getChannelId());
BillValueObjectVO channelId = BillDataUtils.createBillValue(channel, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("DIM_QDZL_DEF001", channelId);
//用餐人数 FYC_DEF_001
BillValueObjectVO eatNumber = BillDataUtils.createBillValue(hisBillBxDetailDto.getEatNumber(), BOColumnDataTypeEnum.STEXT);
datas1.put("FYC_DEF_001", eatNumber);
//发票类型-历史 FFP_DEF_006
BillValueObjectVO invoiceTye = BillDataUtils.createBillValue(hisBillBxDetailDto.getInvoiceType(), BOColumnDataTypeEnum.STEXT);
datas1.put("FFP_DEF_006", invoiceTye);
//费用用途-历史 FFY_DEF_005
BillValueObjectVO costFor = BillDataUtils.createBillValue(hisBillBxDetailDto.getCostFor(), BOColumnDataTypeEnum.STEXT);
datas1.put("FFY_DEF_005", costFor);
//客票张数 FKP_DEF_001
BillValueObjectVO ticketNumber = BillDataUtils.createBillValue(hisBillBxDetailDto.getTicketNumber(), BOColumnDataTypeEnum.NUMBER);
datas1.put("FKP_DEF_001", ticketNumber);
//开票日期 FKP_DEF_002
BillValueObjectVO invoiceDate = BillDataUtils.createBillValue(hisBillBxDetailDto.getInvoiceDate(), BOColumnDataTypeEnum.DATE);
datas1.put("FKP_DEF_002", invoiceDate);
//发票代码-历史 FFP_DEF_007
BillValueObjectVO invoceCode = BillDataUtils.createBillValue(hisBillBxDetailDto.getInvoceCode(), BOColumnDataTypeEnum.STEXT);
datas1.put("FFP_DEF_007", invoceCode);
//发票号码-历史 FFP_DEF_008
BillValueObjectVO invoiceNo = BillDataUtils.createBillValue(hisBillBxDetailDto.getInvoiceNo(), BOColumnDataTypeEnum.STEXT);
datas1.put("FFP_DEF_008", invoiceNo);
//税率 FSL_DEF_001
BillValueObjectVO taxRate = BillDataUtils.createBillValue(hisBillBxDetailDto.getTaxRate(), BOColumnDataTypeEnum.STEXT);
datas1.put("FSL_DEF_001", taxRate);
//行业类别 FXY_DEF_001
BillValueObjectVO tradeType = BillDataUtils.createBillValue(hisBillBxDetailDto.getTradeType(), BOColumnDataTypeEnum.STEXT);
datas1.put("FXY_DEF_001", tradeType);
//认证状态 FRZ_DEF_001
BillValueObjectVO authenState = BillDataUtils.createBillValue(hisBillBxDetailDto.getAuthenState(), BOColumnDataTypeEnum.STEXT);
datas1.put("FRZ_DEF_001", authenState);
//认证日期 FRZ_DEF_002
BillValueObjectVO authenDate = BillDataUtils.createBillValue(hisBillBxDetailDto.getAuthenDate(), BOColumnDataTypeEnum.DATE);
datas1.put("FRZ_DEF_002", authenDate);
//税金 FSJ_DEF_001
BillValueObjectVO taxAmount = BillDataUtils.createBillValue(hisBillBxDetailDto.getTaxAmount(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas1.put("FSJ_DEF_001", taxAmount);
//不含税金额
BillValueObjectVO notaxAmount = BillDataUtils.createBillValue(hisBillBxDetailDto.getNotaxAmount(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas1.put("AMOUNT", notaxAmount);
//价税合计 FJS_DEF_001
BillValueObjectVO totalAmount = BillDataUtils.createBillValue(hisBillBxDetailDto.getTotalAmount(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas1.put("FJS_DEF_001", totalAmount);
//责任中心 FZR_DEF_001
DimValueVO cost = new DimValueVO();
cost.setValue(hisBillBxDetailDto.getCostCenterId());
BillValueObjectVO costCenterId = BillDataUtils.createBillValue(cost, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("FZR_DEF_001", costCenterId);
//付款方式 FFK_DEF_001
DimValueVO pay = new DimValueVO();
pay.setValue(hisBillBxDetailDto.getPayTypeId());
BillValueObjectVO payTypeId = BillDataUtils.createBillValue(pay, BOColumnDataTypeEnum.DROPDOWN);
datas1.put("FFK_DEF_001", payTypeId);
//收款方
BillValueObjectVO recieverAccount = BillDataUtils.createBillValue(hisBillBxDetailDto.getRecieverAccount(), BOColumnDataTypeEnum.STEXT);
datas1.put("FSK_DEF_007", recieverAccount);
//合同编码 FHT_DEF_001
BillValueObjectVO contactCode = BillDataUtils.createBillValue(hisBillBxDetailDto.getContactCode(), BOColumnDataTypeEnum.STEXT);
datas1.put("FHT_DEF_001", contactCode);
// 合同编号 FHT_DEF_002
BillValueObjectVO contactNumber = BillDataUtils.createBillValue(hisBillBxDetailDto.getContactNumber(), BOColumnDataTypeEnum.STEXT);
datas1.put("FHT_DEF_002", contactNumber);
// 资金计划 FZJ_DEF_004
BillValueObjectVO fundPlan = BillDataUtils.createBillValue(hisBillBxDetailDto.getFundPlan(), BOColumnDataTypeEnum.STEXT);
datas1.put("FZJ_DEF_004", fundPlan);
//参考码 FCK_DEF_001
BillValueObjectVO refrence = BillDataUtils.createBillValue(hisBillBxDetailDto.getRefrence(), BOColumnDataTypeEnum.STEXT);
datas1.put("FCK_DEF_001", refrence);
//会计科目 FKJ_DEF_001
BillValueObjectVO hsAccount = BillDataUtils.createBillValue(hisBillBxDetailDto.getHsAccount(), BOColumnDataTypeEnum.STEXT);
datas1.put("FKJ_DEF_001", hsAccount);
//凭证日期 FPZ_DEF_001
BillValueObjectVO voucherDate = BillDataUtils.createBillValue(hisBillBxDetailDto.getVoucherDate(), BOColumnDataTypeEnum.DATE);
datas1.put("FPZ_DEF_001", voucherDate);
//凭证号 FPZ_DEF_002
BillValueObjectVO voucherNo = BillDataUtils.createBillValue(hisBillBxDetailDto.getVoucherNo(), BOColumnDataTypeEnum.STEXT);
datas1.put("FPZ_DEF_002", voucherNo);
//申请行号 FSQ_DEF_006
BillValueObjectVO relationRowNumber = BillDataUtils.createBillValue(hisBillBxDetailDto.getRelationRowNumber(), BOColumnDataTypeEnum.NUMBER);
datas1.put("FSQ_DEF_006", relationRowNumber);
//BUDGET_CHECK_INFO
BillValueObjectVO budgetCheckInfo = BillDataUtils.createBillValue("", BOColumnDataTypeEnum.STEXT);
datas1.put("BUDGET_CHECK_INFO", budgetCheckInfo);
BillRowDataVO billRowDataVO1 = new BillRowDataVO();
billRowDataVO1.setDatas(datas1); //把内层data数据封装
BillAreaDataVO billAreaDataVO1 = new BillAreaDataVO();
rowDatas1.add(billRowDataVO1);//data封装的对象放在数组里面
String boAreaId = "203d2e64f6bd4b32a8c83d030fb32676";
billAreaDataVO1.setBoAreaId(boAreaId);
billAreaDataVO1.setBoAreaName("预算区");
billAreaDataVO1.setBoAreaCode("BUDGET");
billAreaDataVO1.setRowDatas(rowDatas1);//将对象放在数组对象里面
subAreaDatas2.put(boAreaId, billAreaDataVO1);//将数组放在subAreaDatas对象里
//将预算区封装费用明细区
List<BillRowDataVO> rowDatas5 = new ArrayList<>();
Map<String, BillValueObjectVO> datas5 = new HashMap();
BillValueObjectVO createDate = BillDataUtils.createBillValue(new Date(), BOColumnDataTypeEnum.DATE);
datas5.put("CREATE_DATE", createDate);
//UPDATE_DATE
BillValueObjectVO updateD = BillDataUtils.createBillValue(new Date(), BOColumnDataTypeEnum.DATE);
datas5.put("UPDATE_DATE", updateD);
//BILL_DEFINE_ID
BillValueObjectVO billDefineId = BillDataUtils.createBillValue("fa35d557af8311ea94ee8f80aef88a99", BOColumnDataTypeEnum.STEXT);
datas5.put("BILL_DEFINE_ID", billDefineId);
billRowDataVO5.setDatas(datas5); //把内层data数据封装
billRowDataVO5.setReserve(false);//费用明细区隐藏
BillAreaDataVO billAreaDataVO5 = new BillAreaDataVO();
rowDatas5.add(billRowDataVO5);//data封装的对象放在数组里面
String boAreaId5 = "3bfd939291eb42439b692181c5477a96";
billAreaDataVO5.setBoAreaId(boAreaId5);
billAreaDataVO5.setBoAreaName("费用明细区");
billAreaDataVO5.setBoAreaCode("EXPENSE_DETAIL");
billAreaDataVO5.setRowDatas(rowDatas5);//将对象放在数组对象里面
billRowDataVO5.setSubAreaDatas(subAreaDatas2);
subAreaDatas.put(boAreaId5, billAreaDataVO5);//将数组放在subAreaDatas对象里
}
}
//冲销区数据封装
List<HisBillBxCjkDto> hisBillBxCjkDtoList = reimbursementService.queryHisBxCjkDtoList(billNumber);
if (hisBillBxCjkDtoList.size() > 0) {
List<BillRowDataVO> rowDatas4 = new ArrayList<>();
for (HisBillBxCjkDto hisBillBxCjkDto : hisBillBxCjkDtoList) {
Map<String, BillValueObjectVO> datas4 = new HashMap();
//借款单号-历史 FJK_DEF_003
BillValueObjectVO rowNumber = BillDataUtils.createBillValue(hisBillBxCjkDto.getJkBillNumber(), BOColumnDataTypeEnum.STEXT);
datas4.put("FJK_DEF_003", rowNumber);
//冲销金额 FCX_DEF_001
BillValueObjectVO amount = BillDataUtils.createBillValue(hisBillBxCjkDto.getAmount(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas4.put("FCX_DEF_001", amount);
BillRowDataVO billRowDataVO4 = new BillRowDataVO();
billRowDataVO4.setDatas(datas4); //把内层data数据封装
BillAreaDataVO billAreaDataVO4 = new BillAreaDataVO();
rowDatas4.add(billRowDataVO4);//data封装的对象放在数组里面
String boAreaId2 = "e1cebb72fd5f41ec8791c491b2a66010";
billAreaDataVO4.setBoAreaId(boAreaId2);
billAreaDataVO4.setBoAreaName("冲销区");
billAreaDataVO4.setBoAreaCode("WRITE_OFF");
billAreaDataVO4.setRowDatas(rowDatas4);//将对象放在数组对象里面
subAreaDatas.put(boAreaId2, billAreaDataVO4);//将数组放在subAreaDatas对象里
}
}
//凭证区数据封装
List<HisBillBxVoucherDto> hisBillBxVoucherDtoList = reimbursementService.queryHisBillBxVoucherDto(billNumber);
if (hisBillBxVoucherDtoList.size() > 0) {
List<BillRowDataVO> rowDatas3 = new ArrayList<>();
for (HisBillBxVoucherDto hisBillBxVoucherDto : hisBillBxVoucherDtoList) {
Map<String, BillValueObjectVO> datas3 = new HashMap();
//凭证号(核算系统) FPZ_DEF_002
BillValueObjectVO voucherNo = BillDataUtils.createBillValue(hisBillBxVoucherDto.getVoucherNo(), BOColumnDataTypeEnum.STEXT);
datas3.put("FPZ_DEF_002", voucherNo);
//FCK_DEF_001 参考单据编号
BillValueObjectVO billNo = BillDataUtils.createBillValue(hisBillBxVoucherDto.getBillNumber(), BOColumnDataTypeEnum.STEXT);
datas3.put("FCK_DEF_001", billNo);
//凭证类型FPZ_DEF_001
BillValueObjectVO voucher = BillDataUtils.createBillValue(hisBillBxVoucherDto.getVoucherType(), BOColumnDataTypeEnum.STEXT);
datas3.put("FPZ_DEF_001", voucher);
//期间FQJ_DEF_001
BillValueObjectVO period = BillDataUtils.createBillValue(hisBillBxVoucherDto.getPeriod(), BOColumnDataTypeEnum.STEXT);
datas3.put("FQJ_DEF_001", period);
//凭证业务日期 FPZ_DEF_003
BillValueObjectVO disDate = BillDataUtils.createBillValue(hisBillBxVoucherDto.getVoucherDate(), BOColumnDataTypeEnum.DATE);
datas3.put("FPZ_DEF_003", disDate);
//凭证抬头文本 FPZ_DEF_004
BillValueObjectVO lineMemo = BillDataUtils.createBillValue(hisBillBxVoucherDto.getLineMemo(), BOColumnDataTypeEnum.STEXT);
datas3.put("FPZ_DEF_004", lineMemo);
//分支机构 FHS_DEF_001
BillValueObjectVO seg1Org = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg1Org(), BOColumnDataTypeEnum.STEXT);
datas3.put("FHS_DEF_001", seg1Org);
//成本中心 FCB_DEF_001
BillValueObjectVO seg2CostCenter = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg2CostCenter(), BOColumnDataTypeEnum.STEXT);
datas3.put("FCB_DEF_001", seg2CostCenter);
//核算科目 FHS_DEF_002
BillValueObjectVO seg3Account = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg3Account(), BOColumnDataTypeEnum.STEXT);
datas3.put("FHS_DEF_002", seg3Account);
//明细段 FKM_DEF_001
BillValueObjectVO seg4BudAcc = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg4BudAcc(), BOColumnDataTypeEnum.STEXT);
datas3.put("FKM_DEF_001", seg4BudAcc);
//销售渠道 FXS_DEF_001
BillValueObjectVO seg5Channel = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg5Channel(), BOColumnDataTypeEnum.STEXT);
datas3.put("FXS_DEF_001", seg5Channel);
//险种代码 FXZ_DEF_001
BillValueObjectVO seg6Product = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg6Product(), BOColumnDataTypeEnum.STEXT);
datas3.put("FXZ_DEF_001", seg6Product);
//项目编码 FXM_DEF_001
BillValueObjectVO seg7Project = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg7Project(), BOColumnDataTypeEnum.STEXT);
datas3.put("FXM_DEF_001", seg7Project);
//预算中心 FYS_DEF_001
BillValueObjectVO seg8Budcenter = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg8Budcenter(), BOColumnDataTypeEnum.STEXT);
datas3.put("FYS_DEF_001", seg8Budcenter);
//备用段 FBY_DEF_001
BillValueObjectVO seg9Spare = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSeg9Spare(), BOColumnDataTypeEnum.STEXT);
datas3.put("FBY_DEF_001", seg9Spare);
//原币借方金额 FYB_DEF_001
BillValueObjectVO oriDebit = BillDataUtils.createBillValue(hisBillBxVoucherDto.getOriDebit(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas3.put("FYB_DEF_001", oriDebit);
//本币借方金额 FBB_DEF_001
BillValueObjectVO oriCredit = BillDataUtils.createBillValue(hisBillBxVoucherDto.getOriCredit(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas3.put("FBB_DEF_001", oriCredit);
//原币贷方金额 FYB_DEF_002
BillValueObjectVO localDebit = BillDataUtils.createBillValue(hisBillBxVoucherDto.getLocalDebit(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas3.put("FYB_DEF_002", localDebit);
//本币贷方金额 FBB_DEF_002
BillValueObjectVO localCredit = BillDataUtils.createBillValue(hisBillBxVoucherDto.getLocalCredit(), "6e589eb2dd9f11e8b5a69590a14a4e34");
datas3.put("FBB_DEF_002", localCredit);
//合同号 FHT_DEF_001
BillValueObjectVO contactNo = BillDataUtils.createBillValue(hisBillBxVoucherDto.getContactNo(), BOColumnDataTypeEnum.STEXT);
datas3.put("FHT_DEF_001", contactNo);
//参考码 FCK_DEF_002
BillValueObjectVO sreference = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSreference(), BOColumnDataTypeEnum.STEXT);
datas3.put("FCK_DEF_002", sreference);
//供应商 FGY_DEF_001
BillValueObjectVO suplier = BillDataUtils.createBillValue(hisBillBxVoucherDto.getSuplier(), BOColumnDataTypeEnum.STEXT);
datas3.put("FGY_DEF_001", suplier);
//关联方 FGL_DEF_001
BillValueObjectVO icp = BillDataUtils.createBillValue(hisBillBxVoucherDto.getIcp(), BOColumnDataTypeEnum.STEXT);
datas3.put("FGL_DEF_001", icp);
BillRowDataVO billRowDataVO3 = new BillRowDataVO();
billRowDataVO3.setDatas(datas3); //把内层data数据封装
BillAreaDataVO billAreaDataVO3 = new BillAreaDataVO();
rowDatas3.add(billRowDataVO3);//data封装的对象放在数组里面
String boAreaId3 = "48469c7fd17411ea943e6bc1afe258d8";
billAreaDataVO3.setBoAreaId(boAreaId3);
billAreaDataVO3.setBoAreaName("凭证区-历史");
billAreaDataVO3.setBoAreaCode("T_BILL_AREA_PZQ_DEF_001");
billAreaDataVO3.setRowDatas(rowDatas3);//将数组放在数组对象里
subAreaDatas.put(boAreaId3, billAreaDataVO3);//将数组放在subAreaDatas对象里
}
}
//审批区
List<HisBillBxApprovalDto> hisBillBxApprovalDtoList = reimbursementService.queryHisBillBxApprovalList(billNumber);
if (hisBillBxApprovalDtoList.size() > 0) {
List<BillRowDataVO> rowDatas2 = new ArrayList<>();
for (HisBillBxApprovalDto hisBillBxApprovalDto : hisBillBxApprovalDtoList) {
Map<String, BillValueObjectVO> datas2 = new HashMap();
//状态
BillValueObjectVO state = BillDataUtils.createBillValue(hisBillBxApprovalDto.getState(), BOColumnDataTypeEnum.STEXT);
datas2.put("FZT_DEF_001", state);
//审批日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
BillValueObjectVO approveDate = BillDataUtils.createBillValue(hisBillBxApprovalDto.getApproveDate(), BOColumnDataTypeEnum.DATE);
datas2.put("FSP_DEF_001", approveDate);
//审批人
BillValueObjectVO approveUser = BillDataUtils.createBillValue(hisBillBxApprovalDto.getApproveUser(), BOColumnDataTypeEnum.STEXT);
datas2.put("FSP_DEF_002", approveUser);
//审批节点
BillValueObjectVO approveNode = BillDataUtils.createBillValue(hisBillBxApprovalDto.getApproveNode(), BOColumnDataTypeEnum.STEXT);
datas2.put("FSP_DEF_003", approveNode);
//审批
BillValueObjectVO approved = BillDataUtils.createBillValue(hisBillBxApprovalDto.getApproved(), BOColumnDataTypeEnum.STEXT);
datas2.put("FSP_DEF_004", approved);
//审批意见
BillValueObjectVO approveSuggestion = BillDataUtils.createBillValue(hisBillBxApprovalDto.getApproveSuggestion(), BOColumnDataTypeEnum.STEXT);
datas2.put("FSP_DEF_005", approveSuggestion);
BillValueObjectVO billParentId = BillDataUtils.createBillValue("e386d10f717c45c4a2a51709342243df", BOColumnDataTypeEnum.STEXT);
datas2.put("BILL_PARENT_ID", billParentId);
BillRowDataVO billRowDataVO2 = new BillRowDataVO();
billRowDataVO2.setDatas(datas2); //把内层data数据封装
BillAreaDataVO billAreaDataVO2 = new BillAreaDataVO();
rowDatas2.add(billRowDataVO2);//data封装的对象放在数组里面
String boAreaId4 = "6ddf3796d23b11ea80a6079118980cd2";
billAreaDataVO2.setBoAreaId(boAreaId4);
billAreaDataVO2.setBoAreaName("审批区-历史");
billAreaDataVO2.setBoAreaCode("T_BILL_AREA_SPQ_DEF_001");
billAreaDataVO2.setRowDatas(rowDatas2);//将数组放在数组对象里
subAreaDatas.put(boAreaId4, billAreaDataVO2);//将数组放在subAreaDatas对象里
}
}
//附件区 上传一个附件 赋值一个附件
List<FndAtmAttachMentDto> fndAtmAttachMentDtoList = taskService.queryFndAtmAttachMentDtoList(billNumber);
if (fndAtmAttachMentDtoList.size() > 0) {
List<BillRowDataVO> rowDatas0 = new ArrayList<>();
for (FndAtmAttachMentDto fndAtmAttachMentDto : fndAtmAttachMentDtoList) {
String attachmentId = IDGenerator.newID();//每循环一次生成一个附件id
Map<String, BillValueObjectVO> datas0 = new HashMap();
//下载到本地
downLoadFiles(fndAtmAttachMentDto);
BillAttachmentUtilVO billAttachmentUtilVO = new BillAttachmentUtilVO();
String filepath = "E:/迁移文件";
File file = new File(filepath);//File类型可以是文件也可以是文件夹
File[] fileList = file.listFiles();//将该目录下的所有文件放置在一个File类型的数组中
List<MultipartFile> multipartFileList = new ArrayList<>();
for (int i = 0; i < fileList.length; i++) {
File file1 = fileList[i];
MultipartFile mulFileByFile = FileCovertUtils.getMulFileByFile(fileList[i]);
multipartFileList.add(mulFileByFile);
if (file1.isFile()) {
file1.delete();
}
}
MultipartFile[] multipartFileArray = new MultipartFile[multipartFileList.size()];
//封装上传接口的报文
multipartFileList.toArray(multipartFileArray);
billAttachmentUtilVO.setModule(AttachmentModuleEnum.BILL_MODULE);
billAttachmentUtilVO.setAttachmentId(attachmentId);
billAttachmentUtilVO.setDefaultValue("false");
billAttachmentUtilVO.setUploadUserId(hisBillBxmainDto.getStaffId());
billAttachmentUtilVO.setUploadUserName("管理员");
for (MultipartFile multipartFile : multipartFileArray) {
billAttachmentUtilVO.setMultipartFiles(new MultipartFile[]{multipartFile});
//调上传接口
List<BillAttachmentVO> attachmentList = attachmentService.billAttachmentFileUpload(billAttachmentUtilVO);
BillAttachmentVO billAttachmentVO = attachmentList.get(0);
String filePath = billAttachmentVO.getFilePath();
List<AttachmentValueVO> attachmentVOs = new ArrayList<>();
AttachmentValueVO attachmentValueVO = new AttachmentValueVO();
attachmentValueVO.setUploadUserId(hisBillBxmainDto.getStaffId());
attachmentValueVO.setFileSize((BigDecimal) fndAtmAttachMentDto.getFileSize());
attachmentValueVO.setAttachmentId(attachmentId);
attachmentValueVO.setAttachmentName(fndAtmAttachMentDto.getFileName());
attachmentValueVO.setFilePath(filePath);
attachmentValueVO.setFileType(fndAtmAttachMentDto.getFileTypeCode());
attachmentValueVO.setUploadUserName("管理员");
attachmentValueVO.setUploadDateTime(LocalDateTime.now());//上传时间
attachmentVOs.add(attachmentValueVO);
BillValueObjectVO attachment = BillDataUtils.createBillValue(attachmentVOs, BOColumnDataTypeEnum.ATTACHMENT);
datas0.put("FFJ_DEF_001", attachment);
BillRowDataVO billRowDataVO0 = new BillRowDataVO();
billRowDataVO0.setDatas(datas0); //把内层data数据封装
BillAreaDataVO billAreaDataVO0 = new BillAreaDataVO();
rowDatas0.add(billRowDataVO0);//data封装的对象放在数组里面
String boAreaId0 = "cf8f2007c34311eab91221a87fada528";
billAreaDataVO0.setBoAreaId(boAreaId0);
billAreaDataVO0.setBoAreaName("附件区");
billAreaDataVO0.setBoAreaCode("T_BILL_AREA_FJQ_DEF_001");
billAreaDataVO0.setRowDatas(rowDatas0);//将数组放在数组对象里
subAreaDatas.put(boAreaId0, billAreaDataVO0);//将数组放在subAreaDatas对象里
}
}
}
billRowDataVO.setSubAreaDatas(subAreaDatas);//主表封装对象
rowDatas.add(billRowDataVO);
area.setRowDatas(rowDatas);//各区封装的数据
//areaTemplateRow分装三个区的数据
Map<String, BillRowDataVO> areaTemplateRow = new HashMap();
//主表区封装
BillRowDataVO mainBillRowDataVO = new BillRowDataVO();
Map<String, BillValueObjectVO> mainData = new HashMap<>();
BillValueObjectVO workStatus = BillDataUtils.createBillValue("UNCOMMITTED", BOColumnDataTypeEnum.STEXT);
mainData.put("BILL_STATUS", workStatus);
mainBillRowDataVO.setDatas(mainData);
areaTemplateRow.put("59b6f7cec84e441db2fea4a63700a175", mainBillRowDataVO);
billData.setBillDefineHistoryId("1d01adc8eb5811eaa52d831201b28bec");
//分装预算区
BillRowDataVO mainBillRowDataVO1 = new BillRowDataVO();
Map<String, BillValueObjectVO> mainData1 = new HashMap<>();
BillValueObjectVO createDate = BillDataUtils.createBillValue(new Date(), BOColumnDataTypeEnum.DATE);
mainData1.put("CREATE_DATE", createDate);
BillValueObjectVO updateDate1 = BillDataUtils.createBillValue(new Date(), BOColumnDataTypeEnum.DATE);
mainData1.put("UPDATE_DATE", updateDate1);
//BILL_DEFINE_ID
BillValueObjectVO billDefineID = BillDataUtils.createBillValue("fa35d557af8311ea94ee8f80aef88a99", BOColumnDataTypeEnum.STEXT);
mainData1.put("BILL_DEFINE_ID", billDefineID);
//OVER_BUDGET
BillValueObjectVO overBuget = BillDataUtils.createBillValue("PASS", BOColumnDataTypeEnum.STEXT);
mainData1.put("OVER_BUDGET", overBuget);
mainBillRowDataVO1.setDatas(mainData1);
areaTemplateRow.put("203d2e64f6bd4b32a8c83d030fb32676", mainBillRowDataVO1);
billData.setAreaTemplateRow(areaTemplateRow);
billData.setArea(area);
billData.setApplicantId(hisBillBxmainDto.getStaffId());
billData.setBillMainId(IDGenerator.newID());
String status = null;
try {
//调产品保存接口
billDataService.saveBillData(billData);
//保存单据之后自动提交流程
iwfProjectService.submitBill(billData);
logger.info("*************借款单单据编号***************" + billNumber + "迁移完成!!!");
status = "1";//保存单据成功
reimbursementService.updateStatus(status, billNumber);
//在数据库做状态标记
} catch (Exception e) {
logger.info("*************借款单单据编号***************" + billNumber + "迁移失败!!!");
status = "2";//保存单据失败
reimbursementService.updateStatus(status, billNumber);
e.printStackTrace();
continue;
}
}
}
}
}
private void downLoadFiles(FndAtmAttachMentDto fndAtmAttachMentDto) throws IOException {
String name = fndAtmAttachMentDto.getFileName();
String filepath = "E:/迁移文件";
byte[] content = fndAtmAttachMentDto.getContent();
InputStream in = new ByteArrayInputStream(content);
int len = content.length;
FileOutputStream file = new FileOutputStream(filepath + "/" + name);
byte[] buffer = new byte[len];
while ((len = in.read(buffer)) != -1) {
file.write(buffer, 0, len);
}
file.close();
in.close();
}
}
二、这个是工具类
public class FileCovertUtils {
public static MultipartFile getMulFileByFile(File file) {
FileItem fileItem = createFileItem(file.getPath(), file.getName());
MultipartFile mfile = new CommonsMultipartFile(fileItem);
return mfile;
}
public static FileItem createFileItem(String filePath, String fileName) {
String fieldName = "multipartFiles";
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem item = factory.createItem(fieldName, "text/plain", false, fileName);
File newfile = new File(filePath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(newfile);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
}
三、这个是第三方存储地址:
String fileUploadUrl = ConfigConstant.getValue("fileUploadUrl");
String bucket = ConfigConstant.getValue("bucket");
String filepath = bytes2file(data,suffix);
FileSystemResource resource = new FileSystemResource(newFile(filepath));
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
RestTemplate restTemplate = new RestTemplate();
Date date = new Date();
String policyNo = "ECS"+SerialNumberUtil.NextOrderNo(date, 5);
param.add("policyNo", policyNo);
param.add("storageType", bucket);
param.add("file", resource);
param.add("saveDB", "Y");
String recv = restTemplate.postForObject(fileUploadUrl, param, String.class);
StorageModel smodel = JSONObject.parseObject(recv , StorageModel.class);
System.out.println(recv);
//上传成功或者失败都要删除临时存放的附件,方便再次上传
deleteTempFile(new File(filepath));