diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillDetailService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillDetailService.java index f2cbe3d43..192395468 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillDetailService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillDetailService.java @@ -38,4 +38,6 @@ public interface IBillDetailService extends IService public BillDetailPO getInfo(Long billDetailId); List getDetailsByBillManageId(Long billManageId); -} + + List getDetailsByBillManageIdAndGroup(Long billManageId); +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java index 1ea7709f4..b8fcdd9c5 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java @@ -17,4 +17,6 @@ public interface BillDetailMapper extends BaseMapper { List getDetailsByBillManageId(@Param("billManageId") Long billManageId); -} + + List getDetailsByBillManageIdAndGroup(@Param("billManageId") Long billManageId); +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillDetailImpl.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillDetailImpl.java index cf62504d6..2aa419a1f 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillDetailImpl.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillDetailImpl.java @@ -75,4 +75,9 @@ public class BillDetailImpl extends ServiceImpl im public List getDetailsByBillManageId(Long billManageId) { return billDetailMapper.getDetailsByBillManageId(billManageId); } -} + + @Override + public List getDetailsByBillManageIdAndGroup(Long billManageId) { + return billDetailMapper.getDetailsByBillManageIdAndGroup(billManageId); + } +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java index 01fa77070..17872b7f1 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java @@ -197,72 +197,68 @@ public class BillManageImpl extends ServiceImpl im SimpleDateFormat sdf2 = new SimpleDateFormat("MM"); String dateString = sdf.format(date); String invoiceId = reconciliation.getInvoiceId(); -// List bmsMakeOutInvoices = bmsMakeOutInvoiceMapper.selectList(new LambdaQueryWrapper().eq(BmsMakeOutInvoice::getInvoiceId, invoiceId)); - List billDetails = billDetailService.list(new LambdaQueryWrapper() - .eq(BillDetail::getBillManageId, businessDocumentDetaliId) - .eq(BillDetail::getDelFlag, 1)); - if (billDetails!=null && billDetails.size()>0){ - int count = 0; + List billDetails = billDetailService.getDetailsByBillManageIdAndGroup(Long.parseLong(businessDocumentDetaliId)); + + List ysitemList=new ArrayList(); + String url = ""; + Long organizationId = reconciliation.getOrganizationId(); + String organizationName = reconciliation.getOrganizationName(); + String ncUrl = billManageMapper.getNcUrl("nc", organizationName, organizationId); + if (ncUrl!=null&&ncUrl!="") { + url = ncUrl; + } else { + reconciliation.setSynchronousStatus(2); + billManageMapper.updateById(reconciliation); + throw new ServiceException("未找到该组织的推送地址!"); + } + String salesmanId = reconciliation.getSalesmanId(); + String customerUserDept = billManageMapper.getCustomerUserDept(salesmanId); + String deptValue = billManageMapper.getDeptValue(customerUserDept); + String deptName = billManageMapper.getDeptName(customerUserDept); + String salespersonNcCode = billManageMapper.getsalespersonNcCode(salesmanId); + String salesmanCodeNc=salespersonNcCode; + + Long settlementCustomersId = reconciliation.getSettlementCustomersId(); + SettlementCustomers settlementCustomers = settlementCustomersService.getById(settlementCustomersId); + if (settlementCustomers==null){ + throw new ServiceException("结算对象未找到!"); + } + Long settlementEntityId = settlementCustomers.getSettlementEntityId(); + Long shipperId = billManageMapper.getShipperId(settlementEntityId, organizationId); + if (shipperId==null||shipperId==0){ + throw new ServiceException("结算对象未找到!"); + } + String appointShipper=settlementCustomers.getSettlementEntity(); + String actualInvoiceCustomerId = String.valueOf(shipperId); + String customerCodeNc = billManageMapper.getCustomerCodeNc(actualInvoiceCustomerId); + String customerCodeNcJson = billManageMapper.getCustomerCodeNcJson(actualInvoiceCustomerId); + if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List> listNc = objectMapper.readValue( + customerCodeNcJson, + new TypeReference>>() {} + ); + if (listNc != null && listNc.size() > 0) { + Map targetMap = listNc.stream() + .filter(map -> { + Object codeObj = map.get("code"); + return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); + }) + .findFirst() + .orElse(null); + if (targetMap != null) { + customerCodeNc = (String) targetMap.get("ncCustomer"); + } + } + } + String settlementCurrency=reconciliation.getSettlementCurrency(); + String orgCodeNc = billManageMapper.getOrgCodeNc(organizationId); + String documentPreparerNcCode = billManageMapper.getDocumentPreparerNcCode(salesmanId); + String makerCodeNc = documentPreparerNcCode; + String settlementCurrencyNcCode = settlementCurrency; + + if (billDetails!=null&&billDetails.size()>0){ for (BillDetail make : billDetails) { - count++; - List ysitemList=new ArrayList(); - String url = ""; - Long organizationId = reconciliation.getOrganizationId(); - String organizationName = reconciliation.getOrganizationName(); - String ncUrl = billManageMapper.getNcUrl("nc", organizationName, organizationId); - if (ncUrl!=null&&ncUrl!="") { - url = ncUrl; - } else { - reconciliation.setSynchronousStatus(2); - billManageMapper.updateById(reconciliation); - throw new ServiceException("未找到该组织的推送地址!"); - } - String salesmanId = reconciliation.getSalesmanId(); - String customerUserDept = billManageMapper.getCustomerUserDept(salesmanId); - String deptValue = billManageMapper.getDeptValue(customerUserDept); - String deptName = billManageMapper.getDeptName(customerUserDept); - String salespersonNcCode = billManageMapper.getsalespersonNcCode(salesmanId); - String salesmanCodeNc=salespersonNcCode; - - Long settlementCustomersId = reconciliation.getSettlementCustomersId(); - SettlementCustomers settlementCustomers = settlementCustomersService.getById(settlementCustomersId); - if (settlementCustomers==null){ - throw new ServiceException("结算对象未找到!"); - } - Long settlementEntityId = settlementCustomers.getSettlementEntityId(); - Long shipperId = billManageMapper.getShipperId(settlementEntityId, organizationId); - if (shipperId==null||shipperId==0){ - throw new ServiceException("结算对象未找到!"); - } - String appointShipper=settlementCustomers.getSettlementEntity(); - String actualInvoiceCustomerId = String.valueOf(shipperId); - String customerCodeNc = billManageMapper.getCustomerCodeNc(actualInvoiceCustomerId); - String customerCodeNcJson = billManageMapper.getCustomerCodeNcJson(actualInvoiceCustomerId); - if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { - ObjectMapper objectMapper = new ObjectMapper(); - List> listNc = objectMapper.readValue( - customerCodeNcJson, - new TypeReference>>() {} - ); - if (listNc != null && listNc.size() > 0) { - Map targetMap = listNc.stream() - .filter(map -> { - Object codeObj = map.get("code"); - return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); - }) - .findFirst() - .orElse(null); - if (targetMap != null) { - customerCodeNc = (String) targetMap.get("ncCustomer"); - } - } - } - String settlementCurrency=reconciliation.getSettlementCurrency(); - String orgCodeNc = billManageMapper.getOrgCodeNc(organizationId); - String documentPreparerNcCode = billManageMapper.getDocumentPreparerNcCode(salesmanId); - String makerCodeNc = documentPreparerNcCode; - String settlementCurrencyNcCode = settlementCurrency; - if(make.getBillingAmount().compareTo(BigDecimal.ZERO)>0){ Ysitem item=new Ysitem(); if (deptValue != null && !deptValue.isEmpty()) { @@ -285,22 +281,18 @@ public class BillManageImpl extends ServiceImpl im List names = new ArrayList<>(); List nccodes = new ArrayList<>(); if (invoiceItem != null && !invoiceItem.isEmpty()) { - String[] items = invoiceItem.split(","); - for (String s : items) { - String invoiceItemName1 = billManageMapper.getInvoiceItemName(s); - String invoiceItemNcCode1 = billManageMapper.getInvoiceItemNcCode(s); - names.add(invoiceItemName1); - nccodes.add(invoiceItemNcCode1); - } + String invoiceItemName1 = billManageMapper.getInvoiceItemName(invoiceItem); + String invoiceItemNcCode1 = billManageMapper.getInvoiceItemNcCode(invoiceItem); + names.add(invoiceItemName1); + nccodes.add(invoiceItemNcCode1); } - String invoiceItemName = String.join(",", names); + String invoiceItemName = make.getInvoiceItemName(); //item.setDef29(invoiceItemName); if (deptName != null && !deptName.isEmpty()) { item.setScomment(deptName+":应收"+appointShipper+invoiceItemName); } else { item.setScomment("业务部:应收"+appointShipper+invoiceItemName); } - // item.setPk_currtype("CNY"); item.setPk_currtype(settlementCurrencyNcCode); item.setPurchaseorder(""); item.setTaxrate(String.valueOf(make.getTaxRate())); @@ -314,7 +306,7 @@ public class BillManageImpl extends ServiceImpl im item.setTax_de(String.valueOf(tax_de)); item.setPrice(String.valueOf(make.getBillingAmount())); item.setTaxprice(String.valueOf(make.getBillingAmount())); -// 费用类别 + //费用类别 String feeType = make.getFeeType(); String serviceItemsCodeNc = billManageMapper.getServiceItemsCodeNc(feeType); if (serviceItemsCodeNc != null && !serviceItemsCodeNc.isEmpty()) { @@ -324,157 +316,152 @@ public class BillManageImpl extends ServiceImpl im } String invoiceItem1 = make.getInvoiceItem(); if (invoiceItem1 != null && !invoiceItem1.isEmpty()) { - String[] split = invoiceItem1.split(","); - item.setDef29(split[0]); - //item.setDef29(invoiceItem1); + item.setDef29(invoiceItem1); } if (nccodes != null && !nccodes.isEmpty()&&nccodes.size()>0) { item.setDef29(nccodes.get(0)); } item.setTaxcodeid("ZL01"); -// item.setInvoiceno(invoiceNumber); + item.setInvoiceno(""); ysitemList.add(item); } + } + } + Ysbodys bodys=new Ysbodys(); + bodys.setItem(ysitemList); + Ysbillhead billhead=new Ysbillhead(); + billhead.setPk_group("CNK"); + if (orgCodeNc != null && !orgCodeNc.isEmpty()) { + billhead.setPk_org(orgCodeNc); + billhead.setSett_org(orgCodeNc); + } else { + billhead.setPk_org("NG04"); + billhead.setSett_org("NG04"); + } + billhead.setCreationtime(dateString); + billhead.setCreator(makerCodeNc); + billhead.setPk_billtype("F0"); + billhead.setPk_tradetype("D0"); + billhead.setBillclass("ys"); + billhead.setIsinit("N"); + date=reconciliation.getCreateTime(); + dateString = sdf.format(date); + billhead.setBilldate(dateString); + billhead.setSyscode("0"); + billhead.setBillno(""); + billhead.setDef59(""); + billhead.setSrc_syscode("0"); + billhead.setBillstatus("0"); + billhead.setBillmaker(makerCodeNc); + billhead.setPk_busitype(""); + billhead.setBillyear(sdf1.format(date)); + billhead.setBillperiod(sdf2.format(date)); + billhead.setEffectstatus("0"); + billhead.setDef28("nqyw"); + billhead.setDef29(reconciliation.getBillNumber()); + billhead.setBodys(bodys); + Ysbill bill=new Ysbill(); + bill.setId("ys"+String.valueOf(reconciliation.getBillManageId())+"_"+1); + bill.setBillhead(billhead); + Ysufinterface ufinterface=new Ysufinterface(); + ufinterface.setAccount("NKNC"); + ufinterface.setBilltype("F0"); + ufinterface.setBusinessunitcode(""); + ufinterface.setFilename(""); + ufinterface.setIsexchange("Y"); + if (orgCodeNc != null && !orgCodeNc.isEmpty()) { + ufinterface.setOrgcode(orgCodeNc); + ufinterface.setReceiver(orgCodeNc); + } else { + ufinterface.setOrgcode("NG04"); + ufinterface.setReceiver("NG04"); + } + ufinterface.setReplace("Y"); + ufinterface.setRoottag(""); + ufinterface.setSender("nqyw"); + ufinterface.setBill(bill); + JAXBContext jaxbContext = JAXBContext.newInstance(Ysufinterface.class); + Marshaller marshaller = jaxbContext.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 格式化输出,可选 + StringWriter sw = new StringWriter(); + marshaller.marshal(ufinterface, sw); + String xmlString = sw.toString(); // 这是要发送的XML字符串 + System.out.println(xmlString); + NcLog ncLog=new NcLog(); + ncLog.setOrderId(reconciliation.getBillManageId()); + ncLog.setRequestBody(xmlString); + ncLog.setResponeBody(""); + ncLog.setType(0L); + ncLog.setSendTime(new Date()); + ncLog.setOrganizationId(reconciliation.getOrganizationId()); + ncLog.setOrganizationName(reconciliation.getOrganizationName()); + ncLog.setTopOrganizationId(reconciliation.getTopOrganizationId()); + ncLogMapper.insert(ncLog); + reconciliation.setSynchronousStatus(1); + reconciliation.setSynchronousTime(new Date()); + reconciliation.setNcId("ys"+String.valueOf(reconciliation.getBillManageId())); + //reconciliationMapper.updateById(reconciliation); + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + StringEntity postingString = new StringEntity(xmlString, "UTF-8"); + httpPost.setEntity(postingString); + httpPost.setHeader("Content-type", "application/xml"); + try { + CloseableHttpResponse response = httpClient.execute(httpPost); + String responseString = EntityUtils.toString(response.getEntity()); + System.out.println(responseString); + ncLog.setResponeBody(responseString); + // 创建DOM解析器 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(new InputSource(new StringReader(responseString))); + // 获取根元素 + Element root = document.getDocumentElement(); - Ysbodys bodys=new Ysbodys(); - bodys.setItem(ysitemList); - Ysbillhead billhead=new Ysbillhead(); - billhead.setPk_group("CNK"); - if (orgCodeNc != null && !orgCodeNc.isEmpty()) { - billhead.setPk_org(orgCodeNc); - billhead.setSett_org(orgCodeNc); - } else { - billhead.setPk_org("NG04"); - billhead.setSett_org("NG04"); - } - billhead.setCreationtime(dateString); - billhead.setCreator(makerCodeNc); - billhead.setPk_billtype("F0"); - billhead.setPk_tradetype("D0"); - billhead.setBillclass("ys"); - billhead.setIsinit("N"); - date=reconciliation.getCreateTime(); - dateString = sdf.format(date); - billhead.setBilldate(dateString); - billhead.setSyscode("0"); - billhead.setBillno(""); - billhead.setDef59(""); - billhead.setSrc_syscode("0"); - billhead.setBillstatus("0"); - billhead.setBillmaker(makerCodeNc); - billhead.setPk_busitype(""); - billhead.setBillyear(sdf1.format(date)); - billhead.setBillperiod(sdf2.format(date)); - billhead.setEffectstatus("0"); - billhead.setDef28("nqyw"); - billhead.setDef29(reconciliation.getBillNumber()); - billhead.setBodys(bodys); - Ysbill bill=new Ysbill(); - bill.setId("ys"+String.valueOf(reconciliation.getBillManageId())+"_"+count); - bill.setBillhead(billhead); - Ysufinterface ufinterface=new Ysufinterface(); - ufinterface.setAccount("NKNC"); - ufinterface.setBilltype("F0"); - ufinterface.setBusinessunitcode(""); - ufinterface.setFilename(""); - ufinterface.setIsexchange("Y"); - if (orgCodeNc != null && !orgCodeNc.isEmpty()) { - ufinterface.setOrgcode(orgCodeNc); - ufinterface.setReceiver(orgCodeNc); - } else { - ufinterface.setOrgcode("NG04"); - ufinterface.setReceiver("NG04"); - } - ufinterface.setReplace("Y"); - ufinterface.setRoottag(""); - ufinterface.setSender("nqyw"); - ufinterface.setBill(bill); - JAXBContext jaxbContext = JAXBContext.newInstance(Ysufinterface.class); - Marshaller marshaller = jaxbContext.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 格式化输出,可选 - StringWriter sw = new StringWriter(); - marshaller.marshal(ufinterface, sw); - String xmlString = sw.toString(); // 这是要发送的XML字符串 - System.out.println(xmlString); - NcLog ncLog=new NcLog(); - ncLog.setOrderId(reconciliation.getBillManageId()); - ncLog.setRequestBody(xmlString); - ncLog.setResponeBody(""); - ncLog.setType(0L); - ncLog.setSendTime(new Date()); - ncLog.setOrganizationId(reconciliation.getOrganizationId()); - ncLog.setOrganizationName(reconciliation.getOrganizationName()); - ncLog.setTopOrganizationId(reconciliation.getTopOrganizationId()); - ncLogMapper.insert(ncLog); - reconciliation.setSynchronousStatus(1); - reconciliation.setSynchronousTime(new Date()); - reconciliation.setNcId("ys"+String.valueOf(reconciliation.getBillManageId())); - //reconciliationMapper.updateById(reconciliation); - CloseableHttpClient httpClient = HttpClients.createDefault(); - HttpPost httpPost = new HttpPost(url); - StringEntity postingString = new StringEntity(xmlString, "UTF-8"); - httpPost.setEntity(postingString); - httpPost.setHeader("Content-type", "application/xml"); - try { - CloseableHttpResponse response = httpClient.execute(httpPost); - String responseString = EntityUtils.toString(response.getEntity()); - System.out.println(responseString); - ncLog.setResponeBody(responseString); - // 创建DOM解析器 - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new StringReader(responseString))); + // 获取ufinterface元素的属性 + String billtype = root.getAttribute("billtype"); + String filename = root.getAttribute("filename"); + System.out.println("billtype: " + billtype); + System.out.println("filename: " + filename); - // 获取根元素 - Element root = document.getDocumentElement(); + // 获取sendresult节点 + NodeList sendResultList = root.getElementsByTagName("sendresult"); + if (sendResultList.getLength() > 0) { + Element sendResult = (Element) sendResultList.item(0); - // 获取ufinterface元素的属性 - String billtype = root.getAttribute("billtype"); - String filename = root.getAttribute("filename"); - System.out.println("billtype: " + billtype); - System.out.println("filename: " + filename); + // 获取子元素内容 + String bdocid = sendResult.getElementsByTagName("bdocid").item(0).getTextContent(); + String resultcode = sendResult.getElementsByTagName("resultcode").item(0).getTextContent(); + String content = sendResult.getElementsByTagName("content").item(0).getTextContent(); - // 获取sendresult节点 - NodeList sendResultList = root.getElementsByTagName("sendresult"); - if (sendResultList.getLength() > 0) { - Element sendResult = (Element) sendResultList.item(0); - - // 获取子元素内容 - String bdocid = sendResult.getElementsByTagName("bdocid").item(0).getTextContent(); - String resultcode = sendResult.getElementsByTagName("resultcode").item(0).getTextContent(); - String content = sendResult.getElementsByTagName("content").item(0).getTextContent(); - - System.out.println("bdocid: " + bdocid); - System.out.println("resultcode: " + resultcode); - System.out.println("content: " + content); - if(resultcode.equals("1")){ - reconciliation.setSynchronousStatus(1); - }else{ - reconciliation.setSynchronousStatus(2); - } - } - ncLogMapper.updateById(ncLog); - billManageMapper.updateById(reconciliation); - response.close(); - } catch (Exception e) { + System.out.println("bdocid: " + bdocid); + System.out.println("resultcode: " + resultcode); + System.out.println("content: " + content); + if(resultcode.equals("1")){ + reconciliation.setSynchronousStatus(1); + }else{ reconciliation.setSynchronousStatus(2); - billManageMapper.updateById(reconciliation); - e.printStackTrace(); - } finally { - try { - httpClient.close(); - } catch (IOException e) { - e.printStackTrace(); - } } } - } else { + ncLogMapper.updateById(ncLog); + billManageMapper.updateById(reconciliation); + response.close(); + } catch (Exception e) { reconciliation.setSynchronousStatus(2); billManageMapper.updateById(reconciliation); + e.printStackTrace(); + } finally { + try { + httpClient.close(); + } catch (IOException e) { + e.printStackTrace(); + } } + + } catch (JAXBException e) { reconciliation.setSynchronousStatus(2); billManageMapper.updateById(reconciliation); @@ -810,273 +797,275 @@ public class BillManageImpl extends ServiceImpl im SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy"); SimpleDateFormat sdf2 = new SimpleDateFormat("MM"); String dateString = sdf.format(date); - String invoiceId = reconciliation.getInvoiceId(); - ReconciliationDTO makeQuery=new ReconciliationDTO(); - makeQuery.setInnerNumber(invoiceId); - List bmsMakeOutInvoices = bmsMakeOutInvoiceMapper.selectList(new LambdaQueryWrapper().eq(BmsMakeOutInvoice::getInvoiceId, invoiceId)); - if (bmsMakeOutInvoices != null && bmsMakeOutInvoices.size() > 0) { - int count= 0; - for (BmsMakeOutInvoice make : bmsMakeOutInvoices) { - count++; - List ysitemList=new ArrayList(); - ReconciliationDTO reconciliationDTO=new ReconciliationDTO(); - reconciliationDTO.setInnerNumber(reconciliation.getBillNumber()); - String url = ""; - Long organizationId = reconciliation.getOrganizationId(); - String orgCodeNc = billManageMapper.getOrgCodeNc(organizationId); - String organizationName = reconciliation.getOrganizationName(); - String ncUrl = billManageMapper.getNcUrl("nc", organizationName, organizationId); - if (ncUrl!=null&&ncUrl!="") { - url = ncUrl; - } else { - reconciliation.setSkSynchronousStatus(2); - billManageMapper.updateById(reconciliation); - throw new ServiceException("未找到该组织的推送地址!"); - } - List bmsMakeOutInvoiceItems = bmsMakeOutInvoiceItemMapper.selectList(new LambdaQueryWrapper().eq(BmsMakeOutInvoiceItem::getMakeId, make.getId())); - String makerCodeNc = ""; - if(bmsMakeOutInvoiceItems != null && bmsMakeOutInvoiceItems.size() > 0){ - if(ObjectUtil.isNotNull(bmsMakeOutInvoiceItems)){ - // 汇总 list 中 invoiceValue 的总值 - BigDecimal totalInvoiceValue = bmsMakeOutInvoiceItems.stream() - .map(BmsMakeOutInvoiceItem::getInvoiceValue) - .filter(java.util.Objects::nonNull) - .reduce(BigDecimal.ZERO, BigDecimal::add); + List billDetails = billDetailService.list(new LambdaQueryWrapper() + .eq(BillDetail::getBillManageId, reconciliation.getBillManageId()) + .eq(BillDetail::getDelFlag, 1)); - // 将 feeType 用、拼接起来 - String feeTypes = bmsMakeOutInvoiceItems.stream() - .map(BmsMakeOutInvoiceItem::getFeeType) - .filter(java.util.Objects::nonNull) - .collect(java.util.stream.Collectors.joining("、")); - - // 按 createTime 倒序排序并获取第一条记录 - BmsMakeOutInvoiceItem firstItem = bmsMakeOutInvoiceItems.stream() - .sorted((a, b) -> { - if (a.getCreateTime() == null) return 1; - if (b.getCreateTime() == null) return -1; - return b.getCreateTime().compareTo(a.getCreateTime()); - }) - .findFirst() - .orElse(null); - String salesmanId = reconciliation.getSalesmanId(); - String customerUserDept = billManageMapper.getCustomerUserDept(salesmanId); - String deptValue = billManageMapper.getDeptValue(customerUserDept); - String deptName = billManageMapper.getDeptName(customerUserDept); - String salespersonNcCode = billManageMapper.getsalespersonNcCode(salesmanId); - String salesmanCodeNc=salespersonNcCode; - String appointShipper=make.getActualInvoiceCustomerName(); - String actualInvoiceCustomerId = make.getActualInvoiceCustomerId(); - String customerCodeNc = billManageMapper.getCustomerCodeNc(actualInvoiceCustomerId); - String customerCodeNcJson = billManageMapper.getCustomerCodeNcJson(actualInvoiceCustomerId); - if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { - ObjectMapper objectMapper = new ObjectMapper(); - List> listNc = objectMapper.readValue( - customerCodeNcJson, - new TypeReference>>() {} - ); - if (listNc != null && listNc.size() > 0) { - Map targetMap = listNc.stream() - .filter(map -> { - Object codeObj = map.get("code"); - return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); - }) - .findFirst() - .orElse(null); - if (targetMap != null) { - customerCodeNc = (String) targetMap.get("ncCustomer"); - } - } - } - String documentPreparerNcCode = billManageMapper.getDocumentPreparerNcCode(salesmanId); - String settlementCurrency=reconciliation.getSettlementCurrency(); - String settlementCurrencyNcCode = settlementCurrency; - makerCodeNc=documentPreparerNcCode; - SKitem item=new SKitem(); - if (deptValue != null && !deptValue.isEmpty()) { - item.setSo_deptid(deptValue); - } else { - item.setSo_deptid("NG0408"); - } - if (deptValue != null && !deptValue.isEmpty()) { - item.setPk_deptid(deptValue); - } else { - item.setPk_deptid("NG0408"); - } - item.setCheckdirection("ar"); - item.setPk_psndoc(salesmanCodeNc); - item.setCustomer(customerCodeNc); - item.setPurchaseorder(""); - item.setObjtype("0"); - item.setDirection("1"); - if (deptName != null && !deptName.isEmpty()) { - if (feeTypes != null && !feeTypes.isEmpty()) { - item.setScomment(deptName+":"+appointShipper+feeTypes); - } else { - item.setScomment(deptName+":"+appointShipper+feeTypes); - } - } else { - if (feeTypes != null && !feeTypes.isEmpty()) { - item.setScomment("业务部:"+appointShipper+feeTypes); - } else { - item.setScomment("业务部:"+appointShipper+feeTypes); - } - } - // 费用类别 - String feeType = firstItem.getFeeType(); - String serviceItemsCodeNc = billManageMapper.getServiceItemsCodeNc(feeType); - if (serviceItemsCodeNc != null && !serviceItemsCodeNc.isEmpty()) { - item.setDef75(serviceItemsCodeNc); - } else { - item.setDef75("T10"); - } - String invoiceItem1 = firstItem.getInvoiceItem(); - if (invoiceItem1 != null && !invoiceItem1.isEmpty()) { - String[] split = invoiceItem1.split(","); - item.setDef29(split[0]); - } - item.setPk_currtype(settlementCurrencyNcCode); - item.setMoney_cr(String.valueOf(totalInvoiceValue)); - item.setMoney_bal(String.valueOf(totalInvoiceValue)); - ysitemList.add(item); - } - } - SKbodys bodys=new SKbodys(); - bodys.setItem(ysitemList); - SKbillhead billhead=new SKbillhead(); - billhead.setPk_group("CNK"); - if (orgCodeNc != null && !orgCodeNc.isEmpty()) { - billhead.setPk_org(orgCodeNc); - billhead.setSett_org(orgCodeNc); - } else { - billhead.setPk_org("NG04"); - billhead.setSett_org("NG04"); - } - billhead.setCreationtime(dateString); - billhead.setPk_billtype("F2"); - billhead.setCreator(makerCodeNc); - billhead.setPk_tradetype("D2"); - billhead.setBillclass("sk"); - billhead.setBilldate(dateString); - billhead.setSyscode("0"); - billhead.setBillno(""); - billhead.setDef59(""); - billhead.setSrc_syscode("0"); - billhead.setBillstatus("0"); - billhead.setBillmaker(makerCodeNc); - billhead.setPk_busitype(""); - billhead.setBillyear(sdf1.format(date)); - billhead.setBillperiod(sdf2.format(date)); - billhead.setEffectstatus("0"); - billhead.setDef28("nqyw"); - billhead.setDef29(reconciliation.getBillNumber()); - billhead.setBodys(bodys); - SKbill bill=new SKbill(); - bill.setId("sk"+String.valueOf(reconciliation.getBillManageId())+"_"+count); - bill.setBillhead(billhead); - SKufinterface ufinterface=new SKufinterface(); - ufinterface.setAccount("NKNC"); - ufinterface.setBilltype("F2"); - ufinterface.setBusinessunitcode(""); - ufinterface.setFilename(""); - ufinterface.setIsexchange("Y"); - if (orgCodeNc != null && !orgCodeNc.isEmpty()) { - ufinterface.setOrgcode(orgCodeNc); - ufinterface.setReceiver(orgCodeNc); - } else { - ufinterface.setOrgcode("NG04"); - ufinterface.setReceiver("NG04"); - } - ufinterface.setReplace("Y"); - ufinterface.setRoottag(""); - ufinterface.setSender("nqyw"); - ufinterface.setBill(bill); - JAXBContext jaxbContext = null; - //String xmlString =""; - jaxbContext = JAXBContext.newInstance(SKufinterface.class); - Marshaller marshaller = jaxbContext.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 格式化输出,可选 - StringWriter sw = new StringWriter(); - marshaller.marshal(ufinterface, sw); - String xmlString = sw.toString(); // 这是要发送的XML字符串 - System.out.println(xmlString); - NcLog ncLog=new NcLog(); - ncLog.setOrderId(reconciliation.getBillManageId()); - ncLog.setRequestBody(xmlString); - ncLog.setResponeBody(""); - ncLog.setType(1L); - ncLog.setSendTime(new Date()); - ncLog.setOrganizationId(reconciliation.getOrganizationId()); - ncLog.setOrganizationName(reconciliation.getOrganizationName()); - ncLog.setTopOrganizationId(reconciliation.getTopOrganizationId()); - ncLogMapper.insert(ncLog); - reconciliation.setSkSynchronousStatus(1); - reconciliation.setSkSynchronousTime(new Date()); - reconciliation.setSkNcId("sk"+String.valueOf(reconciliation.getBillManageId())); - //reconciliationMapper.updateById(reconciliation); - CloseableHttpClient httpClient = HttpClients.createDefault(); - HttpPost httpPost = new HttpPost(url); - StringEntity postingString = new StringEntity(xmlString, "UTF-8"); - httpPost.setEntity(postingString); - httpPost.setHeader("Content-type", "application/xml"); - try { - CloseableHttpResponse response = httpClient.execute(httpPost); - String responseString = EntityUtils.toString(response.getEntity()); - System.out.println(responseString); - ncLog.setResponeBody(responseString); - // 创建DOM解析器 - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new StringReader(responseString))); - - // 获取根元素 - Element root = document.getDocumentElement(); - - // 获取ufinterface元素的属性 - String billtype = root.getAttribute("billtype"); - String filename = root.getAttribute("filename"); - System.out.println("billtype: " + billtype); - System.out.println("filename: " + filename); - - // 获取sendresult节点 - NodeList sendResultList = root.getElementsByTagName("sendresult"); - if (sendResultList.getLength() > 0) { - Element sendResult = (Element) sendResultList.item(0); - - // 获取子元素内容 - String bdocid = sendResult.getElementsByTagName("bdocid").item(0).getTextContent(); - String resultcode = sendResult.getElementsByTagName("resultcode").item(0).getTextContent(); - String content = sendResult.getElementsByTagName("content").item(0).getTextContent(); - - System.out.println("bdocid: " + bdocid); - System.out.println("resultcode: " + resultcode); - System.out.println("content: " + content); - if(resultcode.equals("1")){ - reconciliation.setSkSynchronousStatus(1); - }else{ - reconciliation.setSkSynchronousStatus(2); - } - } - ncLogMapper.updateById(ncLog); - billManageMapper.updateById(reconciliation); - response.close(); - } catch (Exception e) { - reconciliation.setSkSynchronousStatus(2); - billManageMapper.updateById(reconciliation); - e.printStackTrace(); - } finally { - try { - httpClient.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - } + List ysitemList=new ArrayList(); + ReconciliationDTO reconciliationDTO=new ReconciliationDTO(); + reconciliationDTO.setInnerNumber(reconciliation.getBillNumber()); + String url = ""; + Long organizationId = reconciliation.getOrganizationId(); + String orgCodeNc = billManageMapper.getOrgCodeNc(organizationId); + String organizationName = reconciliation.getOrganizationName(); + String ncUrl = billManageMapper.getNcUrl("nc", organizationName, organizationId); + if (ncUrl!=null&&ncUrl!="") { + url = ncUrl; } else { reconciliation.setSkSynchronousStatus(2); billManageMapper.updateById(reconciliation); + throw new ServiceException("未找到该组织的推送地址!"); } + String makerCodeNc = ""; + if(billDetails != null && billDetails.size() > 0){ + if(ObjectUtil.isNotNull(billDetails)){ + // 汇总 list 中 invoiceValue 的总值 + BigDecimal totalInvoiceValue = billDetails.stream() + .map(BillDetail::getBillingAmount) + .filter(java.util.Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + // 将 feeType 用、拼接起来 + String feeTypes = billDetails.stream() + .map(BillDetail::getInvoiceItemName) + .filter(java.util.Objects::nonNull) + .collect(java.util.stream.Collectors.joining("、")); + + // 按 createTime 倒序排序并获取第一条记录 + BillDetail firstItem = billDetails.stream() + .sorted((a, b) -> { + if (a.getCreateTime() == null) return 1; + if (b.getCreateTime() == null) return -1; + return b.getCreateTime().compareTo(a.getCreateTime()); + }) + .findFirst() + .orElse(null); + String salesmanId = reconciliation.getSalesmanId(); + String customerUserDept = billManageMapper.getCustomerUserDept(salesmanId); + String deptValue = billManageMapper.getDeptValue(customerUserDept); + String deptName = billManageMapper.getDeptName(customerUserDept); + String salespersonNcCode = billManageMapper.getsalespersonNcCode(salesmanId); + String salesmanCodeNc=salespersonNcCode; + Long settlementCustomersId = reconciliation.getSettlementCustomersId(); + SettlementCustomers settlementCustomers = settlementCustomersService.getById(settlementCustomersId); + if (settlementCustomers==null){ + throw new ServiceException("结算对象未找到!"); + } + Long settlementEntityId = settlementCustomers.getSettlementEntityId(); + Long shipperId = billManageMapper.getShipperId(settlementEntityId, organizationId); + if (shipperId==null||shipperId==0){ + throw new ServiceException("结算对象未找到!"); + } + String appointShipper=settlementCustomers.getSettlementEntity(); + String actualInvoiceCustomerId = String.valueOf(shipperId); + String customerCodeNc = billManageMapper.getCustomerCodeNc(actualInvoiceCustomerId); + String customerCodeNcJson = billManageMapper.getCustomerCodeNcJson(actualInvoiceCustomerId); + if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List> listNc = objectMapper.readValue( + customerCodeNcJson, + new TypeReference>>() {} + ); + if (listNc != null && listNc.size() > 0) { + Map targetMap = listNc.stream() + .filter(map -> { + Object codeObj = map.get("code"); + return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); + }) + .findFirst() + .orElse(null); + if (targetMap != null) { + customerCodeNc = (String) targetMap.get("ncCustomer"); + } + } + } + String documentPreparerNcCode = billManageMapper.getDocumentPreparerNcCode(salesmanId); + String settlementCurrency=reconciliation.getSettlementCurrency(); + String settlementCurrencyNcCode = settlementCurrency; + makerCodeNc=documentPreparerNcCode; + SKitem item=new SKitem(); + if (deptValue != null && !deptValue.isEmpty()) { + item.setSo_deptid(deptValue); + } else { + item.setSo_deptid("NG0408"); + } + if (deptValue != null && !deptValue.isEmpty()) { + item.setPk_deptid(deptValue); + } else { + item.setPk_deptid("NG0408"); + } + item.setCheckdirection("ar"); + item.setPk_psndoc(salesmanCodeNc); + item.setCustomer(customerCodeNc); + item.setPurchaseorder(""); + item.setObjtype("0"); + item.setDirection("1"); + if (deptName != null && !deptName.isEmpty()) { + if (feeTypes != null && !feeTypes.isEmpty()) { + item.setScomment(deptName+":"+appointShipper+feeTypes); + } else { + item.setScomment(deptName+":"+appointShipper+feeTypes); + } + } else { + if (feeTypes != null && !feeTypes.isEmpty()) { + item.setScomment("业务部:"+appointShipper+feeTypes); + } else { + item.setScomment("业务部:"+appointShipper+feeTypes); + } + } + // 费用类别 + String feeType = firstItem.getFeeType(); + String serviceItemsCodeNc = billManageMapper.getServiceItemsCodeNc(feeType); + if (serviceItemsCodeNc != null && !serviceItemsCodeNc.isEmpty()) { + item.setDef75(serviceItemsCodeNc); + } else { + item.setDef75("T10"); + } + String invoiceItem1 = firstItem.getInvoiceItem(); + if (invoiceItem1 != null && !invoiceItem1.isEmpty()) { + String[] split = invoiceItem1.split(","); + item.setDef29(split[0]); + } + item.setPk_currtype(settlementCurrencyNcCode); + item.setMoney_cr(String.valueOf(totalInvoiceValue)); + item.setMoney_bal(String.valueOf(totalInvoiceValue)); + ysitemList.add(item); + } + } + SKbodys bodys=new SKbodys(); + bodys.setItem(ysitemList); + SKbillhead billhead=new SKbillhead(); + billhead.setPk_group("CNK"); + if (orgCodeNc != null && !orgCodeNc.isEmpty()) { + billhead.setPk_org(orgCodeNc); + billhead.setSett_org(orgCodeNc); + } else { + billhead.setPk_org("NG04"); + billhead.setSett_org("NG04"); + } + billhead.setCreationtime(dateString); + billhead.setPk_billtype("F2"); + billhead.setCreator(makerCodeNc); + billhead.setPk_tradetype("D2"); + billhead.setBillclass("sk"); + billhead.setBilldate(dateString); + billhead.setSyscode("0"); + billhead.setBillno(""); + billhead.setDef59(""); + billhead.setSrc_syscode("0"); + billhead.setBillstatus("0"); + billhead.setBillmaker(makerCodeNc); + billhead.setPk_busitype(""); + billhead.setBillyear(sdf1.format(date)); + billhead.setBillperiod(sdf2.format(date)); + billhead.setEffectstatus("0"); + billhead.setDef28("nqyw"); + billhead.setDef29(reconciliation.getBillNumber()); + billhead.setBodys(bodys); + SKbill bill=new SKbill(); + bill.setId("sk"+String.valueOf(reconciliation.getBillManageId())+"_"+1); + bill.setBillhead(billhead); + SKufinterface ufinterface=new SKufinterface(); + ufinterface.setAccount("NKNC"); + ufinterface.setBilltype("F2"); + ufinterface.setBusinessunitcode(""); + ufinterface.setFilename(""); + ufinterface.setIsexchange("Y"); + if (orgCodeNc != null && !orgCodeNc.isEmpty()) { + ufinterface.setOrgcode(orgCodeNc); + ufinterface.setReceiver(orgCodeNc); + } else { + ufinterface.setOrgcode("NG04"); + ufinterface.setReceiver("NG04"); + } + ufinterface.setReplace("Y"); + ufinterface.setRoottag(""); + ufinterface.setSender("nqyw"); + ufinterface.setBill(bill); + JAXBContext jaxbContext = null; + //String xmlString =""; + jaxbContext = JAXBContext.newInstance(SKufinterface.class); + Marshaller marshaller = jaxbContext.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 格式化输出,可选 + StringWriter sw = new StringWriter(); + marshaller.marshal(ufinterface, sw); + String xmlString = sw.toString(); // 这是要发送的XML字符串 + System.out.println(xmlString); + NcLog ncLog=new NcLog(); + ncLog.setOrderId(reconciliation.getBillManageId()); + ncLog.setRequestBody(xmlString); + ncLog.setResponeBody(""); + ncLog.setType(1L); + ncLog.setSendTime(new Date()); + ncLog.setOrganizationId(reconciliation.getOrganizationId()); + ncLog.setOrganizationName(reconciliation.getOrganizationName()); + ncLog.setTopOrganizationId(reconciliation.getTopOrganizationId()); + ncLogMapper.insert(ncLog); + reconciliation.setSkSynchronousStatus(1); + reconciliation.setSkSynchronousTime(new Date()); + reconciliation.setSkNcId("sk"+String.valueOf(reconciliation.getBillManageId())); + //reconciliationMapper.updateById(reconciliation); + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + StringEntity postingString = new StringEntity(xmlString, "UTF-8"); + httpPost.setEntity(postingString); + httpPost.setHeader("Content-type", "application/xml"); + try { + CloseableHttpResponse response = httpClient.execute(httpPost); + String responseString = EntityUtils.toString(response.getEntity()); + System.out.println(responseString); + ncLog.setResponeBody(responseString); + // 创建DOM解析器 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(new InputSource(new StringReader(responseString))); + + // 获取根元素 + Element root = document.getDocumentElement(); + + // 获取ufinterface元素的属性 + String billtype = root.getAttribute("billtype"); + String filename = root.getAttribute("filename"); + System.out.println("billtype: " + billtype); + System.out.println("filename: " + filename); + + // 获取sendresult节点 + NodeList sendResultList = root.getElementsByTagName("sendresult"); + if (sendResultList.getLength() > 0) { + Element sendResult = (Element) sendResultList.item(0); + + // 获取子元素内容 + String bdocid = sendResult.getElementsByTagName("bdocid").item(0).getTextContent(); + String resultcode = sendResult.getElementsByTagName("resultcode").item(0).getTextContent(); + String content = sendResult.getElementsByTagName("content").item(0).getTextContent(); + + System.out.println("bdocid: " + bdocid); + System.out.println("resultcode: " + resultcode); + System.out.println("content: " + content); + if(resultcode.equals("1")){ + reconciliation.setSkSynchronousStatus(1); + }else{ + reconciliation.setSkSynchronousStatus(2); + } + } + ncLogMapper.updateById(ncLog); + billManageMapper.updateById(reconciliation); + response.close(); + } catch (Exception e) { + reconciliation.setSkSynchronousStatus(2); + billManageMapper.updateById(reconciliation); + e.printStackTrace(); + } finally { + try { + httpClient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + } catch (JAXBException e) { reconciliation.setSkSynchronousStatus(2); billManageMapper.updateById(reconciliation); diff --git a/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml b/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml index e56269307..5c4d156ed 100644 --- a/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml +++ b/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml @@ -27,5 +27,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bd.bill_manage_id = #{billManageId} + - + + \ No newline at end of file