diff --git a/pom.xml b/pom.xml index b1678a2d..72fd6c9a 100644 --- a/pom.xml +++ b/pom.xml @@ -153,11 +153,11 @@ 8.0.15 - + org.springframework diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index 40178c0d..6b03e215 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java @@ -25,8 +25,10 @@ import com.qs.serve.modules.pay.service.PayPaymentService; import com.qs.serve.modules.seeyon.entity.XltApticlaim; import com.qs.serve.modules.seeyon.entity.XltPaymentRecord; import com.qs.serve.modules.seeyon.service.XiaoLuTonService; +import com.qs.serve.modules.sys.entity.SysSyncLog; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.mapper.SysUserCodeMathMapper; +import com.qs.serve.modules.sys.service.SysSyncLogService; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsCostApplyState; @@ -35,6 +37,7 @@ import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.third.entity.*; +import com.qs.serve.modules.third.util.ThirtyVerificationUtil; import com.qs.serve.modules.tzc.common.TzPolicyItemStatus; import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; import com.qs.serve.modules.tzc.entity.TzcPolicyItem; @@ -49,6 +52,7 @@ import com.qs.serve.modules.vtb.service.VtbVerificationService; import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.Nullable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -70,6 +74,7 @@ import java.util.stream.Collectors; public class PortalOfCostApplication { private SysUserCodeMathMapper userCodeMathMapper; + private final SysSyncLogService sysSyncLogService; private TbsActivityService activityService; private TbsActivityCenterService activityCenterService; @@ -436,31 +441,37 @@ public class PortalOfCostApplication { verificationService.save(verification); if(createBo.getToSaveCostCheckFlag()!=null&&createBo.getToSaveCostCheckFlag().equals(1)){ - //发送请求到中间服务 - XltApticlaim apticlaim = new XltApticlaim(); - apticlaim.setVerificationCode(verification.getVerificationCode()); - apticlaim.setCostCode(costApply.getCode()); - apticlaim.setCostCode2(activity.getActivityCode()); - apticlaim.setCusCode(verification.getSupplierCode()); - apticlaim.setAmount(totalAmount); - apticlaim.setSubjectCode(subject.getSubjectCode()); - apticlaim.setSubjectName(subject.getSubjectName()); - apticlaim.setExpType("TI"); - apticlaim.setApplyType("01"); - apticlaim.setEffDate(nowDate_); - apticlaim.setInvoiced("2"); - apticlaim.setCreateTime(nowDate_); - apticlaim.setStatus("00"); - apticlaim.setDealTime(nowDate_); - apticlaim.setTopic(costApply.getChargeTheme()); - try { - //todo 如果失败做补偿处理 - xiaoLuTonService.saveApticlaim(apticlaim); - log.info("发送对象(apticlaim)到OA服务成功"); - } catch (Exception e) { - e.printStackTrace(); - log.error("发送对象到OA服务失败,数据内容如下:{}", JsonUtil.objectToJson(apticlaim)); - } + //保存支付信息 + String COST_TO_PAY_API = projectApisProperties.getCostToPay(); + String json = ThirtyVerificationUtil.buildJson(supplier, subject, verification.getAmount() + , activity.getActTitle(),activity.getActStartDate().atStartOfDay(),activity.getActEndDate().atTime(23,59,59), verification); + SysSyncLog syncLog = ThirtyVerificationUtil.requestToPayment("to支付请求",verification.getVerificationCode(), COST_TO_PAY_API, json); + sysSyncLogService.save(syncLog); +// //发送请求到中间服务 +// XltApticlaim apticlaim = new XltApticlaim(); +// apticlaim.setVerificationCode(verification.getVerificationCode()); +// apticlaim.setCostCode(costApply.getCode()); +// apticlaim.setCostCode2(activity.getActivityCode()); +// apticlaim.setCusCode(verification.getSupplierCode()); +// apticlaim.setAmount(totalAmount); +// apticlaim.setSubjectCode(subject.getSubjectCode()); +// apticlaim.setSubjectName(subject.getSubjectName()); +// apticlaim.setExpType("TI"); +// apticlaim.setApplyType("01"); +// apticlaim.setEffDate(nowDate_); +// apticlaim.setInvoiced("2"); +// apticlaim.setCreateTime(nowDate_); +// apticlaim.setStatus("00"); +// apticlaim.setDealTime(nowDate_); +// apticlaim.setTopic(costApply.getChargeTheme()); +// try { +// //todo 如果失败做补偿处理 +// xiaoLuTonService.saveApticlaim(apticlaim); +// log.info("发送对象(apticlaim)到OA服务成功"); +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("发送对象到OA服务失败,数据内容如下:{}", JsonUtil.objectToJson(apticlaim)); +// } } //保存核销费用结果 @@ -810,28 +821,8 @@ public class PortalOfCostApplication { verificationSubjectService.save(verificationSubject); //保存支付信息 - String timeString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - - ThirtyVerification tv = new ThirtyVerification(); - tv.setId(IdUtil.getSnowFlakeId()+""); - tv.setVerificationCode(verification.getVerificationCode()); - tv.setActivityTitle(activityTitle); - //tv.setActivityCode(activityCode); - tv.setCreateDate(timeString); - tv.setStartDate(timeString); - tv.setEndDate(timeString); - tv.setSubjectCode(subject.getSubjectCode()); - tv.setSubjectName(subject.getSubjectName()); - tv.setMoney(totalAmount); - //tv.setCreateUser(); - tv.setCreateTime(timeString); - //tv.setCheckUser(user.getName()); - tv.setCheckTime(timeString); - tv.setCusCode(supplier.getCode()); - tv.setCusName(supplier.getName()); - tv.setRecId(verification.getVerificationCode()); + String json = ThirtyVerificationUtil.buildJson(supplier, subject, totalAmount, activityTitle, verification); String COST_TO_PAY_API = projectApisProperties.getCostToPay(); - String json = JsonUtil.objectToJson(tv); log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}",verification.getVerificationCode(),json); String rs = HttpUtil.doPost(COST_TO_PAY_API,json,null); if(rs==null||!rs.contains("200")){ @@ -891,6 +882,8 @@ public class PortalOfCostApplication { } + + /** * 创建流程中,初始化SKU列表 * @param invCodes diff --git a/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java b/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java new file mode 100644 index 00000000..0a16faf6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java @@ -0,0 +1,122 @@ +package com.qs.serve.modules.third.util; + +import com.qs.serve.common.util.HttpUtil; +import com.qs.serve.common.util.IdUtil; +import com.qs.serve.common.util.JsonUtil; +import com.qs.serve.modules.bms.entity.BmsSubject; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.sys.entity.SysSyncLog; +import com.qs.serve.modules.third.entity.ThirtyVerification; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author YenHex + * @since 2023/9/14 + */ +@Slf4j +public class ThirtyVerificationUtil { + + /** + * 用于全过程生成 + * @param supplier + * @param subject + * @param totalAmount + * @param activityTitle + * @param verification + * @return + */ + @Nullable + public static String buildJson(BmsSupplier supplier, BmsSubject subject, BigDecimal totalAmount, String activityTitle, VtbVerification verification) { + LocalDateTime nowTime = LocalDateTime.now(); + String timeString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + ThirtyVerification tv = new ThirtyVerification(); + tv.setId(IdUtil.getSnowFlakeId()+""); + tv.setVerificationCode(verification.getVerificationCode()); + tv.setActivityTitle(activityTitle); + //tv.setActivityCode(activityCode); + tv.setCreateDate(timeString); + tv.setStartDate(timeString); + tv.setEndDate(timeString); + tv.setSubjectCode(subject.getSubjectCode()); + tv.setSubjectName(subject.getSubjectName()); + tv.setMoney(totalAmount); + //tv.setCreateUser(); + tv.setCreateTime(timeString); + //tv.setCheckUser(user.getName()); + tv.setCheckTime(timeString); + tv.setCusCode(supplier.getCode()); + tv.setCusName(supplier.getName()); + tv.setRecId(verification.getVerificationCode()); + String json = JsonUtil.objectToJson(tv); + return json; + } + + /** + * 用于全过程生成 + * @param supplier + * @param subject + * @param totalAmount + * @param activityTitle + * @param verification + * @return + */ + @Nullable + public static String buildJson(BmsSupplier supplier, BmsSubject subject, BigDecimal totalAmount, String activityTitle, + LocalDateTime startTime,LocalDateTime endTime, VtbVerification verification) { + LocalDateTime nowTime = LocalDateTime.now(); + String timeString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + String startTimeString = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + String endTimeString = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + ThirtyVerification tv = new ThirtyVerification(); + tv.setId(IdUtil.getSnowFlakeId()+""); + tv.setVerificationCode(verification.getVerificationCode()); + tv.setActivityTitle(activityTitle); + //tv.setActivityCode(activityCode); + tv.setCreateDate(timeString); + tv.setStartDate(startTimeString); + tv.setEndDate(endTimeString); + tv.setSubjectCode(subject.getSubjectCode()); + tv.setSubjectName(subject.getSubjectName()); + tv.setMoney(totalAmount); + //tv.setCreateUser(); + tv.setCreateTime(timeString); + //tv.setCheckUser(user.getName()); + tv.setCheckTime(timeString); + tv.setCusCode(supplier.getCode()); + tv.setCusName(supplier.getName()); + tv.setRecId(verification.getVerificationCode()); + return JsonUtil.objectToJson(tv); + } + + @NotNull + public static SysSyncLog requestToPayment(String title,String keyCode, String api, String json) { + log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}", keyCode, json); + String rs = null; + try { + rs = HttpUtil.doPost(api, json,null); + } catch (Exception e) { + rs = e.getMessage(); + } + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFrom(title); + syncLog.setUrl(api); + syncLog.setRequestJson(json); + if(rs==null||!rs.contains("200")){ + log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}", json, keyCode,rs); + syncLog.setEntityClass("ThirtyVerification"); + syncLog.setFailReason(rs); + syncLog.setRemark("支付失败:["+ keyCode+"]"); + }else { + syncLog.setSuccessStatus(1); + syncLog.setRemark("支付完成:["+ keyCode+"]"); + } + return syncLog; + } +} diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbActivityCheckSo.java b/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbActivityCheckSo.java index a0e14d69..195a13ab 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbActivityCheckSo.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbActivityCheckSo.java @@ -39,17 +39,17 @@ public class VtbActivityCheckSo { /** 提交结束时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") - private String queryEndSubmitTime; + private LocalDateTime queryEndSubmitTime; /** 核销开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") - private String queryStartCheckTime; + private LocalDateTime queryStartCheckTime; /** 核销开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") - private String queryEndCheckTime; + private LocalDateTime queryEndCheckTime; private Integer pageSize; diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 98f7dc26..12fce4c8 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.vtb.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; @@ -24,7 +25,9 @@ import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo; import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.XiaoLuTonService; +import com.qs.serve.modules.sys.entity.SysSyncLog; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysSyncLogService; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsCostApplyState; @@ -35,6 +38,7 @@ import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.mapper.TbsCostPercentMapper; import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.third.util.ThirtyVerificationUtil; import com.qs.serve.modules.vtb.common.VtbFundFlowType; import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.entity.*; @@ -47,6 +51,7 @@ import com.qs.serve.modules.vtb.service.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -84,6 +89,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl + and vtb.finished_time >= #{query.queryStartCheckTime} - + and vtb.finished_time <= #{query.queryEndSubmitTime} group by vtb.activity_id ) vvtb on vvtb.activity_id = tbs_activity.id @@ -76,9 +76,9 @@ from vtb_verification vtb where vtb.del_flag = 0 - + and vtb.finished_time >= #{query.queryStartCheckTime} - + and vtb.finished_time <= #{query.queryEndSubmitTime} group by vtb.activity_id ) vvtb on vvtb.activity_id = tbs_activity.id @@ -134,8 +134,8 @@ left join pay_payment pm on pm.id = pay2.payment_id where pm.cancel_flag= 0 and pay2.del_flag = 0 and pay2.pay_type = 'unPay' - and pm.create_time <= #{query.startPayTime} - and pm.create_time <= #{query.endPayTime} + and pm.create_time <= #{query.startPayTime} + and pm.create_time <= #{query.endPayTime} group by pay2.verification_id ) pay_item2 on pay_item2.verification_id = vtb.id @@ -155,8 +155,8 @@ and `cost`.`code` like concat('%',#{query.costApplyCode},'%') and `cost`.`code` like concat('%',#{query.verificationCode},'%') and `cost`.`charge_theme` like concat('%',#{query.chargeTheme},'%') - and `vtb`.`finished_time` >= #{query.startCheckTime} - and `vtb`.`finished_time` <= #{query.endCheckTime} + and `vtb`.`finished_time` >= #{query.startCheckTime} + and `vtb`.`finished_time` <= #{query.endCheckTime} limit #{query.startRow},#{query.pageSize}