From 525f734a6dea80b328c47dd243fdd76697f618b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B7=9D=E8=99=8E?= Date: Wed, 26 Jun 2024 17:24:27 +0800 Subject: [PATCH] 6.26 --- .../scm/form/paymentApplication/index.vue | 166 +++++++- .../mapper/scm/CwaccountvoucherMapper.xml | 65 +++- .../jnpf/service/BusinessOrderService.java | 2 + .../service/PaymentApplicationService.java | 3 + .../impl/BusinessOrderServiceImpl.java | 109 ++++++ .../impl/PaymentApplicationServiceImpl.java | 175 +++++++++ .../controller/BusinessOrderController.java | 14 + .../PaymentApplicationController.java | 11 + .../java/jnpf/entity/CwaccountEntity.java | 2 + .../jnpf/entity/CwaccountvoucherEntity.java | 11 + .../jnpf/model/cwaccount/CwaccountForm.java | 2 + .../PaymentApplicationPagination.java | 3 + .../src/views/extend/cwaccount/form.vue | 103 ++++- .../src/views/extend/cwsettlement/form.vue | 31 +- .../views/extend/paymentapplication/index.vue | 14 + .../scm/purchaseCenter/purchaseOrder/Bill.vue | 363 +++++++++++++++++ .../purchaseCenter/purchaseOrder/index.vue | 20 +- .../purchaseOrder/printStyle.js | 367 ++++++++++++++++++ 18 files changed, 1428 insertions(+), 33 deletions(-) create mode 100644 jnpf-java-boot/jnpf-web/src/views/scm/purchaseCenter/purchaseOrder/Bill.vue create mode 100644 jnpf-java-boot/jnpf-web/src/views/scm/purchaseCenter/purchaseOrder/printStyle.js diff --git a/jnpf-app/pages/scm/form/paymentApplication/index.vue b/jnpf-app/pages/scm/form/paymentApplication/index.vue index b27a468f..837898b4 100644 --- a/jnpf-app/pages/scm/form/paymentApplication/index.vue +++ b/jnpf-app/pages/scm/form/paymentApplication/index.vue @@ -63,6 +63,24 @@ + + + + + + + + + + + + + + + + 关联结算单({{i+1}}) + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{dataForm.paymentapplicationsettlementList.length==0?"添加关联结算单":"添加"}} + + @@ -166,7 +172,12 @@ f.unit settlementUnit, k.name productName, IFNULL(ROUND(c.sale_amount / f.net_weight, 6),0) settlementPrice, - c.business_order_id businessOrderId + c.business_order_id businessOrderId, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_storage_poundlist a LEFT JOIN jg_warehousing_storage b on a.warehousing_storage_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -179,6 +190,7 @@ LEFT JOIN jg_contract i on h.contract_id = i.id LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_storage_id in @@ -211,7 +223,12 @@ f.unit settlementUnit, k.name productName, IFNULL(ROUND(c.sale_amount / f.net_weight, 6),0) settlementPrice, - c.business_order_id businessOrderId + c.business_order_id businessOrderId, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_storage_poundlist a LEFT JOIN jg_warehousing_storage b on a.warehousing_storage_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -224,6 +241,7 @@ LEFT JOIN jg_contract i on h.contract_id = i.id LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_storage_id in @@ -255,7 +273,12 @@ IFNULL(j.price_rate,0) contractPrice, f.unit settlementUnit, k.name productName, - IFNULL(ROUND(c.purchase_amount / f.net_weight, 6),0) settlementPrice + IFNULL(ROUND(c.purchase_amount / f.net_weight, 6),0) settlementPrice, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_storage_poundlist a LEFT JOIN jg_warehousing_storage b on a.warehousing_storage_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -268,7 +291,7 @@ LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id LEFT JOIN jg_warehousing_storage_product l on l.warehousing_storage_id = b.id - + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_storage_id in @@ -302,7 +325,12 @@ f.unit settlementUnit, k.name productName, IFNULL(ROUND(c.sale_amount / f.net_weight, 6),0) settlementPrice, - c.business_order_id businessOrderId + c.business_order_id businessOrderId, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_outbound_poundlist a LEFT JOIN jg_warehousing_outbound b on a.warehousing_outbound_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -314,6 +342,7 @@ LEFT JOIN jg_contract i on h.contract_id = i.id LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_outbound_id in @@ -345,7 +374,12 @@ IFNULL(j.price_rate,0) contractPrice, f.unit settlementUnit, k.name productName, - IFNULL(ROUND(c.purchase_amount / f.net_weight, 6),0) settlementPrice + IFNULL(ROUND(c.purchase_amount / f.net_weight, 6),0) settlementPrice, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_outbound_poundlist a LEFT JOIN jg_warehousing_outbound b on a.warehousing_outbound_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -358,6 +392,7 @@ LEFT JOIN jg_contract i on h.contract_id = i.id LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_outbound_id in @@ -390,7 +425,12 @@ f.unit settlementUnit, k.name productName, IFNULL(ROUND(c.sale_amount / f.net_weight, 6),0) settlementPrice, - c.business_order_id businessOrderId + c.business_order_id businessOrderId, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_outbound_poundlist a LEFT JOIN jg_warehousing_outbound b on a.warehousing_outbound_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -403,6 +443,7 @@ LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id LEFT JOIN jg_warehousing_outbound_product l on l.warehousing_outbound_id = b.id + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_outbound_id in @@ -435,7 +476,12 @@ IFNULL(j.price_rate,0) contractPrice, f.unit settlementUnit, k.name productName, - IFNULL(ROUND(c.purchase_amount / f.net_weight, 6),0) settlementPrice + IFNULL(ROUND(c.purchase_amount / f.net_weight, 6),0) settlementPrice, + m.business_price businessPrice, + m.tax tax, + m.tax_count taxCount, + m.not_tax_price notTaxPrice, + m.not_tax_count notTaxCount from jg_warehousing_outbound_poundlist a LEFT JOIN jg_warehousing_outbound b on a.warehousing_outbound_id = b.id LEFT JOIN jg_voucher c on a.voucher_id = c.id @@ -448,6 +494,7 @@ LEFT JOIN jg_contract i on h.contract_id = i.id LEFT JOIN jg_contract_commodity j on (j.contract_id = i.id and f.product_id = j.product_id) LEFT JOIN jg_product k on f.product_id = k.id + LEFT JOIN jg_business_order_product_relational m on (h.id = m.business_order_id and c.order_no = m.ord_ln) where a.warehousing_outbound_id in diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/BusinessOrderService.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/BusinessOrderService.java index 838345f3..c89c773d 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/BusinessOrderService.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/BusinessOrderService.java @@ -97,5 +97,7 @@ public interface BusinessOrderService extends IService { void getPdfInfo(BusinessOrderEntity businessOrderEntity, HttpServletResponse response, String token) throws Exception; + Map printPDF(BusinessOrderEntity businessOrderEntity, HttpServletResponse response) throws Exception; + BigDecimal getSaleAmountSumInfo(String id); } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/PaymentApplicationService.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/PaymentApplicationService.java index dbc5d5aa..d8d4c5d5 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/PaymentApplicationService.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/PaymentApplicationService.java @@ -2,6 +2,8 @@ package jnpf.service; import jnpf.model.paymentapplication.*; import jnpf.entity.*; + +import java.io.IOException; import java.util.*; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -36,4 +38,5 @@ public interface PaymentApplicationService extends IService wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BusinessOrderEntity::getCode, businessOrderEntity.getCode()); + businessOrderEntity = this.getOne(wrapper); + + + + /*BigDecimal amount = BigDecimal.ZERO; + if (purchaseorderitemEntities!=null&&purchaseorderitemEntities.size()>0){ + amount = purchaseorderitemEntities.get(0).getAmount(); + }*/ + //查询总数量和总金额 + + + List> info = businessOrderMapper.getWordExcelInfo(businessOrderEntity.getCode()); + if(info == null || info.size() == 0){ + info = businessOrderMapper.getWordExcelInfo2(businessOrderEntity.getCode()); + } + if (info != null && info.size() > 0) { + BigDecimal settlement = new BigDecimal("0"); + BigDecimal amount = new BigDecimal("0"); + for (HashMap hashMap : info) { + settlement = settlement.add(new BigDecimal(hashMap.get("settlement").toString())); + amount = amount.add(new BigDecimal(hashMap.get("purchasePrice").toString())); + } + String settlementPdf = settlement.toString()+"_"+businessOrderEntity.getCompanyId()+"_"+businessOrderEntity.getDepartmentId(); + String settlementExcel= settlement.toString()+"_"+businessOrderEntity.getCompanyId(); + // 要打印的PDF文件路径 + Map map = this.getPrintPdf(businessOrderEntity, templateFilePath,settlementPdf); + return map; + } else { + log.error("采购订单号出错!查不到该采购订单!"); + } + return new HashMap(); + } + @Override public void getPdfInfo(BusinessOrderEntity businessOrderEntity, HttpServletResponse response, String token) throws Exception{ @@ -2103,6 +2150,68 @@ public class BusinessOrderServiceImpl extends ServiceImpl businessOrderProductRelationalEntityQueryWrapper = new QueryWrapper<>(); + businessOrderProductRelationalEntityQueryWrapper.lambda().eq(BusinessOrderProductRelationalEntity::getBusinessOrderId,businessOrderEntity.getId()); + List BusinessOrderProductRelationalEntitys = businessOrderProductRelationalService.list(businessOrderProductRelationalEntityQueryWrapper); + ContractLEntity contractLEntity = contractLService.getById(businessOrderEntity.getContractId()); + SubjectbasicEntity subjectbasicEntity = subjectbasicService.getById(businessOrderEntity.getFirstSubjectBasicId()); + byte[] bytes = null; + HttpHeaders headers = null; + ByteArrayOutputStream out = null; + ExportPdf exportPdf = new ExportPdf(); + + Map map = new HashMap(); + + //pdf表标题 + OrganizeEntity organizeEntityDdf =organizeService.getInfo(companyName); + if (organizeEntityDdf!=null){ + map.put("title", organizeEntityDdf.getFullName()+"采购订单"); + } + //pdf部门 + OrganizeEntity organizeEntityDdfDept =organizeService.getInfo(departmentName); + if (organizeEntityDdfDept!=null){ + map.put("name", organizeEntityDdfDept.getFullName()); + } +// map.put("title", companyName+"采购订单"); +// map.put("name", departmentName); + map.put("creatorTime", new SimpleDateFormat("yyyy-MM-dd").format(businessOrderEntity.getCreatorTime())); + map.put("contractNo", contractLEntity.getContractNo()); + map.put("contractCode", contractLEntity.getContractNumber()); + map.put("supplierName", subjectbasicEntity.getName()); + map.put("documentNo", businessOrderEntity.getCode()); + BigDecimal settlementSum = new BigDecimal("0"); + BigDecimal amountSum = new BigDecimal("0"); + List reportList = new ArrayList<>(); + for (BusinessOrderProductRelationalEntity businessOrderProductRelationalEntity : BusinessOrderProductRelationalEntitys) { + Map map1 = new HashMap(); + map1.put("itemCode", ""); + map1.put("itemName", businessOrderProductRelationalEntity.getName()); + map1.put("rate", businessOrderProductRelationalEntity.getTax()); + map1.put("price", businessOrderProductRelationalEntity.getBusinessPrice()); + map1.put("settlement", businessOrderProductRelationalEntity.getBusinessNum()); + map1.put("unit", businessOrderProductRelationalEntity.getSalesMainUnitId()); + map1.put("amount", businessOrderProductRelationalEntity.getTaxCount()); + settlementSum = settlementSum.add(businessOrderProductRelationalEntity.getBusinessNum()); + amountSum = amountSum.add(new BigDecimal(businessOrderProductRelationalEntity.getTaxCount())); + reportList.add(map1); + } + map.put("settlementSum", settlementSum); + map.put("amountSum", amountSum); + map.put("reportList", reportList); + return map; + } + /** * @param list word信息的数组 * @param templateFilePath 临时路径 diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/PaymentApplicationServiceImpl.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/PaymentApplicationServiceImpl.java index c9a723d4..aca4d442 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/PaymentApplicationServiceImpl.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/PaymentApplicationServiceImpl.java @@ -1,10 +1,28 @@ package jnpf.service.impl; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONArray; +import jnpf.base.ActionResult; +import jnpf.engine.controller.FlowBeforeController; +import jnpf.engine.model.flowbefore.FlowBeforeInfoVO; +import jnpf.engine.model.flowbefore.FlowTaskOperatorRecordModel; +import jnpf.engine.model.flowengine.FlowModel; import jnpf.entity.*; +import jnpf.exception.WorkFlowException; +import jnpf.mapper.CwpaymentreceiptMapper; import jnpf.mapper.PaymentApplicationMapper; +import jnpf.model.cwpaymentreceipt.PaymentdocMessage; +import jnpf.permission.entity.OrganizeEntity; +import jnpf.permission.service.OrganizeService; +import jnpf.permission.service.UserService; import jnpf.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jnpf.model.paymentapplication.*; + +import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import cn.hutool.core.util.ObjectUtil; import jnpf.permission.model.authorize.AuthorizeConditionModel; @@ -14,10 +32,13 @@ import jnpf.database.model.superQuery.ConditionJsonModel; import jnpf.database.model.superQuery.SuperQueryConditionModel; import java.lang.reflect.Field; import com.baomidou.mybatisplus.annotation.TableField; + +import java.net.URLEncoder; import java.util.regex.Pattern; import jnpf.model.QueryModel; import java.util.stream.Collectors; import jnpf.base.model.ColumnDataModel; +import jnpf.util.context.SpringContext; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import jnpf.database.model.superQuery.SuperJsonModel; @@ -30,6 +51,9 @@ import jnpf.util.*; import java.util.*; import jnpf.base.UserInfo; import jnpf.permission.entity.UserEntity; + +import javax.servlet.http.HttpServletResponse; + /** * * PaymentApplication @@ -45,6 +69,14 @@ public class PaymentApplicationServiceImpl extends ServiceImpl0 && AllIdList.size()>0) || total==0){ + if(ObjectUtil.isNotEmpty(paymentApplicationPagination.getCreatorUserName())){ + paymentApplicationQueryWrapper.inSql("f_creator_user_id", "SELECT f_id from base_user where f_real_name like '%" + paymentApplicationPagination.getCreatorUserName() + "%'"); + } Page page=new Page<>(paymentApplicationPagination.getCurrentPage(), paymentApplicationPagination.getPageSize()); IPage userIPage=this.page(page, paymentApplicationQueryWrapper); return paymentApplicationPagination.setData(userIPage.getRecords(),userIPage.getTotal()); @@ -420,4 +461,138 @@ public class PaymentApplicationServiceImpl extends ServiceImpl> paymentDocNodeInfo = cwpaymentreceiptMapper.getPaymentDocNodeInfo(id); + String stringtime = null; + if (paymentDocNodeInfo != null && paymentDocNodeInfo.size() > 0) { + System.out.println( paymentDocNodeInfo.get(0).get("handleTime")); + stringtime=paymentDocNodeInfo.get(0).get("handleTime").toString(); + } + PaymentdocMessage paymentdocMessage =new PaymentdocMessage(); + PaymentApplicationEntity paymentApplicationEntity = this.getById(id); + SubjectbasicEntity subjectbasicEntity = subjectbasicService.getById(paymentApplicationEntity.getSubjectId()); + UserEntity userEntity = userService.getInfo(paymentApplicationEntity.getCreatorUserId()); + paymentdocMessage.setRealName(userEntity.getRealName()); + paymentdocMessage.setMobilePhone(userEntity.getAccount()); + paymentdocMessage.setNowTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(paymentApplicationEntity.getCreatorTime())); + OrganizeEntity companyEntity = organizeService.getById(paymentApplicationEntity.getCompanyId()); + if(companyEntity == null){ + companyEntity = new OrganizeEntity(); + } + paymentdocMessage.setCustomerName(companyEntity.getFullName() + "请示"); + paymentdocMessage.setDocumentNo(paymentApplicationEntity.getCode()); + paymentdocMessage.setSupplierName(paymentApplicationEntity.getPayee()); + paymentdocMessage.setRamout(paymentApplicationEntity.getApplyAmount().toString()); + paymentdocMessage.setPaymentAmout(""); + paymentdocMessage.setCollectionAccout(subjectbasicEntity.getBankAccount()); + paymentdocMessage.setColletionBank(subjectbasicEntity.getBankBranchName()); + paymentdocMessage.setRemark(paymentApplicationEntity.getRemark()); + paymentdocMessage.setEnclosure(paymentApplicationEntity.getAnnex()); + paymentdocMessage.setPayType("货款"); + OrganizeEntity departmentEntity = organizeService.getById(paymentApplicationEntity.getDepartmentId()); + if(departmentEntity == null){ + departmentEntity = new OrganizeEntity(); + } + paymentdocMessage.setFullName(companyEntity.getFullName() + "/" + departmentEntity.getFullName()); + StringBuilder payEnclosureStr = new StringBuilder(); + if (paymentdocMessage.getEnclosure() != null) {//附件不为空 + String enclosure = paymentdocMessage.getEnclosure(); + JSONArray jsonToJsonArray = JsonUtil.getJsonToJsonArray(enclosure); + + for (int i = 0; i < jsonToJsonArray.size(); i++) { + Map o = (Map) jsonToJsonArray.get(i); + Object name = o.get("name"); + if (i == 0) { + payEnclosureStr.append(name); + } else { + payEnclosureStr.append("
" + name); + } + + } + paymentdocMessage.setEnclosure(payEnclosureStr.toString()); + } + +// StringUtil.indexOf() +// String templateFilePath = configValueUtil.getTemplateFilePath() +"paymentDocPdf//"; + Map map = JsonUtil.stringToMap(JSONUtil.toJsonStr(paymentdocMessage)); + map.put("substring", companyEntity.getFullName()); + map.put("substring1", departmentEntity.getFullName()); +// map.put("reportList",paymentDocNodeInfo); + FlowBeforeController bean = SpringContext.getBean(FlowBeforeController.class); + ActionResult info = null; + try { + info = bean.info(id, new FlowModel()); + } catch (WorkFlowException e) { + throw new RuntimeException(e); + } + FlowBeforeInfoVO data = (FlowBeforeInfoVO) info.getData(); + List recordList = data.getFlowTaskOperatorRecordList(); + List> maps = new ArrayList<>(); + for (int i = 0; i < recordList.size(); i++) { + Map map1 = new HashMap(); + FlowTaskOperatorRecordModel model = recordList.get(i); + Map map2 = paymentDocNodeInfo.get(i); + map1.put("realName", model.getUserName()); + map1.put("nodeName", model.getNodeName()); + map1.put("handleOpinion", model.getHandleOpinion()); + map1.put("handleTime", DateUtil.daFormat(model.getHandleTime())); + map1.put("node", map2.get("node")); + maps.add(map1); + } + ArrayList> maps1 = new ArrayList>(); + int num = 6; + + if (maps.size() > num) { + for (int i = 0; i < maps.size(); i++) { + Map map1 = maps.get(i); + if (i >= num) { + maps1.add(map1); + } + } + while (maps.size() > num) { + maps.remove(num); + } + } + + map.put("reportList", maps); + map.put("reportList1", maps1); + byte[] bytes = null; + ByteArrayOutputStream out = null; + ExportPdf exportPdf = new ExportPdf(); + // word模板 + try { + out = exportPdf.createPdf(map, "paymentDoc.ftl", "/templates/export"); + bytes = out.toByteArray(); + out.close(); + } catch (Exception e) { + throw new RuntimeException(e); + } + String fileName = paymentdocMessage.getCustomerName() == null ? companyEntity.getFullName() + "请示.pdf" : companyEntity.getFullName() + "请示(" + paymentdocMessage.getCustomerName() + ").pdf"; + + HttpServletResponse response = ServletUtil.getResponse(); + response.reset(); + String excelTitle = fileName; + String filen = null; + try { + filen = URLEncoder.encode(excelTitle, "UTF-8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } +// 设置response的Header + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + filen); + response.setContentType("application/x-download;charset=utf-8"); + + BufferedOutputStream toClient = null; + try { + toClient = new BufferedOutputStream(response.getOutputStream()); + toClient.write(out.toByteArray()); + toClient.flush(); + toClient.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + log.warn("pdf文件生成成功!"); + } } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/BusinessOrderController.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/BusinessOrderController.java index c764c27e..3666bfc5 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/BusinessOrderController.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/BusinessOrderController.java @@ -1287,4 +1287,18 @@ public class BusinessOrderController { businessOrderEntity.setCode(code); businessOrderService.getPdfInfo(businessOrderEntity,response,token); } + + /** + * 打印 + * + * @param code + * @return + */ + @GetMapping(value = "/printPDF/{code}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ActionResult printPDF(HttpServletResponse response, @PathVariable("code") String code) throws Exception { + BusinessOrderEntity businessOrderEntity = new BusinessOrderEntity(); + businessOrderEntity.setCode(code); + Map map = businessOrderService.printPDF(businessOrderEntity,response); + return ActionResult.success(map); + } } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/PaymentApplicationController.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/PaymentApplicationController.java index ac3c533f..a1d231c0 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/PaymentApplicationController.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/PaymentApplicationController.java @@ -16,6 +16,8 @@ import jnpf.model.paymentapplication.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.*; import jnpf.annotation.JnpfField; @@ -244,4 +246,13 @@ public class PaymentApplicationController { return ActionResult.success("结案成功"); } + /** + * + * @param id 付款申请表id + * @throws Exception + */ + @GetMapping(value = "/downloadPdf/{id}/{token}") + public void downloadPdf(HttpServletResponse response, @PathVariable("id") String id, @PathVariable("token")String token) throws IOException { + paymentApplicationService.getPaymentDocPdf(id); + } } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountEntity.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountEntity.java index 5bad2bfe..d7db4c39 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountEntity.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountEntity.java @@ -68,4 +68,6 @@ public class CwaccountEntity { private String flowId; @TableField("F_VERSION") private Integer version; + @TableField(value = "summary_type" , updateStrategy = FieldStrategy.IGNORED) + private String summaryType; } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountvoucherEntity.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountvoucherEntity.java index ea3fa799..8378b65f 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountvoucherEntity.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/entity/CwaccountvoucherEntity.java @@ -131,4 +131,15 @@ public class CwaccountvoucherEntity { @TableField("ORDER_NO") private String orderNo; + @TableField(exist = false) + private BigDecimal businessPrice; + @TableField(exist = false) + private String tax; + @TableField(exist = false) + private String taxCount; + @TableField(exist = false) + private String notTaxPrice; + @TableField(exist = false) + private String notTaxCount; + } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/cwaccount/CwaccountForm.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/cwaccount/CwaccountForm.java index d8835eea..fd93df80 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/cwaccount/CwaccountForm.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/cwaccount/CwaccountForm.java @@ -88,4 +88,6 @@ public class CwaccountForm { /** 对账主体类型 **/ @JsonProperty("accountSubjectType") private String accountSubjectType; + @JsonProperty("summaryType") + private String summaryType; } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/paymentapplication/PaymentApplicationPagination.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/paymentapplication/PaymentApplicationPagination.java index fe67d034..30f9a38c 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/paymentapplication/PaymentApplicationPagination.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/paymentapplication/PaymentApplicationPagination.java @@ -41,4 +41,7 @@ public class PaymentApplicationPagination extends Pagination { private Object paymentState; @JsonProperty("doc_state") private Object docState; + + private String applyWeight; + private String creatorUserName; } diff --git a/jnpf-java-boot/jnpf-web/src/views/extend/cwaccount/form.vue b/jnpf-java-boot/jnpf-web/src/views/extend/cwaccount/form.vue index 0abecd4b..b707ade3 100644 --- a/jnpf-java-boot/jnpf-web/src/views/extend/cwaccount/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/extend/cwaccount/form.vue @@ -1366,6 +1366,15 @@ 对账汇总 + + + + + + { + item.businessPrice = Number(item.businessPrice);//订单含税单价 + item.tax = Number(item.tax);//订单税率 + item.taxCount = Number(item.taxCount);//订单含税小计 + item.notTaxPrice = Number(item.notTaxPrice);//订单不含税单价 + item.notTaxCount = Number(item.notTaxCount);//订单不含税小计 //扣杂 item.bucklesWeight = 0; //小计重量 @@ -3063,11 +3089,11 @@ export default { return item.businessOrderId === cur.businessOrderId && item.productId === cur.productId && item.orderNo === cur.orderNo }) if (found) { - found.settlementSum = this.jnpf.floatAdd(Number(found.settlementSum), Number(cur.settlementSum)); - found.settlementSubtotal = this.jnpf.floatAdd(Number(found.settlementSubtotal), Number(cur.settlementSubtotal)); - found.settlementSubtotalNo = this.jnpf.floatAdd(Number(found.settlementSubtotalNo), Number(cur.settlementSubtotalNo)); - found.settlementTotal = this.jnpf.floatAdd(Number(found.settlementTotal), Number(cur.settlementTotal)); - found.settlementTotalNo = this.jnpf.floatAdd(Number(found.settlementTotalNo), Number(cur.settlementTotalNo)); + found.settlementSum = this.jnpf.floatAdd(Number(found.settlementSum), Number(cur.settlementSum));//结算数量 + found.settlementSubtotal = this.jnpf.floatAdd(Number(found.settlementSubtotal), Number(cur.settlementSubtotal));//结算小计(含税) + found.settlementSubtotalNo = this.jnpf.floatAdd(Number(found.settlementSubtotalNo), Number(cur.settlementSubtotalNo));//结算小计(不含税) + found.settlementTotal = this.jnpf.floatAdd(Number(found.settlementTotal), Number(cur.settlementTotal));//结算合计(含税) + found.settlementTotalNo = this.jnpf.floatAdd(Number(found.settlementTotalNo), Number(cur.settlementTotalNo));//结算合计(不含税) if (cur.otherType == '1') { found.otherExpenses = this.jnpf.floatAdd(Number(found.otherExpenses), Number(cur.otherExpenses)).toFixed(2); } else if (cur.otherType == '2') { @@ -3080,6 +3106,32 @@ export default { }, []) return result }, + sameReduce2(arr) { + let result = arr.reduce((acc, cur) => { + // let found = acc.find((item) => { + // return item.productId === cur.productId + // }) + let found = acc.find((item) => { + return item.businessOrderId === cur.businessOrderId && item.productId === cur.productId && item.orderNo === cur.orderNo + }) + if (found) { + found.settlementSum = this.jnpf.floatAdd(Number(found.settlementSum), Number(cur.settlementSum));//结算数量 + found.settlementSubtotal = this.jnpf.floatAdd(Number(found.taxCount), Number(cur.taxCount));//结算小计(含税) + found.settlementSubtotalNo = this.jnpf.floatAdd(Number(found.notTaxCount), Number(cur.notTaxCount));//结算小计(不含税) + found.settlementTotal = this.jnpf.floatAdd(Number(found.taxCount), Number(cur.taxCount));//结算合计(含税) + found.settlementTotalNo = this.jnpf.floatAdd(Number(found.notTaxCount), Number(cur.notTaxCount));//结算合计(不含税) + if (cur.otherType == '1') { + found.otherExpenses = this.jnpf.floatAdd(Number(found.otherExpenses), Number(cur.otherExpenses)).toFixed(2); + } else if (cur.otherType == '2') { + found.otherExpenses = this.jnpf.floatSub(Number(found.otherExpenses), Number(cur.otherExpenses)).toFixed(2); + } + } else { + acc.push({ productId: cur.productId, productName: cur.productName, spec: cur.spec, rate: cur.rate, settlementSum: cur.settlementSum, settlementTotal: cur.taxCount, settlementUnit: cur.unit, settlementPrice: cur.businessPrice, settlementSubtotal: cur.taxCount, settlementPriceNo: cur.notTaxPrice, settlementSubtotalNo: cur.notTaxCount, otherType: cur.otherType, otherExpenses: cur.otherExpenses, settlementTotal: cur.taxCount, settlementTotalNo: cur.notTaxCount, businessOrderId: cur.businessOrderId, orderNo: cur.orderNo }) + } + return acc + }, []) + return result + }, addcwaccountsummaryList() { if (!this.dataForm.cwaccountvoucherList || this.dataForm.cwaccountvoucherList.length == 0) { this.$message({ @@ -3107,18 +3159,37 @@ export default { // } // }) // }) + if(this.dataForm.summaryType == 1){ + this.dataForm.cwaccountsummaryList = this.sameReduce(this.dataForm.cwaccountvoucherList); + this.dataForm.cwaccountsummaryList.forEach(item => { + item.settlementSum = item.settlementSum.toFixed(4); + item.settlementSubtotal = item.settlementSubtotal.toFixed(2); + item.settlementSubtotalNo = item.settlementSubtotalNo.toFixed(2); + item.settlementTotal = item.settlementTotal.toFixed(2); + item.settlementTotalNo = item.settlementTotalNo.toFixed(2); + item.settlementPrice = this.jnpf.floatDiv(item.settlementSubtotal, item.settlementSum); + item.settlementPriceNo = this.jnpf.floatDiv(item.settlementSubtotalNo, item.settlementSum); + }) + }else if(this.dataForm.summaryType == 2){ + this.dataForm.cwaccountsummaryList = this.sameReduce2(this.dataForm.cwaccountvoucherList); + this.dataForm.cwaccountsummaryList.forEach(item => { + item.settlementSum = item.settlementSum.toFixed(4); + item.settlementSubtotal = item.settlementSubtotal.toFixed(2); + item.settlementSubtotalNo = item.settlementSubtotalNo.toFixed(2); + item.settlementTotal = item.settlementTotal.toFixed(2); + item.settlementTotalNo = item.settlementTotalNo.toFixed(2); + item.settlementPrice = this.jnpf.floatDiv(item.settlementSubtotal, item.settlementSum); + item.settlementPriceNo = this.jnpf.floatDiv(item.settlementSubtotalNo, item.settlementSum); + }) + }else{ + this.$message({ + type: 'error', + message: '请选择汇总类型', + duration: 1500, + }) + return + } - this.dataForm.cwaccountsummaryList = this.sameReduce(this.dataForm.cwaccountvoucherList); - this.dataForm.cwaccountsummaryList.forEach(item => { - item.settlementSum = item.settlementSum.toFixed(4); - item.settlementSubtotal = item.settlementSubtotal.toFixed(2); - item.settlementSubtotalNo = item.settlementSubtotalNo.toFixed(2); - item.settlementTotal = item.settlementTotal.toFixed(2); - item.settlementTotalNo = item.settlementTotalNo.toFixed(2); - item.settlementPrice = this.jnpf.floatDiv(item.settlementSubtotal, item.settlementSum); - item.settlementPriceNo = this.jnpf.floatDiv(item.settlementSubtotalNo, item.settlementSum); - console.log(item.settlementPriceNo + "111"); - }) // console.log(this.dataForm.cwaccountsummaryList + "111"); /* let item = { diff --git a/jnpf-java-boot/jnpf-web/src/views/extend/cwsettlement/form.vue b/jnpf-java-boot/jnpf-web/src/views/extend/cwsettlement/form.vue index 446c6bca..37402e4c 100644 --- a/jnpf-java-boot/jnpf-web/src/views/extend/cwsettlement/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/extend/cwsettlement/form.vue @@ -1335,11 +1335,24 @@ + +
+ + 结算汇总 +
+
+ + + + + + + -
-

结算汇总

-
@@ -1817,6 +1830,7 @@ export default { Vmodel: "", currVmodel: "", dataForm: { + summaryType: '1', type: "1", businessType: '1', code: undefined, @@ -2044,6 +2058,17 @@ export default { "label": "fullName", "value": "id" }, + summaryTypeOptions: [{ + "fullName": "按磅单", + "id": "1" + }, { + "fullName": "按订单", + "id": "2" + }], + summaryTypeProps: { + "label": "fullName", + "value": "id" + }, businessType1Options: [{ "fullName": "采购订单", "id": "1" diff --git a/jnpf-java-boot/jnpf-web/src/views/extend/paymentapplication/index.vue b/jnpf-java-boot/jnpf-web/src/views/extend/paymentapplication/index.vue index 698bc211..92e07ad8 100644 --- a/jnpf-java-boot/jnpf-web/src/views/extend/paymentapplication/index.vue +++ b/jnpf-java-boot/jnpf-web/src/views/extend/paymentapplication/index.vue @@ -25,6 +25,16 @@
+ + + + + + + + + + 查询 @@ -75,6 +85,8 @@ + + 开票文件下载 + @@ -253,6 +255,7 @@ + { + this.billVisible = true + this.$nextTick(() => { + this.$refs.bill.init(res.data) + }) + }) + }, inBoundNotice(row) { const selectData = row selectData.flag = '采购入库通知' @@ -867,6 +882,7 @@ export default { }, refresh(isrRefresh) { this.formVisible = false + this.billVisible = false if (isrRefresh) this.reset() }, reset() { diff --git a/jnpf-java-boot/jnpf-web/src/views/scm/purchaseCenter/purchaseOrder/printStyle.js b/jnpf-java-boot/jnpf-web/src/views/scm/purchaseCenter/purchaseOrder/printStyle.js new file mode 100644 index 00000000..9be5a437 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/scm/purchaseCenter/purchaseOrder/printStyle.js @@ -0,0 +1,367 @@ +const style = `` + +export default style