diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java index 15aea71219..51645eba0b 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java @@ -102,6 +102,11 @@ public interface FinBillApplicationFeign { @ResponseBody public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); + @ApiOperation("生成欠款申请PDF") + @PostMapping("/createPdf") + @ResponseBody + public ResultBean createPdf(@RequestParam("sid") String sid, @RequestParam("userName") String userName); + /*************************公司开票流程管理接口********************************/ @ApiOperation("开票申请审批流程") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java index be18e2bef8..8dccb64229 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java @@ -96,6 +96,11 @@ public class FinBillApplicationFeignFallback implements FinBillApplicationFeign return rb.setMsg("接口anrui-fin/finbillapplication/fetchDetailsBySid无法访问"); } + @Override + public ResultBean createPdf(String sid, String userName) { + return null; + } + /*@Override public ResultBean submitFinBillApplicationPageList(SubmitFinBillApplicationPageListDto dto) { return null; diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationGcListVo.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationGcListVo.java new file mode 100644 index 0000000000..615423b7a7 --- /dev/null +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationGcListVo.java @@ -0,0 +1,44 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.fin.api.finbillapplication; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class FinBillApplicationGcListVo implements Vo { + + @ApiModelProperty(value = "序号") + private Integer idgc; + @ApiModelProperty(value = "挂车车架号") + private String gccjh; + @ApiModelProperty(value = "主车车架号") + private String zccjh; + @ApiModelProperty(value = "开票金额") + private String gckpje; +} diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationSourceLCVo.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationSourceLCVo.java new file mode 100644 index 0000000000..8909aecfae --- /dev/null +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationSourceLCVo.java @@ -0,0 +1,42 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.fin.api.finbillapplication; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class FinBillApplicationSourceLCVo implements Vo { + + @ApiModelProperty(value = "审批人姓名") + private String name; + @ApiModelProperty(value = "审批人意见") + private String comment; + @ApiModelProperty(value = "审批时间") + private String spsj; +} diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationZcListVo.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationZcListVo.java new file mode 100644 index 0000000000..d17688eb55 --- /dev/null +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationZcListVo.java @@ -0,0 +1,48 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.fin.api.finbillapplication; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class FinBillApplicationZcListVo implements Vo { + + @ApiModelProperty(value = "序号") + private Integer idzc; + @ApiModelProperty(value = "车架号") + private String zccjh; + @ApiModelProperty(value = "合格证状态") + private String zchgz; + @ApiModelProperty(value = "开票类型") + private String zckplx; + @ApiModelProperty(value = "开票名称") + private String zckpmc; + @ApiModelProperty(value = "开票信息") + private String zckpxx; +} diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java index d355439ca0..11060bd058 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java @@ -121,6 +121,11 @@ public class FinBillApplicationRest implements FinBillApplicationFeign { return rb.success().setData(vo); } + @Override + public ResultBean createPdf(String sid, String userName) { + return finBillApplicationService.createPdf(sid,userName); + } + /*@Override public ResultBean submitFinBillApplicationPageList(SubmitFinBillApplicationPageListDto dto) { return finBillApplicationService.submitFinBillApplicationPageList(dto); diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java index 44a0e2c66a..35d43960e6 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java @@ -32,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.api.basedistributor.BaseDistributorFeign; import com.yxt.anrui.base.api.baseinternalpurchase.flow.GetNodeVo; +import com.yxt.anrui.base.api.basemiddleman.BaseMiddlemanDetailsVo; import com.yxt.anrui.base.api.basetrailer.BaseTrailerDetailsVo; import com.yxt.anrui.base.api.basetrailer.BaseTrailerFeign; import com.yxt.anrui.base.api.basetrailer.TrailerVo; @@ -49,8 +50,14 @@ import com.yxt.anrui.base.common.enums.BillTypeEnum; import com.yxt.anrui.base.common.utils.Rule; import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFL; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderSourceLCVo; +import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDiscountListVo; +import com.yxt.anrui.buscenter.api.bussalesorderinsurance.BusSalesOrderInsuranceDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel; import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice; +import com.yxt.anrui.buscenter.api.bussalesordersubmit.BusSalesOrderSubmit; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; @@ -84,30 +91,50 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList; +import com.yxt.anrui.portal.api.sysorganization.SysOrganization; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.portal.api.sysuser.UserRoleQuery; +import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.Base64; +import com.yxt.common.base.utils.ConstantUtils; import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.WordUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import com.yxt.messagecenter.api.message.Message; import com.yxt.messagecenter.api.message.MessageFeign; import com.yxt.messagecenter.api.message.MessageFlowVo; import com.yxt.messagecenter.api.message.MessageFlowableQuery; +import com.yxt.messagecenter.api.messagelist.MessageList; +import com.yxt.messagecenter.api.messagelist.MessageListFeign; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; +import static com.yxt.anrui.fin.biz.finpaymentrecord.FinPaymentrecordService.image2Base64; +import static java.util.Comparator.comparing; + /** * Project: anrui-fin(开票申请管理)
* File: FinBillApplicationService.java
@@ -172,6 +199,10 @@ public class FinBillApplicationService extends MybatisBaseService createQueryWrapper(FinBillApplicationQuery query) { // todo: 这里根据具体业务调整查询条件 @@ -621,14 +652,14 @@ public class FinBillApplicationService extends MybatisBaseService finBillVehicleVos = finBillVehicleService.fetchByMainSid(sid); String vinNos = ""; for (FinBillVehicleVo finBillVehicleVo : finBillVehicleVos) { - String vinNo = finBillVehicleVo.getVinNo().substring(finBillVehicleVo.getVinNo().length() - 8);; + String vinNo = finBillVehicleVo.getVinNo().substring(finBillVehicleVo.getVinNo().length() - 8); + ; vinNos = vinNos + vinNo + ","; } record.setVinNo(vinNos.substring(0, vinNos.lastIndexOf(","))); @@ -2412,7 +2444,8 @@ public class FinBillApplicationService extends MybatisBaseService finBillVehicleVos = finBillVehicleService.fetchByMainSid(sid); String vinNos = ""; for (FinBillVehicleVo finBillVehicleVo : finBillVehicleVos) { - String vinNo = finBillVehicleVo.getVinNo().substring(finBillVehicleVo.getVinNo().length() - 8);; + String vinNo = finBillVehicleVo.getVinNo().substring(finBillVehicleVo.getVinNo().length() - 8); + ; vinNos = vinNos + vinNo + ","; } record.setVinNo(vinNos.substring(0, vinNos.lastIndexOf(","))); @@ -2432,7 +2465,7 @@ public class FinBillApplicationService extends MybatisBaseService variables = bv.getFormVariables(); + Map variables = bv.getFormVariables(); finBillApplication = fetchBySid(bv.getBusinessSid()); FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery(); flowProcessMapQuery.setProDefKey(finBillApplication.getProcDefId()); @@ -3100,14 +3133,14 @@ public class FinBillApplicationService extends MybatisBaseService createPdf(String sid, String userName) { + ResultBean rb = ResultBean.fireFail(); + List photoList = new ArrayList<>(); + List imgList = new ArrayList<>(); + FinBillApplication finBillApplication = fetchBySid(sid); + Map dataMap = new HashMap(); + //获取审批记录 + List flowRecordVo = flowableFeignPro.flowRecordAndComment(finBillApplication.getProcInstSid(), "1").getData(); + List finBillApplicationSourceLCVos = new ArrayList<>(); + for (PCHistTaskListAndCommentList flowTask : flowRecordVo) { + if (flowTask.getFlowableRecordVo() != null) { + Map flowableRecordVo = flowTask.getFlowableRecordVo(); + FinBillApplicationSourceLCVo finBillApplicationSourceLCVo = new FinBillApplicationSourceLCVo(); + List> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos"); + Map comment = ConstantUtils.getMap(flowableRecordVo, "comment"); + String assigneeName = (String) taskUserInfos.get(0).get("assigneeName"); + String comment1 = (String) comment.get("comment"); + finBillApplicationSourceLCVo.setName(assigneeName); + finBillApplicationSourceLCVo.setComment(comment1); + finBillApplicationSourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString()); + finBillApplicationSourceLCVos.add(finBillApplicationSourceLCVo); + } else { + Map processCommentVo = flowTask.getProcessCommentVo(); + FinBillApplicationSourceLCVo finBillApplicationSourceLCVo = new FinBillApplicationSourceLCVo(); + finBillApplicationSourceLCVo.setName(processCommentVo.get("title").toString()); + finBillApplicationSourceLCVo.setComment(processCommentVo.get("content").toString()); + finBillApplicationSourceLCVo.setSpsj(processCommentVo.get("time").toString()); + finBillApplicationSourceLCVos.add(finBillApplicationSourceLCVo); + List fileList = (List) processCommentVo.get("fileList"); + if (fileList.size() > 0) { + for (String s : fileList) { + imgList.add(s); + } + } + } + } + List messages = messageFeign.selectByBusinessSid(finBillApplication.getSid()).getData(); + if (messages.size() > 0) { + for (Message message : messages) { + FinBillApplicationSourceLCVo finBillApplicationSourceLCVo = new FinBillApplicationSourceLCVo(); + String receiverNames = ""; + List messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData(); + if (messageLists.size() > 0) { + for (MessageList messageList : messageLists) { + receiverNames = receiverNames + messageList.getReceiverName() + ","; + } + } + finBillApplicationSourceLCVo.setName("系统"); + finBillApplicationSourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(","))); + finBillApplicationSourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + finBillApplicationSourceLCVos.add(finBillApplicationSourceLCVo); + } + } + finBillApplicationSourceLCVos.sort(comparing(FinBillApplicationSourceLCVo::getSpsj)); + dataMap.put("lcList", finBillApplicationSourceLCVos); + //发起人 + dataMap.put("fqr", finBillApplication.getCreateByName()); + //发起部门 + dataMap.put("fqbm", finBillApplication.getDeptName()); + //发起日期 + dataMap.put("fqrq", finBillApplication.getApplyDate()); + //销售专员 + dataMap.put("xszy", finBillApplication.getStaffName()); + //销售部门 + dataMap.put("xsbm", finBillApplication.getSaleDeptName()); + //销售类型 + dataMap.put("xslx", finBillApplication.getSaleTypeValue()); + //合同编号 + dataMap.put("htbh", finBillApplication.getContractNo()); + //开票单位 + dataMap.put("kpdw", finBillApplication.getOpenTickUnitName()); + //客户名称 + dataMap.put("khmc", finBillApplication.getCustomerName()); + //单台开票金额 + dataMap.put("zcdtkpje", finBillApplication.getOneBillMoney().toString()); + //是否领取发票 + dataMap.put("sflqfp", finBillApplication.getIsLQOrigInvoice()); + //开票名称默认 + dataMap.put("kpmcmr", finBillApplication.getOpenTickName()); + //主车信息 + List finBillVehicleVos = finBillVehicleService.fetchByMainSid(sid); + List finBillApplicationZcListVos = new ArrayList<>(); + int zcId = 1; + for (FinBillVehicleVo finBillVehicleVo : finBillVehicleVos) { + FinBillApplicationZcListVo finBillApplicationZcListVo = new FinBillApplicationZcListVo(); + finBillApplicationZcListVo.setIdzc(zcId); + finBillApplicationZcListVo.setZccjh(finBillVehicleVo.getVinNo()); + finBillApplicationZcListVo.setZchgz(finBillVehicleVo.getCertificateStateValue()); + finBillApplicationZcListVo.setZckplx(finBillVehicleVo.getBillTypeValue()); + finBillApplicationZcListVo.setZckpmc(finBillVehicleVo.getOpenTickName()); + finBillApplicationZcListVo.setZckpxx(finBillVehicleVo.getOpenTickRemarks()); + finBillApplicationZcListVos.add(finBillApplicationZcListVo); + zcId = zcId + 1; + } + dataMap.put("zcxx", finBillApplicationZcListVos); + //欠款金额合计 + dataMap.put("qkjehj", finBillApplication.getArrearsMoney()); + //承诺回款日期 + dataMap.put("cnhkrq", finBillApplication.getReturnedMoneyDate()); + //欠款开票原因 + dataMap.put("qkkpyy", finBillApplication.getArrearsOpenYYValue()); + //欠款原因备注 + dataMap.put("remarks", finBillApplication.getRemarks()); + //挂车信息 + List finBillTrailerVos = finBillTrailerService.fetchByMainSid(sid); + List finBillApplicationGcListVos = new ArrayList<>(); + int gcId = 1; + if (!finBillTrailerVos.isEmpty()){ + for (FinBillTrailerVo finBillTrailerVo : finBillTrailerVos) { + FinBillApplicationGcListVo finBillApplicationGcListVo = new FinBillApplicationGcListVo(); + finBillApplicationGcListVo.setIdgc(gcId); + finBillApplicationGcListVo.setGccjh(finBillTrailerVo.getGcVinNo()); + finBillApplicationGcListVo.setZccjh(finBillTrailerVo.getVinNo()); + finBillApplicationGcListVo.setGckpje(finBillTrailerVo.getOneBillMoney()); + finBillApplicationGcListVos.add(finBillApplicationGcListVo); + gcId = gcId + 1; + } + } + dataMap.put("gcxx", finBillApplicationGcListVos); + //是否显示挂车信息 + if (finBillApplicationGcListVos.size() > 0) { + dataMap.put("isXS", "是"); + } else { + dataMap.put("isXS", "否"); + } + //下载人 + dataMap.put("downName", userName); + //下载时间 + dataMap.put("downTime", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + //获取图片路径 + List finBillFileVos = finBillFileService.fetchFileByBillSid(sid); + for (FinBillFileVo finBillFileVo : finBillFileVos) { + String fileUrl = finBillFileVo.getFileUrl(); + String urlPrefix = fileUploadComponent.getUrlPrefix(); + try { + fileUrl = urlPrefix + URLEncoder.encode(fileUrl, "utf-8"); + String image2Base64 = image2Base64(fileUrl); + photoList.add(image2Base64); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + if (imgList.size() > 0) { + for (String image : imgList) { + if (image.contains(fileUploadComponent.getUrlPrefix())) { + image = image.replace(fileUploadComponent.getUrlPrefix(), ""); + try { + image = fileUploadComponent.getUrlPrefix() + URLEncoder.encode(image, "utf-8"); + String image2Base64 = image2Base64(image); + photoList.add(image2Base64); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + } + } + dataMap.put("photoPath64", photoList); + //获取模板 + //模板路径 + String sourcePath = "D:\\anrui\\upload\\template\\"; + //生成word文件名 + String dateStr = DateUtil.format(new Date(), "yyyyMMdd"); + long seconds = System.currentTimeMillis(); + String typeName = dateStr + seconds + ".doc"; + //生成文件路径 + String targetPath = sourcePath + dateStr; + WordUtils.creatWord(dataMap, "qkkpsqd", sourcePath, targetPath, typeName); + //新生成的word路径 + String wordPath = targetPath + "\\" + typeName; + //生成欠款开票文件名 + String pdfName = "欠款开票审批单" + finBillApplication.getContractNo() + ".pdf"; + WordUtils.doc2pdf(wordPath, targetPath, pdfName, userName); + return rb.success().setData("template/" + dateStr + "/" + pdfName); + } + + public static String image2Base64(String imgUrl) { + URL url = null; + InputStream is = null; + ByteArrayOutputStream outStream = null; + HttpURLConnection httpUrl = null; + try { + url = new URL(imgUrl); + httpUrl = (HttpURLConnection) url.openConnection(); + httpUrl.connect(); + httpUrl.getInputStream(); + is = httpUrl.getInputStream(); + outStream = new ByteArrayOutputStream(); + //创建一个Buffer字符串 + byte[] buffer = new byte[1024]; + //每次读取的字符串长度,如果为-1,代表全部读取完毕 + int len = 0; + //使用一个输入流从buffer里把数据读取出来 + while ((len = is.read(buffer)) != -1) { + //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 + outStream.write(buffer, 0, len); + } + // 对字节数组Base64编码 + return Base64.encode(outStream.toByteArray()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (outStream != null) { + try { + outStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (httpUrl != null) { + httpUrl.disconnect(); + } + } + return imgUrl; + } } \ No newline at end of file diff --git a/工作内容需要的文档/单据模板/欠款开票申请单单据打印模板/qkkpsqd.ftl b/工作内容需要的文档/单据模板/欠款开票申请单单据打印模板/qkkpsqd.ftl new file mode 100644 index 0000000000..521655c23b --- /dev/null +++ b/工作内容需要的文档/单据模板/欠款开票申请单单据打印模板/qkkpsqd.ftl @@ -0,0 +1,2435 @@ + + + + + God + 孟哲 底 + 2 + 0 + 2023-06-01T06:48:00Z + 2023-06-01T06:48:00Z + 1 + 82 + 468 + 3 + 1 + 549 + 16 + + + 2052-11.1.0.14309 + 8A67112E9346437E8416DED6886866AF_12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 欠款开票申请单 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 发起人 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${fqr!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 发起部门 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${fqbm!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 发起日期 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${fqrq!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 销售专员 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${xszy!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 销售部门 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${xsbm!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 销售类型 + + + + + + + + + + + + + + + + + + + + + + + + + + ${xslx!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 合同编号 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${htbh!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 开票单位 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${kpdw!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 客户名称 + + + + + + + + + + + + + + + + + + + + + + + + + + ${khmc!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 主车开票信息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 单台开票金额 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${zcdtkpje!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 是否领取发票 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${sflqfp!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 开票名称默认 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${kpmcmr!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + + + + + + + + 车架号 + + + + + + + + + + + + + + + + + + + + + + + + + + + 合格证状态 + + + + + + + + + + + + + + + + + + + + + + + + + + + 开票类型 + + + + + + + + + + + + + + + + + + + + + + + + + + + 开票名称 + + + + + + + + + + + + + + + + + + + + + + + + + + + 开票信息 + + + + + <#list zcxx as z> + + + + + + + + + + + + + + + + + + + + + + + + + ${z.idzc!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${z.zccjh!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${z.zchgz!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${z.zckplx!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${z.zckpmc!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${z.zckpxx!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 欠款金额合计 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${qkjehj!} + + + + + + + + + + + + + + + + + + + + + + + + + + + 承诺回款日期 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${cnhkrq!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 欠款开票原因 + + + + + + + + + + + + + + + + + + + + + + + + + + + ${qkkpyy!} + + + + + + + + + + + + + + + + + + + + + + + + + + + ${remarks!} + + + + + <#if (isXS == "是")> + + + + + + + + + + + + + + + + + + + + + + + + + 挂车开票信息(挂车的开票类型、开票名称与主车相同) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + + + + + + + + 挂车车架号 + + + + + + + + + + + + + + + + + + + + + + + + + + + 主车车架号 + + + + + + + + + + + + + + + + + + + + + + + + + + + 开票金额 + + + + + <#list gcxx as g> + + + + + + + + + + + + + + + + + + + + + + + + + + ${g.idgc!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${g.gccjh!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${g.zccjh!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${g.gckpje!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 审批流程 + + + + <#list lcList as lc> + <#if (lc_index==0)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${lc.comment!} + + + + + + + + + + + + + + + + + + + ${lc.name!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${lc.spsj!} + + + + + + + <#list lcList as lc> + <#if (lc_index>0)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${lc.comment!} + + + + + + + + + + + + + + + + + + + ${lc.name!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${lc.spsj!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 下载人: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${downName!} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 下载时间: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${downTime!} + + + + + + <#list photoPath64 as photo> + + + + + + + + + + + + + + + + + + + + + + + + + + + ${photo} + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/工作内容需要的文档/单据模板/欠款开票申请单单据打印模板/欠款开票申请单.doc b/工作内容需要的文档/单据模板/欠款开票申请单单据打印模板/欠款开票申请单.doc new file mode 100644 index 0000000000..9d455f2d1e --- /dev/null +++ b/工作内容需要的文档/单据模板/欠款开票申请单单据打印模板/欠款开票申请单.doc @@ -0,0 +1,28 @@ + +|欠款开票申请单 | +|发起人|${fqr!} |发起部|${fqbm!} |发起 |${fqrq!} | +| | |门 | |日期 | | +|销售专|${xszy!} |销售部|${xsbm!} |销售 |${xslx!} | +|员 | |门 | |类型 | | +|合同编|${htbh!} |开票单|${kpdw!} |客户 |${khmc!} | +|号 | |位 | |名称 | | +|主车开票信息 | +|单台开票|${zcdtkpje|是否领取 |${sflqfp|开票名称 |${kpmcmr!} | +|金额 |!} |发票 |!} |默认 | | +|序号 |车架号 |合格证 |开票类型 |开票名称 |开票信息 | +| | |状态 | | | | +|${z.i|${z.zccj|${z.zch|${z.kplx!} |${z.kpmc!} |${z.zckpxx!} | +|dzc!}|h!} |gz!} | | | | +|欠款金额合|${qkjehj!} |承诺回款日期|${cnhkrq!} | +|计 | | | | +|欠款开票原|${qkkpyy|${remarks!} | +|因 |!} | | +|挂车开票信息(挂车的开票类型、开票名称与主车相同) | +|序号 |挂车车架号 |主车车架号 |开票金额 | +|${g.idgc!} |${g.gccjh!} |${g.zccjh!} |${g.gckpje!} | +|审批流程 |${lc.comment!} |${lc.spsj! | +| |${lc.name!} | | +|下载人: |${downName!}|下载时间: |${downTime!} | + + +[pic]