From f1aacd97ce9deb4ee409a9382811578ca18dea33 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 7 Sep 2023 17:37:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E8=B0=83=E5=BA=A6=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../properties/ProjectApisProperties.java | 21 +++ .../controller/api/BmsSupplierAddressApi.java | 17 ++- .../bms/entity/vo/BmsCostCenterVo.java | 20 +++ .../service/impl/BmsRegion2ServiceImpl.java | 4 + .../modules/third/PortalBmsController.java | 52 +++++++ .../third/entity/ThirtyVerification.java | 144 ++++++++++++++++++ .../service/PortalOfCostApplication.java | 95 +++++++----- 7 files changed, 313 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterVo.java create mode 100644 src/main/java/com/qs/serve/modules/third/PortalBmsController.java create mode 100644 src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java diff --git a/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java new file mode 100644 index 00000000..27ca52bc --- /dev/null +++ b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java @@ -0,0 +1,21 @@ +package com.qs.serve.common.config.properties; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author YenHex + * @since 2023/9/7 + */ +@Getter +@Setter +@Component +@ConfigurationProperties(prefix = "project.apis") +public class ProjectApisProperties { + + /** 支付接口 */ + private String costToPay; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java index a6566b60..ecc98710 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java @@ -97,10 +97,17 @@ public class BmsSupplierAddressApi { BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); param.setSupplierId(param.getSupplierId()); BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId())); - if(supplierAddress==null){ - param.setDefaultFlag(1); + if(param.getDefaultFlag().equals(1)){ + if(supplierAddress!=null){ + supplierAddress.setDefaultFlag(0); + bmsSupplierAddressService.updateById(supplierAddress); + } }else { - param.setDefaultFlag(0); + if(supplierAddress==null){ + param.setDefaultFlag(1); + }else { + param.setDefaultFlag(0); + } } boolean result = bmsSupplierAddressService.save(param); return R.isTrue(result); @@ -111,9 +118,9 @@ public class BmsSupplierAddressApi { * @param id 地址ID * @return */ - @PostMapping("/setDefault") + @GetMapping("/setDefault") @Transactional(rollbackFor = Exception.class) - public R setDefault(@Valid Long id){ + public R setDefault(Long id){ BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(id); if(!supplierAddress.getSupplierId().toString().equals(supplier.getId())){ diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterVo.java new file mode 100644 index 00000000..0abb7e4c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterVo.java @@ -0,0 +1,20 @@ +package com.qs.serve.modules.bms.entity.vo; + +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/11 + */ +@Data +public class BmsCostCenterVo { + + /** 科目名称 */ + private String name; + + /** 科目编码 */ + private String code; + + /** 备注 */ + private String remark; +} diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java index ecbed3aa..4f30ee20 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java @@ -274,6 +274,10 @@ public class BmsRegion2ServiceImpl extends ServiceImpl regionList = listChild(pid); if(regionList.size()>0){ regionList = regionList.stream().map(a->{ + String[] pars = parRegion.getPathIds().split("_"); + if(Arrays.stream(pars).anyMatch(v->v.equals(a.getId()))||pars.length>4){ + Assert.throwEx("出现递归数据"); + } a.setPathIds(parRegion.getPathIds()+"_"+a.getId()); a.setPathNames(parRegion.getPathNames()+"_"+a.getName()); return a; diff --git a/src/main/java/com/qs/serve/modules/third/PortalBmsController.java b/src/main/java/com/qs/serve/modules/third/PortalBmsController.java new file mode 100644 index 00000000..c370de27 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/PortalBmsController.java @@ -0,0 +1,52 @@ +package com.qs.serve.modules.third; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.TreeUtil; +import com.qs.serve.modules.bms.entity.BmsCostCenter; +import com.qs.serve.modules.bms.entity.vo.BmsCostCenterTreeVo; +import com.qs.serve.modules.bms.entity.vo.BmsCostCenterVo; +import com.qs.serve.modules.bms.service.BmsCostCenterService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/9/7 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("thirty/bms") +public class PortalBmsController { + + private BmsCostCenterService bmsCostCenterService; + + /** + * 树查询 + * @return + */ + @GetMapping("/center") + public List getTree(){ + List list = bmsCostCenterService.list( + new LambdaQueryWrapper() + .eq(BmsCostCenter::getVisibleFlag,1) + .orderByDesc(BmsCostCenter::getId)); + List treeVoList = list.stream().map(obj-> + CopierUtil.copy(obj,new BmsCostCenterVo()) + ).collect(Collectors.toList()); + return treeVoList; + } + + + + +} diff --git a/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java b/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java new file mode 100644 index 00000000..6cfa01fe --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java @@ -0,0 +1,144 @@ +package com.qs.serve.modules.third.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.*; +import java.math.BigDecimal; + +/** + * @version 1.0 + * @Author Ken Tam + * @Date 2023-09-07 9:01 + * @注释 CMS已经完成的核销单实体类 + */ +@Getter +@Setter +public class ThirtyVerification { + + private String cacc = "001"; + + /** + * 原销路通中间表 apticlaimNum + */ + @NotNull(message = "核销编码不能为空") + @Size(max = 30,min = 1,message = "编码长度不符合要求") + private String verificationCode; + + /** + * 活动主题 + * 原销路通中间表 apticlaim_zhuTi + */ + @NotNull(message = "活动主题不能为空") + private String activityTitle = ""; + + /** + * 费用申请编码 + */ + @Null(message = "不能传入活动编码") + private String activityCode; + + /** + * 核销创建日期不能为空 + * 原销路通中间表 apticlaim_create_datetime + * 时间格式应为:yyyy-MM-dd HH:mm:ss + */ + private String createDate; + + /** + * 原销路通中间表 apticlaim_effdate + * 应该成费用对应的活动开始日期 yyyy-MM-dd HH:mm:ss + */ + private String startDate; + + /** + * 原销路通中间表 apticlaim_effdate + * 应该成费用对应的活动结束日期 + * yyyy-MM-dd HH:mm:ss + */ + private String endDate; + + /** + * 中间表无该字段,用途不明确 + */ + private String kaCode = ""; + + /** + * 中间表无该字段,用途不明确 + */ + private Integer kaMdSl = 0; + + /** + * 对应 apticlaim_exp_acct 科目编码 + */ + @NotNull(message = "科目编码不能为空") + private String subjectCode; + + @NotNull(message = "科目名称不能为空") + private String subjectName; + + /** + * 原销路通 apticlaim_amt + apticlaim_amt_tax,含税核销金额 + */ + @DecimalMax(value = "100000000",message = "核销金额不能大于一亿,请检查数据") + @DecimalMin(value = "0",message = "核销金额不能小于0") + @NotNull(message = "核销金额不能为空") + private BigDecimal money; + + /** + * 中间表无该字段,用途不明确 + */ + private BigDecimal xsje = BigDecimal.ZERO; + + /** + * 中间表无该字段,用途不明确 + */ + private BigDecimal tmSl = BigDecimal.ZERO; + + /** + * cFyMemo 中间表无该字段 + */ + private String memo = ""; + + private String createUser = "demo - demo"; + + /** + * 对应 apticlaim_create_datetime + * 时间格式应为:yyyy-MM-dd HH:mm:ss + */ + @NotNull(message = "创建时间不能为空") + private String createTime; + + private String checkUser = "demo - demo"; + + /** + * 对应 apticlaim_create_datetime + * 时间格式应为:yyyy-MM-dd HH:mm:ss + */ + private String checkTime; + + /** + * 对应 apticlaim_addr + */ + @NotNull(message = "客户编码不能为空") + private String cusCode; + + @NotNull(message = "客户名称不能为空") + private String cusName; + + /** + * 对应 apticlaim_recid + */ + @NotNull(message = "id不能为空") + private String recId; + + /** + * 对应apticlaim_id, + */ + @NotNull(message = "id不能为空") + private String id; + + +} 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 a1e33c74..2d3af049 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 @@ -1,6 +1,7 @@ package com.qs.serve.modules.third.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.ResultFlag; import com.qs.serve.common.util.*; @@ -30,10 +31,7 @@ import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; 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.AptPolicyPayment; -import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo; -import com.qs.serve.modules.third.entity.ProcessCreatePolicyCostBo; -import com.qs.serve.modules.third.entity.ProcessGoodsItem; +import com.qs.serve.modules.third.entity.*; import com.qs.serve.modules.tzc.common.TzPolicyItemStatus; import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; import com.qs.serve.modules.tzc.entity.TzcPolicyItem; @@ -52,6 +50,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.RoundingMode; +import java.time.format.DateTimeFormatter; import java.util.*; import java.math.BigDecimal; import java.time.LocalDate; @@ -98,6 +97,8 @@ public class PortalOfCostApplication { private TzcPolicyGoodsSyncService tzcPolicyGoodsSyncService; private final XiaoLuTonService xiaoLuTonService; + private ProjectApisProperties projectApisProperties; + @Transactional(rollbackFor = Exception.class) public void syncXltPolicyItemPayment(AptPolicyPayment createBo){ @@ -565,8 +566,7 @@ public class PortalOfCostApplication { String costCode = createBo.getCostCode(); String costTheme = createBo.getCostTheme(); - String random = String.format("%03d",new Random().nextInt(999)); - String activityCode = "G"+ StringUtils.genShortId() + random; + String activityCode = costCode; String activityTitle = createBo.getActivityTitle(); if(!StringUtils.hasText(activityTitle)){ @@ -784,36 +784,61 @@ public class PortalOfCostApplication { verificationSubject.setCountSession(0); verificationSubjectService.save(verificationSubject); + //保存支付信息 + String timeString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + + ThirtyVerification tv = new ThirtyVerification(); + tv.setVerificationCode(verificationSubject.getVerificationSubCode()); + 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(verificationSubject.getVerificationSubCode()); + String COST_TO_PAY_API = projectApisProperties.getCostToPay(); + String json = JsonUtil.objectToJson(tv); + log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}",verificationSubject.getVerificationSubCode(),json); + String rs = HttpUtil.doPost(COST_TO_PAY_API,json,null); + log.info("COST_TO_PAY_API 支付单信息:{},结果:{}",verificationSubject.getVerificationSubCode(),rs); //保存支付 - PayPayment payPayment = new PayPayment(); - payPayment.setPayType(PaymentType.PAYMENT); - payPayment.setPayCode("PM"+ StringUtils.genShortId()); - payPayment.setSupplierId(supplierId); - payPayment.setSupplierCode(supplier.getCode()); - payPayment.setSupplierName(supplier.getName()); - payPayment.setPayAmount(totalAmount); - payPayment.setUserId(user.getId()); - payPayment.setUserCode(user.getCode()); - payPayment.setUserName(user.getName()); - payPayment.setPayTime(nowTime); - payPayment.setErpCode(erpCode); - payPayment.setBillNumber(billNumber); - paymentService.save(payPayment); - - PayPaymentItem paymentItem = new PayPaymentItem(); - paymentItem.setPaymentId(payPayment.getId()); - paymentItem.setPayType(PaymentType.PAYMENT); - paymentItem.setSupplierId(supplierId); - paymentItem.setItemPayAmount(totalAmount); - paymentItem.setVerificationId(verification.getId()); - paymentItem.setVerificationSubjectId(verificationSubject.getId()); - paymentItem.setCostApplyId(costApply.getId()); - paymentItem.setActivityId(activity.getId()); - paymentItem.setActivityCode(activity.getActivityCode()); - paymentItem.setSubjectId(subject.getId()); - paymentItem.setSubjectCode(subject.getSubjectCode()); - paymentItem.setSubjectName(subject.getSubjectName()); - paymentItemService.save(paymentItem); +// PayPayment payPayment = new PayPayment(); +// payPayment.setPayType(PaymentType.PAYMENT); +// payPayment.setPayCode("PM"+ StringUtils.genShortId()); +// payPayment.setSupplierId(supplierId); +// payPayment.setSupplierCode(supplier.getCode()); +// payPayment.setSupplierName(supplier.getName()); +// payPayment.setPayAmount(totalAmount); +// payPayment.setUserId(user.getId()); +// payPayment.setUserCode(user.getCode()); +// payPayment.setUserName(user.getName()); +// payPayment.setPayTime(nowTime); +// payPayment.setErpCode(erpCode); +// payPayment.setBillNumber(billNumber); +// paymentService.save(payPayment); +// +// PayPaymentItem paymentItem = new PayPaymentItem(); +// paymentItem.setPaymentId(payPayment.getId()); +// paymentItem.setPayType(PaymentType.PAYMENT); +// paymentItem.setSupplierId(supplierId); +// paymentItem.setItemPayAmount(totalAmount); +// paymentItem.setVerificationId(verification.getId()); +// paymentItem.setVerificationSubjectId(verificationSubject.getId()); +// paymentItem.setCostApplyId(costApply.getId()); +// paymentItem.setActivityId(activity.getId()); +// paymentItem.setActivityCode(activity.getActivityCode()); +// paymentItem.setSubjectId(subject.getId()); +// paymentItem.setSubjectCode(subject.getSubjectCode()); +// paymentItem.setSubjectName(subject.getSubjectName()); +// paymentItemService.save(paymentItem); }