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 index 5404a214..090b2419 100644 --- a/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java +++ b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java @@ -27,5 +27,7 @@ public class ProjectApisProperties { /** * 原是生成销路通apt的中间表,替换伟成的接口直接生成 */ - private String policySync; + private String policySyncCate; + + private String policySyncInv; } diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index 175a2188..344fd618 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java @@ -198,6 +198,7 @@ public class BirRoiRateController { @GetMapping("/rebuildBir") public R rebuildBir(){ Long[] costIds = new Long[]{ + 267638L }; birActivityCenterGoodsService.rebuildBir(Arrays.asList(costIds).stream().distinct().collect(Collectors.toList())); return R.ok(); diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java index fe652298..0c0910e5 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java @@ -9,6 +9,7 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; @@ -17,6 +18,7 @@ import com.qs.serve.modules.goods.entity.bo.GoodsSpuImportBo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSkuExportVo; import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo; +import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.sale.entity.SalePlanGoods; @@ -54,6 +56,7 @@ import java.util.stream.Collectors; @RequestMapping("goods/sku") public class GoodsSkuController { + private GoodsSkuMapper goodsSkuMapper; private GoodsSkuService goodsSkuService; private GoodsSpuService goodsSpuService; private GoodsSkuSpecValueService goodsSkuSpecValueService; @@ -190,14 +193,12 @@ public class GoodsSkuController { if(policyGoodsService.count(lqw1)>0){ return R.error("政策含有当前商品,删除失败"); } - boolean result = goodsSkuService.removeById(id); - if(result){ - //删除商品规格值 - LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); - lqw2.eq(GoodsSkuSpecValue::getSkuId,id); - goodsSkuSpecValueService.remove(lqw2); - } - return R.isTrue(result); + goodsSkuMapper.updateSkuCodeAndDelFlag(id, StringUtils.genShortId()); + //删除商品规格值 + LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(GoodsSkuSpecValue::getSkuId,id); + goodsSkuSpecValueService.remove(lqw2); + return R.ok(); } /** diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index 3d8a25fa..617ff772 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -17,6 +17,7 @@ import com.qs.serve.modules.goods.entity.so.GoodsHisOrderQuery; import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery; import com.qs.serve.modules.goods.entity.vo.GoodsSpuExportVo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; +import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import com.qs.serve.modules.goods.service.*; import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; @@ -51,6 +52,7 @@ import java.util.stream.Collectors; @RequestMapping("goods/spu") public class GoodsSpuController { + private GoodsSpuMapper goodsSpuMapper; private GoodsSkuService goodsSkuService; private GoodsSpuService goodsSpuService; private GoodsSpuSpecService goodsSpuSpecService; @@ -319,22 +321,20 @@ public class GoodsSpuController { if(budgetConditionService.count(lqw1)>0){ return R.error("预算含有当前商品,删除失败"); } - boolean result = goodsSpuService.removeById(id); - if(result){ - //删除商品规格 - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(GoodsSpuSpec::getSpuId,id); - goodsSpuSpecService.remove(lqw); - //删除商品规格值 - LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); - lqw2.eq(GoodsSkuSpecValue::getSpuId,id); - goodsSkuSpecValueService.remove(lqw2); - //删除商品sku - LambdaQueryWrapper lqw3 = new LambdaQueryWrapper<>(); - lqw3.eq(GoodsSku::getSpuId,id); - goodsSkuService.remove(lqw3); - } - return R.isTrue(result); + goodsSpuMapper.updateSpuCodeAndDelFlag(id,IdUtil.timeStampId()); + //删除商品规格 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsSpuSpec::getSpuId,id); + goodsSpuSpecService.remove(lqw); + //删除商品规格值 + LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(GoodsSkuSpecValue::getSpuId,id); + goodsSkuSpecValueService.remove(lqw2); + //删除商品sku + LambdaQueryWrapper lqw3 = new LambdaQueryWrapper<>(); + lqw3.eq(GoodsSku::getSpuId,id); + goodsSkuService.remove(lqw3); + return R.ok(); } /** diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java index 31b3e4f1..cdaff4ad 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java @@ -6,6 +6,7 @@ import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @@ -17,6 +18,9 @@ import java.util.List; public interface GoodsSkuMapper extends BaseMapper { + @Update("update goods_sku set del_flag = 1 , sku_code = concat(sku_code,'_del',#{str}) where id = #{skuId}") + void updateSkuCodeAndDelFlag(@Param("skuId") Long id,@Param("str") String str); + List getBelongStringList(); /** diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuMapper.java index 76057117..31ee9285 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuMapper.java @@ -6,6 +6,7 @@ import com.qs.serve.common.model.dto.RowParam; import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.dto.GoodSpuSkuNum; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import java.util.List; @@ -16,6 +17,10 @@ import java.util.List; */ public interface GoodsSpuMapper extends BaseMapper { + + @Update("update goods_spu set del_flag = 1 , spu_code = concat(spu_code,'_del',#{str}) where id = #{spuId}") + void updateSpuCodeAndDelFlag(@Param("spuId") Long id,@Param("str") String str); + List selectSpuList(@Param("query") GoodsSpu goodsSpu); @InterceptorIgnore(tenantLine = "1") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java index bf638c40..98dab965 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java @@ -181,6 +181,8 @@ public class TbsCostApply implements Serializable { /** 政策项ID */ private Long policyItemId; + private String policyItemCode; + /** 模板id */ private Long templateId; 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 fa3a6e43..b940c8fe 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 @@ -55,6 +55,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.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -248,7 +249,7 @@ public class PortalOfCostApplication { //发票号 String billNumber = createBo.getBillNumber(); //校验商品信息 - List skuCodes = createBo.getGoodsList().stream().map(ProcessGoodsItem::getInventoryCode).collect(Collectors.toList()); + //List skuCodes = createBo.getGoodsList().stream().map(ProcessGoodsItem::getInventoryCode).collect(Collectors.toList()); //初始化sku列表 List processGoodsItems = createBo.getGoodsList(); List invCodes = new ArrayList<>(); @@ -257,6 +258,7 @@ public class PortalOfCostApplication { .map(ProcessGoodsItem::getInventoryCode).distinct().collect(Collectors.toList()); } List skuList = this.initSkuListOfProcess(invCodes); + skuList = this.filterRepSku(invCodes, skuList); //常用参数 final String GOODS_TYPE = "sku"; final BigDecimal OneHundred = new BigDecimal("100"); @@ -268,8 +270,17 @@ public class PortalOfCostApplication { String costApplyCode = "CA"+CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply); String activityCode = costApplyCode + "_1"; String activityTitle = "由政策"+policyItem.getPolicyItemCode()+"核销一站式API生成的活动"; + + LambdaQueryWrapper checkLqw = new LambdaQueryWrapper<>(); + checkLqw.eq(TbsCostApply::getBillNumber,billNumber); + checkLqw.eq(TbsCostApply::getPolicyItemId,policyItem.getId()); + if(costApplyService.count(checkLqw)>0L){ + Assert.throwEx("记录已存在"); + } //构建费用申请 TbsCostApply costApply = new TbsCostApply(); + //2024年1月23日,添加 + costApply.setBillNumber(billNumber); costApply.setCode(costApplyCode); costApply.setChargeTheme(costTheme); costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode()); @@ -283,6 +294,7 @@ public class PortalOfCostApplication { costApply.setTotalActivityAmount(totalAmount); costApply.setTotalActivityUsedAmount(totalAmount); costApply.setPolicyItemId(policyItem.getId()); + costApply.setPolicyItemCode(policyItem.getPolicyItemCode()); costApply.setSubmitTime(LocalDateTime.now()); //2024年1月17日,添加 costApply.setRemark(createBo.getErpCode()); @@ -620,19 +632,8 @@ public class PortalOfCostApplication { Assert.throwEx("请选择存货提交"); } List skuList = this.initSkuListOfProcess(invCodeList); - if(skuList.size()!=invCodeList.size()){ - Set missCodes = new HashSet<>(); - for (String code : invCodeList) { - boolean anyMatch = skuList.stream().anyMatch(a->a.getSkuCode().equals(code)); - if(!anyMatch){ - missCodes.add(code); - } - } - Assert.throwEx("品类缺失("+skuList.size()+"-"+invCodeList.size()+"-"+missCodes.size()+"):"+missCodes.stream().collect(Collectors.joining(","))); - } - if(skuList.size()<1){ - Assert.throwEx("请选择品类再提交"); - } + //排除重复的sku + skuList = this.filterRepSku(invCodeList, skuList); //常用参数 final String GOODS_TYPE = "sku"; final BigDecimal OneHundred = new BigDecimal("100"); @@ -974,6 +975,40 @@ public class PortalOfCostApplication { } + @NotNull + private List filterRepSku(List invCodeList, List skuList) { + if (skuList.size() > invCodeList.size()){ + List skuList1 = new ArrayList<>(); + Set codes = new HashSet<>(); + for (String invCode : invCodeList) { + for (GoodsSku goodsSku : skuList) { + if(goodsSku.getSkuCode().equals(invCode)){ + if(codes.contains(invCode)){ + continue; + } + codes.add(invCode); + skuList1.add(goodsSku); + } + } + } + skuList = skuList1; + } + if(skuList.size() < invCodeList.size()){ + Set missCodes = new HashSet<>(); + for (String code : invCodeList) { + boolean anyMatch = skuList.stream().anyMatch(a->a.getSkuCode().equals(code)); + if(!anyMatch){ + missCodes.add(code); + } + } + Assert.throwEx("品类缺失("+ skuList.size()+"-"+ invCodeList.size()+"-"+missCodes.size()+"):"+missCodes.stream().collect(Collectors.joining(","))); + } + if(skuList.size()<1){ + Assert.throwEx("请选择品类再提交"); + } + return skuList; + } + /** * 协议类费用 核销支付记录 * @param createBo diff --git a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyTestController.java b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyTestController.java index 1ff4a7a1..65829d7e 100644 --- a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyTestController.java +++ b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyTestController.java @@ -80,7 +80,7 @@ public class TzcPolicyTestController { @GetMapping("/testSyncPolicy") public R syncPolicy(Long policyId){ - //tzcPolicyApplicationService.syncPolicy(policyId); + tzcPolicyApplicationService.syncPolicyItem(policyId); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java index 1940656c..3d9ff180 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java @@ -22,6 +22,7 @@ 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.SysConfigService; import com.qs.serve.modules.sys.service.SysUserService; @@ -182,10 +183,14 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ policyItemDto.setInvCodeList(invCodes); policyItemDto.setPolicyGoodsItemList(goodsItems); - String policySyncUrl = projectApisProperties.getPolicySync(); - -// String rs = HttpUtil.doPost(policySyncUrl, JsonUtil.objectToJson(policyItemDto), null); -// log.debug("PolicySync() ==>{} \n{}",JsonUtil.objectToJson(policyItemDto),rs); +// String policySyncInvUrl = projectApisProperties.getPolicySyncInv(); +// String policySyncCateUrl = projectApisProperties.getPolicySyncCate(); +// String dataJson = JsonUtil.objectToJson(policyItemDto); +// +// String rs = HttpUtil.doPost(policySyncInvUrl, dataJson, null); +// log.debug("policySyncInvUrl:{}\n result:{}",policySyncInvUrl,rs); +// String rs2 = HttpUtil.doPost(policySyncCateUrl, dataJson, null); +// log.debug("policySyncCateUrl:{}\n result:{}",policySyncCateUrl,rs2); //TODO 测试临时注释 //保存异步处理的