通宇推送nc;

This commit is contained in:
王奎兴
2026-03-09 20:58:27 +08:00
parent 6e52d85cbf
commit 5e28c10342
17 changed files with 590 additions and 279 deletions
@@ -234,7 +234,6 @@ public class Reconciliation extends BaseVOEntity{
@ApiModelProperty("nc同步状态 0-未同步 1-已同步")
private Integer skSynchronousStatus;
@ApiModelProperty(value = "nc同步时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@@ -260,4 +259,7 @@ public class Reconciliation extends BaseVOEntity{
@ApiModelProperty(value = "税额")
private BigDecimal taxAmount;
@ApiModelProperty("结算币种")
private String settlementCurrency;
}
@@ -34,4 +34,12 @@ public interface ReconciliationMapper extends BaseMapper<Reconciliation>
* 插入对账单并使用传入的createTime值
*/
void insertWithCreateTime(Reconciliation reconciliation);
}
String getInvoiceItemName(@Param("invoiceItemId") String invoiceItemId);
String getCustomerCodeNc(@Param("actualInvoiceCustomerId") String actualInvoiceCustomerId);
String getDocumentPreparerNcCode(@Param("salesmanId") String salesmanId);
String getSettlementCurrencyNcCode(@Param("settlementCurrency") String settlementCurrency);
}
@@ -45,9 +45,7 @@ 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.domain.*;
import com.mhd.system.api.model.LoginUser;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
@@ -422,7 +420,6 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
if(reconciliation.getSynchronousStatus()==1){
throw new ServiceException("该记录已同步,不需要再次同步");
}
try {
Date date = reconciliation.getCreateTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -635,229 +632,8 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
}
}
}else if(reconciliation.getOrganizationName().contains("通宇")){
if (reconciliation.getIsInvoice() != 2) {
throw new ServiceException("该记录还未开票,不允许同步");
}
if(result.getCode()==200){
String url = "";
SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO();
query.setOrganizationId(reconciliation.getOrganizationId());
query.setOrganizationName(reconciliation.getOrganizationName());
query.setInterfaceType("nc");
List<SysDepartInterfaceInfoPo> urlList = thirdPartyServiceFeign.queryList(query);
if (urlList != null && urlList.size() > 0) {
url = urlList.get(0).getInterfaceTypeValue();
} else {
throw new ServiceException("未找到该组织的推送地址!");
}
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){
if(reconciliationAccount.getAmount().compareTo(BigDecimal.ZERO)>0){
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();
}
}
}
}
boolean b = synchronousNc_TY(businessDocumentDetaliId);
}
} catch (JAXBException e) {
e.printStackTrace();
}
@@ -865,6 +641,231 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
return true;
}
public boolean synchronousNc_TY(String businessDocumentDetaliId) {
Reconciliation reconciliation=reconciliationMapper.selectById(businessDocumentDetaliId);
if(reconciliation.getSynchronousStatus()==1){
throw new ServiceException("该记录已同步,不需要再次同步");
}
try {
Date date = reconciliation.getCreateTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
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);
R<List<TmsMakeOutInvoice>> makeList=wlhyServiceFeign.selectMakeOutInvoiceListByReconciliation(makeQuery);
if (makeList.getCode()==200){
for (TmsMakeOutInvoice make : makeList.getData()) {
List<Ysitem> ysitemList=new ArrayList<Ysitem>();
ReconciliationDTO reconciliationDTO=new ReconciliationDTO();
reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber());
R<List<TmsOrder>> result=wlhyServiceFeign.getOrderListByReconciliation(reconciliationDTO);
TmsOrder order = null;
if (result.getCode()==200){
order = result.getData()!=null && result.getData().size()>0?result.getData().get(0):null;
}
if (order==null){
throw new ServiceException("未找到对应订单信息");
}
String url = "";
SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO();
query.setOrganizationId(reconciliation.getOrganizationId());
query.setOrganizationName(reconciliation.getOrganizationName());
query.setInterfaceType("nc");
List<SysDepartInterfaceInfoPo> urlList = thirdPartyServiceFeign.queryList(query);
if (urlList != null && urlList.size() > 0) {
url = urlList.get(0).getInterfaceTypeValue();
} else {
throw new ServiceException("未找到该组织的推送地址!");
}
String makerCodeNc=order.getMakerCodeNc();
String salesmanCodeNc=order.getSalesmanCodeNc();
//String customerCodeNc=order.getCustomerCodeNc();
String appointShipper=make.getActualInvoiceCustomerName();
String actualInvoiceCustomerId = make.getActualInvoiceCustomerId();
String customerCodeNc = reconciliationMapper.getCustomerCodeNc(actualInvoiceCustomerId);
String settlementCurrency=order.getSettlementCurrency();
String salesmanId = order.getSalesmanId();
String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId);
makerCodeNc= documentPreparerNcCode;
String settlementCurrencyNcCode = reconciliationMapper.getSettlementCurrencyNcCode(settlementCurrency);
String invoiceNumber=make.getInvoiceNumber();
R<List<TmsMakeOutInvoiceItem>> itemR = wlhyServiceFeign.selectMakeOutInvoiceItemList(make);
if (itemR.getCode()==200) {
List<TmsMakeOutInvoiceItem> data = itemR.getData();
for (TmsMakeOutInvoiceItem item1 : data) {
if(item1.getInvoiceValue().compareTo(BigDecimal.ZERO)>0){
Ysitem item=new Ysitem();
item.setSo_deptid("NG0408");
item.setPk_deptid("NG0408");
//业务员nc
item.setPk_psndoc(salesmanCodeNc);
//客户nc
item.setCustomer(customerCodeNc);
item.setObjtype("0");
item.setDirection("1");
String invoiceItem = item1.getInvoiceItem();
List<String> names = new ArrayList<>();
if (invoiceItem != null && !invoiceItem.isEmpty()) {
String[] items = invoiceItem.split(",");
for (String s : items) {
String invoiceItemName1 = reconciliationMapper.getInvoiceItemName(s);
names.add(invoiceItemName1);
}
}
String invoiceItemName = String.join(",", names);
item.setScomment("业务部:应收"+appointShipper+invoiceItemName+invoiceNumber);
// item.setPk_currtype("CNY");
item.setPk_currtype(settlementCurrencyNcCode);
item.setPurchaseorder("");
item.setTaxrate("0");
item.setQuantity_de("0");
item.setMoney_de(String.valueOf(item1.getInvoiceValue()));
item.setMoney_bal(String.valueOf(item1.getInvoiceValue()));
BigDecimal tax_de=item1.getTaxAmount();
BigDecimal notax_de=item1.getTaxFreeFee();
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(item1.getInvoiceValue()));
item.setTaxprice(String.valueOf(item1.getInvoiceValue()));
item.setDef75("T10");
item.setInvoiceno(invoiceNumber);
ysitemList.add(item);
}
}
}
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("");
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();
}
}
}
}
} catch (JAXBException e) {
e.printStackTrace();
}
return true;
}
@Override
public boolean synchronousNcSK(String businessDocumentDetaliIds) {
String [] businessDocumentDetaliIdArray=businessDocumentDetaliIds.split(",");
@@ -1062,7 +1063,43 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
}
}
}else if(reconciliation.getOrganizationName().contains("通宇")){
boolean b = synchronousNcSK_TY(businessDocumentDetaliId);
}
} catch (JAXBException e) {
e.printStackTrace();
}
}
return true;
}
public boolean synchronousNcSK_TY(String businessDocumentDetaliId) {
Reconciliation reconciliation=reconciliationMapper.selectById(businessDocumentDetaliId);
if(reconciliation.getSynchronousStatus()==1){
throw new ServiceException("该记录已同步,不需要再次同步");
}
try {
Date date = reconciliation.getCreateTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
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);
R<List<TmsMakeOutInvoice>> makeList=wlhyServiceFeign.selectMakeOutInvoiceListByReconciliation(makeQuery);
if (makeList.getCode()==200){
for (TmsMakeOutInvoice make : makeList.getData()) {
List<SKitem> ysitemList=new ArrayList<SKitem>();
ReconciliationDTO reconciliationDTO=new ReconciliationDTO();
reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber());
R<List<TmsOrder>> result=wlhyServiceFeign.getOrderListByReconciliation(reconciliationDTO);
TmsOrder order = null;
if (result.getCode()==200){
order = result.getData()!=null && result.getData().size()>0?result.getData().get(0):null;
}
if (order==null){
throw new ServiceException("未找到对应订单信息");
}
String url = "";
SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO();
query.setOrganizationId(reconciliation.getOrganizationId());
@@ -1074,14 +1111,26 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
} else {
throw new ServiceException("未找到该组织的推送地址!");
}
if(result.getCode()==200){
List<TmsOrder> list=result.getData();
R<List<TmsMakeOutInvoiceItem>> itemR = wlhyServiceFeign.selectMakeOutInvoiceItemList(make);
String makerCodeNc = "";
if(itemR.getCode()==200){
List<TmsMakeOutInvoiceItem> list=itemR.getData();
if(ObjectUtil.isNotNull(list)){
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="luoyx";
// 汇总 list 中 invoiceValue 的总值
BigDecimal totalInvoiceValue = list.stream()
.map(TmsMakeOutInvoiceItem::getInvoiceValue)
.filter(java.util.Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
String salesmanCodeNc=order.getSalesmanCodeNc();
String salesmanId = order.getSalesmanId();
//String customerCodeNc=order.getCustomerCodeNc();
String appointShipper=make.getActualInvoiceCustomerName();
String actualInvoiceCustomerId = make.getActualInvoiceCustomerId();
String customerCodeNc = reconciliationMapper.getCustomerCodeNc(actualInvoiceCustomerId);
String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId);
String settlementCurrency=order.getSettlementCurrency();
String settlementCurrencyNcCode = reconciliationMapper.getSettlementCurrencyNcCode(settlementCurrency);
makerCodeNc=documentPreparerNcCode;
SKitem item=new SKitem();
item.setSo_deptid("NG0408");
item.setPk_deptid("NG0408");
@@ -1092,42 +1141,10 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
item.setObjtype("0");
item.setDirection("1");
item.setScomment("业务部:"+appointShipper+"物流费");
item.setPk_currtype(settlementCurrency);
item.setMoney_cr(String.valueOf(reconciliation.getCollectionAmount()));
item.setMoney_bal(String.valueOf(reconciliation.getCollectionAmount()));
item.setPk_currtype(settlementCurrencyNcCode);
item.setMoney_cr(String.valueOf(totalInvoiceValue));
item.setMoney_bal(String.valueOf(totalInvoiceValue));
ysitemList.add(item);
/* for(TmsOrder tmsOrder:list){
makerCodeNc=tmsOrder.getMakerCodeNc();
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();
@@ -1248,10 +1265,11 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
e.printStackTrace();
}
}
}
} catch (JAXBException e) {
e.printStackTrace();
}
} catch (JAXBException e) {
e.printStackTrace();
}
return true;
}
@@ -2,8 +2,10 @@ 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.linke.finance.domain.reconciliationItem.entity.ReconciliationItem;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.domain.dto.ReconciliationAccountDTO;
import com.mhd.common.core.domain.dto.ReconciliationItemDTO;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -267,4 +269,5 @@ public class ReconciliationPO extends BaseVOEntity{
private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额")
private BigDecimal taxAmount;
private List<ReconciliationItem> reconciliationItemDTOList;
}
@@ -3,6 +3,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 com.mhd.common.core.domain.dto.ReconciliationItemDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@@ -297,4 +298,8 @@ public class ReconciliationDO extends BaseVOEntity{
private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额")
private BigDecimal taxAmount;
private List<ReconciliationItemDTO> reconciliationItemDTOList;
@ApiModelProperty("结算币种")
private String settlementCurrency;
}
@@ -0,0 +1,54 @@
package com.linke.finance.domain.reconciliationItem.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 org.springframework.format.annotation.DateTimeFormat;
/**
* 对账单对象 reconciliation
*
* @author gen
* @date 2024-01-23
*/
@Data
public class ReconciliationItem extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("对账单表id")
private Long reconciliationId;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
@Excel(name = "发票金额", width = 15)
private BigDecimal invoiceValue;
/**发票备注*/
@ApiModelProperty(value = "发票备注")
@Excel(name = "发票备注", width = 15)
private String remark;
@ApiModelProperty(value = "开票项目")
private String invoiceItem;
@ApiModelProperty(value = "开票项目名称")
private String invoiceItemName;
@ApiModelProperty(value = "实际开票客户id")
private String actualInvoiceCustomerId;
@ApiModelProperty(value = "实际开票客户名称")
private String actualInvoiceCustomerName;
@ApiModelProperty(value = "无税费用")
private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额")
private BigDecimal taxAmount;
@ApiModelProperty(value = "税率")
private Double taxRate;
@ApiModelProperty(value = "费用类别")
private String feeType;
}
@@ -0,0 +1,7 @@
package com.linke.finance.domain.reconciliationItem.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linke.finance.domain.reconciliationItem.entity.ReconciliationItem;
public interface ReconciliationItemMapper extends BaseMapper<ReconciliationItem> {
}