diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java index f5bf6160..f1d13bc2 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java @@ -630,9 +630,30 @@ public class SDNYMainProcessController extends AbstractController { QueryWrapper saleDetailWrapper = new QueryWrapper<>(); saleDetailWrapper.eq("invoice_no", invoiceNo); List recordInvoiceSaleDetailModel = snPushCheckRecordService.selectSaleListByWrapper(saleDetailWrapper); + List baseTDxRecordInvoiceDetail = null; + if(recordInvoiceSaleDetailModel == null || recordInvoiceSaleDetailModel.size() == 0){ + log.info("明细行为空,查验补充信息"); + checkInvoiceResult = snPushCheckRecordService.singleCheckInvoice(pramsMap, null); + + if (!checkInvoiceResult.containsKey("code")) { + if (!checkInvoiceResult.containsKey("cyjg")) { + snPushCheckRecordService.updateInvoice(dbName, checkInvoiceResult, recordWrapper); + QueryWrapper detailWrapper = new QueryWrapper<>(); + detailWrapper.eq("uuid", uuid); + baseTDxRecordInvoiceDetail = snPushCheckRecordService.selectRecordDetailListByWrapper(detailWrapper); + } else if (checkInvoiceResult.containsKey("cyjg") && !"0001".equals(checkInvoiceResult.getString("cyjg"))) { + data = errorInfo(checkInvoiceResult, data); + return ResponseEntity.ok(JSONObject.toJSONString(data)); + } + } + checkInvoiceByUuid = snPushCheckRecordService.selectRecordByWrapper(recordWrapper); + } JSONObject checkInvoice = (JSONObject) JSONObject.toJSON(tdxSaleRecordInvoice); JSONArray saleDetail = (JSONArray) JSONObject.toJSON(recordInvoiceSaleDetailModel); + if(baseTDxRecordInvoiceDetail!= null && baseTDxRecordInvoiceDetail.size() > 0){ + saleDetail = (JSONArray) JSONObject.toJSON(baseTDxRecordInvoiceDetail); + } convertToResult(checkInvoice, saleDetail); data.put("data", checkInvoice); @@ -685,7 +706,7 @@ public class SDNYMainProcessController extends AbstractController { } } else { //其他类发票,直接入库 - R data = new R(1000, "default success"); + R data = new R(500, "default success"); if (checkInvoiceResult != null && !checkInvoiceResult.isEmpty()) { log.info("其他类发票,不做查验,直接入库"); data.put("message", "success"); @@ -1400,7 +1421,7 @@ public class SDNYMainProcessController extends AbstractController { * @param params * @return */ - //@PostMapping("/imageSubmitSalesInvoice") + @PostMapping("/imageSubmitSalesInvoice") @ResponseBody @SysLog("影像系统提交销项发票") public ResponseEntity imageSubmitSalesInvoice(@RequestBody SNRequestObject params) { diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/S4Request.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/S4Request.java index 5ca78cc1..dd4bfe6d 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/S4Request.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/S4Request.java @@ -1,5 +1,6 @@ package com.dxhy.erp.entity.sdny; +import com.alibaba.fastjson.annotation.JSONField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -23,16 +24,27 @@ import javax.xml.bind.annotation.XmlRootElement; @NoArgsConstructor public class S4Request { + @JSONField(name = "SYSID") private String SYSID; + @JSONField(name = "IFYWID") private String IFYWID; + @JSONField(name = "BSKEY") private String BSKEY; + @JSONField(name = "SAPKEY") private String SAPKEY; + @JSONField(name = "ZORG") private String ZORG; + @JSONField(name = "ZFILED1") private String ZFILED1; + @JSONField(name = "ZFILED2") private String ZFILED2; + @JSONField(name = "ZFILED3") private String ZFILED3; + @JSONField(name = "ZFILED4") private String ZFILED4; + @JSONField(name = "ZFILED5") private String ZFILED5; + @JSONField(name = "ZDATA") private String ZDATA; diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SNRequestObject.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SNRequestObject.java index 2f1d9fee..f3fb78cd 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SNRequestObject.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SNRequestObject.java @@ -2,6 +2,7 @@ package com.dxhy.erp.entity.sdny; import lombok.Data; +import java.util.Date; import java.util.List; @Data diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java index 069753c9..d6ec0dc0 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java @@ -1243,10 +1243,10 @@ public class SNPushCheckRecordService extends AbstractServiceAdapter { public void updateInvoice(String dbName, JSONObject checkInvoiceResult, QueryWrapper recordWrapper) throws Exception { //先删除原有主数据,再查验更新主数据和明细数据 int delete = snPushCheckRecordService.deleteRecordByWrapper(recordWrapper); - if (delete > 0) { - checkInvoiceResult.put("invoiceNo", checkInvoiceResult.getString("invoiceNumber")); - signSaveInvoiceInfoService.saveQueryInvoiceResult(checkInvoiceResult, "", "1", dbName); - } + + checkInvoiceResult.put("invoiceNo", checkInvoiceResult.getString("invoiceNumber")); + signSaveInvoiceInfoService.saveQueryInvoiceResult(checkInvoiceResult, "", "1", dbName); + } } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java index c3d4c475..b2094e70 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java @@ -30,7 +30,7 @@ import java.util.*; import java.util.stream.Collectors; @Service -//@Transactional(rollbackFor = Exception.class) +@Transactional(rollbackFor = Exception.class) @Slf4j public class ImageSubmitServiceImpl implements ImageSubmitService { @@ -69,7 +69,17 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { queryWrapper.in("uuid", uuidList); List invoicesList = tdxRecordInvoiceDao.selectList(queryWrapper); if (invoicesList == null || invoicesList.size() == 0) { - return R.error(500, "未查询到发票信息,请重新查验"); + QueryWrapper salesQueryWrapper = new QueryWrapper<>(); + salesQueryWrapper.in("uuid", uuidList); + List saleRecordInvoices = sdnyTDxSaleRecordInvoiceDao.selectList(salesQueryWrapper); + if (saleRecordInvoices == null || saleRecordInvoices.size() == 0) { + return R.error(500, "未查询到发票信息,请重新查验"); + } + invoicesList = new ArrayList<>(); + for (SdnyTDxSaleRecordInvoice item : saleRecordInvoices) { + SdnyTDxRecordInvoice invoice = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(item), SdnyTDxRecordInvoice.class); + invoicesList.add(invoice); + } } if (invoicesList.size() != uuidList.size()) { StringBuffer msg = new StringBuffer(); @@ -88,7 +98,17 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { detailQueryWrapper.in("uuid", uuidList); List detailList = detailDao.selectList(detailQueryWrapper); if (detailList == null || detailList.size() == 0) { - return R.error(500,"未查询到发票明细信息,请重新查验"); + QueryWrapper salesQueryWrapper = new QueryWrapper<>(); + salesQueryWrapper.in("uuid", uuidList); + List salesDetailList = detailSalesDao.selectList(salesQueryWrapper); + if (salesDetailList == null || salesDetailList.size() == 0) { + return R.error(500,"未查询到发票明细信息,请重新查验"); + } + detailList = new ArrayList<>(); + for (SdnyTDxRecordInvoiceDetailSales item : salesDetailList) { + SdnyTDxRecordInvoiceDetail detail = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(item), SdnyTDxRecordInvoiceDetail.class); + detailList.add(detail); + } } Map> detailiMap = new HashMap<>(); detailList.stream().forEach(item -> { @@ -162,6 +182,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { saleRecordInvoice.setSort(paramsInvoiceMap.get(invoice.getUuid()).getSort()); saleRecordInvoice.setFileId(paramsInvoiceMap.get(invoice.getUuid()).getFileId()); saleRecordInvoice.setFileName(paramsInvoiceMap.get(invoice.getUuid()).getFileName()); + saleRecordInvoice.setCheckDate(DateUtils.strToDate(paramsInvoiceMap.get(invoice.getUuid()).getCheckDate())); salesInvoiceList.add(saleRecordInvoice); }); @@ -249,7 +270,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { zdata.setZGXR(params.getJbrUserNum()); zdata.setZCYZT("1"); zdata.setZCYJG("查验成功"); - zdata.setZCYRQ(dt); + zdata.setZCYRQ(DateUtils.dateToStr(item.getCheckDate(),"yyyy-MM-dd HH:mm:ss")); zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString()); zdata.setZZSE_Y(item.getTaxAmount().toPlainString()); zdata.setZHSJE_Y(item.getTotalAmount().toPlainString()); @@ -317,7 +338,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { param.put("IS_INPUT", request); //推送到SAP log.info("推送山能数据:{}", JSONObject.toJSONString(param)); - String result = snPushCheckRecordService.pushCheckResultToSAP(param.toJSONString()); + String result = snPushCheckRecordService.pushCheckResultToSAP(JSONObject.toJSONString(param)); JSONObject rs = JSONObject.parseObject(result).getJSONObject("ES_OUTPUT"); if (!"S".equals(rs.getString("ZTYPE"))) { return R.error(500,rs.getString("ZMESSAGE")); diff --git a/升级sql/销项发票提交.sql b/升级sql/销项发票提交.sql index 50f5399f..f7e06653 100644 --- a/升级sql/销项发票提交.sql +++ b/升级sql/销项发票提交.sql @@ -10,4 +10,6 @@ ALTER TABLE `dxhy_tertiary`.`t_dx_sale_record_invoice` MODIFY COLUMN `image_id` ALTER TABLE `dxhy_tertiary`.`t_dx_sale_record_invoice` MODIFY COLUMN `sn_voucher_number` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '山能凭证号' AFTER `account_period`; -ALTER TABLE `dxhy_detail`.`t_dx_record_invoice_detail_sales` MODIFY COLUMN `tax_code` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '税码' AFTER `kce`; \ No newline at end of file +ALTER TABLE `dxhy_tertiary`.`t_dx_record_invoice_detail_sales` MODIFY COLUMN `tax_code` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '税码' AFTER `kce`; + +ALTER TABLE dxhy_tertiary.t_dx_sale_record_invoice ADD INDEX image_id(image_id);