bms2.0应收单和收款单推送nc修改;

This commit is contained in:
王奎兴
2026-07-23 17:46:32 +08:00
parent a96b03a060
commit 914a751d96
5 changed files with 491 additions and 473 deletions
@@ -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);
} }
@@ -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);
} }
@@ -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);
}
} }
@@ -197,14 +197,8 @@ 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)
.eq(BillDetail::getDelFlag, 1));
if (billDetails!=null && billDetails.size()>0){
int count = 0;
for (BillDetail make : billDetails) {
count++;
List<Ysitem> ysitemList=new ArrayList<Ysitem>(); List<Ysitem> ysitemList=new ArrayList<Ysitem>();
String url = ""; String url = "";
Long organizationId = reconciliation.getOrganizationId(); Long organizationId = reconciliation.getOrganizationId();
@@ -263,6 +257,8 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
String makerCodeNc = documentPreparerNcCode; String makerCodeNc = documentPreparerNcCode;
String settlementCurrencyNcCode = settlementCurrency; String settlementCurrencyNcCode = settlementCurrency;
if (billDetails!=null&&billDetails.size()>0){
for (BillDetail make : billDetails) {
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);
String invoiceItemNcCode1 = billManageMapper.getInvoiceItemNcCode(s);
names.add(invoiceItemName1); names.add(invoiceItemName1);
nccodes.add(invoiceItemNcCode1); nccodes.add(invoiceItemNcCode1);
} }
} String invoiceItemName = make.getInvoiceItemName();
String invoiceItemName = String.join(",", names);
//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,19 +316,17 @@ 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(); Ysbodys bodys=new Ysbodys();
bodys.setItem(ysitemList); bodys.setItem(ysitemList);
@@ -372,7 +362,7 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
billhead.setDef29(reconciliation.getBillNumber()); billhead.setDef29(reconciliation.getBillNumber());
billhead.setBodys(bodys); billhead.setBodys(bodys);
Ysbill bill=new Ysbill(); Ysbill bill=new Ysbill();
bill.setId("ys"+String.valueOf(reconciliation.getBillManageId())+"_"+count); bill.setId("ys"+String.valueOf(reconciliation.getBillManageId())+"_"+1);
bill.setBillhead(billhead); bill.setBillhead(billhead);
Ysufinterface ufinterface=new Ysufinterface(); Ysufinterface ufinterface=new Ysufinterface();
ufinterface.setAccount("NKNC"); ufinterface.setAccount("NKNC");
@@ -470,11 +460,8 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
e.printStackTrace(); e.printStackTrace();
} }
} }
}
} else {
reconciliation.setSynchronousStatus(2);
billManageMapper.updateById(reconciliation);
}
} catch (JAXBException e) { } catch (JAXBException e) {
reconciliation.setSynchronousStatus(2); reconciliation.setSynchronousStatus(2);
billManageMapper.updateById(reconciliation); billManageMapper.updateById(reconciliation);
@@ -810,14 +797,10 @@ 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>(); List<SKitem> ysitemList=new ArrayList<SKitem>();
ReconciliationDTO reconciliationDTO=new ReconciliationDTO(); ReconciliationDTO reconciliationDTO=new ReconciliationDTO();
reconciliationDTO.setInnerNumber(reconciliation.getBillNumber()); reconciliationDTO.setInnerNumber(reconciliation.getBillNumber());
@@ -833,24 +816,23 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
billManageMapper.updateById(reconciliation); billManageMapper.updateById(reconciliation);
throw new ServiceException("未找到该组织的推送地址!"); throw new ServiceException("未找到该组织的推送地址!");
} }
List<BmsMakeOutInvoiceItem> bmsMakeOutInvoiceItems = bmsMakeOutInvoiceItemMapper.selectList(new LambdaQueryWrapper<BmsMakeOutInvoiceItem>().eq(BmsMakeOutInvoiceItem::getMakeId, make.getId()));
String makerCodeNc = ""; String makerCodeNc = "";
if(bmsMakeOutInvoiceItems != null && bmsMakeOutInvoiceItems.size() > 0){ if(billDetails != null && billDetails.size() > 0){
if(ObjectUtil.isNotNull(bmsMakeOutInvoiceItems)){ if(ObjectUtil.isNotNull(billDetails)){
// 汇总 list 中 invoiceValue 的总值 // 汇总 list 中 invoiceValue 的总值
BigDecimal totalInvoiceValue = bmsMakeOutInvoiceItems.stream() BigDecimal totalInvoiceValue = billDetails.stream()
.map(BmsMakeOutInvoiceItem::getInvoiceValue) .map(BillDetail::getBillingAmount)
.filter(java.util.Objects::nonNull) .filter(java.util.Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
// 将 feeType 用、拼接起来 // 将 feeType 用、拼接起来
String feeTypes = bmsMakeOutInvoiceItems.stream() String feeTypes = billDetails.stream()
.map(BmsMakeOutInvoiceItem::getFeeType) .map(BillDetail::getInvoiceItemName)
.filter(java.util.Objects::nonNull) .filter(java.util.Objects::nonNull)
.collect(java.util.stream.Collectors.joining("")); .collect(java.util.stream.Collectors.joining(""));
// 按 createTime 倒序排序并获取第一条记录 // 按 createTime 倒序排序并获取第一条记录
BmsMakeOutInvoiceItem firstItem = bmsMakeOutInvoiceItems.stream() BillDetail firstItem = billDetails.stream()
.sorted((a, b) -> { .sorted((a, b) -> {
if (a.getCreateTime() == null) return 1; if (a.getCreateTime() == null) return 1;
if (b.getCreateTime() == null) return -1; if (b.getCreateTime() == null) return -1;
@@ -864,8 +846,18 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
String deptName = billManageMapper.getDeptName(customerUserDept); String deptName = billManageMapper.getDeptName(customerUserDept);
String salespersonNcCode = billManageMapper.getsalespersonNcCode(salesmanId); String salespersonNcCode = billManageMapper.getsalespersonNcCode(salesmanId);
String salesmanCodeNc=salespersonNcCode; String salesmanCodeNc=salespersonNcCode;
String appointShipper=make.getActualInvoiceCustomerName(); Long settlementCustomersId = reconciliation.getSettlementCustomersId();
String actualInvoiceCustomerId = make.getActualInvoiceCustomerId(); 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 customerCodeNc = billManageMapper.getCustomerCodeNc(actualInvoiceCustomerId);
String customerCodeNcJson = billManageMapper.getCustomerCodeNcJson(actualInvoiceCustomerId); String customerCodeNcJson = billManageMapper.getCustomerCodeNcJson(actualInvoiceCustomerId);
if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) {
@@ -971,7 +963,7 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
billhead.setDef29(reconciliation.getBillNumber()); billhead.setDef29(reconciliation.getBillNumber());
billhead.setBodys(bodys); billhead.setBodys(bodys);
SKbill bill=new SKbill(); SKbill bill=new SKbill();
bill.setId("sk"+String.valueOf(reconciliation.getBillManageId())+"_"+count); bill.setId("sk"+String.valueOf(reconciliation.getBillManageId())+"_"+1);
bill.setBillhead(billhead); bill.setBillhead(billhead);
SKufinterface ufinterface=new SKufinterface(); SKufinterface ufinterface=new SKufinterface();
ufinterface.setAccount("NKNC"); ufinterface.setAccount("NKNC");
@@ -1072,11 +1064,8 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
} }
} }
}
} else {
reconciliation.setSkSynchronousStatus(2);
billManageMapper.updateById(reconciliation);
}
} 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>