通宇推送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
@@ -516,6 +516,14 @@ public interface WlhyServiceFeign {
@PostMapping(value = "/feign/outBoundSummary/getOrderListByReconciliation") @PostMapping(value = "/feign/outBoundSummary/getOrderListByReconciliation")
public R<List<TmsOrder>> getOrderListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO); public R<List<TmsOrder>> getOrderListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO);
@ApiOperation(value = "查询对账单对应的发票明细", notes = "查询对账单对应的发票明细")
@PostMapping(value = "/feign/outBoundSummary/selectMakeOutInvoiceListByReconciliation")
public R<List<TmsMakeOutInvoice>> selectMakeOutInvoiceListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO);
@ApiOperation(value = "查询对账单对应的发票明细子项", notes = "查询对账单对应的发票明细子项")
@PostMapping(value = "/feign/outBoundSummary/selectMakeOutInvoiceItemList")
public R<List<TmsMakeOutInvoiceItem>> selectMakeOutInvoiceItemList(@RequestBody TmsMakeOutInvoice tmsMakeOutInvoice);
@GetMapping(value = "/ntocc/tmsSettlementExchangeRate/queryById") @GetMapping(value = "/ntocc/tmsSettlementExchangeRate/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id); public Result<?> queryById(@RequestParam(name="id",required=true) String id);
@@ -127,4 +127,12 @@ public class TmsMakeOutInvoice implements Serializable {
private String actualInvoiceCustomerId; private String actualInvoiceCustomerId;
@ApiModelProperty(value = "实际开票客户名称") @ApiModelProperty(value = "实际开票客户名称")
private String actualInvoiceCustomerName; 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,77 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 销项发票表
* @Author: lfs
* @Date: 2020-02-19 08:50:47
* @Version: V1.0
*/
@Data
@TableName("tms_make_out_invoice_item")
public class TmsMakeOutInvoiceItem implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
private String id;
/**makeId*/
@ApiModelProperty(value = "makeId")
private String makeId;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
private BigDecimal invoiceValue;
/**发票备注*/
@ApiModelProperty(value = "发票备注")
@Excel(name = "发票备注", width = 15)
private String remark;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@ApiModelProperty(value = "更新日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**是否删除(0-否,1-是)*/
@ApiModelProperty(value = "是否删除(0-否,1-是)")
private Integer isDelete;
@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;
}
@@ -519,6 +519,22 @@ public class RemoteWlhyFallbackFactory implements FallbackFactory<WlhyServiceFei
return res; return res;
} }
@Override
public R<List<TmsMakeOutInvoice>> selectMakeOutInvoiceListByReconciliation(ReconciliationDTO reconciliationDTO) {
R<List<TmsMakeOutInvoice>> res = new R<>();
res.setMsg("查询失败"+cause.getMessage());
res.setCode(R.FAIL);
return res;
}
@Override
public R<List<TmsMakeOutInvoiceItem>> selectMakeOutInvoiceItemList(TmsMakeOutInvoice tmsMakeOutInvoice) {
R<List<TmsMakeOutInvoiceItem>> res = new R<>();
res.setMsg("查询失败"+cause.getMessage());
res.setCode(R.FAIL);
return res;
}
@Override @Override
public Result<?> queryById(String id) { public Result<?> queryById(String id) {
return null; return null;
@@ -256,4 +256,9 @@ public class ReconciliationDTO extends BaseVOEntity{
private BigDecimal taxFreeFee; private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额") @ApiModelProperty(value = "税额")
private BigDecimal taxAmount; private BigDecimal taxAmount;
private List<ReconciliationItemDTO> reconciliationItemDTOList;
@ApiModelProperty("结算币种")
private String settlementCurrency;
} }
@@ -0,0 +1,52 @@
package com.mhd.common.core.domain.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 对账单对象 reconciliation
*
* @author gen
* @date 2024-01-23
*/
@Data
public class ReconciliationItemDTO 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;
}
@@ -527,7 +527,10 @@ public class TmsOrder implements Serializable {
@ApiModelProperty("制单人编码nc") @ApiModelProperty("制单人编码nc")
private String makerCodeNc; private String makerCodeNc;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员")
private String salesmanName;
@ApiModelProperty("业务员编码nc") @ApiModelProperty("业务员编码nc")
private String salesmanCodeNc; private String salesmanCodeNc;
@@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceResponse; import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@@ -21,6 +20,8 @@ import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccou
import com.linke.finance.domain.reconciliationAccount.repository.mapper.ReconciliationAccountMapper; import com.linke.finance.domain.reconciliationAccount.repository.mapper.ReconciliationAccountMapper;
import com.linke.finance.domain.reconciliationAccount.repository.todo.ReconciliationAccountDO; import com.linke.finance.domain.reconciliationAccount.repository.todo.ReconciliationAccountDO;
import com.linke.finance.domain.reconciliationAccount.service.ReconciliationAccountDomainService; import com.linke.finance.domain.reconciliationAccount.service.ReconciliationAccountDomainService;
import com.linke.finance.domain.reconciliationItem.entity.ReconciliationItem;
import com.linke.finance.domain.reconciliationItem.repository.mapper.ReconciliationItemMapper;
import com.linke.finance.domain.revenueExpensesRecord.entity.RevenueExpensesRecord; import com.linke.finance.domain.revenueExpensesRecord.entity.RevenueExpensesRecord;
import com.linke.finance.domain.revenueExpensesRecord.service.RevenueExpensesRecordDomainService; import com.linke.finance.domain.revenueExpensesRecord.service.RevenueExpensesRecordDomainService;
import com.linke.finance.domain.tmsReceipt.repository.mapper.TmsReceiptMapper; import com.linke.finance.domain.tmsReceipt.repository.mapper.TmsReceiptMapper;
@@ -33,6 +34,7 @@ import com.linke.finance.interfaces.assembler.reconciliationAccount.Reconciliati
import com.mhd.common.core.constant.SubjectConstants; import com.mhd.common.core.constant.SubjectConstants;
import com.mhd.common.core.domain.dto.ReconciliationAccountDTO; import com.mhd.common.core.domain.dto.ReconciliationAccountDTO;
import com.mhd.common.core.domain.dto.ReconciliationDTO; import com.mhd.common.core.domain.dto.ReconciliationDTO;
import com.mhd.common.core.domain.dto.ReconciliationItemDTO;
import com.mhd.common.core.domain.entity.TmsOrder; import com.mhd.common.core.domain.entity.TmsOrder;
import com.mhd.common.core.domain.entity.Verification; import com.mhd.common.core.domain.entity.Verification;
import com.mhd.common.core.domain.po.OrganizationPo; import com.mhd.common.core.domain.po.OrganizationPo;
@@ -93,6 +95,8 @@ public class ReconciliationApplicationService {
@Autowired @Autowired
private ReconciliationAccountMapper reconciliationAccountMapper; private ReconciliationAccountMapper reconciliationAccountMapper;
@Autowired
private ReconciliationItemMapper reconciliationItemMapper;
/** /**
@@ -180,6 +184,13 @@ public class ReconciliationApplicationService {
return reconciliationPOS;*/ return reconciliationPOS;*/
List<ReconciliationPO> reconciliationPOS = reconciliationDomainService.queryList(reconciliationDO); List<ReconciliationPO> reconciliationPOS = reconciliationDomainService.queryList(reconciliationDO);
for (ReconciliationPO reconciliationPO : reconciliationPOS) { for (ReconciliationPO reconciliationPO : reconciliationPOS) {
Long reconciliationId = reconciliationPO.getReconciliationId();
List<ReconciliationItem> reconciliationItems = reconciliationItemMapper.selectList(new QueryWrapper<ReconciliationItem>()
.lambda().eq(ReconciliationItem::getReconciliationId, reconciliationId));
reconciliationPO.setReconciliationItemDTOList(reconciliationItems);
String innerNumber = reconciliationPO.getInnerNumber(); String innerNumber = reconciliationPO.getInnerNumber();
if (innerNumber != null && !innerNumber.trim().isEmpty()) { if (innerNumber != null && !innerNumber.trim().isEmpty()) {
ReconciliationDTO reconciliationDTO = new ReconciliationDTO(); ReconciliationDTO reconciliationDTO = new ReconciliationDTO();
@@ -310,6 +321,15 @@ public class ReconciliationApplicationService {
} }
reconciliationDO = reconciliationDomainService.insert(reconciliationDO); reconciliationDO = reconciliationDomainService.insert(reconciliationDO);
List<ReconciliationItemDTO> reconciliationItemDTOList = reconciliationDO.getReconciliationItemDTOList();
if (reconciliationItemDTOList != null && reconciliationItemDTOList.size() > 0) {
for (ReconciliationItemDTO reconciliationItemDTO : reconciliationItemDTOList) {
ReconciliationItem reconciliationItem = new ReconciliationItem();
BeanUtils.copyProperties(reconciliationItemDTO, reconciliationItem);
reconciliationItem.setReconciliationId(reconciliationDO.getReconciliationId());
reconciliationItemMapper.insert(reconciliationItem);
}
}
if(reconciliationDO==null){ if(reconciliationDO==null){
throw new ServiceException("订单出账-生成应收账单失败!"); throw new ServiceException("订单出账-生成应收账单失败!");
} }
@@ -234,7 +234,6 @@ public class Reconciliation extends BaseVOEntity{
@ApiModelProperty("nc同步状态 0-未同步 1-已同步") @ApiModelProperty("nc同步状态 0-未同步 1-已同步")
private Integer skSynchronousStatus; private Integer skSynchronousStatus;
@ApiModelProperty(value = "nc同步时间") @ApiModelProperty(value = "nc同步时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(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 = "税额") @ApiModelProperty(value = "税额")
private BigDecimal taxAmount; private BigDecimal taxAmount;
@ApiModelProperty("结算币种")
private String settlementCurrency;
} }
@@ -34,4 +34,12 @@ public interface ReconciliationMapper extends BaseMapper<Reconciliation>
* 插入对账单并使用传入的createTime值 * 插入对账单并使用传入的createTime值
*/ */
void insertWithCreateTime(Reconciliation reconciliation); 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.common.security.utils.SecurityUtils;
import com.mhd.system.api.UserServiceFeign; import com.mhd.system.api.UserServiceFeign;
import com.mhd.system.api.WlhyServiceFeign; import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.domain.TmsInvoiceList; import com.mhd.system.api.domain.*;
import com.mhd.system.api.domain.TmsInvoiceListDetailsVO;
import com.mhd.system.api.domain.TmsTransportNote;
import com.mhd.system.api.model.LoginUser; import com.mhd.system.api.model.LoginUser;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
@@ -422,7 +420,6 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
if(reconciliation.getSynchronousStatus()==1){ if(reconciliation.getSynchronousStatus()==1){
throw new ServiceException("该记录已同步,不需要再次同步"); throw new ServiceException("该记录已同步,不需要再次同步");
} }
try { try {
Date date = reconciliation.getCreateTime(); Date date = reconciliation.getCreateTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -635,10 +632,43 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
} }
} }
}else if(reconciliation.getOrganizationName().contains("通宇")){ }else if(reconciliation.getOrganizationName().contains("通宇")){
if (reconciliation.getIsInvoice() != 2) { boolean b = synchronousNc_TY(businessDocumentDetaliId);
throw new ServiceException("该记录还未开票,不允许同步");
} }
} catch (JAXBException e) {
e.printStackTrace();
}
}
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){ 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 = ""; String url = "";
SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO(); SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO();
query.setOrganizationId(reconciliation.getOrganizationId()); query.setOrganizationId(reconciliation.getOrganizationId());
@@ -650,88 +680,63 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
} else { } else {
throw new ServiceException("未找到该组织的推送地址!"); 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 makerCodeNc=order.getMakerCodeNc();
String salesmanCodeNc=order.getSalesmanCodeNc();
} //String customerCodeNc=order.getCustomerCodeNc();
String invoiceNumber=reconciliation.getApplyNumber(); String appointShipper=make.getActualInvoiceCustomerName();
R<TmsInvoiceListDetailsVO> ajaxResult2=wlhyServiceFeign.selectInvoiceListById(reconciliation.getInvoiceId()); String actualInvoiceCustomerId = make.getActualInvoiceCustomerId();
if(ajaxResult2.getCode()==200){ String customerCodeNc = reconciliationMapper.getCustomerCodeNc(actualInvoiceCustomerId);
TmsInvoiceListDetailsVO tmsInvoiceListDetailsVO= ajaxResult2.getData(); String settlementCurrency=order.getSettlementCurrency();
if(ObjectUtil.isNotNull(tmsInvoiceListDetailsVO)) { String salesmanId = order.getSalesmanId();
invoiceNumber=tmsInvoiceListDetailsVO.getTmsMakeOutInvoices().get(0).getInvoiceNumber(); String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId);
} makerCodeNc= documentPreparerNcCode;
String settlementCurrencyNcCode = reconciliationMapper.getSettlementCurrencyNcCode(settlementCurrency);
} String invoiceNumber=make.getInvoiceNumber();
List<ReconciliationAccount> reconciliationAccountList=reconciliationAccountMapper.selectList(new QueryWrapper<ReconciliationAccount>().lambda() R<List<TmsMakeOutInvoiceItem>> itemR = wlhyServiceFeign.selectMakeOutInvoiceItemList(make);
.eq(ReconciliationAccount::getReconciliationId,businessDocumentDetaliId) if (itemR.getCode()==200) {
.eq(ReconciliationAccount::getDelFlag,1)); List<TmsMakeOutInvoiceItem> data = itemR.getData();
if (ObjectUtil.isNotNull(reconciliationAccountList)&&reconciliationAccountList.size()>0){ for (TmsMakeOutInvoiceItem item1 : data) {
for (ReconciliationAccount reconciliationAccount:reconciliationAccountList){ if(item1.getInvoiceValue().compareTo(BigDecimal.ZERO)>0){
if(reconciliationAccount.getAmount().compareTo(BigDecimal.ZERO)>0){
Ysitem item=new Ysitem(); Ysitem item=new Ysitem();
item.setSo_deptid("NG0408"); item.setSo_deptid("NG0408");
item.setPk_deptid("NG0408"); item.setPk_deptid("NG0408");
//业务员nc
item.setPk_psndoc(salesmanCodeNc); item.setPk_psndoc(salesmanCodeNc);
//客户nc
item.setCustomer(customerCodeNc); item.setCustomer(customerCodeNc);
item.setObjtype("0"); item.setObjtype("0");
item.setDirection("1"); item.setDirection("1");
item.setScomment("业务部:应收"+appointShipper+reconciliationAccount.getSubjectName()+invoiceNumber); 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("CNY");
item.setPk_currtype(settlementCurrency); item.setPk_currtype(settlementCurrencyNcCode);
item.setPurchaseorder(""); item.setPurchaseorder("");
item.setTaxrate("0"); item.setTaxrate("0");
item.setQuantity_de("0"); item.setQuantity_de("0");
item.setMoney_de(String.valueOf(reconciliationAccount.getAmount())); item.setMoney_de(String.valueOf(item1.getInvoiceValue()));
item.setMoney_bal(String.valueOf(reconciliationAccount.getAmount())); item.setMoney_bal(String.valueOf(item1.getInvoiceValue()));
if(reconciliationAccount.getRate().compareTo(BigDecimal.ZERO)>0){ BigDecimal tax_de=item1.getTaxAmount();
BigDecimal tax_de=reconciliationAccount.getAmount().multiply(reconciliationAccount.getRate().divide(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP); BigDecimal notax_de=item1.getTaxFreeFee();
BigDecimal notax_de=reconciliationAccount.getAmount().subtract(tax_de);
item.setNotax_de(String.valueOf(notax_de)); item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de)); item.setLocal_tax_de(String.valueOf(notax_de));
item.setTax_de(String.valueOf(tax_de)); item.setTax_de(String.valueOf(tax_de));
}else{ item.setPrice(String.valueOf(item1.getInvoiceValue()));
BigDecimal tax_de=BigDecimal.ZERO; item.setTaxprice(String.valueOf(item1.getInvoiceValue()));
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.setDef75("T10");
item.setInvoiceno(invoiceNumber); item.setInvoiceno(invoiceNumber);
ysitemList.add(item); ysitemList.add(item);
} }
} }
}else{
throw new ServiceException("未查询到账单的费用科目信息, 请核对");
} }
Ysbodys bodys=new Ysbodys(); Ysbodys bodys=new Ysbodys();
@@ -751,7 +756,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
billhead.setBilldate(dateString); billhead.setBilldate(dateString);
billhead.setSyscode("0"); billhead.setSyscode("0");
billhead.setBillno(""); billhead.setBillno("");
billhead.setDef59(list.get(0).getContractNo()); billhead.setDef59("");
billhead.setSrc_syscode("0"); billhead.setSrc_syscode("0");
billhead.setBillstatus("0"); billhead.setBillstatus("0");
billhead.setBillmaker(makerCodeNc); billhead.setBillmaker(makerCodeNc);
@@ -855,13 +860,9 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
} }
} }
} }
}
} catch (JAXBException e) { } catch (JAXBException e) {
e.printStackTrace(); e.printStackTrace();
} }
}
return true; return true;
} }
@@ -1062,7 +1063,43 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
} }
} }
}else if(reconciliation.getOrganizationName().contains("通宇")){ }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); 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 = ""; String url = "";
SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO(); SysDepartInterfaceInfoDTO query= new SysDepartInterfaceInfoDTO();
query.setOrganizationId(reconciliation.getOrganizationId()); query.setOrganizationId(reconciliation.getOrganizationId());
@@ -1074,14 +1111,26 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
} else { } else {
throw new ServiceException("未找到该组织的推送地址!"); throw new ServiceException("未找到该组织的推送地址!");
} }
if(result.getCode()==200){ R<List<TmsMakeOutInvoiceItem>> itemR = wlhyServiceFeign.selectMakeOutInvoiceItemList(make);
List<TmsOrder> list=result.getData(); String makerCodeNc = "";
if(itemR.getCode()==200){
List<TmsMakeOutInvoiceItem> list=itemR.getData();
if(ObjectUtil.isNotNull(list)){ if(ObjectUtil.isNotNull(list)){
String salesmanCodeNc=list.get(0).getSalesmanCodeNc(); // 汇总 list 中 invoiceValue 的总值
String customerCodeNc=list.get(0).getCustomerCodeNc(); BigDecimal totalInvoiceValue = list.stream()
String appointShipper=list.get(0).getAppointShipper(); .map(TmsMakeOutInvoiceItem::getInvoiceValue)
String settlementCurrency=list.get(0).getSettlementCurrency(); .filter(java.util.Objects::nonNull)
makerCodeNc="luoyx"; .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(); SKitem item=new SKitem();
item.setSo_deptid("NG0408"); item.setSo_deptid("NG0408");
item.setPk_deptid("NG0408"); item.setPk_deptid("NG0408");
@@ -1092,42 +1141,10 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
item.setObjtype("0"); item.setObjtype("0");
item.setDirection("1"); item.setDirection("1");
item.setScomment("业务部:"+appointShipper+"物流费"); item.setScomment("业务部:"+appointShipper+"物流费");
item.setPk_currtype(settlementCurrency); item.setPk_currtype(settlementCurrencyNcCode);
item.setMoney_cr(String.valueOf(reconciliation.getCollectionAmount())); item.setMoney_cr(String.valueOf(totalInvoiceValue));
item.setMoney_bal(String.valueOf(reconciliation.getCollectionAmount())); item.setMoney_bal(String.valueOf(totalInvoiceValue));
ysitemList.add(item); 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(); SKbodys bodys=new SKbodys();
@@ -1248,11 +1265,12 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
e.printStackTrace(); e.printStackTrace();
} }
} }
}
} }
} catch (JAXBException e) { } catch (JAXBException e) {
e.printStackTrace(); e.printStackTrace();
} }
}
return true; 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.businessDocument.entity.BusinessDocument;
import com.linke.finance.domain.reconciliationAccount.entity.ReconciliationAccount; 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.annotation.Excel;
import com.mhd.common.core.domain.dto.ReconciliationAccountDTO; import com.mhd.common.core.domain.dto.ReconciliationAccountDTO;
import com.mhd.common.core.domain.dto.ReconciliationItemDTO;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@@ -267,4 +269,5 @@ public class ReconciliationPO extends BaseVOEntity{
private BigDecimal taxFreeFee; private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额") @ApiModelProperty(value = "税额")
private BigDecimal taxAmount; 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.linke.finance.domain.reconciliation.entity.ReconciliationOrderDetail;
import com.mhd.common.core.annotation.Excel; import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.domain.dto.ReconciliationAccountDTO; import com.mhd.common.core.domain.dto.ReconciliationAccountDTO;
import com.mhd.common.core.domain.dto.ReconciliationItemDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
@@ -297,4 +298,8 @@ public class ReconciliationDO extends BaseVOEntity{
private BigDecimal taxFreeFee; private BigDecimal taxFreeFee;
@ApiModelProperty(value = "税额") @ApiModelProperty(value = "税额")
private BigDecimal taxAmount; 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> {
}
@@ -37,6 +37,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="isInvoice" column="is_invoice" /> <result property="isInvoice" column="is_invoice" />
<result property="invoiceMakeTime" column="invoice_make_time" /> <result property="invoiceMakeTime" column="invoice_make_time" />
<result property="applyNumber" column="apply_number" /> <result property="applyNumber" column="apply_number" />
<result property="taxAmount" column="tax_amount" />
<result property="taxFreeFee" column="tax_free_fee" />
<result property="accountInformation" column="account_information" />
</resultMap> </resultMap>
@@ -359,4 +362,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{taxFreeFee} #{taxFreeFee}
) )
</insert> </insert>
<select id="getInvoiceItemName" parameterType="java.lang.String" resultType="java.lang.String">
select SUBJECT_NAME from "NGWL_TEST_SYSTEM".EXPENSE_ACCOUNT where status = 1 and SUBJECT_CODE = #{invoiceItemId} limit 1
</select>
<select id="getCustomerCodeNc" parameterType="java.lang.String" resultType="java.lang.String">
SELECT CUSTOMER_NC_CODE FROM NGWL_TEST_USER."USER_SHIPPER" where del_flag = 1 and SHIPPER_ID = #{actualInvoiceCustomerId} limit 1
</select>
<select id="getDocumentPreparerNcCode" parameterType="java.lang.String" resultType="java.lang.String">
SELECT DOCUMENT_PREPARER_NC_CODE FROM NGWL_TEST_USER."USER" where del_flag = 1 and user_id = #{salesmanId} limit 1
</select>
<select id="getSettlementCurrencyNcCode" parameterType="java.lang.String" resultType="java.lang.String">
SELECT NC_SYSTEM_CODE FROM NGWL_TEST_WLHY."TMS_SETTLEMENT_EXCHANGE_RATE" where IS_DELETE = '0' and ENGLISH_NAME = #{settlementCurrency} limit 1
</select>
</mapper> </mapper>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.linke.finance.domain.reconciliationItem.repository.mapper.ReconciliationItemMapper">
</mapper>