diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java index 8fef20a8..b6173e29 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.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(); List list = JSON.parseArray(zdata, Map.class); @@ -1414,12 +1414,69 @@ public class InterfaceController extends AbstractController { } - public static void main(String[] args) { - String request = "{\"IS_INPUT\":{\"SYSID\":\"SAP\",\"IFYWID\":\"FI849\",\"SAPKEY\":\"GXC0612212150025\",\"ZFILED1\":\"FI\",\"ZFILED5\":850,\"ZDATA\":\"[{\\\"MANDT\\\":\\\"850\\\",\\\"ZBZDH\\\":\\\"GXC0612212150025\\\",\\\"ZFPDM\\\":\\\"\\\",\\\"ZFPHM\\\":\\\"\\\",\\\"JXSZC\\\":495.15,\\\"ZZCYY\\\":\\\"\\\",\\\"BUDAT\\\":\\\"2022-12-15\\\"}]\"}}"; + public String transferOut(@RequestBody ErpInvoiceData erpInvoiceData){ + try { + //转化实体 + String zdata = erpInvoiceData.getIS_INPUT().getZDATA(); + List 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()); - ErpInvoiceData erpInvoiceData = JSON.parseObject(request, ErpInvoiceData.class); - System.out.println(erpInvoiceData); - } + //校验发票号码 + 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())); + + //根据uuid查询发票 + String[] ids = uuids.toString().split(","); + List 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 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); + } + //进项税转出或者取消转出 + UserInfo userInfo = getUserInfo(); + iReceiptOutService.transferOrcancelOut(zdatans,userInfo); + es.setZTYPE("Y"); + es.setZMESSAGE("操作成功"); + log.info("进项税转出成功"); + return JsonUtils.getInstance().toJsonString(es); + }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); + } + } + } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java index d4ee01f7..f8c959a9 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java @@ -31,6 +31,6 @@ public interface BaseIReceiptInvoiceService { * 请求参数 * @return 返回结果 */ - String cancelOut(BaseReceiptOutCancelEditReqVO reqVO); + String cancelOut(BaseReceiptOutCancelEditReqVO reqVO) throws Exception; } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java index 01f71d7d..ae08af61 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java @@ -2,7 +2,13 @@ package com.dxhy.erp.service; import com.dxhy.common.vo.UserInfo; import com.dxhy.erp.entity.BaseInvoiceEditVO; +import com.dxhy.erp.entity.BaseTDxRecordInvoice; 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 @@ -10,5 +16,7 @@ import com.dxhy.erp.model.ErpInvoiceData; */ public interface IReceiptOutService { - String transfer(BaseInvoiceEditVO baseInvoiceEditVO, UserInfo userInfo); + String transfer(BaseInvoiceEditVO baseInvoiceEditVO, UserInfo userInfo) throws Exception; + + String transferOrcancelOut(List zdatans,UserInfo userInfo) throws Exception; } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java index 4594ec06..b36e1e16 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java @@ -63,7 +63,7 @@ public class BaseIReceiptInvoiceServiceImpl extends MpBaseServiceImpl 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=转出明细 List outs = listByUuids(ids); Map outMap = @@ -80,11 +72,34 @@ public class ReceiptOutServiceImpl extends MpBaseServiceImpl zdatans,UserInfo userInfo) throws Exception{ + 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查询进项税转出明细 *