diff --git a/src/main/java/com/qs/serve/common/model/consts/DSName.java b/src/main/java/com/qs/serve/common/model/consts/DSName.java new file mode 100644 index 00000000..bd74fcd5 --- /dev/null +++ b/src/main/java/com/qs/serve/common/model/consts/DSName.java @@ -0,0 +1,11 @@ +package com.qs.serve.common.model.consts; + +/** + * @author YenHex + * @since 2024/3/20 + */ +public interface DSName { + + String QiSheng = "qisheng"; + +} diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java index e6b7bc33..f8d519c4 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java @@ -31,7 +31,9 @@ import com.qs.serve.modules.bms.service.BmsSupplierChannelService; import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.oss.service.OssService; import com.qs.serve.modules.tbs.entity.TbsActivityChannel; +import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.service.TbsActivityChannelService; +import com.qs.serve.modules.tbs.service.TbsCostApplyService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -40,6 +42,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.io.*; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -59,6 +62,7 @@ public class BirActivityCenterGoodsController { private OssService ossService; private AliYunOssProperties aliYunOSSProperties; private BirActivityCenterGoodsService centerGoodsService; + private TbsCostApplyService tbsCostApplyService; @GetMapping("/toSyncBir") public R syncBir(Long costId){ @@ -66,6 +70,39 @@ public class BirActivityCenterGoodsController { return R.ok(); } + @GetMapping("/toSyncDev") + public R syncBir(Integer idType){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); +// int start = (idType-1)*50000; +// int end = start + 50000; +// lqw.between(TbsCostApply::getId,start,end); + lqw.notIn(TbsCostApply::getChargeState,0,6,5,8) + .select(TbsCostApply::getId) + .eq(TbsCostApply::getCancelFlag,0) + .eq(TbsCostApply::getTmpState,0) + .gt(TbsCostApply::getTotalActivity,0) + //.notIn(TbsCostApply::getId,21452,21598,23104,23148) + .ge(TbsCostApply::getSubmitTime, LocalDate.of(2023,1,1).atStartOfDay()) + .last(" limit 100"); + + boolean ex = extracted(lqw); + while (!ex){ + ex = extracted(lqw); + } + return R.ok(); + } + private boolean extracted(LambdaQueryWrapper lqw) { + List costApplyList = tbsCostApplyService.list(lqw); + List costIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()); + centerGoodsService.rebuildBir(costIds); + LambdaQueryWrapper updLqw = new LambdaQueryWrapper<>(); + updLqw.in(TbsCostApply::getId,costIds); + TbsCostApply costApply = new TbsCostApply(); + costApply.setTmpState(1); + tbsCostApplyService.update(costApply,updLqw); + return costIds.size()<100; + } + /** * 翻页 * @param param diff --git a/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java b/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java index 19d86dc9..4cc732d3 100644 --- a/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java +++ b/src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java @@ -23,7 +23,7 @@ import javax.validation.constraints.NotBlank; * @since 2023-07-07 */ @Data -@TableName("bir_activity_center_goods") +@TableName("bir_activity_center_goods_qs") public class BirActivityCenterGoods implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java b/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java index 42793896..7beeaf56 100644 --- a/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java +++ b/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java @@ -22,7 +22,7 @@ import javax.validation.constraints.NotBlank; * @since 2023-06-05 */ @Data -@TableName("bir_base_activity") +@TableName("bir_base_activity_qs") public class BirBaseActivity implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/qs/serve/modules/bir/mapper/BirActivityCenterGoodsMapper.java b/src/main/java/com/qs/serve/modules/bir/mapper/BirActivityCenterGoodsMapper.java index 5f2873d0..13af4519 100644 --- a/src/main/java/com/qs/serve/modules/bir/mapper/BirActivityCenterGoodsMapper.java +++ b/src/main/java/com/qs/serve/modules/bir/mapper/BirActivityCenterGoodsMapper.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bir.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.common.model.consts.DSName; import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; import com.qs.serve.modules.bir.entity.so.BirMonthCusCenterSo; import com.qs.serve.modules.bir.entity.vo.BirActivityCenterGoodsMonthVo; @@ -19,7 +20,7 @@ import java.util.List; * @author YenHex * @date 2023-07-06 */ -@DS("erp_stand_ds") +@DS(DSName.QiSheng) public interface BirActivityCenterGoodsMapper extends BaseMapper { //List selectErrorBir(); diff --git a/src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java b/src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java index 5fad4d28..d107cce7 100644 --- a/src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java +++ b/src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bir.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.common.model.consts.DSName; import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.dto.UnMatchBirRecord; import com.qs.serve.modules.tbs.entity.TbsActivity; @@ -17,7 +18,7 @@ import java.util.List; * @author YenHex * @date 2023-06-05 */ -@DS("erp_stand_ds") +@DS(DSName.QiSheng) public interface BirBaseActivityMapper extends BaseMapper { //List selectByBirActivity(@Param("startDate") LocalDate startDate, @Param("endDate")LocalDate endDate); diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java index 194e0fcc..8dd77066 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java @@ -4,10 +4,7 @@ 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.model.dto.DateSplitDTO; -import com.qs.serve.common.util.Assert; -import com.qs.serve.common.util.CollectionUtil; -import com.qs.serve.common.util.DateSplitUtil; -import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.*; import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.BirRemoveId; import com.qs.serve.modules.bir.entity.dto.BirCenterGoodSplitDTO; @@ -105,9 +102,12 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl rmCostId = new LambdaQueryWrapper<>(); - rmCostId.in(BirActivityCenterGoods::getCostApplyId,rmIds); - this.remove(rmCostId); + if(rmIds.size()>0){ + LambdaQueryWrapper rmCostId = new LambdaQueryWrapper<>(); + rmCostId.in(BirActivityCenterGoods::getCostApplyId,rmIds); + this.remove(rmCostId); + } + //过滤需要移除的ID costApplyIds = buildIds; @@ -208,8 +208,12 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl0){ - this.saveBatch(bacgList); +// if(bacgList.size()>0){ +// this.saveBatch(bacgList); +// } + for (BirActivityCenterGoods bir : bacgList) { + bir.setId(IdUtil.getSnowFlakeId()); + super.getBaseMapper().insert(bir); } } } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java index 8900f35d..c64a4fa4 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java @@ -6,6 +6,7 @@ import com.qs.serve.common.model.dto.DateSplitDTO; import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.DateSplitUtil; +import com.qs.serve.common.util.IdUtil; import com.qs.serve.modules.bir.entity.dto.UnMatchBirRecord; import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.tbs.entity.TbsActivity; @@ -173,7 +174,11 @@ public class BirBaseActivityServiceImpl extends ServiceImpl updateBySkuCode(GoodsSku param){ + public R updateBySkuCode(@RequestBody GoodsSku param){ param.setId(null); param.setSpuId(null); GoodsSku sku = goodsSkuService.getByCode(param.getSkuCode()); 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 98dab965..ef8ecb1e 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 @@ -235,6 +235,8 @@ public class TbsCostApply implements Serializable { /** 验收状态: 0->未验收;1-验收中;2-部分验收;3完成 */ private Integer agreeCheckStatus; + private Integer tmpState; + @TableField(exist = false) private String affairId; @@ -278,5 +280,6 @@ public class TbsCostApply implements Serializable { */ @TableField(exist = false) List changeInfoLogs; + } 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 4d9002d5..567e918b 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 @@ -680,6 +680,10 @@ public class PortalOfCostApplication { String costCode = createBo.getCostCode(); String costTheme = createBo.getCostTheme(); + if(totalAmount.compareTo(BigDecimal.ZERO)==0){ + Assert.throwEx("统计金额不能为0"); + } + String activityCode = costCode; if(StringUtils.hasText(activityCode)){ @@ -767,6 +771,10 @@ public class PortalOfCostApplication { } //活动-商品与成本中心记录 List activityCenterGoodsList = new ArrayList<>(); + BigDecimal yx06Surplus = totalAmount; + BigDecimal yx06SurplusRate = new BigDecimal("100"); + BigDecimal yx06ItemAmt = totalAmount.divide(new BigDecimal(activityGoodsList.size()), RoundingMode.DOWN); + BigDecimal yx06Rate = yx06ItemAmt.divide(totalAmount, RoundingMode.DOWN); for (int i = 0; i < activityGoodsList.size(); i++) { TbsActivityGoods activityGoods = activityGoodsList.get(i); TbsActivityCenterGoods centerGoods = new TbsActivityCenterGoods(); @@ -800,16 +808,30 @@ public class PortalOfCostApplication { centerGoods.setTargetLevelPathIds(activityGoods.getTargetLevelPathIds()); centerGoods.setTargetLevelPathNames(activityGoods.getTargetLevelPathNames()); // 分配金额 - BigDecimal totalSkuAmt = BigDecimal.ZERO; - for (ProcessGoodsItem goodsItem : processGoodsItems) { - if(goodsItem.getInventoryCode().equals(activityGoods.getTargetCode())){ - totalSkuAmt = totalSkuAmt.add(goodsItem.getAmount()); + if (costCode.contains("YX06")){ + if(i+1==activityGoodsList.size()){ + centerGoods.setCenterGoodsAmount(yx06Surplus); + centerGoods.setCenterGoodsRate(yx06SurplusRate); + centerGoods.setUsedAmount(yx06Surplus); + }else { + yx06SurplusRate = yx06SurplusRate.subtract(yx06Rate); + yx06Surplus = yx06Surplus.subtract(yx06ItemAmt); + centerGoods.setCenterGoodsAmount(yx06ItemAmt); + centerGoods.setCenterGoodsRate(yx06Rate); + centerGoods.setUsedAmount(yx06ItemAmt); } + }else { + BigDecimal totalSkuAmt = BigDecimal.ZERO; + for (ProcessGoodsItem goodsItem : processGoodsItems) { + if(goodsItem.getInventoryCode().equals(activityGoods.getTargetCode())){ + totalSkuAmt = totalSkuAmt.add(goodsItem.getAmount()); + } + } + BigDecimal rate = totalSkuAmt.divide(totalAmount, RoundingMode.UP); + centerGoods.setCenterGoodsAmount(totalSkuAmt); + centerGoods.setCenterGoodsRate(rate); + centerGoods.setUsedAmount(totalSkuAmt); } - BigDecimal rate = totalSkuAmt.divide(totalAmount, RoundingMode.UP); - centerGoods.setCenterGoodsAmount(totalSkuAmt); - centerGoods.setCenterGoodsRate(rate); - centerGoods.setUsedAmount(totalSkuAmt); activityCenterGoodsList.add(centerGoods); }