Merge branch 'dev' into master

# Conflicts:
#	mhd-auth/src/main/resources/bootstrap.yml
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/persistence/ReconciliationImpl.java
This commit is contained in:
hjx
2026-01-15 03:36:33 +08:00
148 changed files with 6734 additions and 835 deletions
@@ -487,6 +487,7 @@ public class ApprovalDocumentImpl extends ServiceImpl<ApprovalDocumentMapper, Ap
Verification verification = new Verification();
verification.setOrganizationId(businessDocumentDetaliDTO.getOrganizationId());
verification.setTopOrganizationId(businessDocumentDetaliDTO.getTopOrganizationId());
verification.setOrganizationName(businessDocumentDetaliDTO.getOrganizationName());// 设置组织名称,确保查询时能够正确过滤
verification.setVerificationStatus(1);//未支付
verification.setBusinessDocumentDetaliId(businessDocumentDetaliDTO.getBusinessDocumentDetaliId());
verification.setBusinessDocumentDetaliNumber(businessDocumentDetaliDTO.getBusinessDocumentDetaliNumber());
@@ -10,6 +10,7 @@ import com.linke.finance.domain.businessDocumentDetali.repository.po.BusinessDoc
import com.linke.finance.domain.reconciliation.repository.po.ReconciliationPO;
import java.util.List;
import java.util.Map;
/**
* 业务单据Service接口
@@ -24,6 +25,8 @@ public interface IBusinessDocumentService extends IService<BusinessDocument>
*/
public List<BusinessDocumentPO> queryList(BusinessDocumentDO businessDocumentDO);
public List<Map<String,Object>> getFeeList(String invoiceId);
/**
* 新增业务单据
*/
@@ -60,4 +63,4 @@ public interface IBusinessDocumentService extends IService<BusinessDocument>
List<BusinessDocumentDetaliPO> querySettlementList(BusinessDocumentDO businessDocumentDO);
BusinessDocument getByWaybillNo(String waybillNo);
}
}
@@ -1,6 +1,8 @@
package com.linke.finance.domain.businessDocument.repository.mapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linke.finance.domain.businessDocument.entity.BusinessDocument;
import com.linke.finance.domain.businessDocument.repository.po.AccountsReceivableAppPO;
@@ -24,6 +26,8 @@ public interface BusinessDocumentMapper extends BaseMapper<BusinessDocument>
*/
public List<BusinessDocumentPO> queryList(BusinessDocumentDO businessDocumentDO);
List<Map<String,Object>> getFeeList(@Param("invoiceId")String invoiceId);
/**
* 查询申请开票业务单据列表
*/
@@ -38,4 +42,4 @@ public interface BusinessDocumentMapper extends BaseMapper<BusinessDocument>
List<BusinessDocumentPO> queryListByReconciliation(BusinessDocumentDO businessDocumentDO);
List<BusinessDocumentDetaliPO> querySettlementList(@Param("businessDocumentDO") BusinessDocumentDO businessDocumentDO);
}
}
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 业务单据Service业务层处理
@@ -39,6 +40,12 @@ public class BusinessDocumentImpl extends ServiceImpl<BusinessDocumentMapper, Bu
return businessDocumentMapper.queryList(businessDocumentDO);
}
@Override
public List<Map<String,Object>> getFeeList(String invoiceId)
{
return businessDocumentMapper.getFeeList(invoiceId);
}
/**
* 新增业务单据
*/
@@ -130,4 +137,4 @@ public class BusinessDocumentImpl extends ServiceImpl<BusinessDocumentMapper, Bu
return businessDocument;
}
}
}
@@ -21,10 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
/**
* 业务单据
@@ -50,6 +47,10 @@ public class BusinessDocumentDomainService {
return businessDocumentService.queryList(businessDocumentDO);
}
public List<Map<String,Object>> getFeeList(String invoiceId) {
return businessDocumentService.getFeeList(invoiceId);
}
/**
* 新增业务单据
@@ -202,4 +203,4 @@ public class BusinessDocumentDomainService {
}
}
@@ -58,6 +58,11 @@ public class InvoiceOrderDomainService
*/
public int insertInvoiceOrder(InvoiceOrder invoiceOrder)
{
// 设置当前登录用户的组织信息
com.mhd.system.api.model.LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
invoiceOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId());
}
invoiceOrder.setCreateTime(new Date());
invoiceOrder.setCreateBy(SecurityUtils.getUserId());
invoiceOrder.setCreateByName(SecurityUtils.getUsername());
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linke.finance.domain.receivingAccount.entity.ReceivingAccount;
import com.linke.finance.domain.receivingAccount.repository.po.ReceivingAccountPO;
import com.linke.finance.domain.receivingAccount.repository.todo.ReceivingAccountDO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -46,6 +47,15 @@ public interface ReceivingAccountMapper extends BaseMapper<ReceivingAccount> {
*/
int deleteAll();
/**
* 根据组织ID删除收款账户(删除当前组织的所有收款账户)
*
* @param topOrganizationId 一级组织ID
* @param organizationId 组织ID
* @return 影响行数
*/
int deleteByOrganization(@Param("topOrganizationId") String topOrganizationId, @Param("organizationId") String organizationId);
/**
* 根据ID删除收款账户
*
@@ -60,6 +60,17 @@ public class ReceivingAccountRepository {
return receivingAccountMapper.deleteAll();
}
/**
* 根据组织ID删除收款账户(删除当前组织的所有收款账户)
*
* @param topOrganizationId 一级组织ID
* @param organizationId 组织ID
* @return 影响行数
*/
public int deleteByOrganization(String topOrganizationId, String organizationId) {
return receivingAccountMapper.deleteByOrganization(topOrganizationId, organizationId);
}
/**
* 根据ID删除收款账户
*
@@ -22,6 +22,8 @@ import com.linke.finance.domain.reconciliation.repository.facade.IReconciliation
import com.linke.finance.domain.reconciliation.repository.mapper.ReconciliationMapper;
import com.linke.finance.domain.reconciliation.repository.po.ReconciliationPO;
import com.linke.finance.domain.reconciliation.repository.todo.ReconciliationDO;
import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccount;
import com.linke.finance.domain.reconciliationAccount.repository.mapper.ReconciliationAccountMapper;
import com.mhd.common.core.domain.dto.ReconciliationDTO;
import com.mhd.common.core.domain.dto.nc.*;
import com.mhd.common.core.domain.entity.R;
@@ -38,6 +40,8 @@ import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.UserServiceFeign;
import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.domain.TmsInvoiceList;
import com.mhd.system.api.domain.TmsInvoiceListDetailsVO;
import com.mhd.system.api.domain.TmsTransportNote;
import com.mhd.system.api.model.LoginUser;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -49,11 +53,18 @@ import org.apache.http.util.EntityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.math.BigDecimal;
import java.sql.NClob;
@@ -89,11 +100,13 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
private ApprovalDocumentMapper approvalDocumentMapper;
@Autowired
private ApprovalDocumentDomainService approvalDocumentDomainService;
@Autowired
private ReconciliationAccountMapper reconciliationAccountMapper;
//nc测试环境地址
//private String url="http://10.0.0.212/service/XChangeServlet?account=NKNC&groupcode=CNK";
private String url="http://10.0.0.212/service/XChangeServlet?account=NKNC&groupcode=CNK";
//nc正式环境地址
private String url="http://10.0.0.202/service/XChangeServlet?account=NKNC&groupcode=CNK";
//private String url="http://10.0.0.202/service/XChangeServlet?account=NKNC&groupcode=CNK";
/**
* 查询对账单列表
*/
@@ -399,11 +412,6 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
throw new ServiceException("该记录已同步,不需要再次同步");
}
/* if(reconciliation.getIsInvoice()!=2){
throw new ServiceException("该记录还未开票,不允许同步");
}*/
try {
Date date = reconciliation.getCreateTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -415,23 +423,24 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber());
R<List<TmsOrder>> result=wlhyServiceFeign.getOrderListByReconciliation(reconciliationDTO);
String makerCodeNc="";
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
if(ObjectUtil.isNotNull(list)){
for(TmsOrder tmsOrder:list){
R<TmsTransportNote> ajaxResult1=wlhyServiceFeign.selectByOrderNum(tmsOrder.getGoodsNumber());
if(ajaxResult1.getCode()==200){
TmsTransportNote tmsTransportNote= ajaxResult1.getData();
if(ObjectUtil.isNotNull(tmsTransportNote.getIsPaper())){
date=tmsTransportNote.getConfirmReceiptTime();
if(null==date){
date=new Date();
if(reconciliation.getOrganizationName().contains("南歧")){
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
if(ObjectUtil.isNotNull(list)){
for(TmsOrder tmsOrder:list){
R<TmsTransportNote> ajaxResult1=wlhyServiceFeign.selectByOrderNum(tmsOrder.getGoodsNumber());
if(ajaxResult1.getCode()==200){
TmsTransportNote tmsTransportNote= ajaxResult1.getData();
if(ObjectUtil.isNotNull(tmsTransportNote.getIsPaper())){
date=tmsTransportNote.getConfirmReceiptTime();
if(null==date){
date=new Date();
}
dateString = sdf.format(date);
}else{
throw new ServiceException("运单还没签收, 先签收");
}
dateString = sdf.format(date);
}else{
throw new ServiceException("运单还没签收, 先签收");
}
}
/* if(null==reconciliation.getSettlementPartyId()){
throw new ServiceException("没有结算方,请核对");
}*/
@@ -444,114 +453,360 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
if (org.apache.commons.lang.StringUtils.isBlank(tmsOrder.getCustomsCodeNc())) {
throw new ServiceException("请先维护制单员编码");
}*/
makerCodeNc=tmsOrder.getMakerCodeNc();
Ysitem item=new Ysitem();
item.setSo_deptid("NG040104");
item.setPk_deptid("NG040104");
item.setPk_psndoc(tmsOrder.getSalesmanCodeNc());
item.setCustomer(tmsOrder.getCustomerCodeNc());
item.setObjtype("0");
item.setDirection("1");
item.setScomment(tmsOrder.getAppointShipper());
// item.setPk_currtype("CNY");
item.setPk_currtype(tmsOrder.getSettlementCurrency());
item.setPurchaseorder(tmsOrder.getGoodsNumber());
item.setTaxrate("0");
item.setQuantity_de("0");
item.setMoney_de(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setMoney_bal(String.valueOf(tmsOrder.getDeliveryFreight()));
BigDecimal tax_de=tmsOrder.getDeliveryFreight().multiply(tmsOrder.getTaxRate().divide(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal notax_de=tmsOrder.getDeliveryFreight().subtract(tax_de);
item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de));
item.setTax_de(String.valueOf(tax_de));
item.setPrice(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setTaxprice(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setDef75("T10");
item.setInvoiceno("");
ysitemList.add(item);
}
Ysbodys bodys=new Ysbodys();
bodys.setItem(ysitemList);
Ysbillhead billhead=new Ysbillhead();
billhead.setPk_group("CNK");
billhead.setPk_org("NG0401");
billhead.setSett_org("NG0401");
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.getInnerNumber());
billhead.setBodys(bodys);
Ysbill bill=new Ysbill();
bill.setId("ys"+String.valueOf(reconciliation.getReconciliationId()));
bill.setBillhead(billhead);
Ysufinterface ufinterface=new Ysufinterface();
ufinterface.setAccount("NKNC");
ufinterface.setBilltype("F0");
ufinterface.setBusinessunitcode("");
ufinterface.setFilename("");
ufinterface.setIsexchange("Y");
ufinterface.setOrgcode("NG0401");
ufinterface.setReceiver("NG0401");
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.getReconciliationId());
ncLog.setRequestBody(xmlString);
ncLog.setResponeBody("");
ncLog.setType(0L);
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.getReconciliationId()));
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);
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
makerCodeNc=tmsOrder.getMakerCodeNc();
Ysitem item=new Ysitem();
item.setSo_deptid("NG040104");
item.setPk_deptid("NG040104");
item.setPk_psndoc(tmsOrder.getSalesmanCodeNc());
item.setCustomer(tmsOrder.getCustomerCodeNc());
item.setObjtype("0");
item.setDirection("1");
item.setScomment(tmsOrder.getAppointShipper());
// item.setPk_currtype("CNY");
item.setPk_currtype(tmsOrder.getSettlementCurrency());
item.setPurchaseorder(tmsOrder.getGoodsNumber());
item.setTaxrate("0");
item.setQuantity_de("0");
item.setMoney_de(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setMoney_bal(String.valueOf(tmsOrder.getDeliveryFreight()));
BigDecimal tax_de=tmsOrder.getDeliveryFreight().multiply(tmsOrder.getTaxRate().divide(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal notax_de=tmsOrder.getDeliveryFreight().subtract(tax_de);
item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de));
item.setTax_de(String.valueOf(tax_de));
item.setPrice(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setTaxprice(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setDef75("T10");
item.setInvoiceno("");
ysitemList.add(item);
}
Ysbodys bodys=new Ysbodys();
bodys.setItem(ysitemList);
Ysbillhead billhead=new Ysbillhead();
billhead.setPk_group("CNK");
billhead.setPk_org("NG0401");
billhead.setSett_org("NG0401");
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.getInnerNumber());
billhead.setBodys(bodys);
Ysbill bill=new Ysbill();
bill.setId("ys"+String.valueOf(reconciliation.getReconciliationId()));
bill.setBillhead(billhead);
Ysufinterface ufinterface=new Ysufinterface();
ufinterface.setAccount("NKNC");
ufinterface.setBilltype("F0");
ufinterface.setBusinessunitcode("");
ufinterface.setFilename("");
ufinterface.setIsexchange("Y");
ufinterface.setOrgcode("NG0401");
ufinterface.setReceiver("NG0401");
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.getReconciliationId());
ncLog.setRequestBody(xmlString);
ncLog.setResponeBody("");
ncLog.setType(0L);
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.getReconciliationId()));
//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 {
httpClient.close();
} catch (IOException e) {
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.setSynchronousStatus(1);
}else{
reconciliation.setSynchronousStatus(2);
}
}
ncLogMapper.updateById(ncLog);
reconciliationMapper.updateById(reconciliation);
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}else if(reconciliation.getOrganizationName().contains("通宇")){
if (reconciliation.getIsInvoice() != 2) {
throw new ServiceException("该记录还未开票,不允许同步");
}
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
if(ObjectUtil.isNotNull(list)){
makerCodeNc=list.get(0).getMakerCodeNc();
String salesmanCodeNc=list.get(0).getSalesmanCodeNc();
String customerCodeNc=list.get(0).getCustomerCodeNc();
String appointShipper=list.get(0).getAppointShipper();
String settlementCurrency=list.get(0).getSettlementCurrency();
makerCodeNc=list.get(0).getMakerCodeNc();
String goodsNumber=list.get(0).getGoodsName();
for(TmsOrder tmsOrder:list){
R<TmsTransportNote> ajaxResult1=wlhyServiceFeign.selectByOrderNum(tmsOrder.getGoodsNumber());
if(ajaxResult1.getCode()==200){
TmsTransportNote tmsTransportNote= ajaxResult1.getData();
if(ObjectUtil.isNotNull(tmsTransportNote)){
if(ObjectUtil.isNotNull(tmsTransportNote.getIsPaper())){
date=tmsTransportNote.getConfirmReceiptTime();
if(null==date){
date=new Date();
}
dateString = sdf.format(date);
}else{
throw new ServiceException("运单还没签收, 先签收");
}
}else{
throw new ServiceException("未查询到关联运单, 请核对");
}
}
}
String invoiceNumber=reconciliation.getApplyNumber();
R<TmsInvoiceListDetailsVO> ajaxResult2=wlhyServiceFeign.selectInvoiceListById(reconciliation.getInvoiceId());
if(ajaxResult2.getCode()==200){
TmsInvoiceListDetailsVO tmsInvoiceListDetailsVO= ajaxResult2.getData();
if(ObjectUtil.isNotNull(tmsInvoiceListDetailsVO)) {
invoiceNumber=tmsInvoiceListDetailsVO.getTmsMakeOutInvoices().get(0).getInvoiceNumber();
}
}
List<ReconciliationAccount> reconciliationAccountList=reconciliationAccountMapper.selectList(new QueryWrapper<ReconciliationAccount>().lambda()
.eq(ReconciliationAccount::getReconciliationId,businessDocumentDetaliId)
.eq(ReconciliationAccount::getDelFlag,1));
if (ObjectUtil.isNotNull(reconciliationAccountList)&&reconciliationAccountList.size()>0){
for (ReconciliationAccount reconciliationAccount:reconciliationAccountList){
Ysitem item=new Ysitem();
item.setSo_deptid("NG0408");
item.setPk_deptid("NG0408");
item.setPk_psndoc(salesmanCodeNc);
item.setCustomer(customerCodeNc);
item.setObjtype("0");
item.setDirection("1");
item.setScomment("业务部:应收"+appointShipper+reconciliationAccount.getSubjectName()+invoiceNumber);
// item.setPk_currtype("CNY");
item.setPk_currtype(settlementCurrency);
item.setPurchaseorder("");
item.setTaxrate("0");
item.setQuantity_de("0");
item.setMoney_de(String.valueOf(reconciliationAccount.getAmount()));
item.setMoney_bal(String.valueOf(reconciliationAccount.getAmount()));
if(reconciliationAccount.getRate().compareTo(BigDecimal.ZERO)>0){
BigDecimal tax_de=reconciliationAccount.getAmount().multiply(reconciliationAccount.getRate().divide(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal notax_de=reconciliationAccount.getAmount().subtract(tax_de);
item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de));
item.setTax_de(String.valueOf(tax_de));
}else{
BigDecimal tax_de=BigDecimal.ZERO;
BigDecimal notax_de=reconciliationAccount.getAmount().subtract(tax_de);
item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de));
item.setTax_de(String.valueOf(tax_de));
}
item.setPrice(String.valueOf(reconciliationAccount.getAmount()));
item.setTaxprice(String.valueOf(reconciliationAccount.getAmount()));
item.setDef75("T10");
item.setInvoiceno(invoiceNumber);
ysitemList.add(item);
}
}else{
throw new ServiceException("未查询到账单的费用科目信息, 请核对");
}
Ysbodys bodys=new Ysbodys();
bodys.setItem(ysitemList);
Ysbillhead billhead=new Ysbillhead();
billhead.setPk_group("CNK");
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(list.get(0).getContractNo());
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.getInnerNumber());
billhead.setBodys(bodys);
Ysbill bill=new Ysbill();
bill.setId("ys"+String.valueOf(reconciliation.getReconciliationId()));
bill.setBillhead(billhead);
Ysufinterface ufinterface=new Ysufinterface();
ufinterface.setAccount("NKNC");
ufinterface.setBilltype("F0");
ufinterface.setBusinessunitcode("");
ufinterface.setFilename("");
ufinterface.setIsexchange("Y");
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.getReconciliationId());
ncLog.setRequestBody(xmlString);
ncLog.setResponeBody("");
ncLog.setType(0L);
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.getReconciliationId()));
//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.setSynchronousStatus(1);
}else{
reconciliation.setSynchronousStatus(2);
}
}
ncLogMapper.updateById(ncLog);
reconciliationMapper.updateById(reconciliation);
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@@ -595,37 +850,29 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
throw new ServiceException("没有结算方,请核对");
}*/
String makerCodeNc="";
R<List<TmsOrder>> result=wlhyServiceFeign.getOrderListByReconciliation(reconciliationDTO);
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
if(ObjectUtil.isNotNull(list)){
for(TmsOrder tmsOrder:list){
/* if (org.apache.commons.lang.StringUtils.isBlank(tmsOrder.getSalesmanCodeNc())) {
throw new ServiceException("请先维护业务员编码");
}
if (org.apache.commons.lang.StringUtils.isBlank(tmsOrder.getMakerCodeNc())) {
throw new ServiceException("请先维护制单员编码");
}
if (org.apache.commons.lang.StringUtils.isBlank(tmsOrder.getCustomerCodeNc())) {
throw new ServiceException("请先维护制单员编码");
}*/
if(reconciliation.getOrganizationName().contains("南歧")){
R<List<TmsOrder>> result=wlhyServiceFeign.getOrderListByReconciliation(reconciliationDTO);
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
if(ObjectUtil.isNotNull(list)){
for(TmsOrder tmsOrder:list){
makerCodeNc=tmsOrder.getMakerCodeNc();
makerCodeNc="xiangna";
SKitem item=new SKitem();
item.setSo_deptid("NG040104");
item.setPk_deptid("NG040104");
item.setCheckdirection("ar");
item.setPk_psndoc(tmsOrder.getSalesmanCodeNc());
item.setCustomer(tmsOrder.getCustomerCodeNc());
item.setPurchaseorder(tmsOrder.getGoodsNumber());
item.setObjtype("0");
item.setDirection("1");
item.setScomment(tmsOrder.getAppointShipper());
item.setPk_currtype(tmsOrder.getSettlementCurrency());
item.setMoney_cr(String.valueOf(tmsOrder.getCollectedFreight()));
item.setMoney_bal(String.valueOf(tmsOrder.getCollectedFreight()));
ysitemList.add(item);
makerCodeNc=tmsOrder.getMakerCodeNc();
makerCodeNc="xiangna";
SKitem item=new SKitem();
item.setSo_deptid("NG040104");
item.setPk_deptid("NG040104");
item.setCheckdirection("ar");
item.setPk_psndoc(tmsOrder.getSalesmanCodeNc());
item.setCustomer(tmsOrder.getCustomerCodeNc());
item.setPurchaseorder(tmsOrder.getGoodsNumber());
item.setObjtype("0");
item.setDirection("1");
item.setScomment(tmsOrder.getAppointShipper());
item.setPk_currtype(tmsOrder.getSettlementCurrency());
item.setMoney_cr(String.valueOf(tmsOrder.getCollectedFreight()));
item.setMoney_bal(String.valueOf(tmsOrder.getCollectedFreight()));
ysitemList.add(item);
/* AjaxResult ajaxResult=userServiceFeign.getShipperSummaryData(Long.valueOf(reconciliation.getSettlementPartyId()));
if(ajaxResult.get("code").toString().equals("200")){
Object userShipperPo= ajaxResult.get("data");
@@ -637,89 +884,281 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
}*/
}
}
}
}
SKbodys bodys=new SKbodys();
bodys.setItem(ysitemList);
SKbillhead billhead=new SKbillhead();
billhead.setPk_group("CNK");
billhead.setPk_org("NG0401");
billhead.setSett_org("NG0401");
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.getInnerNumber());
billhead.setBodys(bodys);
SKbill bill=new SKbill();
bill.setId("sk"+String.valueOf(reconciliation.getReconciliationId()));
bill.setBillhead(billhead);
SKufinterface ufinterface=new SKufinterface();
ufinterface.setAccount("NKNC");
ufinterface.setBilltype("F2");
ufinterface.setBusinessunitcode("");
ufinterface.setFilename("");
ufinterface.setIsexchange("Y");
ufinterface.setOrgcode("NG0401");
ufinterface.setReceiver("NG0401");
ufinterface.setReplace("Y");
ufinterface.setRoottag("");
ufinterface.setSender("nqyw");
ufinterface.setBill(bill);
JAXBContext jaxbContext = null;
//String xmlString ="<ufinterface account=\"NKNC\" billtype=\"F0\" businessunitcode=\"\" filename=\"\" groupcode=\"CNK\" isexchange=\"Y\" orgcode=\"NG10\" receiver=\"NG10\" replace=\"Y\" roottag=\"\" sender=\"NKT_MY\">";
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.getReconciliationId());
ncLog.setRequestBody(xmlString);
ncLog.setResponeBody("");
ncLog.setType(1L);
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.getReconciliationId()));
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);
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
SKbodys bodys=new SKbodys();
bodys.setItem(ysitemList);
SKbillhead billhead=new SKbillhead();
billhead.setPk_group("CNK");
billhead.setPk_org("NG0401");
billhead.setSett_org("NG0401");
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.getInnerNumber());
billhead.setBodys(bodys);
SKbill bill=new SKbill();
bill.setId("sk"+String.valueOf(reconciliation.getReconciliationId()));
bill.setBillhead(billhead);
SKufinterface ufinterface=new SKufinterface();
ufinterface.setAccount("NKNC");
ufinterface.setBilltype("F2");
ufinterface.setBusinessunitcode("");
ufinterface.setFilename("");
ufinterface.setIsexchange("Y");
ufinterface.setOrgcode("NG0401");
ufinterface.setReceiver("NG0401");
ufinterface.setReplace("Y");
ufinterface.setRoottag("");
ufinterface.setSender("nqyw");
ufinterface.setBill(bill);
JAXBContext jaxbContext = null;
//String xmlString ="<ufinterface account=\"NKNC\" billtype=\"F0\" businessunitcode=\"\" filename=\"\" groupcode=\"CNK\" isexchange=\"Y\" orgcode=\"NG10\" receiver=\"NG10\" replace=\"Y\" roottag=\"\" sender=\"NKT_MY\">";
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.getReconciliationId());
ncLog.setRequestBody(xmlString);
ncLog.setResponeBody("");
ncLog.setType(1L);
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.getReconciliationId()));
//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 {
httpClient.close();
} catch (IOException e) {
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);
reconciliationMapper.updateById(reconciliation);
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}else if(reconciliation.getOrganizationName().contains("通宇")){
R<List<TmsOrder>> result=wlhyServiceFeign.getOrderListByReconciliation(reconciliationDTO);
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
if(ObjectUtil.isNotNull(list)){
for(TmsOrder tmsOrder:list){
makerCodeNc=tmsOrder.getMakerCodeNc();
makerCodeNc="luoyx";
SKitem item=new SKitem();
item.setSo_deptid("NG0408");
item.setPk_deptid("NG0408");
item.setCheckdirection("ar");
item.setPk_psndoc(tmsOrder.getSalesmanCodeNc());
item.setCustomer(tmsOrder.getCustomerCodeNc());
item.setPurchaseorder(tmsOrder.getGoodsNumber());
item.setObjtype("0");
item.setDirection("1");
item.setScomment("业务部:"+tmsOrder.getAppointShipper()+"物流费");
item.setPk_currtype(tmsOrder.getSettlementCurrency());
item.setMoney_cr(String.valueOf(tmsOrder.getCollectedFreight()));
item.setMoney_bal(String.valueOf(tmsOrder.getCollectedFreight()));
ysitemList.add(item);
/* AjaxResult ajaxResult=userServiceFeign.getShipperSummaryData(Long.valueOf(reconciliation.getSettlementPartyId()));
if(ajaxResult.get("code").toString().equals("200")){
Object userShipperPo= ajaxResult.get("data");
JSONObject jsonObject = new JSONObject((Map) userShipperPo);
if(org.apache.commons.lang.StringUtils.isBlank(jsonObject.get("customerNcCode").toString())){
throw new ServiceException("请先维护客户编码");
}
}*/
}
}
}
SKbodys bodys=new SKbodys();
bodys.setItem(ysitemList);
SKbillhead billhead=new SKbillhead();
billhead.setPk_group("CNK");
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.getInnerNumber());
billhead.setBodys(bodys);
SKbill bill=new SKbill();
bill.setId("sk"+String.valueOf(reconciliation.getReconciliationId()));
bill.setBillhead(billhead);
SKufinterface ufinterface=new SKufinterface();
ufinterface.setAccount("NKNC");
ufinterface.setBilltype("F2");
ufinterface.setBusinessunitcode("");
ufinterface.setFilename("");
ufinterface.setIsexchange("Y");
ufinterface.setOrgcode("NG04");
ufinterface.setReceiver("NG04");
ufinterface.setReplace("Y");
ufinterface.setRoottag("");
ufinterface.setSender("nqyw");
ufinterface.setBill(bill);
JAXBContext jaxbContext = null;
//String xmlString ="<ufinterface account=\"NKNC\" billtype=\"F0\" businessunitcode=\"\" filename=\"\" groupcode=\"CNK\" isexchange=\"Y\" orgcode=\"NG10\" receiver=\"NG10\" replace=\"Y\" roottag=\"\" sender=\"NKT_MY\">";
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.getReconciliationId());
ncLog.setRequestBody(xmlString);
ncLog.setResponeBody("");
ncLog.setType(1L);
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.getReconciliationId()));
//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);
reconciliationMapper.updateById(reconciliation);
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (JAXBException e) {
@@ -1,7 +1,9 @@
package com.linke.finance.domain.reconciliation.repository.po;
import com.linke.finance.domain.businessDocument.entity.BusinessDocument;
import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccount;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.domain.dto.ReconciliationAccountDTO;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -242,4 +244,10 @@ public class ReconciliationPO extends BaseVOEntity{
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty(value = "账单科目明细")
public List<ReconciliationAccount> reconciliationAccountDTOList;
@ApiModelProperty("账单科目明细")
private String reconciliationAccountDTOListJsonStr;
}
@@ -2,6 +2,7 @@ package com.linke.finance.domain.reconciliation.repository.todo;
import com.linke.finance.domain.reconciliation.entity.ReconciliationOrderDetail;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.domain.dto.ReconciliationAccountDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@@ -270,4 +271,8 @@ public class ReconciliationDO extends BaseVOEntity{
@ApiModelProperty(value = "nc唯一标识")
private String skNcId;
@ApiModelProperty(value = "账单科目明细")
public List<ReconciliationAccountDTO> reconciliationAccountDTOList;
}
@@ -0,0 +1,74 @@
package com.linke.finance.domain.reconciliationAccount.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.mhd.common.core.web.domain.BaseVOEntity;
import java.math.BigDecimal;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 【请填写功能名称】对象 reconciliation_account
*
* @author gen
* @date 2026-01-14
*/
@Data
public class ReconciliationAccount extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("$column.columnComment")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("所属组织")
@Excel(name = "所属组织")
private String orgName;
@ApiModelProperty("组织ID")
@Excel(name = "组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
@Excel(name = "一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("应收账单id")
@Excel(name = "应收账单id")
private Long reconciliationId;
@ApiModelProperty("科目id")
@Excel(name = "科目id")
private Long accountId;
@ApiModelProperty("科目收支类型(1-应收,2-应付")
@Excel(name = "科目收支类型", readConverterExp = "科目收支类型(1-应收,2-应付")
private Long accountType;
@ApiModelProperty("科目编码")
@Excel(name = "科目编码")
private String subjectCode;
@ApiModelProperty("科目名称")
@Excel(name = "科目名称")
private String subjectName;
@ApiModelProperty("科目费率")
@Excel(name = "科目费率")
private BigDecimal rate;
@ApiModelProperty("金额")
@Excel(name = "金额")
private BigDecimal amount;
}
@@ -0,0 +1,43 @@
package com.linke.finance.domain.reconciliationAccount.repository.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccount;
import com.linke.finance.domain.reconciliationAccount.repository.po.ReconciliationAccountPO;
import com.linke.finance.domain.reconciliationAccount.repository.todo.ReconciliationAccountDO;
import java.util.List;
/**
* 【请填写功能名称】Service接口
*
* @author gen
* @date 2026-01-14
*/
public interface IReconciliationAccountService extends IService<ReconciliationAccount>
{
/**
* 分页查询【请填写功能名称】列表
*/
public List<ReconciliationAccountPO> queryList(ReconciliationAccountDO reconciliationAccountDO);
/**
* 新增【请填写功能名称】
*/
public Boolean insert(ReconciliationAccountDO reconciliationAccountDO);
/**
* 修改【请填写功能名称】
*/
public Boolean update(ReconciliationAccountDO reconciliationAccountDO);
/**
* 批量删除【请填写功能名称】
*/
public Boolean delete(Long[] ids);
/**
* 查询【请填写功能名称】
*/
public ReconciliationAccountPO getInfo(Long id);
}
@@ -0,0 +1,22 @@
package com.linke.finance.domain.reconciliationAccount.repository.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccount;
import com.linke.finance.domain.reconciliationAccount.repository.po.ReconciliationAccountPO;
import com.linke.finance.domain.reconciliationAccount.repository.todo.ReconciliationAccountDO;
import org.apache.ibatis.annotations.Param;
/**
* 【请填写功能名称】Mapper接口
*
* @author gen
* @date 2026-01-14
*/
public interface ReconciliationAccountMapper extends BaseMapper<ReconciliationAccount>
{
/**
* 查询【请填写功能名称】列表
*/
public List<ReconciliationAccountPO> queryList(ReconciliationAccountDO reconciliationAccountDO);
}
@@ -0,0 +1,81 @@
package com.linke.finance.domain.reconciliationAccount.repository.persistence;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccount;
import com.linke.finance.domain.reconciliationAccount.repository.facade.IReconciliationAccountService;
import com.linke.finance.domain.reconciliationAccount.repository.mapper.ReconciliationAccountMapper;
import com.linke.finance.domain.reconciliationAccount.repository.po.ReconciliationAccountPO;
import com.linke.finance.domain.reconciliationAccount.repository.todo.ReconciliationAccountDO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 【请填写功能名称】Service业务层处理
*
* @author gen
* @date 2026-01-14
*/
@Service
public class ReconciliationAccountImpl extends ServiceImpl<ReconciliationAccountMapper, ReconciliationAccount> implements IReconciliationAccountService{
@Autowired
private ReconciliationAccountMapper reconciliationAccountMapper;
/**
* 查询【请填写功能名称】列表
*/
@Override
public List<ReconciliationAccountPO> queryList(ReconciliationAccountDO reconciliationAccountDO)
{
return reconciliationAccountMapper.queryList(reconciliationAccountDO);
}
/**
* 新增【请填写功能名称】
*/
@Override
public Boolean insert(ReconciliationAccountDO reconciliationAccountDO) {
ReconciliationAccount reconciliationAccount = new ReconciliationAccount();
BeanUtils.copyProperties(reconciliationAccountDO,reconciliationAccount);
return this.save(reconciliationAccount);
}
/**
* 修改【请填写功能名称】
*/
@Override
public Boolean update(ReconciliationAccountDO reconciliationAccountDO) {
ReconciliationAccount reconciliationAccount = new ReconciliationAccount();
BeanUtils.copyProperties(reconciliationAccountDO,reconciliationAccount);
return this.updateById(reconciliationAccount);
}
/**
* 批量删除【请填写功能名称】
*/
@Override
public Boolean delete(Long[] ids ) {
List<ReconciliationAccount> list = new ArrayList<>();
for (Long id : ids) {
ReconciliationAccount reconciliationAccount = new ReconciliationAccount();
reconciliationAccount.setId(id);
reconciliationAccount.setDelFlag(2);
list.add(reconciliationAccount);
}
return this.updateBatchById(list);
}
/**
* 修改【请填写功能名称】
*/
@Override
public ReconciliationAccountPO getInfo(Long id) {
ReconciliationAccount reconciliationAccount = this.getById(id);
ReconciliationAccountPO reconciliationAccountPO = new ReconciliationAccountPO();
BeanUtils.copyProperties(reconciliationAccount,reconciliationAccountPO);
return reconciliationAccountPO;
}
}
@@ -0,0 +1,74 @@
package com.linke.finance.domain.reconciliationAccount.repository.po;
import com.mhd.common.core.annotation.Excel;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import com.mhd.common.core.web.domain.BaseVOEntity;
/**
* 【请填写功能名称】对象 reconciliation_account
*
* @author gen
* @date 2026-01-14
*/
@Data
@ApiModel(value = "【请填写功能名称】对象", description = "【请填写功能名称】响应对象")
public class ReconciliationAccountPO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("$column.columnComment")
private Long id;
@ApiModelProperty("所属组织")
@Excel(name = "所属组织")
private String orgName;
@ApiModelProperty("组织ID")
@Excel(name = "组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
@Excel(name = "一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("应收账单id")
@Excel(name = "应收账单id")
private String reconciliationId;
@ApiModelProperty("科目id")
@Excel(name = "科目id")
private Long accountId;
@ApiModelProperty("科目收支类型(1-应收,2-应付")
@Excel(name = "科目收支类型", readConverterExp = "科目收支类型(1-应收,2-应付")
private Long accountType;
@ApiModelProperty("科目编码")
@Excel(name = "科目编码")
private String subjectCode;
@ApiModelProperty("科目名称")
@Excel(name = "科目名称")
private String subjectName;
@ApiModelProperty("科目费率")
@Excel(name = "科目费率")
private BigDecimal rate;
@ApiModelProperty("金额")
@Excel(name = "金额")
private BigDecimal amount;
}
@@ -0,0 +1,77 @@
package com.linke.finance.domain.reconciliationAccount.repository.todo;
import com.mhd.common.core.annotation.Excel;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import com.mhd.common.core.web.domain.BaseVOEntity;
import java.util.List;
/**
* 【请填写功能名称】对象 reconciliation_account
*
* @author gen
* @date 2026-01-14
*/
@Data
public class ReconciliationAccountDO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("$column.columnComment")
private Long id;
@ApiModelProperty("所属组织")
@Excel(name = "所属组织")
private String orgName;
@ApiModelProperty("组织ID")
@Excel(name = "组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
@Excel(name = "一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("应收账单id")
@Excel(name = "应收账单id")
private Long reconciliationId;
@ApiModelProperty("科目id")
@Excel(name = "科目id")
private Long accountId;
@ApiModelProperty("科目收支类型(1-应收,2-应付")
@Excel(name = "科目收支类型", readConverterExp = "科目收支类型(1-应收,2-应付")
private Long accountType;
@ApiModelProperty("科目编码")
@Excel(name = "科目编码")
private String subjectCode;
@ApiModelProperty("科目名称")
@Excel(name = "科目名称")
private String subjectName;
@ApiModelProperty("科目费率")
@Excel(name = "科目费率")
private BigDecimal rate;
@ApiModelProperty("金额")
@Excel(name = "金额")
private BigDecimal amount;
@ApiModelProperty(name = "组织ID集合")
private List<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
}
@@ -0,0 +1,64 @@
package com.linke.finance.domain.reconciliationAccount.service;
import com.linke.finance.domain.reconciliationAccount.repository.facade.IReconciliationAccountService;
import com.linke.finance.domain.reconciliationAccount.repository.po.ReconciliationAccountPO;
import com.linke.finance.domain.reconciliationAccount.repository.todo.ReconciliationAccountDO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 【请填写功能名称】
*
* @author gen
* @date 2026-01-14
*/
@Service
@Slf4j
public class ReconciliationAccountDomainService {
@Autowired
private IReconciliationAccountService reconciliationAccountService;
/**
* 分页查询【请填写功能名称】列表
*/
public List<ReconciliationAccountPO> queryList(ReconciliationAccountDO reconciliationAccountDO) {
return reconciliationAccountService.queryList(reconciliationAccountDO);
}
/**
* 新增【请填写功能名称】
*/
public Boolean insert(ReconciliationAccountDO reconciliationAccountDO) {
return reconciliationAccountService.insert(reconciliationAccountDO);
}
/**
* 修改【请填写功能名称】
*/
public Boolean update(ReconciliationAccountDO reconciliationAccountDO) {
return reconciliationAccountService.update(reconciliationAccountDO);
}
/**
* 批量删除【请填写功能名称】
*/
public Boolean delete(Long[] ids) {
return reconciliationAccountService.delete(ids);
}
/**
* 获取【请填写功能名称】详细信息
*/
public ReconciliationAccountPO getInfo(Long id)
{
return reconciliationAccountService.getInfo(id);
}
}
@@ -2,15 +2,16 @@ package com.linke.finance.domain.tmsReceipt.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.mhd.common.core.web.domain.BaseVOEntity;
import java.math.BigDecimal;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 收款单对象 tms_receipt
@@ -43,9 +44,9 @@ public class TmsReceipt extends BaseVOEntity{
@Excel(name = "收款单号")
private String receivePaymentNumber;
// @ApiModelProperty("结算方id")
// @Excel(name = "结算方id")
// private String settlementPartyId;
@ApiModelProperty("结算方id")
@Excel(name = "结算方id")
private String settlementPartyId;
@ApiModelProperty("结算方名称")
@Excel(name = "结算方名称")
private String settlementPartyName;
@@ -118,4 +119,4 @@ public class TmsReceipt extends BaseVOEntity{
@ApiModelProperty("结算币种")
private String settlementCurrency;
}
}
@@ -134,7 +134,14 @@ public class VerificationDomainService
* @return 结果
*/
public boolean batchAddVerification(List<Verification> list){
return verificationRepositoryImpl.saveBatch(list);
if (list == null || list.isEmpty()) {
return false;
}
// 使用自定义的批量插入方法,而不是 MyBatis-Plus 的 saveBatch
// 因为自定义的 batchAddVerification 使用了完整的 SQL 插入语句,包含所有必要字段
int result = verificationRepositoryImpl.batchAddVerification(list);
// 返回 true 表示成功插入(插入行数大于0)
return result > 0;
}
/**