|
|
@@ -269,194 +269,6 @@ public class KingdeeApiImpl implements KingdeeApi {
|
|
|
|
|
|
@Override
|
|
|
@TenantIgnore
|
|
|
- public Integer syncArReceivebill(Long tenantId) {
|
|
|
- Integer payStatus = 1;
|
|
|
- List<ExpenseOrderDO> expenseOrderDOS = orderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
|
|
|
- .eq(ExpenseOrderDO::getPayStatus, payStatus)
|
|
|
- .eq(ExpenseOrderDO::getBillingMonth, "2025-05")
|
|
|
- .eq(ExpenseOrderDO::getTenantId, tenantId));
|
|
|
- if (null == expenseOrderDOS) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- // 根据elderId , billingMonth ,payStatus比较相同,保留createdTime最新的数据
|
|
|
- List<ExpenseOrderDO> deduplicate = deduplicate(expenseOrderDOS);
|
|
|
-
|
|
|
- for (ExpenseOrderDO expenseOrderDO : deduplicate) {
|
|
|
- if (expenseOrderDO.getBillingMonth().compareTo("2024-11") < 0) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- String payTimeStr = DateUtils.formatDate(expenseOrderDO.getPayTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
|
|
|
- ElderlyInfoDO elderlyInfoDO = elderlyInfoMapper.selectById(expenseOrderDO.getElderId());
|
|
|
- if (null == elderlyInfoDO) continue;
|
|
|
- if (StringUtil.isEmptyORNull(elderlyInfoDO.getKingdeeCustomerNumber())) continue;
|
|
|
- if (!elderlyInfoDO.getElderName().equals("吕福元")) continue;
|
|
|
- TenantDO tenantDO = tenantMapper.selectById(expenseOrderDO.getTenantId());
|
|
|
-// String customerid = StringUtil.isNotEmptyORNull(elderlyInfoDO.getCustomerid()) ? elderlyInfoDO.getCustomerid() : "CUST0002";
|
|
|
- String customerid = StringUtil.isNotEmptyORNull(elderlyInfoDO.getKingdeeCustomerNumber()) ? elderlyInfoDO.getKingdeeCustomerNumber() : "CUST0002";
|
|
|
-
|
|
|
- String tenantid = StringUtil.isNotEmptyORNull(tenantDO.getKingdeeOrgid()) ? tenantDO.getKingdeeOrgid() : "106";
|
|
|
-
|
|
|
- String FBillNo = "BILL" + expenseOrderDO.getBillOrderNumber();
|
|
|
-
|
|
|
- // 应收单默认货币
|
|
|
- AtomicReference<String> FMAINBOOKSTDCURRID = new AtomicReference<>("PRE001");
|
|
|
- List<KingdeeRecordDO> kingdeeRecordDOS = kingdeeRecordMapper.selectList(new LambdaQueryWrapperX<KingdeeRecordDO>()
|
|
|
- .eq(KingdeeRecordDO::getFBillNo, FBillNo)
|
|
|
- .eq(KingdeeRecordDO::getSyncState, 1)
|
|
|
- .orderByDesc(KingdeeRecordDO::getId).last("LIMIT 1"));
|
|
|
- String fid = "";
|
|
|
- if (null != kingdeeRecordDOS && kingdeeRecordDOS.size() > 0) {
|
|
|
- KingdeeRecordDO kingdeeRecordDO = kingdeeRecordDOS.get(0);
|
|
|
- fid = kingdeeRecordDO.getFid();
|
|
|
- }
|
|
|
- List<ReceiveBillSaveEntryDTO> freceivebillentryList = new ArrayList<>();
|
|
|
-
|
|
|
- List<ExpenseOrderItemDO> expenseOrderItemDOS = orderItemMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderItemDO>()
|
|
|
- .eq(ExpenseOrderItemDO::getExpenseOrderId, expenseOrderDO.getId())
|
|
|
- .eq(ExpenseOrderItemDO::getPayStatus, expenseOrderDO.getPayStatus()));
|
|
|
- if (null == expenseOrderItemDOS) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- expenseOrderItemDOS.forEach(expenseOrderItemDO -> {
|
|
|
- // 费用类型
|
|
|
- // 床位费 CI047
|
|
|
- // 膳食费 CI109
|
|
|
- // 护理费 CI111
|
|
|
-
|
|
|
- // 风险预备金 CI002
|
|
|
- // 保证金 CI003
|
|
|
- String FCOSTID = "CI047";
|
|
|
- String FSETTLETYPEID = "JSFS04_SYS";
|
|
|
- String FPURPOSEID = "SFKYT01_SYS";
|
|
|
-// String FACCOUNTID = "398460100100148998";
|
|
|
-// String FACCOUNTID = "398460100100153498";
|
|
|
- String FACCOUNTID = "713373400267";
|
|
|
-
|
|
|
- if (BusinessConstants.EXPENSE_ITEM.equals(expenseOrderItemDO.getExpenseSource())) {
|
|
|
- ExpenseItemDO expenseItemDO = expenseItemMapper.selectById(expenseOrderItemDO.getSourceExpenseItemId());
|
|
|
- if (null == expenseItemDO) return;
|
|
|
- OverheadChargeDO overheadChargeDO = overheadChargeMapper.selectById(expenseItemDO.getItemId());
|
|
|
- if (null != overheadChargeDO && StringUtil.isNotEmptyORNull(overheadChargeDO.getKingdeeCostid())) {
|
|
|
- FCOSTID = overheadChargeDO.getKingdeeCostid();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ExpensePayOrderDO expensePayOrderDO = payOrderMapper.selectById(expenseOrderItemDO.getPayOrderId());
|
|
|
- if (null != expensePayOrderDO) {
|
|
|
- List<ExpensePayOrderItemDO> expensePayOrderItemDOS = payOrderItemMapper.selectList(new LambdaQueryWrapperX<ExpensePayOrderItemDO>()
|
|
|
- .eq(ExpensePayOrderItemDO::getPayOrderId, expensePayOrderDO.getId())
|
|
|
- .eq(ExpensePayOrderItemDO::getTenantId, tenantId).orderByAsc(ExpensePayOrderItemDO::getId));
|
|
|
- if (null != expensePayOrderItemDOS && expensePayOrderItemDOS.size() > 0) {
|
|
|
- ExpensePayOrderItemDO expensePayOrderItemDO = expensePayOrderItemDOS.get(0);
|
|
|
- if (StringUtil.isNotEmptyORNull(expensePayOrderItemDO.getCurrencyCode())) {
|
|
|
- FMAINBOOKSTDCURRID.set(expensePayOrderItemDO.getCurrencyCode());
|
|
|
- }
|
|
|
- if (StringUtil.isNotEmptyORNull(expensePayOrderItemDO.getBankAccount())) {
|
|
|
- FACCOUNTID = expensePayOrderItemDO.getBankAccount();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- BigDecimal roundAmount = expenseOrderItemDO.getRoundAmount();
|
|
|
- if (null == roundAmount) return;
|
|
|
-
|
|
|
- String count = expenseOrderItemDO.getCount().toString();
|
|
|
- // 判断是负数
|
|
|
- if (roundAmount.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
- count = "-" + count;
|
|
|
- }
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateUtils.FORMAT_YEAR_MONTH_DAY);
|
|
|
- LocalDate billingDate = LocalDate.parse(expenseOrderDO.getBillingMonth() + "-01", formatter);
|
|
|
- LocalDate lastDayOfMonth = billingDate.withDayOfMonth(billingDate.lengthOfMonth());
|
|
|
- // 转换成String
|
|
|
- String lastDayOfMonthStr = lastDayOfMonth.format(formatter);
|
|
|
- ReceiveBillSaveEntryDTO freceivebillentry = ReceiveBillSaveEntryDTO.builder()
|
|
|
- .FSETTLETYPEID(KingdeeNumberDTO.builder().FNUMBER(FSETTLETYPEID).build())
|
|
|
- .FPURPOSEID(KingdeeNumberDTO.builder().FNUMBER(FPURPOSEID).build())
|
|
|
- .FRECTOTALAMOUNTFOR(roundAmount)
|
|
|
- .FRECAMOUNTFOR_E(roundAmount)
|
|
|
- .FRECNOTAXAMOUNTFOR(roundAmount)
|
|
|
- .FSETTLEDISTAMOUNTFOR(new BigDecimal(0.0))
|
|
|
- .FHANDLINGCHARGEFOR(new BigDecimal(0.0))
|
|
|
- .FOVERUNDERAMOUNTFOR(new BigDecimal(0.0))
|
|
|
- .FACCOUNTID(KingdeeNumberDTO.builder().FNUMBER(FACCOUNTID).build())
|
|
|
- .FOPPOSITEBANKACCOUNT("")
|
|
|
- .FOPPOSITEBANKNAME("")
|
|
|
- .FPrice(expenseOrderItemDO.getPrice())
|
|
|
- .FQty(expenseOrderItemDO.getCount())
|
|
|
- .FPOSTDATE(lastDayOfMonthStr)
|
|
|
- .FRECNOTAXAMOUNTFOR(roundAmount)
|
|
|
- .FRECNOTAXAMOUNT(roundAmount)
|
|
|
- .FWRITTENOFFTAXAMOUNTFOR(roundAmount)
|
|
|
- .FWRITTENOFFTAXAMOUNT(roundAmount)
|
|
|
- .FCOSTID(KingdeeNumberDTO.builder().FNUMBER(FCOSTID).build())
|
|
|
- .FCOMMENT(expenseOrderItemDO.getItemName())
|
|
|
- .build();
|
|
|
- freceivebillentryList.add(freceivebillentry);
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- ReceiveBillSaveModelDTO saveModelDTO = ReceiveBillSaveModelDTO.builder()
|
|
|
- .FID(fid)
|
|
|
- .FBillNo(FBillNo)
|
|
|
- .FBillTypeID(KingdeeNumberDTO.builder().FNUMBER("SKDLX01_SYS").build())
|
|
|
- .FPAYORGID(KingdeeNumberDTO.builder().FNUMBER(tenantid).build())
|
|
|
-// .FSETTLEORGID(KingdeeNumberDTO.builder().FNUMBER(tenantid).build())
|
|
|
-// .FSALEORGID(KingdeeNumberDTO.builder().FNUMBER(tenantid).build())
|
|
|
- .FDATE(expenseOrderDO.getBillingMonth())
|
|
|
- .FCONTACTUNITTYPE("BD_Customer")
|
|
|
- .FCONTACTUNIT(KingdeeNumberDTO.builder().FNUMBER(customerid).build())
|
|
|
- .FPAYUNITTYPE("BD_Customer")
|
|
|
- .FPAYUNIT(KingdeeNumberDTO.builder().FNUMBER(customerid).build())
|
|
|
- .FCURRENCYID(KingdeeNumberDTO.builder().FNUMBER(FMAINBOOKSTDCURRID.get()).build())
|
|
|
- .FEXCHANGERATE(new BigDecimal("1.0"))
|
|
|
- .FSETTLECUR(KingdeeNumberDTO.builder().FNUMBER(FMAINBOOKSTDCURRID.get()).build())
|
|
|
- .FSETTLERATE(new BigDecimal("1.0"))
|
|
|
- .FISINIT(Boolean.FALSE.toString())
|
|
|
- .FISCARRYRATE(Boolean.FALSE.toString())
|
|
|
- .FDOCUMENTSTATUS("Z")
|
|
|
- .FBUSINESSTYPE("1")
|
|
|
- .FCancelStatus("A")
|
|
|
- .FSETTLEMAINBOOKID(KingdeeNumberDTO.builder().FNUMBER(FMAINBOOKSTDCURRID.get()).build())
|
|
|
- .FRECEIVEBILLENTRY(freceivebillentryList)
|
|
|
-
|
|
|
- .FBUSINESSTYPE("FY")
|
|
|
-
|
|
|
-
|
|
|
- .build();
|
|
|
-
|
|
|
- ReceiveBillSaveDTO saveDTO = ReceiveBillSaveDTO.builder()
|
|
|
- .IsDeleteEntry(Boolean.TRUE.toString())
|
|
|
- .IsVerifyBaseDataField(Boolean.FALSE.toString())
|
|
|
- .IsEntryBatchFill(Boolean.TRUE.toString())
|
|
|
- .ValidateFlag(Boolean.TRUE.toString())
|
|
|
- .NumberSearch(Boolean.TRUE.toString())
|
|
|
- .IsAutoAdjustField(Boolean.FALSE.toString())
|
|
|
- .InterationFlags("")
|
|
|
- .IgnoreInterationFlag("")
|
|
|
- .IsControlPrecision(Boolean.FALSE.toString())
|
|
|
- .ValidateRepeatJson(Boolean.FALSE.toString())
|
|
|
- .model(saveModelDTO)
|
|
|
- .build();
|
|
|
-
|
|
|
- Gson gson = new Gson();
|
|
|
- // 将ReceivableSaveDTO转换成json字符串
|
|
|
- String json = gson.toJson(saveDTO);
|
|
|
- System.out.println("json = " + json);
|
|
|
- try {
|
|
|
- String billId = arReceivebillSave(getK3CloudApi(tenantId), json, expenseOrderDO.getBillOrderNumber(), expenseOrderDO.getElderId(),tenantId);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
- @Override
|
|
|
- @TenantIgnore
|
|
|
public String syncArReceivebillNewBatch(List<Long> expenseOrderIdList) {
|
|
|
return handleSyncArReceivebillNew(expenseOrderIdList);
|
|
|
}
|
|
|
@@ -551,7 +363,7 @@ public class KingdeeApiImpl implements KingdeeApi {
|
|
|
buildReceiveBillEntry(FACCOUNTID, payTimeStr, normalAmount, "CI001", "SFKYT01_SYS", "长者生活费")
|
|
|
);
|
|
|
String billId = pushReceiveBill(tenantId, elderId, expenseOrderDO.getBillOrderNumber(), baseBillNo,
|
|
|
- kingedeeTenantId, kingedeeCustomerId, payTimeStr, currency, normalEntryList);
|
|
|
+ "SKDLX02_SYS", kingedeeTenantId, kingedeeCustomerId, payTimeStr, currency, normalEntryList);
|
|
|
if (StringUtils.isBlank(billId)) {
|
|
|
allSuccess = false;
|
|
|
}
|
|
|
@@ -562,7 +374,7 @@ public class KingdeeApiImpl implements KingdeeApi {
|
|
|
buildReceiveBillEntry(FACCOUNTID, payTimeStr, facilityAmount, "CI005", "SFKYT02_SYS", "设施费")
|
|
|
);
|
|
|
String billId = pushReceiveBill(tenantId, elderId, expenseOrderDO.getBillOrderNumber() + "-SSF", baseBillNo + "-SSF",
|
|
|
- kingedeeTenantId, kingedeeCustomerId, payTimeStr, currency, facilityEntryList);
|
|
|
+ "SKDLX01_SYS", kingedeeTenantId, kingedeeCustomerId, payTimeStr, currency, facilityEntryList);
|
|
|
if (StringUtils.isBlank(billId)) {
|
|
|
allSuccess = false;
|
|
|
}
|
|
|
@@ -573,7 +385,7 @@ public class KingdeeApiImpl implements KingdeeApi {
|
|
|
buildReceiveBillEntry(FACCOUNTID, payTimeStr, depositAmount, "CI002", "SFKYT41_SYS", "押金")
|
|
|
);
|
|
|
String billId = pushReceiveBill(tenantId, elderId, expenseOrderDO.getBillOrderNumber() + "-YJ", baseBillNo + "-YJ",
|
|
|
- kingedeeTenantId, kingedeeCustomerId, payTimeStr, currency, depositEntryList);
|
|
|
+ "SKDLX02_SYS", kingedeeTenantId, kingedeeCustomerId, payTimeStr, currency, depositEntryList);
|
|
|
if (StringUtils.isBlank(billId)) {
|
|
|
allSuccess = false;
|
|
|
}
|
|
|
@@ -626,12 +438,12 @@ public class KingdeeApiImpl implements KingdeeApi {
|
|
|
}
|
|
|
|
|
|
private String pushReceiveBill(Long tenantId, Long elderId, String recordBillNo, String kdBillNo,
|
|
|
- String kingedeeTenantId, String kingedeeCustomerId, String payTimeStr,
|
|
|
+ String billTypeId, String kingedeeTenantId, String kingedeeCustomerId, String payTimeStr,
|
|
|
String currency, List<ReceiveBillSaveEntryDTO> entryList) throws Exception {
|
|
|
ReceiveBillSaveModelDTO saveModelDTO = ReceiveBillSaveModelDTO.builder()
|
|
|
.FID("")
|
|
|
.FBillNo(kdBillNo)
|
|
|
- .FBillTypeID(KingdeeNumberDTO.builder().FNUMBER("SKDLX01_SYS").build())
|
|
|
+ .FBillTypeID(KingdeeNumberDTO.builder().FNUMBER(billTypeId).build())
|
|
|
.FPAYORGID(KingdeeNumberDTO.builder().FNUMBER(kingedeeTenantId).build())
|
|
|
.FDATE(payTimeStr)
|
|
|
.FCONTACTUNITTYPE("BD_Customer")
|