|
|
@@ -1,5 +1,7 @@
|
|
|
package org.dromara.server.consume.business;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -8,16 +10,21 @@ import org.dromara.backstage.api.domain.vo.RemoteMealTypeVo;
|
|
|
import org.dromara.backstage.api.domain.vo.RemoteOperatorVo;
|
|
|
import org.dromara.backstage.api.domain.vo.RemoteUserAccountVo;
|
|
|
import org.dromara.common.core.config.AsyncConfig;
|
|
|
+import org.dromara.common.core.constant.ApiErrorTypeConstants;
|
|
|
import org.dromara.common.core.domain.R;
|
|
|
import org.dromara.common.core.domain.model.ErrorInfo;
|
|
|
+import org.dromara.common.core.enums.ResultCodeEnum;
|
|
|
+import org.dromara.common.json.utils.JsonUtils;
|
|
|
import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
|
|
|
import org.dromara.server.consume.domain.vo.PtBagVo;
|
|
|
import org.dromara.server.consume.domain.vo.XfConsumeDetailOriginalVo;
|
|
|
import org.dromara.server.consume.domain.vo.XfTermVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.text.MessageFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
/**
|
|
|
* name: ConsumeBusiness
|
|
|
@@ -162,17 +169,32 @@ public class ConsumeBusiness {
|
|
|
}
|
|
|
return R.ok();
|
|
|
}
|
|
|
- // @Async
|
|
|
- // protected void sendCloudConsume(ConsumptionBo bo){
|
|
|
- // KafkaMessage<ConsumptionBo> message = new KafkaMessage<>();
|
|
|
- // KafkaHeader header = message.getHeader();
|
|
|
- // header.setTimestamp(System.currentTimeMillis());
|
|
|
- // header.setEventId(CloudConsumeEventConstants.CONSUME_DETAIL);
|
|
|
- // header.setEventType(CloudConsumeEventConstants.SENDER);
|
|
|
- // message.setHeader(header);
|
|
|
- // message.setBody(bo);
|
|
|
- //
|
|
|
- // // kafkaProducer.sendKafkaMessage("TO_CLOUD_EVENT", message);
|
|
|
- // log.info("请求云端消费:{}", JSONUtil.toJsonStr(bo));
|
|
|
- // }
|
|
|
+ /**
|
|
|
+ * 原始消费对账,将有原始消费记录但没有消费明细的消费记录写入消费明细
|
|
|
+ * @return 对账结果
|
|
|
+ */
|
|
|
+ public R<ErrorInfo> originalReconciliation(String consumeDate){
|
|
|
+ //先查询没有写入消费明细的原始消费记录
|
|
|
+ List<ConsumptionBo> list = baseBusiness.selectOriginalReconciliation(DateUtil.parseDate(consumeDate));
|
|
|
+ if (CollectionUtil.isEmpty(list)) {
|
|
|
+ return R.ok(new ErrorInfo(ResultCodeEnum.DATA_NOT_FOUND.code(), ApiErrorTypeConstants.NOT_FOUND, "没有待入账的原始消费记录"));
|
|
|
+ }
|
|
|
+ List<String> doMessage = new ArrayList<>();
|
|
|
+ //循环写入原始消费记录
|
|
|
+ int total = list.size();
|
|
|
+ AtomicInteger success = new AtomicInteger();
|
|
|
+ AtomicInteger fail = new AtomicInteger();
|
|
|
+ //list.forEach(p->{
|
|
|
+ // R<ErrorInfo> result = fullOrder(p, "", "");
|
|
|
+ // if (R.isSuccess(result)) {
|
|
|
+ // doMessage.add(MessageFormat.format("[入账成功]-[{0}]", JsonUtils.toJsonString(p)));
|
|
|
+ // success.getAndIncrement();
|
|
|
+ // } else {
|
|
|
+ // doMessage.add(MessageFormat.format("[入账失败]-[{0}]-[{1}]", JsonUtils.toJsonString(p),JSONUtil.toJsonStr(result.getData())));
|
|
|
+ // fail.getAndIncrement();
|
|
|
+ // }
|
|
|
+ //});
|
|
|
+ //doMessage.forEach(System.out::println);
|
|
|
+ return R.ok(MessageFormat.format("[对账处理完成]-[待处理:{0}条,成功:{1}条,失败:{2}条]", total, success.get(), fail.get()));
|
|
|
+ }
|
|
|
}
|