From b58c3bf0e4c9bf4327b749040c3490fd2d0970b2 Mon Sep 17 00:00:00 2001
From: 李白 <7387820+wjli_13439841639@user.noreply.gitee.com>
Date: 星期四, 04 六月 2026 09:45:40 +0800
Subject: [PATCH] 开票信息修改
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 163 insertions(+), 5 deletions(-)
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
index fffadb8..f8440ec 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
@@ -2,6 +2,7 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -16,6 +17,7 @@
import com.by4cloud.platformx.business.service.*;
import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.common.security.annotation.Inner;
@@ -28,6 +30,7 @@
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -119,6 +122,8 @@
if(contractOutBoundList.size()==0){
return R.failed("璇烽�夋嫨鍑哄簱鍗曪紒");
}
+ //寮�绁ㄤ箣鍓嶏紝鍏堣褰曞紑绁ㄤ俊鎭�
+ //1.鍑哄簱鍗曡繘琛屾爣璁帮紝灏嗗嚭搴撳崟鍙戠エ璁板綍id濉叆銆傚皢InvoiceSatus=1寮�绁ㄤ腑銆�
String outBoundIds = "";
for(ContractOutBoundVo vo : contractOutBoundList){
if(StrUtil.isEmpty(outBoundIds)){
@@ -140,12 +145,14 @@
outBound.setInvoiceSatus(1);
contractOutBoundService.updateById(outBound);
}
+ //缁撶畻涓褰曞嚭搴撳崟ids.
saleCredit.setOutBoundIds(outBoundIds);
+ //鐢熸垚缁撶畻鍗曞彿
saleCredit.setEntrustCode("JsNo"+System.currentTimeMillis());
saleCreditService.updateById(saleCredit);
//鐢熸垚vo
- InvoicingVo invoicingVo = invoiceService.toGetByCompareByVo(saleCredit,contractOutBoundList);
+ /* InvoicingVo invoicingVo = invoiceService.toGetByCompareByVo(saleCredit,contractOutBoundList);
try {
Map<String, Object> objectMap = invoiceService.toKaipiao(invoicingVo);
Boolean success = (Boolean) objectMap.get("success");
@@ -157,15 +164,14 @@
//StringBuffer errMsg = new StringBuffer();
BipResVo bipResVo = bipYsService.sendBIPYs(saleCredit);
if (!bipResVo.getCode().equals("200")) {
- /*if (StrUtil.isNotEmpty(errMsg)) {
+ *//*if (StrUtil.isNotEmpty(errMsg)) {
errMsg.append(",");
}
- errMsg.append(saleCredit.getCreditCodeB()+ "搴旀敹鍙戠エ鎺ㄩ�佸け璐�:" + bipResVo.getMessage());*/
+ errMsg.append(saleCredit.getCreditCodeB()+ "搴旀敹鍙戠エ鎺ㄩ�佸け璐�:" + bipResVo.getMessage());*//*
return R.failed("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip澶辫触锛宔rr:" + bipResVo.getMessage());
}else{
return R.ok("寮�绁ㄦ垚鍔�,鎺ㄩ�乥ig鎴愬姛锛�");
}
-
}else{
saleCredit.setStatus(2);
saleCreditService.updateById(saleCredit);
@@ -176,11 +182,158 @@
saleCredit.setStatus(3);
saleCreditService.updateById(saleCredit);
return R.failed("寮�绁ㄥけ璐ワ紒");
- }
+ }*/
//return R.ok("閿�鍞寕璐︾敓鎴愶紒");
+
+
+ //鍑哄簱鍗曞凡寮�绁�
+ List<ContractOutBound> contractOutBounds = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
+ .eq(ContractOutBound::getSaleCreditId,saleCredit.getId())
+ );
+ for(ContractOutBound contractOutBound : contractOutBounds){
+ contractOutBound.setInvoiceSatus(2);
+ }
+ contractOutBoundService.updateBatchById(contractOutBounds);
+
+ //寮�绁ㄦ垚鍔�
+ //寮�绁ㄨ褰曞崟钃濈エ淇℃伅瀛樺偍
+ saleCredit.setBlueResultStatus(1);
+ saleCredit.setInvoiceRemark("寮�绁ㄦ垚鍔燂紒");
+ saleCredit.setBlueInvoiceTime(DateTime.now());
+ saleCreditService.updateById(saleCredit);
+
+ //鐩稿叧鍚堝悓閲戦鍜屽紑绁ㄧ姸鎬佽繘琛屼慨鏀广��
+ Contract contract = contractService.getById(saleCredit.getContractId());
+ String billingStatus = contract.getBillingStatus();
+
+ if(contract.getBillingAmout()==null){
+ contract.setBillingAmout(saleCredit.getTotalAmount());
+ }else{
+ contract.setBillingAmout(contract.getBillingAmout().add(saleCredit.getTotalAmount()));
+ }
+
+ int res = contract.getAmount().compareTo(contract.getBillingAmout());
+
+ if("2".equals(billingStatus)) {
+ if (res == 0) {
+ contract.setBillingStatus("3");
+ } else if (res > 0) {
+ contract.setBillingStatus("2");
+ } else {
+ return R.failed("宸蹭粯閲戦涓嶈兘澶т簬鎬婚噾棰濓紒");
+ }
+ }
+
+ contractService.updateById(contract);
+ return R.ok("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip鎴愬姛锛�");
}
+ /**
+ * 鎷兼帴閿�鍞寕璐�
+ * @param contract1 閿�鍞寕璐�
+ * @return R
+ */
+ @Operation(summary = "鑾峰彇鍙戠エ鍒楄〃" , description = "鑾峰彇鍙戠エ鍒楄〃" )
+ @SysLog("鑾峰彇鍙戠エ鍒楄〃" )
+ @GetMapping("/getInvoices")
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
+ public R getInvoices(@ParameterObject Contract contract1) {
+ Contract contract = contractService.getById(contract1.getId());
+ if(contract==null){
+ return R.failed("鍚堝悓id閿欒");
+ }
+ List<SaleCredit> saleCredits = saleCreditService.list(new LambdaQueryWrapper<SaleCredit>()
+ .eq(SaleCredit::getContractId,contract1.getId())
+ .orderByAsc(BaseModel::getCreateTime)
+ );
+ for(SaleCredit saleCredit : saleCredits){
+ if(saleCredit.getRedResultStatus()!=null && saleCredit.getRedResultStatus()>0){//璇存槑宸插紑绾㈢エ
+ saleCredit.setBlueResultStatus(0);
+ if(saleCredit.getRedResultStatus()==1){
+ saleCredit.setInvoiceRemark("寮�绾㈢エ鎴愬姛锛�");
+ saleCredit.setInvoicRedUrl("绾㈢エurl");
+ }else{
+ //鏄剧ず saleCredit.getInvoiceRemark();
+ }
+ }else{
+ if(saleCredit.getBlueResultStatus()==1){
+ saleCredit.setInvoiceRemark("寮�钃濈エ鎴愬姛锛�");
+ saleCredit.setInvoicUrl("钃濈エurl");
+ }else if(saleCredit.getBlueResultStatus()==2){
+ //鏄剧ず saleCredit.getInvoiceRemark();
+ }
+ }
+ }
+ return R.ok(saleCredits);
+ }
+ /**
+ * 鎷兼帴閿�鍞寕璐�
+ * @param saleCredit1 閿�鍞寕璐�
+ * @return R
+ */
+ @Operation(summary = "绾㈠啿鍙戠エ" , description = "绾㈠啿鍙戠エ" )
+ @SysLog("绾㈠啿鍙戠エ" )
+ @PostMapping("/toRedStamp")
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_edit')" )
+ public R toRedStamp(@RequestBody SaleCredit saleCredit1) {
+ if(saleCredit1.getId()==null){
+ return R.failed("閿�鍞寕璐d涓嶈兘涓虹┖锛�");
+ }
+ SaleCredit saleCredit = saleCreditService.getById(saleCredit1.getId());
+ if(saleCredit==null){
+ return R.failed("閿�鍞寕璐d涓嶈兘涓虹┖锛�");
+ }
+
+ /*try {
+ Map<String, Object> map = invoiceService.toRedTicket(saleCredit);
+ Boolean success = (Boolean) map.get("success");
+ if(success){
+ return R.ok("绾㈠瓧寮�绁ㄦ垚鍔�");
+ }else {
+ return R.failed((String) map.get("message"));
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ return R.failed("绾㈠瓧寮�绁ㄥけ璐�");
+ }*/
+
+
+ //鍑哄簱鍗曟仮澶嶅埌鏈紑绁ㄧ姸鎬�
+ List<ContractOutBound> outBoundList = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
+ .eq(ContractOutBound::getSaleCreditId,saleCredit.getId())
+ );
+ for(ContractOutBound outBound : outBoundList){
+ outBound.setInvoiceSatus(0);
+ outBound.setSaleCreditId(0l);
+ }
+ contractOutBoundService.updateBatchById(outBoundList);
+
+ saleCredit.setRedInvoiceTime(DateTime.now());
+ saleCredit.setRedResultStatus(1);
+ saleCredit.setInvoiceRemark("寮�绾㈢エ鎴愬姛锛�");
+ saleCreditService.updateById(saleCredit);
+
+
+ //鍚堝悓宸插紑绁ㄩ噾棰濆拰鐘舵�佽繕鍘�
+ Contract contract = contractService.getById(saleCredit.getContractId());
+ String billingStatus = contract.getBillingStatus();
+ BigDecimal bill = contract.getBillingAmout() == null ? BigDecimal.ZERO : contract.getBillingAmout();
+ BigDecimal credit = saleCredit.getTotalAmount() == null ? BigDecimal.ZERO : saleCredit.getTotalAmount();
+ BigDecimal diff = bill.subtract(credit);
+ int res = diff.compareTo(BigDecimal.ZERO);
+
+ if("3".equals(billingStatus)){
+ if(res>=0){
+ contract.setBillingStatus("2");
+ contract.setBillingAmout(BigDecimal.ZERO);
+ }else{
+ return R.failed("宸插紑绁ㄩ噾棰濊礋鏁版姤閿欙紒");
+ }
+ }
+ contractService.updateById(contract);
+ return R.ok("绾㈠啿寮�绁ㄦ垚鍔燂紒");
+ }
@@ -234,23 +387,28 @@
ContractOutBoundVo vo = new ContractOutBoundVo();
BeanUtil.copyProperties(outBound,vo);
Product product = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getErpCode,outBound.getSubjectMatterCode()).last("limit 1"));
+ Product productP = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getId,product.getParentId()).last("limit 1"));
if(product!=null){
vo.setProductId(product.getId());
+ vo.setInvoiceName("*"+product.getTaxClass()+"*" + (productP!=null?productP.getProductName():"") + "*");
vo.setTaxClass(product.getTaxClass());
vo.setTaxCode(product.getTaxCode());
vo.setTaxRate(product.getTaxRate());
}
+
ContractSubjectMatter matter = contractSubjectMatterService.getOne(new LambdaQueryWrapper<ContractSubjectMatter>()
.eq(ContractSubjectMatter::getContractId,contract.getId())
.eq(ContractSubjectMatter::getMaterialCode,outBound.getSubjectMatterCode())
.last("limit 1")
);
+
if(matter!=null){
vo.setSpecification(matter.getSpecification());
vo.setUnit(matter.getUnit());
vo.setUnitPrice(matter.getUnitPrice());
}
+
list.add(vo);
}
saleCredit.setContractOutBoundList(list);
--
Gitblit v1.9.1