bms2.0应收单和收款单推送nc修改;
This commit is contained in:
+2
@@ -38,4 +38,6 @@ public interface IBillDetailService extends IService<BillDetail>
|
|||||||
public BillDetailPO getInfo(Long billDetailId);
|
public BillDetailPO getInfo(Long billDetailId);
|
||||||
|
|
||||||
List<BillDetailPO> getDetailsByBillManageId(Long billManageId);
|
List<BillDetailPO> getDetailsByBillManageId(Long billManageId);
|
||||||
|
|
||||||
|
List<BillDetail> getDetailsByBillManageIdAndGroup(Long billManageId);
|
||||||
}
|
}
|
||||||
+2
@@ -17,4 +17,6 @@ public interface BillDetailMapper extends BaseMapper<BillDetail>
|
|||||||
{
|
{
|
||||||
|
|
||||||
List<BillDetailPO> getDetailsByBillManageId(@Param("billManageId") Long billManageId);
|
List<BillDetailPO> getDetailsByBillManageId(@Param("billManageId") Long billManageId);
|
||||||
|
|
||||||
|
List<BillDetail> getDetailsByBillManageIdAndGroup(@Param("billManageId") Long billManageId);
|
||||||
}
|
}
|
||||||
+5
@@ -75,4 +75,9 @@ public class BillDetailImpl extends ServiceImpl<BillDetailMapper, BillDetail> im
|
|||||||
public List<BillDetailPO> getDetailsByBillManageId(Long billManageId) {
|
public List<BillDetailPO> getDetailsByBillManageId(Long billManageId) {
|
||||||
return billDetailMapper.getDetailsByBillManageId(billManageId);
|
return billDetailMapper.getDetailsByBillManageId(billManageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BillDetail> getDetailsByBillManageIdAndGroup(Long billManageId) {
|
||||||
|
return billDetailMapper.getDetailsByBillManageIdAndGroup(billManageId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+458
-469
@@ -197,72 +197,68 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
|
|||||||
SimpleDateFormat sdf2 = new SimpleDateFormat("MM");
|
SimpleDateFormat sdf2 = new SimpleDateFormat("MM");
|
||||||
String dateString = sdf.format(date);
|
String dateString = sdf.format(date);
|
||||||
String invoiceId = reconciliation.getInvoiceId();
|
String invoiceId = reconciliation.getInvoiceId();
|
||||||
// List<BmsMakeOutInvoice> bmsMakeOutInvoices = bmsMakeOutInvoiceMapper.selectList(new LambdaQueryWrapper<BmsMakeOutInvoice>().eq(BmsMakeOutInvoice::getInvoiceId, invoiceId));
|
List<BillDetail> billDetails = billDetailService.getDetailsByBillManageIdAndGroup(Long.parseLong(businessDocumentDetaliId));
|
||||||
List<BillDetail> billDetails = billDetailService.list(new LambdaQueryWrapper<BillDetail>()
|
|
||||||
.eq(BillDetail::getBillManageId, businessDocumentDetaliId)
|
List<Ysitem> ysitemList=new ArrayList<Ysitem>();
|
||||||
.eq(BillDetail::getDelFlag, 1));
|
String url = "";
|
||||||
if (billDetails!=null && billDetails.size()>0){
|
Long organizationId = reconciliation.getOrganizationId();
|
||||||
int count = 0;
|
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<Map<String, Object>> listNc = objectMapper.readValue(
|
||||||
|
customerCodeNcJson,
|
||||||
|
new TypeReference<List<Map<String, Object>>>() {}
|
||||||
|
);
|
||||||
|
if (listNc != null && listNc.size() > 0) {
|
||||||
|
Map<String, Object> 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) {
|
for (BillDetail make : billDetails) {
|
||||||
count++;
|
|
||||||
List<Ysitem> ysitemList=new ArrayList<Ysitem>();
|
|
||||||
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<Map<String, Object>> listNc = objectMapper.readValue(
|
|
||||||
customerCodeNcJson,
|
|
||||||
new TypeReference<List<Map<String, Object>>>() {}
|
|
||||||
);
|
|
||||||
if (listNc != null && listNc.size() > 0) {
|
|
||||||
Map<String, Object> 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){
|
if(make.getBillingAmount().compareTo(BigDecimal.ZERO)>0){
|
||||||
Ysitem item=new Ysitem();
|
Ysitem item=new Ysitem();
|
||||||
if (deptValue != null && !deptValue.isEmpty()) {
|
if (deptValue != null && !deptValue.isEmpty()) {
|
||||||
@@ -285,22 +281,18 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
|
|||||||
List<String> names = new ArrayList<>();
|
List<String> names = new ArrayList<>();
|
||||||
List<String> nccodes = new ArrayList<>();
|
List<String> nccodes = new ArrayList<>();
|
||||||
if (invoiceItem != null && !invoiceItem.isEmpty()) {
|
if (invoiceItem != null && !invoiceItem.isEmpty()) {
|
||||||
String[] items = invoiceItem.split(",");
|
String invoiceItemName1 = billManageMapper.getInvoiceItemName(invoiceItem);
|
||||||
for (String s : items) {
|
String invoiceItemNcCode1 = billManageMapper.getInvoiceItemNcCode(invoiceItem);
|
||||||
String invoiceItemName1 = billManageMapper.getInvoiceItemName(s);
|
names.add(invoiceItemName1);
|
||||||
String invoiceItemNcCode1 = billManageMapper.getInvoiceItemNcCode(s);
|
nccodes.add(invoiceItemNcCode1);
|
||||||
names.add(invoiceItemName1);
|
|
||||||
nccodes.add(invoiceItemNcCode1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
String invoiceItemName = String.join(",", names);
|
String invoiceItemName = make.getInvoiceItemName();
|
||||||
//item.setDef29(invoiceItemName);
|
//item.setDef29(invoiceItemName);
|
||||||
if (deptName != null && !deptName.isEmpty()) {
|
if (deptName != null && !deptName.isEmpty()) {
|
||||||
item.setScomment(deptName+":应收"+appointShipper+invoiceItemName);
|
item.setScomment(deptName+":应收"+appointShipper+invoiceItemName);
|
||||||
} else {
|
} else {
|
||||||
item.setScomment("业务部:应收"+appointShipper+invoiceItemName);
|
item.setScomment("业务部:应收"+appointShipper+invoiceItemName);
|
||||||
}
|
}
|
||||||
// item.setPk_currtype("CNY");
|
|
||||||
item.setPk_currtype(settlementCurrencyNcCode);
|
item.setPk_currtype(settlementCurrencyNcCode);
|
||||||
item.setPurchaseorder("");
|
item.setPurchaseorder("");
|
||||||
item.setTaxrate(String.valueOf(make.getTaxRate()));
|
item.setTaxrate(String.valueOf(make.getTaxRate()));
|
||||||
@@ -314,7 +306,7 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
|
|||||||
item.setTax_de(String.valueOf(tax_de));
|
item.setTax_de(String.valueOf(tax_de));
|
||||||
item.setPrice(String.valueOf(make.getBillingAmount()));
|
item.setPrice(String.valueOf(make.getBillingAmount()));
|
||||||
item.setTaxprice(String.valueOf(make.getBillingAmount()));
|
item.setTaxprice(String.valueOf(make.getBillingAmount()));
|
||||||
// 费用类别
|
//费用类别
|
||||||
String feeType = make.getFeeType();
|
String feeType = make.getFeeType();
|
||||||
String serviceItemsCodeNc = billManageMapper.getServiceItemsCodeNc(feeType);
|
String serviceItemsCodeNc = billManageMapper.getServiceItemsCodeNc(feeType);
|
||||||
if (serviceItemsCodeNc != null && !serviceItemsCodeNc.isEmpty()) {
|
if (serviceItemsCodeNc != null && !serviceItemsCodeNc.isEmpty()) {
|
||||||
@@ -324,157 +316,152 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
|
|||||||
}
|
}
|
||||||
String invoiceItem1 = make.getInvoiceItem();
|
String invoiceItem1 = make.getInvoiceItem();
|
||||||
if (invoiceItem1 != null && !invoiceItem1.isEmpty()) {
|
if (invoiceItem1 != null && !invoiceItem1.isEmpty()) {
|
||||||
String[] split = invoiceItem1.split(",");
|
item.setDef29(invoiceItem1);
|
||||||
item.setDef29(split[0]);
|
|
||||||
//item.setDef29(invoiceItem1);
|
|
||||||
}
|
}
|
||||||
if (nccodes != null && !nccodes.isEmpty()&&nccodes.size()>0) {
|
if (nccodes != null && !nccodes.isEmpty()&&nccodes.size()>0) {
|
||||||
item.setDef29(nccodes.get(0));
|
item.setDef29(nccodes.get(0));
|
||||||
}
|
}
|
||||||
item.setTaxcodeid("ZL01");
|
item.setTaxcodeid("ZL01");
|
||||||
// item.setInvoiceno(invoiceNumber);
|
item.setInvoiceno("");
|
||||||
ysitemList.add(item);
|
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();
|
// 获取ufinterface元素的属性
|
||||||
bodys.setItem(ysitemList);
|
String billtype = root.getAttribute("billtype");
|
||||||
Ysbillhead billhead=new Ysbillhead();
|
String filename = root.getAttribute("filename");
|
||||||
billhead.setPk_group("CNK");
|
System.out.println("billtype: " + billtype);
|
||||||
if (orgCodeNc != null && !orgCodeNc.isEmpty()) {
|
System.out.println("filename: " + filename);
|
||||||
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)));
|
|
||||||
|
|
||||||
// 获取根元素
|
// 获取sendresult节点
|
||||||
Element root = document.getDocumentElement();
|
NodeList sendResultList = root.getElementsByTagName("sendresult");
|
||||||
|
if (sendResultList.getLength() > 0) {
|
||||||
|
Element sendResult = (Element) sendResultList.item(0);
|
||||||
|
|
||||||
// 获取ufinterface元素的属性
|
// 获取子元素内容
|
||||||
String billtype = root.getAttribute("billtype");
|
String bdocid = sendResult.getElementsByTagName("bdocid").item(0).getTextContent();
|
||||||
String filename = root.getAttribute("filename");
|
String resultcode = sendResult.getElementsByTagName("resultcode").item(0).getTextContent();
|
||||||
System.out.println("billtype: " + billtype);
|
String content = sendResult.getElementsByTagName("content").item(0).getTextContent();
|
||||||
System.out.println("filename: " + filename);
|
|
||||||
|
|
||||||
// 获取sendresult节点
|
System.out.println("bdocid: " + bdocid);
|
||||||
NodeList sendResultList = root.getElementsByTagName("sendresult");
|
System.out.println("resultcode: " + resultcode);
|
||||||
if (sendResultList.getLength() > 0) {
|
System.out.println("content: " + content);
|
||||||
Element sendResult = (Element) sendResultList.item(0);
|
if(resultcode.equals("1")){
|
||||||
|
reconciliation.setSynchronousStatus(1);
|
||||||
// 获取子元素内容
|
}else{
|
||||||
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) {
|
|
||||||
reconciliation.setSynchronousStatus(2);
|
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);
|
reconciliation.setSynchronousStatus(2);
|
||||||
billManageMapper.updateById(reconciliation);
|
billManageMapper.updateById(reconciliation);
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
httpClient.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (JAXBException e) {
|
} catch (JAXBException e) {
|
||||||
reconciliation.setSynchronousStatus(2);
|
reconciliation.setSynchronousStatus(2);
|
||||||
billManageMapper.updateById(reconciliation);
|
billManageMapper.updateById(reconciliation);
|
||||||
@@ -810,273 +797,275 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
|
|||||||
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy");
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy");
|
||||||
SimpleDateFormat sdf2 = new SimpleDateFormat("MM");
|
SimpleDateFormat sdf2 = new SimpleDateFormat("MM");
|
||||||
String dateString = sdf.format(date);
|
String dateString = sdf.format(date);
|
||||||
String invoiceId = reconciliation.getInvoiceId();
|
List<BillDetail> billDetails = billDetailService.list(new LambdaQueryWrapper<BillDetail>()
|
||||||
ReconciliationDTO makeQuery=new ReconciliationDTO();
|
.eq(BillDetail::getBillManageId, reconciliation.getBillManageId())
|
||||||
makeQuery.setInnerNumber(invoiceId);
|
.eq(BillDetail::getDelFlag, 1));
|
||||||
List<BmsMakeOutInvoice> bmsMakeOutInvoices = bmsMakeOutInvoiceMapper.selectList(new LambdaQueryWrapper<BmsMakeOutInvoice>().eq(BmsMakeOutInvoice::getInvoiceId, invoiceId));
|
|
||||||
if (bmsMakeOutInvoices != null && bmsMakeOutInvoices.size() > 0) {
|
|
||||||
int count= 0;
|
|
||||||
for (BmsMakeOutInvoice make : bmsMakeOutInvoices) {
|
|
||||||
count++;
|
|
||||||
List<SKitem> ysitemList=new ArrayList<SKitem>();
|
|
||||||
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<BmsMakeOutInvoiceItem> bmsMakeOutInvoiceItems = bmsMakeOutInvoiceItemMapper.selectList(new LambdaQueryWrapper<BmsMakeOutInvoiceItem>().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);
|
|
||||||
|
|
||||||
// 将 feeType 用、拼接起来
|
List<SKitem> ysitemList=new ArrayList<SKitem>();
|
||||||
String feeTypes = bmsMakeOutInvoiceItems.stream()
|
ReconciliationDTO reconciliationDTO=new ReconciliationDTO();
|
||||||
.map(BmsMakeOutInvoiceItem::getFeeType)
|
reconciliationDTO.setInnerNumber(reconciliation.getBillNumber());
|
||||||
.filter(java.util.Objects::nonNull)
|
String url = "";
|
||||||
.collect(java.util.stream.Collectors.joining("、"));
|
Long organizationId = reconciliation.getOrganizationId();
|
||||||
|
String orgCodeNc = billManageMapper.getOrgCodeNc(organizationId);
|
||||||
// 按 createTime 倒序排序并获取第一条记录
|
String organizationName = reconciliation.getOrganizationName();
|
||||||
BmsMakeOutInvoiceItem firstItem = bmsMakeOutInvoiceItems.stream()
|
String ncUrl = billManageMapper.getNcUrl("nc", organizationName, organizationId);
|
||||||
.sorted((a, b) -> {
|
if (ncUrl!=null&&ncUrl!="") {
|
||||||
if (a.getCreateTime() == null) return 1;
|
url = ncUrl;
|
||||||
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<Map<String, Object>> listNc = objectMapper.readValue(
|
|
||||||
customerCodeNcJson,
|
|
||||||
new TypeReference<List<Map<String, Object>>>() {}
|
|
||||||
);
|
|
||||||
if (listNc != null && listNc.size() > 0) {
|
|
||||||
Map<String, Object> 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 ="<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.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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
reconciliation.setSkSynchronousStatus(2);
|
reconciliation.setSkSynchronousStatus(2);
|
||||||
billManageMapper.updateById(reconciliation);
|
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<Map<String, Object>> listNc = objectMapper.readValue(
|
||||||
|
customerCodeNcJson,
|
||||||
|
new TypeReference<List<Map<String, Object>>>() {}
|
||||||
|
);
|
||||||
|
if (listNc != null && listNc.size() > 0) {
|
||||||
|
Map<String, Object> 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 ="<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.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) {
|
} catch (JAXBException e) {
|
||||||
reconciliation.setSkSynchronousStatus(2);
|
reconciliation.setSkSynchronousStatus(2);
|
||||||
billManageMapper.updateById(reconciliation);
|
billManageMapper.updateById(reconciliation);
|
||||||
|
|||||||
@@ -27,5 +27,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
AND bd.bill_manage_id = #{billManageId}
|
AND bd.bill_manage_id = #{billManageId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getDetailsByBillManageIdAndGroup" resultType="com.mhd.bms.domain.billManage.entity.BillDetail" parameterType="java.lang.Long">
|
||||||
|
SELECT
|
||||||
|
SUM(BILLING_AMOUNT) as BILLING_AMOUNT,
|
||||||
|
SUM(TAX_AMOUNT) as TAX_AMOUNT,
|
||||||
|
SUM(TAX_FREE_FEE) as TAX_FREE_FEE,
|
||||||
|
AVG(TAX_RATE) as TAX_RATE,
|
||||||
|
BILL_MANAGE_ID as BILL_MANAGE_ID,
|
||||||
|
TOP_ORGANIZATION_ID as TOP_ORGANIZATION_ID,
|
||||||
|
ORGANIZATION_NAME,
|
||||||
|
INVOICE_ITEM,
|
||||||
|
INVOICE_ITEM_NAME,
|
||||||
|
FEE_TYPE,
|
||||||
|
BILL_NUMBER
|
||||||
|
FROM
|
||||||
|
bill_detail
|
||||||
|
WHERE
|
||||||
|
del_flag = 1
|
||||||
|
AND bill_manage_id = #{billManageId} GROUP BY INVOICE_ITEM,INVOICE_ITEM_NAME,FEE_TYPE
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user