|
|
@ -2,6 +2,7 @@ package com.dxhy.erp.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
import com.dxhy.common.constant.DbConstant; |
|
|
|
import com.dxhy.common.constant.DbConstant; |
|
|
@ -29,7 +30,7 @@ import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
@Service |
|
|
|
@Service |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
//@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Slf4j |
|
|
|
@Slf4j |
|
|
|
public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
|
|
|
|
|
|
@ -49,6 +50,9 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
private SdnyTDxRecordInvoiceDetailSalesService sdnyTDxRecordInvoiceDetailSalesService; |
|
|
|
private SdnyTDxRecordInvoiceDetailSalesService sdnyTDxRecordInvoiceDetailSalesService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
|
|
private SdnyTDxRecordInvoiceDetailSalesDao detailSalesDao; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
private SNPushCheckRecordService snPushCheckRecordService; |
|
|
|
private SNPushCheckRecordService snPushCheckRecordService; |
|
|
|
|
|
|
|
|
|
|
@ -81,10 +85,13 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
String errorMsg = msg.toString(); |
|
|
|
String errorMsg = msg.toString(); |
|
|
|
return R.error(500, "未查询到如下发票,请重新查验," + errorMsg); |
|
|
|
return R.error(500, "未查询到如下发票,请重新查验," + errorMsg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
DynamicContextHolder.push(DbConstant.DETAIL_WRITE); |
|
|
|
QueryWrapper<SdnyTDxRecordInvoiceDetail> detailQueryWrapper = new QueryWrapper<>(); |
|
|
|
QueryWrapper<SdnyTDxRecordInvoiceDetail> detailQueryWrapper = new QueryWrapper<>(); |
|
|
|
detailQueryWrapper.in("uuid", uuidList); |
|
|
|
detailQueryWrapper.in("uuid", uuidList); |
|
|
|
List<SdnyTDxRecordInvoiceDetail> detailList = detailDao.selectList(detailQueryWrapper); |
|
|
|
List<SdnyTDxRecordInvoiceDetail> detailList = detailDao.selectList(detailQueryWrapper); |
|
|
|
|
|
|
|
if (detailList == null || detailList.size() == 0) { |
|
|
|
|
|
|
|
return R.error(500,"未查询到发票明细信息,请重新查验"); |
|
|
|
|
|
|
|
} |
|
|
|
Map<String, List<SdnyTDxRecordInvoiceDetail>> detailiMap = new HashMap<>(); |
|
|
|
Map<String, List<SdnyTDxRecordInvoiceDetail>> detailiMap = new HashMap<>(); |
|
|
|
detailList.stream().forEach(item -> { |
|
|
|
detailList.stream().forEach(item -> { |
|
|
|
List<SdnyTDxRecordInvoiceDetail> list = null; |
|
|
|
List<SdnyTDxRecordInvoiceDetail> list = null; |
|
|
@ -98,6 +105,20 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
detailiMap.put(item.getUuid(), list); |
|
|
|
detailiMap.put(item.getUuid(), list); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
StringBuffer detailErrorMsg = new StringBuffer(); |
|
|
|
|
|
|
|
Boolean flag = false; |
|
|
|
|
|
|
|
for (String uuid : uuidList) { |
|
|
|
|
|
|
|
if (!detailiMap.containsKey(uuid)) { |
|
|
|
|
|
|
|
flag = true; |
|
|
|
|
|
|
|
SNInvoice invoice = paramsInvoiceMap.get(uuid); |
|
|
|
|
|
|
|
String errorMsg = "发票代码:" + invoice.getInvoiceCode() + ",发票号码:" + invoice.getInvoiceNumber() + ";"; |
|
|
|
|
|
|
|
detailErrorMsg.append(errorMsg); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (flag) { |
|
|
|
|
|
|
|
String errorMsg = detailErrorMsg.toString(); |
|
|
|
|
|
|
|
return R.error(500, "未查询到如下发票的明细行,请重新查验," + errorMsg); |
|
|
|
|
|
|
|
} |
|
|
|
invoicesList.stream().forEach(item -> { |
|
|
|
invoicesList.stream().forEach(item -> { |
|
|
|
item.setImageId(params.getImageId()); |
|
|
|
item.setImageId(params.getImageId()); |
|
|
|
item.setBzdh(params.getBillNum()); |
|
|
|
item.setBzdh(params.getBillNum()); |
|
|
@ -119,11 +140,11 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
// 新增
|
|
|
|
// 新增
|
|
|
|
saleRecordInvoice = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(invoice), SdnyTDxSaleRecordInvoice.class); |
|
|
|
saleRecordInvoice = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(invoice), SdnyTDxSaleRecordInvoice.class); |
|
|
|
saleRecordInvoice.setId(null); |
|
|
|
saleRecordInvoice.setId(null); |
|
|
|
|
|
|
|
log.info("插入销项表数据,{}",JSONObject.toJSONString(saleRecordInvoice)); |
|
|
|
DynamicContextHolder.push(DbConstant.BUSINESS_WRITE); |
|
|
|
DynamicContextHolder.push(DbConstant.BUSINESS_WRITE); |
|
|
|
sdnyTDxSaleRecordInvoiceDao.insert(saleRecordInvoice); |
|
|
|
sdnyTDxSaleRecordInvoiceDao.insert(saleRecordInvoice); |
|
|
|
DynamicContextHolder.push(DbConstant.DETAIL_WRITE); |
|
|
|
detailSalesDao.deleteByUUid(invoice.getUuid()); |
|
|
|
sdnyTDxRecordInvoiceDetailSalesService.getBaseMapper().delete(new UpdateWrapper<SdnyTDxRecordInvoiceDetailSales>().eq("uuid", invoice.getUuid())); |
|
|
|
detailSalesDao.batchInsert(salesDetailList); |
|
|
|
sdnyTDxRecordInvoiceDetailSalesService.saveBatch(salesDetailList); |
|
|
|
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// 修改
|
|
|
|
// 修改
|
|
|
|
saleRecordInvoice.setImageId(invoice.getImageId()); |
|
|
|
saleRecordInvoice.setImageId(invoice.getImageId()); |
|
|
@ -142,17 +163,21 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R salesInvoiceRollback(SNRequestObject params) { |
|
|
|
public R salesInvoiceRollback(SNRequestObject params) { |
|
|
|
|
|
|
|
DynamicContextHolder.push(DbConstant.BUSINESS_WRITE); |
|
|
|
|
|
|
|
List<SdnyTDxSaleRecordInvoice> data = sdnyTDxSaleRecordInvoiceDao.selectList(new QueryWrapper<SdnyTDxSaleRecordInvoice>().eq("image_id", params.getImageId())); |
|
|
|
|
|
|
|
if (data == null || data.size() == 0) { |
|
|
|
|
|
|
|
return R.error(500, "影像ID不存在"); |
|
|
|
|
|
|
|
} |
|
|
|
List<String> uuidList = new ArrayList<>(); |
|
|
|
List<String> uuidList = new ArrayList<>(); |
|
|
|
params.getInvoiceInfoList().stream().forEach(item -> { |
|
|
|
data.stream().forEach(item -> { |
|
|
|
String uuid = (StringUtils.isBlank(item.getInvoiceCode()) ? "" : item.getInvoiceCode()) + item.getInvoiceNumber(); |
|
|
|
uuidList.add(item.getUuid()); |
|
|
|
uuidList.add(uuid); |
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
UpdateWrapper<SdnyTDxRecordInvoiceDetailSales> updateWrapper = new UpdateWrapper<>(); |
|
|
|
UpdateWrapper<SdnyTDxSaleRecordInvoice> updateWrapper = new UpdateWrapper<>(); |
|
|
|
updateWrapper.set(true, "image_id", null); |
|
|
|
updateWrapper.set(true, "image_id", null); |
|
|
|
updateWrapper.set(true, "bzdh", null); |
|
|
|
updateWrapper.set(true, "bzdh", null); |
|
|
|
updateWrapper.set(true, "bzr", null); |
|
|
|
updateWrapper.set(true, "bzr", null); |
|
|
|
updateWrapper.in("uuid", uuidList); |
|
|
|
updateWrapper.in("uuid", uuidList); |
|
|
|
sdnyTDxRecordInvoiceDetailSalesService.update(updateWrapper); |
|
|
|
sdnyTDxSaleRecordInvoiceDao.update(null,updateWrapper); |
|
|
|
return pushSap(null, params); |
|
|
|
return pushSap(null, params); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|