Merge remote-tracking branch 'origin/fi849' into release

release
王琦 2 years ago
commit a6d204bea4
  1. 86
      dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java
  2. 24
      dxhy-erp/src/main/java/com/dxhy/erp/model/ZDATAN.java
  3. 8
      dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java
  4. 5
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java
  5. 58
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ReceiptOutServiceImpl.java

@ -1259,7 +1259,7 @@ public class InterfaceController extends AbstractController {
} }
} }
public String transferOut(ErpInvoiceData erpInvoiceData){ public String transferOuts(ErpInvoiceData erpInvoiceData){
String zdata = erpInvoiceData.getIS_INPUT().getZDATA(); String zdata = erpInvoiceData.getIS_INPUT().getZDATA();
List<Map> list = JSON.parseArray(zdata, Map.class); List<Map> list = JSON.parseArray(zdata, Map.class);
@ -1414,5 +1414,89 @@ public class InterfaceController extends AbstractController {
} }
public String transferOut(@RequestBody ErpInvoiceData erpInvoiceData){
try {
//转化实体
String zdata = erpInvoiceData.getIS_INPUT().getZDATA();
List<ZDATAN> zdatans = JSONObject.parseArray(zdata, ZDATAN.class);
//返回结果实体
OutPut outPut = new OutPut();
EsOutPutResp es = new EsOutPutResp();
es.setBSKEY(erpInvoiceData.getIS_INPUT().getBSKEY());
es.setSAPKEY(erpInvoiceData.getIS_INPUT().getSAPKEY());
//校验发票号码
boolean allMatch = zdatans.stream().allMatch(e -> StringUtils.isNotBlank(e.getZFPHM()));
//号码存在为空直接返回错误
if (!allMatch) {
es.setZTYPE("E");
es.setZMESSAGE("发票号码不能为空");
outPut.setES_OUTPUT(es);
log.info("进项税转出传入发票存在没有发票号码发票");
return JsonUtils.getInstance().toJsonString(outPut);
}
StringBuilder uuids = new StringBuilder();
zdatans.forEach(e -> uuids.append(e.getZFPDM() == null ? "" : e.getZFPDM()).append(e.getZFPHM()).append(","));
//根据uuid查询发票
String[] ids = uuids.toString().split(",");
DynamicContextHolder.push("business"+DbConstant.BUSINESS_READ);
List<BaseTDxRecordInvoice> tDxRecordInvoices = baseIReceiptInvoiceService.selectByUuids(ids);
if (tDxRecordInvoices == null || tDxRecordInvoices.size() == 0 || tDxRecordInvoices.size() != ids.length) {
es.setZTYPE("E");
es.setZMESSAGE("发票在发票系统中不存在");
outPut.setES_OUTPUT(es);
log.info("进项税转出传入发票在发票系统中不存在");
return JsonUtils.getInstance().toJsonString(outPut);
}
List<BaseTDxRecordInvoice> collect = tDxRecordInvoices.stream().filter(e -> "0".equals(e.getRzhYesorno())).collect(Collectors.toList());
if (collect.size() > 0) {
es.setZTYPE("E");
es.setZMESSAGE("发票未认证不可转出");
outPut.setES_OUTPUT(es);
log.info("进项税转出传入发票存在未认证发票");
return JsonUtils.getInstance().toJsonString(outPut);
}
List<BaseTDxRecordInvoice> collect1 = tDxRecordInvoices.stream().filter(e -> BigDecimal.ZERO.compareTo(e.getTaxAmount()) > 0).collect(Collectors.toList());
if (collect1 != null && collect1.size()>0){
es.setZTYPE("E");
es.setZMESSAGE("税额小于零不可转出");
outPut.setES_OUTPUT(es);
log.info("进项税转出传入发票存在税额小于零发票");
return JsonUtils.getInstance().toJsonString(outPut);
}
//进项税转出或者取消转出
UserInfo userInfo = new UserInfo();
iReceiptOutService.transferOrcancelOut(zdatans,userInfo);
es.setZTYPE("Y");
es.setZMESSAGE("操作成功");
log.info("进项税转出成功");
return JsonUtils.getInstance().toJsonString(es);
}catch(RuntimeException e){
e.printStackTrace();
log.error("error", e.getMessage());
OutPut outPut = new OutPut();
EsOutPutResp es = new EsOutPutResp();
es.setBSKEY(erpInvoiceData.getIS_INPUT().getBSKEY());
es.setSAPKEY(erpInvoiceData.getIS_INPUT().getSAPKEY());
es.setZTYPE("E");
es.setZMESSAGE(e.getMessage());
outPut.setES_OUTPUT(es);
return JsonUtils.getInstance().toJsonString(outPut);
} catch (Exception e){
e.printStackTrace();
log.error("error", e.getMessage());
OutPut outPut = new OutPut();
EsOutPutResp es = new EsOutPutResp();
es.setBSKEY(erpInvoiceData.getIS_INPUT().getBSKEY());
es.setSAPKEY(erpInvoiceData.getIS_INPUT().getSAPKEY());
es.setZTYPE("E");
es.setZMESSAGE("系统内部错误");
outPut.setES_OUTPUT(es);
return JsonUtils.getInstance().toJsonString(outPut);
}
}
} }

@ -0,0 +1,24 @@
package com.dxhy.erp.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ZDATAN {
@JsonProperty(value = "IS_INPUT")
private String MANDT;
@JsonProperty(value = "IS_INPUT")
private String ZBZDH;
@JsonProperty(value = "IS_INPUT")
private String ZFPDM;
@JsonProperty(value = "IS_INPUT")
private String ZFPHM;
@JsonProperty(value = "IS_INPUT")
private BigDecimal JXSZC;
@JsonProperty(value = "IS_INPUT")
private String ZZCYY;
@JsonProperty(value = "IS_INPUT")
private String BUDAT;
}

@ -2,7 +2,13 @@ package com.dxhy.erp.service;
import com.dxhy.common.vo.UserInfo; import com.dxhy.common.vo.UserInfo;
import com.dxhy.erp.entity.BaseInvoiceEditVO; import com.dxhy.erp.entity.BaseInvoiceEditVO;
import com.dxhy.erp.entity.BaseTDxRecordInvoice;
import com.dxhy.erp.model.ErpInvoiceData; import com.dxhy.erp.model.ErpInvoiceData;
import com.dxhy.erp.model.ZDATAN;
import org.junit.jupiter.api.parallel.Execution;
import java.util.List;
import java.util.concurrent.ExecutionException;
/** /**
* @Author wangzhikun * @Author wangzhikun
@ -11,4 +17,6 @@ import com.dxhy.erp.model.ErpInvoiceData;
public interface IReceiptOutService { public interface IReceiptOutService {
String transfer(BaseInvoiceEditVO baseInvoiceEditVO, UserInfo userInfo); String transfer(BaseInvoiceEditVO baseInvoiceEditVO, UserInfo userInfo);
String transferOrcancelOut(List<ZDATAN> zdatans,UserInfo userInfo);
} }

@ -63,7 +63,7 @@ public class BaseIReceiptInvoiceServiceImpl extends MpBaseServiceImpl<BaseTDxRec
* @return 返回结果 * @return 返回结果
*/ */
@Override @Override
public String cancelOut(BaseReceiptOutCancelEditReqVO reqVO) { public String cancelOut(BaseReceiptOutCancelEditReqVO reqVO){
DynamicContextHolder.push("business"+ DbConstant.BUSINESS_WRITE); DynamicContextHolder.push("business"+ DbConstant.BUSINESS_WRITE);
String[] uuids = reqVO.getPrimaryKey().split(","); String[] uuids = reqVO.getPrimaryKey().split(",");
@ -123,6 +123,8 @@ public class BaseIReceiptInvoiceServiceImpl extends MpBaseServiceImpl<BaseTDxRec
condRecord.setOutInvoiceAmout(null); condRecord.setOutInvoiceAmout(null);
// 转出税额 // 转出税额
condRecord.setOutTaxAmount(null); condRecord.setOutTaxAmount(null);
//转出所属期
condRecord.setOutBelongDate(null);
UpdateWrapper<BaseTDxRecordInvoice> updateWrapper = new UpdateWrapper<>(); UpdateWrapper<BaseTDxRecordInvoice> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("out_status",condRecord.getOutStatus()); updateWrapper.set("out_status",condRecord.getOutStatus());
updateWrapper.set("out_reason",condRecord.getOutReason()); updateWrapper.set("out_reason",condRecord.getOutReason());
@ -130,6 +132,7 @@ public class BaseIReceiptInvoiceServiceImpl extends MpBaseServiceImpl<BaseTDxRec
updateWrapper.set("out_by",condRecord.getOutBy()); updateWrapper.set("out_by",condRecord.getOutBy());
updateWrapper.set("out_invoice_amout",condRecord.getOutInvoiceAmout()); updateWrapper.set("out_invoice_amout",condRecord.getOutInvoiceAmout());
updateWrapper.set("out_tax_amount",condRecord.getOutTaxAmount()); updateWrapper.set("out_tax_amount",condRecord.getOutTaxAmount());
updateWrapper.set("out_belong_date",condRecord.getOutTaxAmount());
updateWrapper.eq("uuid",condRecord.getUuid()); updateWrapper.eq("uuid",condRecord.getUuid());
super.baseMapper.update(null,updateWrapper); super.baseMapper.update(null,updateWrapper);

@ -14,13 +14,12 @@ import com.dxhy.erp.dao.BaseReceiptOutDao;
import com.dxhy.erp.entity.BaseInvoiceEditVO; import com.dxhy.erp.entity.BaseInvoiceEditVO;
import com.dxhy.erp.entity.BaseTDxRecordInvoice; import com.dxhy.erp.entity.BaseTDxRecordInvoice;
import com.dxhy.erp.entity.BaseTDxRecordInvoiceOut; import com.dxhy.erp.entity.BaseTDxRecordInvoiceOut;
import com.dxhy.erp.model.ErpInvoiceData; import com.dxhy.erp.model.*;
import com.dxhy.erp.model.EsOutPutResp;
import com.dxhy.erp.model.OutPut;
import com.dxhy.erp.service.BaseIReceiptInvoiceService; import com.dxhy.erp.service.BaseIReceiptInvoiceService;
import com.dxhy.erp.service.IReceiptOutService; import com.dxhy.erp.service.IReceiptOutService;
import com.dxhy.erp.utils.JsonUtils; import com.dxhy.erp.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -43,7 +42,7 @@ public class ReceiptOutServiceImpl extends MpBaseServiceImpl<BaseReceiptOutDao,
@Resource @Resource
BaseIReceiptInvoiceService baseIReceiptInvoiceService; BaseIReceiptInvoiceService baseIReceiptInvoiceService;
@Override @Override
public String transfer( BaseInvoiceEditVO condVO, UserInfo userInfo) { public String transfer( BaseInvoiceEditVO condVO, UserInfo userInfo){
DynamicContextHolder.push("business"+DbConstant.BUSINESS_READ); DynamicContextHolder.push("business"+DbConstant.BUSINESS_READ);
String idStr = condVO.getPrimaryKey(); String idStr = condVO.getPrimaryKey();
@ -52,13 +51,7 @@ public class ReceiptOutServiceImpl extends MpBaseServiceImpl<BaseReceiptOutDao,
// first:查询出底账表相关数据 // first:查询出底账表相关数据
List<BaseTDxRecordInvoice> invoices = baseIReceiptInvoiceService.selectByUuids(ids); List<BaseTDxRecordInvoice> invoices = baseIReceiptInvoiceService.selectByUuids(ids);
if(CollectionUtils.isEmpty(invoices)){
return TransferContant.INVOICE_NOT_EXIT;
}
invoices = invoices.stream().filter(e -> !"0".equals(e.getRzhYesorno())).collect(Collectors.toList());
if(CollectionUtils.isEmpty(invoices)){
return TransferContant.NOT_RZ;
}
// second:根据uuids查询出转出明细并转为map,key=uuid ,value=转出明细 // second:根据uuids查询出转出明细并转为map,key=uuid ,value=转出明细
List<BaseTDxRecordInvoiceOut> outs = listByUuids(ids); List<BaseTDxRecordInvoiceOut> outs = listByUuids(ids);
Map<String, BaseTDxRecordInvoiceOut> outMap = Map<String, BaseTDxRecordInvoiceOut> outMap =
@ -80,11 +73,34 @@ public class ReceiptOutServiceImpl extends MpBaseServiceImpl<BaseReceiptOutDao,
outList.add(e); outList.add(e);
}); });
DynamicContextHolder.push("business" + DbConstant.BUSINESS_WRITE);
excuteTransferWrite(condList, outList); excuteTransferWrite(condList, outList);
return TransferContant.SUCCESS; return TransferContant.SUCCESS;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public String transferOrcancelOut(List<ZDATAN> zdatans,UserInfo userInfo){
String result = "";
for (ZDATAN zdata : zdatans) {
//转出税额大于1则是转出
if (zdata.getJXSZC().compareTo(BigDecimal.ZERO)==1){
BaseInvoiceEditVO baseInvoiceEditVO = new BaseInvoiceEditVO();
baseInvoiceEditVO.setPrimaryKey(zdata.getZFPDM()==null?"":zdata.getZFPDM()+zdata.getZFPHM());
baseInvoiceEditVO.setOutReason(zdata.getZZCYY());
baseInvoiceEditVO.setOutTax(zdata.getJXSZC().toPlainString());
baseInvoiceEditVO.setOutStatus("1");
baseInvoiceEditVO.setOutTaxPeriod(zdata.getBUDAT());
this.transfer(baseInvoiceEditVO,userInfo);
}else {//转出税额小于0取消转出
BaseReceiptOutCancelEditReqVO baseReceiptOutCancelEditReqVO = new BaseReceiptOutCancelEditReqVO();
baseReceiptOutCancelEditReqVO.setPrimaryKey(zdata.getZFPDM()==null?"":zdata.getZFPDM()+zdata.getZFPHM());
baseIReceiptInvoiceService.cancelOut(baseReceiptOutCancelEditReqVO);
}
}
return TransferContant.SUCCESS;
}
/** /**
* 根据uuids查询进项税转出明细 * 根据uuids查询进项税转出明细
* *
@ -137,10 +153,19 @@ public class ReceiptOutServiceImpl extends MpBaseServiceImpl<BaseReceiptOutDao,
} }
/*全部转出 */ /*全部转出 */
if (JxszcZtEnum.QBZC.getZcztDm().equals(condVO.getOutStatus())) { if (JxszcZtEnum.QBZC.getZcztDm().equals(condVO.getOutStatus())) {
if (record.getOutTaxAmount() != null && record.getOutTaxAmount().compareTo(BigDecimal.ZERO)>0){
throw new RuntimeException("累计转出税额不能大于发票税额");
}
// 转出金额 // 转出金额
condRecord.setOutInvoiceAmout(record.getInvoiceAmount()); condRecord.setOutInvoiceAmout(record.getInvoiceAmount());
// 转出税额 // 转出税额
condRecord.setOutTaxAmount(record.getDkTaxAmount()); condRecord.setOutTaxAmount(record.getDkTaxAmount());
if (condRecord.getOutTaxAmount() == null){
condRecord.setOutTaxAmount(new BigDecimal(condVO.getOutTax()));
}
if (condRecord.getOutTaxAmount().compareTo(record.getTaxAmount()) > 0){
throw new RuntimeException("转出税额不能大于发票税额");
}
} }
/*部分转出 */ /*部分转出 */
if (JxszcZtEnum.BFZC.getZcztDm().equals(condVO.getOutStatus())) { if (JxszcZtEnum.BFZC.getZcztDm().equals(condVO.getOutStatus())) {
@ -206,10 +231,19 @@ public class ReceiptOutServiceImpl extends MpBaseServiceImpl<BaseReceiptOutDao,
/* 全部转出 */ /* 全部转出 */
if (JxszcZtEnum.QBZC.getZcztDm().equals(condVO.getOutStatus())) { if (JxszcZtEnum.QBZC.getZcztDm().equals(condVO.getOutStatus())) {
if (invoice.getOutTaxAmount() != null && invoice.getOutTaxAmount().compareTo(BigDecimal.ZERO)>0){
throw new RuntimeException("累计转出税额不能大于发票税额");
}
// 转出金额 // 转出金额
record.setOutInvoiceAmout(invoice.getInvoiceAmount()); record.setOutInvoiceAmout(invoice.getInvoiceAmount());
// 转出税额 // 转出税额
record.setOutTaxAmount(invoice.getDkTaxAmount()); record.setOutTaxAmount(invoice.getDkTaxAmount());
if (record.getOutTaxAmount() == null){
record.setOutTaxAmount(new BigDecimal(condVO.getOutTax()));
}
if (record.getOutTaxAmount().compareTo(invoice.getTaxAmount()) > 0){
throw new RuntimeException("转出税额不能大于发票税额");
}
} }
/* 部分转出 */ /* 部分转出 */
if (JxszcZtEnum.BFZC.getZcztDm().equals(condVO.getOutStatus())) { if (JxszcZtEnum.BFZC.getZcztDm().equals(condVO.getOutStatus())) {

Loading…
Cancel
Save