| | |
| | | package com.ruoyi.tms.service.impl; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.enums.SystemDataNoEnum; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | |
| | | import com.ruoyi.common.utils.file.DownloadExportUtil; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.config.RuoYiConfig; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.ss.util.CellRangeAddress; |
| | | import org.apache.poi.xssf.streaming.SXSSFSheet; |
| | | import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
| | | import org.apache.poi.xssf.usermodel.XSSFColor; |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.core.task.AsyncTaskExecutor; |
| | | import org.springframework.core.task.SimpleAsyncTaskExecutor; |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | @Value("${custom.cwxtApi.url}") |
| | | private String url; |
| | | |
| | | |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | /** |
| | | * 查询应收费用 |
| | | * |
| | |
| | | return selectTmsReceivableFeeList(tmsReceivableFee); |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | tmsArBill.setSettledAmount(BigDecimal.ZERO); |
| | | tmsArBill.setInvoiceStatus(0); |
| | | tmsArBill.setStatus(0); |
| | | tmsArBill.setPushStatus(0); // 初始推送状态:未推送 |
| | | tmsArBill.setCreateBy(SecurityUtils.getUsername()); |
| | | tmsArBillMapper.insertTmsArBill(tmsArBill); |
| | | |
| | |
| | | }).collect(Collectors.toList()); |
| | | tmsArBillItemMapper.insertTmsArBillItemBatch(rmb); |
| | | |
| | | //todo 向外部系统推送数据 |
| | | pushToExternalSystem(tmsArBill, tmsReceivableFees); |
| | | // 向外部系统推送数据 |
| | | AsyncTaskExecutor executor = new SimpleAsyncTaskExecutor(); |
| | | executor.execute(() -> pushToExternalSystem(tmsArBill, tmsReceivableFees)); |
| | | |
| | | return AjaxResult.success(); |
| | | } |
| | |
| | | amountStr.append(hkbAmount).append("港币"); |
| | | } |
| | | feeMap.put("receivableAmountStr", amountStr.toString()); |
| | | feeMap.put("status", "0"); |
| | | feeMap.put("status", "1"); |
| | | feeMap.put("remark", ""); |
| | | |
| | | // 构建feeDetails部分 |
| | | List<java.util.Map<String, Object>> feeDetailsList = new java.util.ArrayList<>(); |
| | | List<TmsReceivableFeeItem> items = fee.getItems(); |
| | | for (TmsReceivableFeeItem item : items) { |
| | | for (int j = 0; j < items.size(); j++) { |
| | | TmsReceivableFeeItem item = items.get(j); |
| | | java.util.Map<String, Object> feeDetailMap = new java.util.HashMap<>(); |
| | | feeDetailMap.put("serialNumber", String.format("%03d", j + 1)); |
| | | feeDetailMap.put("feeType", item.getFeeType()); |
| | | feeDetailMap.put("feeName", item.getFeeName()); |
| | | feeDetailMap.put("billingUnit", "次"); |
| | |
| | | // 发送API请求 |
| | | ResponseEntity<String> response = restTemplate.exchange(apiUrl, HttpMethod.POST, entity, String.class); |
| | | logger.info("推送数据到外部系统成功,响应: {}", response.getBody()); |
| | | |
| | | // 更新推送状态为成功 |
| | | tmsArBill.setPushStatus(2); |
| | | tmsArBill.setPushTime(DateUtils.getNowDate()); |
| | | tmsArBillMapper.updateTmsArBill(tmsArBill); |
| | | } catch (Exception e) { |
| | | logger.error("推送数据到外部系统失败,账单ID: {}, 客户: {}", |
| | | tmsArBill.getId(), tmsArBill.getCustomerName(), e); |
| | | logger.debug("推送失败的请求数据: {}", JSON.toJSONString(requestBody)); |
| | | // 推送失败不影响主流程,记录日志即可 |
| | | |
| | | // 更新推送状态为失败 |
| | | tmsArBill.setPushStatus(3); |
| | | tmsArBill.setPushTime(DateUtils.getNowDate()); |
| | | tmsArBillMapper.updateTmsArBill(tmsArBill); |
| | | } |
| | | } |
| | | |