From 6e8081b3da3dccad272ef8a2e02e62a6a4d12101 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 1 Mar 2023 08:31:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E9=A2=84=E7=AE=97?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E7=A7=BB=E9=99=A4=EF=BC=9B=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=94=BF=E7=AD=96=E5=90=8C=E6=AD=A5=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bms/controller/BmsSubjectController.java | 6 +- .../modules/tbs/entity/TbsBudgetCostItem.java | 2 +- .../service/TbsBudgetApplicationService.java | 10 +++ .../modules/third/PortalOfCostController.java | 9 +- .../modules/third/consts/ThirtyConst.java | 12 +++ .../service/PortalOfCostApplication.java | 27 +++++- .../tzc/entity/TzcPolicyGoodsSync.java | 90 +++++++++++++++++++ .../tzc/mapper/TzcPolicyGoodsSyncMapper.java | 14 +++ .../service/TzcPolicyGoodsSyncService.java | 14 +++ .../impl/TzcPolicyGoodsSyncServiceImpl.java | 22 +++++ .../impl/VtbVerificationServiceImpl.java | 2 + 11 files changed, 198 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/third/consts/ThirtyConst.java create mode 100644 src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyGoodsSync.java create mode 100644 src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyGoodsSyncMapper.java create mode 100644 src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyGoodsSyncService.java create mode 100644 src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyGoodsSyncServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java index ce5bf0ab..6b44f75e 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java @@ -22,6 +22,7 @@ import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.bms.entity.BmsSubject; @@ -116,7 +117,9 @@ public class BmsSubjectController { return R.ok(); } - private void commonEdit(BmsSubject subject){ + + @Transactional(rollbackFor = Exception.class) + public void commonEdit(BmsSubject subject){ if(subject.getId()==null){ bmsSubjectService.save(subject); } @@ -127,6 +130,7 @@ public class BmsSubjectController { bmsSubjectService.updateById(subject); }else { BmsSubject parent = bmsSubjectService.getById(subject.getPid()); + //todo 判断父级节点是否存有已存数据 BmsSubject ori = bmsSubjectService.getById(subject.getId()); subject.setLevel(parent.getLevel()+1); subject.setPathNames(parent.getPathNames()+"_"+subject.getSubjectName()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCostItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCostItem.java index 37aef60d..9d240237 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCostItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCostItem.java @@ -230,7 +230,7 @@ public class TbsBudgetCostItem implements Serializable { private Long centerGoodItemId; /** 标识是否政策生成的item,不参与业务,为以后拓展使用 */ - private Integer policyFlag; + //private Integer policyFlag; /** 是否无效(退回,拒绝时使用,释放则不计入预算占用) */ private Integer invalidFlag; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java index 50182e67..f9c36177 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java @@ -444,6 +444,16 @@ public class TbsBudgetApplicationService { Map budgetItemApplyAmountMap) { //过滤满全条件的预算 List allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); + if(CollectionUtil.isEmpty(allowBudgetIds)){ + //添加到预算超支表 + activityCostItem.setBudgetId(0L); + activityCostItem.setScheduleId(0L); + activityCostItem.setScheduleItemId(0L); + activityCostItem.setScheduleItemBudgetId(0L); + activityCostItem.setScheduleItemName("无"); + actUnMatchList.add(activityCostItem); + return; + } List budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList()); //PS:排序规则:优先为时间条件,其次匹配品牌条件 //按品类条件,提取可用预算(列表已按小维度到大维度排列) diff --git a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java index 96f5f97a..395f704f 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java @@ -4,9 +4,11 @@ import cn.hutool.crypto.SecureUtil; import com.qs.serve.common.config.DevEnvironmentConfig; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.third.consts.ThirtyConst; import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo; import com.qs.serve.modules.third.entity.ProcessCreatePolicyCostBo; import com.qs.serve.modules.third.service.PortalOfCostApplication; +import com.qs.serve.modules.tzc.service.TzcPolicyGoodsSyncService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; @@ -32,9 +34,6 @@ import java.time.LocalDateTime; @RequestMapping("thirty/cost") public class PortalOfCostController { - private final String TOKEN_API_PARAM = "v-token"; - private final String PREFIX_MD5_VALUE = "jslApi-"; - private PortalOfCostApplication portalOfCostApplication; @@ -66,8 +65,8 @@ public class PortalOfCostController { private void checkToken(HttpServletRequest request) { String time = LocalDate.now().toString(); - String match = SecureUtil.md5(PREFIX_MD5_VALUE + time); - String token = request.getHeader(TOKEN_API_PARAM); + String match = SecureUtil.md5(ThirtyConst.PREFIX_MD5_VALUE + time); + String token = request.getHeader(ThirtyConst.TOKEN_API_PARAM); if(token==null||token.equalsIgnoreCase(match)){ if(DevEnvironmentConfig.isDev()){ log.error("v-token==>"+match); diff --git a/src/main/java/com/qs/serve/modules/third/consts/ThirtyConst.java b/src/main/java/com/qs/serve/modules/third/consts/ThirtyConst.java new file mode 100644 index 00000000..2930aa84 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/consts/ThirtyConst.java @@ -0,0 +1,12 @@ +package com.qs.serve.modules.third.consts; + +/** + * @author YenHex + * @since 2023/2/27 + */ +public class ThirtyConst { + + public static final String TOKEN_API_PARAM = "v-token"; + public static final String PREFIX_MD5_VALUE = "jslApi-"; + +} 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 95698620..7b0bd48c 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 @@ -33,7 +33,9 @@ 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.tzc.entity.TzcPolicy; +import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; import com.qs.serve.modules.tzc.entity.TzcPolicyItem; +import com.qs.serve.modules.tzc.service.TzcPolicyGoodsSyncService; import com.qs.serve.modules.tzc.service.TzcPolicyItemService; import com.qs.serve.modules.tzc.service.TzcPolicyService; import com.qs.serve.modules.vtb.common.VtbVerificationState; @@ -93,6 +95,7 @@ public class PortalOfCostApplication { private TzcPolicyService policyService; private TzcPolicyItemService policyItemServiceService; + private TzcPolicyGoodsSyncService tzcPolicyGoodsSyncService; @@ -104,7 +107,6 @@ public class PortalOfCostApplication { if(policyItem==null){ Assert.throwEx("政策项不存在,请重新编辑");} BmsSupplier supplier = supplierService.getById(policyItem.getSupplierId()); BmsSubject subject = subjectService.getById(policyItem.getSubjectId()); - //TODO 校验商品信息 //发票号 String billNumber = createBo.getBillNumber(); //拦截是否已保存 @@ -112,6 +114,15 @@ public class PortalOfCostApplication { payLqw.eq(PayPayment::getBillNumber,billNumber); long countPay = paymentService.count(payLqw); if(countPay>0){Assert.throwEx("发票号已存在,请勿重复提交");} + //TODO 校验商品信息 +// List skuCodes = createBo.getGoodsList().stream().map(a->a.getInventoryCode()).collect(Collectors.toList()); +// LambdaQueryWrapper goodsSyncLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// goodsSyncLambdaQueryWrapper.eq(TzcPolicyGoodsSync::getPolicyItemCode,policyItem.getPolicyItemCode()); +// goodsSyncLambdaQueryWrapper.in(TzcPolicyGoodsSync::getSkuCode,skuCodes); +// long countSku = tzcPolicyGoodsSyncService.count(goodsSyncLambdaQueryWrapper); +// if(countSku < skuCodes.size()){ +// Assert.throwEx("部分商品不在政策范围内"); +// } //初始化sku列表 List processGoodsItems = createBo.getGoodsList(); List skuList = this.initSkuListOfProcess(createBo.getGoodsList()); @@ -124,14 +135,13 @@ public class PortalOfCostApplication { String erpCode = createBo.getErpCode(); Long supplierId = Long.parseLong(supplier.getId()); BigDecimal totalAmount = createBo.getTotalAmount(); - String costCode = createBo.getCostCode(); String costTheme = createBo.getCostTheme(); String random = String.format("%03d",new Random().nextInt(999)); String activityCode = "G"+ StringUtils.genShortId() + random; String activityTitle = "由核销API生成的活动"; //构建费用申请 TbsCostApply costApply = new TbsCostApply(); - costApply.setCode(costCode); + costApply.setCode("CA"+IdUtil.timeStampId()); costApply.setChargeTheme(costTheme); costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode()); costApply.setSupplierId(supplierId); @@ -341,6 +351,17 @@ public class PortalOfCostApplication { paymentItemService.save(paymentItem); } + + + + + + + + + + + @Transactional(rollbackFor = Exception.class) public void createCostProcess(ProcessCreateCostApplyBo createBo){ SysUser user = userService.getByAccount(createBo.getUserCode()); diff --git a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyGoodsSync.java b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyGoodsSync.java new file mode 100644 index 00000000..dbc89afe --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyGoodsSync.java @@ -0,0 +1,90 @@ +package com.qs.serve.modules.tzc.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 政策商品同步记录表 实体类 + * @author YenHex + * @since 2023-02-27 + */ +@Data +@TableName("tzc_policy_goods_sync") +public class TzcPolicyGoodsSync implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 政策id */ + @NotNull(message = "政策id不能为空") + private Long policyId; + + /** 政策项id */ + @NotNull(message = "政策项id不能为空") + private Long policyItemId; + + /** 政策编码 */ + @NotBlank(message = "政策编码不能为空") + @Length(max = 50,message = "政策编码长度不能超过50字") + private String policyItemCode; + + /** 规格id */ + @NotNull(message = "规格id不能为空") + private Long skuId; + + /** 规格编码 */ + @NotNull(message = "规格编码不能为空") + private Long skuCode; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + +} + diff --git a/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyGoodsSyncMapper.java b/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyGoodsSyncMapper.java new file mode 100644 index 00000000..5e51bd9d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyGoodsSyncMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.tzc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; + +/** + * 政策商品 Mapper + * @author YenHex + * @date 2023-02-27 + */ +public interface TzcPolicyGoodsSyncMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyGoodsSyncService.java b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyGoodsSyncService.java new file mode 100644 index 00000000..05c674c3 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyGoodsSyncService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.tzc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; + +/** + * 政策商品同步记录表 服务接口 + * @author YenHex + * @date 2023-02-27 + */ +public interface TzcPolicyGoodsSyncService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyGoodsSyncServiceImpl.java b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyGoodsSyncServiceImpl.java new file mode 100644 index 00000000..8fd78850 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyGoodsSyncServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.tzc.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.tzc.entity.TzcPolicyGoodsSync; +import com.qs.serve.modules.tzc.service.TzcPolicyGoodsSyncService; +import com.qs.serve.modules.tzc.mapper.TzcPolicyGoodsSyncMapper; + +/** + * 政策商品同步记录表 服务实现类 + * @author YenHex + * @since 2023-02-27 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TzcPolicyGoodsSyncServiceImpl extends ServiceImpl implements TzcPolicyGoodsSyncService { + +} + 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 ae0759ee..ef7d8d7c 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 @@ -517,8 +517,10 @@ public class VtbVerificationServiceImpl extends ServiceImpl