diff --git a/doc/update.sql b/doc/update.sql new file mode 100644 index 00000000..50998a79 --- /dev/null +++ b/doc/update.sql @@ -0,0 +1,5 @@ + +update tbs_budget_condition set brand_id = SUBSTRING_INDEX(target_level_path_ids,'_',1) + +update tbs_budget set center_combo = concat(center_type,'_',center_id) + diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java new file mode 100644 index 00000000..675297e8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java @@ -0,0 +1,80 @@ +package com.qs.serve.modules.bir.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.modules.tbs.entity.TbsSchedule; +import com.qs.serve.modules.tbs.entity.TbsScheduleItem; +import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto; +import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemWithAmount; +import com.qs.serve.modules.tbs.entity.so.TbsScheduleItemSearch; +import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudget2Mapper; +import com.qs.serve.modules.tbs.mapper.TbsScheduleItemMapper; +import com.qs.serve.modules.tbs.mapper.TbsScheduleMapper; +import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/12/27 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("bir/budget") +public class BirBudgetScheduleController { + + private final TbsScheduleItemBudgetService scheduleItemBudgetService; + private final TbsScheduleItemBudget2Mapper scheduleItemBudget2Mapper; + private final TbsScheduleItemMapper tbsScheduleItemMapper; + private final TbsScheduleMapper tbsScheduleMapper; + + + /** + * 查询周期使用情况 + * @param query + * @return + */ + @PostMapping("/budgetItemUsedList") + public R> queryBudgetItemUsed(@RequestBody TbsScheduleItemSearch query){ + query.initCenterCombo(); + if(CollectionUtil.isNotEmpty(query.getScheduleIds())){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(TbsScheduleItem::getScheduleId,query.getScheduleIds()); + lqw.select(TbsScheduleItem::getId); + List scheduleItemList = tbsScheduleItemMapper.selectList(lqw); + List itemIds = scheduleItemList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + query.setScheduleItemIds(itemIds); + } + List scheduleItemBudgetIdDtoList = scheduleItemBudget2Mapper.listItemBudgetIds(query); + List scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).collect(Collectors.toList()); + if(CollectionUtil.isEmpty(scheduleItemIds)){ + return R.ok(); + } + List scheduleItemList = tbsScheduleItemMapper.selectBatchIds(scheduleItemIds); + List scheduleList = tbsScheduleMapper.selectList(new QueryWrapper<>()); + List scheduleItemWithAmounts = scheduleItemBudgetService.listScheduleItemAmountByIds(scheduleItemBudgetIdDtoList); + for (TbsScheduleItemWithAmount itemWithAmount : scheduleItemWithAmounts) { + for (TbsScheduleItem scheduleItem : scheduleItemList) { + if(itemWithAmount.getScheduleItemId().equals(scheduleItem.getId())){ + itemWithAmount.setScheduleItemName(scheduleItem.getItemName()); + for (TbsSchedule schedule : scheduleList) { + if(schedule.getId().equals(scheduleItem.getScheduleId())){ + itemWithAmount.setScheduleName(schedule.getName()); + break; + } + } + break; + } + } + } + return R.ok(scheduleItemWithAmounts); + } + +} 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 58f6bf29..fe652298 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 @@ -234,7 +234,7 @@ public class GoodsSkuController { List delSkuCodes = delList.stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).collect(Collectors.toList()); QueryWrapper lqw1 = new QueryWrapper<>(); lqw1.eq("target_type", TbsGoodsType.sku.name()); - lqw1.eq("target_code",delSkuCodes); + lqw1.in("target_code",delSkuCodes); lqw1.select("target_code"); List activityGoodsList = activityGoodsService.list(lqw1); List budgetConditionList = budgetConditionService.list(lqw1); @@ -313,7 +313,7 @@ public class GoodsSkuController { goodsSkuService.save(addSku); } } - return R.ok(param); + return R.ok(param.getSkuList()); } private GoodsSku buildByImportItem(GoodsSkuImportBo.SkuItem skuItem){ diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java index fd14aea5..268dc86b 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java @@ -43,6 +43,9 @@ public class GoodsApplicationService { private final SeeYonRequestBaseService seeYonRequestBaseService; private final GoodsCrmSkuMapper goodsCrmSkuMapper; + public void syncSkuPrice(){ + R result = seeYonRequestBaseService.getBase(TbsSeeYonConst.ERP_CUS_INV_SYNC_PRICE,""); + } public void syncStandGoods(boolean isFullUpdate){ //兼容任务调度 diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index 5e4bedc7..8bd192fd 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java @@ -84,12 +84,16 @@ public interface TbsSeeYonConst { String OA_USER_INFO = "/process/getUserByCode"; String OA_USER_LIST_1 = "/process/getUsersList"; + /** 获取流水号 */ + String API_FLOW_CODE_TODO = "/process/getTodoFlowCode?todoId="; + String TASK_SYNC_DISPATCH = "/task/dispatch"; /** 客户账单余额 */ String ERP_CUS_AMOUNT = "/erp/customer/amount"; String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices"; String ERP_CUS_INV_STAND = "/erp/inventory/standList"; + String ERP_CUS_INV_SYNC_PRICE = "/erp/inventory/syncPrice"; String ERP_CUS_INV_SPECIAL = "/erp/inventory/specialSyncCrm"; String ERP_CUS_INV_SHELF = "/erp/inventory/shelfSyncCrm"; String ERP_ORDER_CREATE = "/erp/order/create"; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java index cc53a493..33320255 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java @@ -53,6 +53,9 @@ public class TbsCostTodo implements Serializable { /** 致远表单id */ private String syFormId; + /** 致远表单流水号 */ + private String syFlowCode; + /** 涉及品牌 */ @Length(max = 255,message = "涉及品牌长度不能超过255字") private String brands; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemBudgetIdDto.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemBudgetIdDto.java new file mode 100644 index 00000000..15f4c8c4 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemBudgetIdDto.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.tbs.entity.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/6/29 + */ +@Data +public class TbsScheduleItemBudgetIdDto { + + Long scheduleItemId; + + Long scheduleItemBudgetId; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemWithAmount.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemWithAmount.java new file mode 100644 index 00000000..409283f0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemWithAmount.java @@ -0,0 +1,63 @@ +package com.qs.serve.modules.tbs.entity.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/6/29 + */ +@Data +public class TbsScheduleItemWithAmount { + + /** + * 周期项ID + */ + Long scheduleItemId; + + String scheduleName; + + String scheduleItemName; + + /** + * 预算总额 + */ + BigDecimal finalAmt = BigDecimal.ZERO; + + /** + * 当前占用中的预算 + */ + BigDecimal allUsingAmt = BigDecimal.ZERO; + + /** + * 申请中的预算占用 + */ + BigDecimal allCheckingAmt = BigDecimal.ZERO; + + /** + * 费用申请-申请中的预算 + */ + BigDecimal costUsingAmt = BigDecimal.ZERO; + + /** + * 费用申请-申请中的预算 + */ + BigDecimal costCheckingAmt = BigDecimal.ZERO; + + /** + * 政策-申请中的预算 + */ + BigDecimal policyUsingAmt = BigDecimal.ZERO; + + /** + * 政策-申请中的预算 + */ + BigDecimal policyCheckingAmt = BigDecimal.ZERO; + + /** + * 剩余预算(预算总额-当前占用的预算) + */ + BigDecimal surplusAmt = BigDecimal.ZERO; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java new file mode 100644 index 00000000..a2590144 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java @@ -0,0 +1,59 @@ +package com.qs.serve.modules.tbs.entity.so; + +import com.qs.serve.common.util.CollectionUtil; +import lombok.Data; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/12/27 + */ +@Data +public class TbsScheduleItemSearch { + + /** + * 成本中心组合值列表,格式:centerType_centerId + */ + private List centerCombos; + + /** + * 周期ID + */ + private List scheduleIds; + + /** + * 周期ID + */ + private List scheduleItemIds; + + /** + * 品牌ID + */ + private List brandIds; + + /** + * 成本中心列表 + */ + private List centerList; + + @Data + public static class CenterItem{ + + private String centerType; + + private String centerId; + + } + + /** + * 调整数据结构 + */ + public void initCenterCombo(){ + if(CollectionUtil.isNotEmpty(centerList)){ + this.centerCombos = centerList.stream().map(a-> a.getCenterType()+"_"+a.getCenterId()).collect(Collectors.toList()); + } + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java new file mode 100644 index 00000000..89c30795 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java @@ -0,0 +1,27 @@ +package com.qs.serve.modules.tbs.entity.vo; + +/** + * @author YenHex + * @since 2023/12/28 + */ +public class TbsBudgetMatchMsgVo { + + /** 活动ID */ + private Long activityId; + + /** 活动编码 */ + private String activityCode; + + /** 活动标题 */ + private String activityTitle; + + /** 预算ID */ + private Long budgetId; + + /** 预算编码 */ + private String budgetCode; + + /** 预算标题 */ + private String budgetTitle; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudget2Mapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudget2Mapper.java new file mode 100644 index 00000000..8842995b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudget2Mapper.java @@ -0,0 +1,72 @@ +package com.qs.serve.modules.tbs.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; +import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogPreAmount; +import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount; +import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetAmount; +import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto; +import com.qs.serve.modules.tbs.entity.so.TbsScheduleItemSearch; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 预算考核期项 Mapper + * @author YenHex + * @date 2022-11-08 + */ +public interface TbsScheduleItemBudget2Mapper extends BaseMapper { + + /** + * 查询TbsScheduleItemBudget.id + * @param query + * @return + */ + List listItemBudgetIds(@Param("query") TbsScheduleItemSearch query); + + + /** + * 统计Schedule金额 + * @param ids scheduleItemIds + * @param optNumbers 包含 + * @return + */ + @InterceptorIgnore(tenantLine = "true") + List getSumAmtInList(@Param("selectIds") List ids,@Param("optNumbers")List optNumbers); + + + /** + * 统计Schedule金额 + * @param ids scheduleItemIds + * @param optNumbers 不包含 + * @return + */ + @InterceptorIgnore(tenantLine = "true") + List getSumAmtNotInList(@Param("selectIds") List ids,@Param("optNumbers")List optNumbers); + + + + /** + * 统计审批中的政策,占用多少的预算 + * @param ids + * @param optNumbers + * @return + */ + @InterceptorIgnore(tenantLine = "true") + List getPolicyCheckingList(@Param("selectIds") List ids,@Param("optNumbers")List optNumbers); + + /** + * 统计审批中的费用,占用多少的预算 + * @param ids + * @param optNumbers + * @return + */ + @InterceptorIgnore(tenantLine = "true") + List getCostCheckingList(@Param("selectIds") List ids,@Param("optNumbers")List optNumbers); + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java new file mode 100644 index 00000000..cb794ab4 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.tbs.service; + +import java.util.List; + +/** + * @author YenHex + * @since 2023/12/28 + */ +public interface TbsBudgetManagerService { + + /** + * 对比活动和预算进行条件匹配,返回不符合的内容(以Budget为参照物,全量匹配) + * @param activityIds + * @param budgetIds + * @return + */ + Object compare(List activityIds, List budgetIds); + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java index 273ee972..aaa2ef8c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetScheduleWithAmount; +import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto; +import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemWithAmount; import java.time.LocalDate; import java.util.List; @@ -28,5 +30,12 @@ public interface TbsScheduleItemBudgetService extends IService listScheduleAmountByIds(List scheduleItemBudgetIds); + /** + * 统计预算周期使用情况 + * @param budgetIdDtoList + * @return + */ + List listScheduleItemAmountByIds(List budgetIdDtoList); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java new file mode 100644 index 00000000..f8cd6ec6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java @@ -0,0 +1,96 @@ +package com.qs.serve.modules.tbs.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.mapper.*; +import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService; +import com.qs.serve.modules.tbs.service.TbsBudgetManagerService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/12/28 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { + + private final TbsActivityMapper activityMapper; + private final TbsActivityCenterMapper activityCenterMapper; + private final TbsActivitySubjectMapper activitySubjectMapper; + private final TbsActivityCenterGoodsMapper activityCenterGoodsMapper; + private final TbsBudgetMapper budgetMapper; + private final TbsBudgetConditionMapper budgetConditionMapper; + private final TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; + + @Override + public Object compare(List activityIds, List budgetIds) { + //加载基础数据 + QueryWrapper acgLqw = new QueryWrapper<>(); + acgLqw.in("activity_id",activityIds); + + List budgetList = budgetMapper.selectBatchIds(budgetIds); + List activityList = activityMapper.selectBatchIds(activityIds); + List allCenterList = activityCenterMapper.selectList(acgLqw); + List allSubjectList = activitySubjectMapper.selectList(acgLqw); + List allCenterGoodsList = activityCenterGoodsMapper.selectList(acgLqw); + + Map> centerListMap = allCenterList.stream().collect(Collectors.groupingBy(TbsActivityCenter::getActivityId)); + Map> subjectListMap = allSubjectList.stream().collect(Collectors.groupingBy(TbsActivitySubject::getActivityId)); + Map> centerGoodsListMap = allCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId)); + + LambdaQueryWrapper conditionLqw = new LambdaQueryWrapper<>(); + conditionLqw.in(TbsBudgetCondition::getBudgetId,budgetIds); + List allConditionList = budgetConditionMapper.selectList(conditionLqw); + + + Map> conditionListMap = allConditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); + + //匹对 + for (TbsBudget budget : budgetList) { + for (TbsActivity activity : activityList) { + Long budgetId = budget.getId(); + Long activityId = activity.getId(); + //判断科目 + if(!budget.getSubjectId().equals(0L)){ + List subjectList = subjectListMap.get(activityId); + for (TbsActivitySubject subject : subjectList) { + if(!subject.getSubjectId().equals(budget.getSubjectId())){ + String msg = "无法匹配科目"; + } + } + } + //判断成本中心 + List centerList = centerListMap.get(activityId); + for (TbsActivityCenter center : centerList) { + if(!center.getCenterType().equals(budget.getCenterType())||center.getCenterId().equals(budget.getCenterId())){ + String msg = "无法匹配成本中心"; + } + } + //判断时间 + List budgetConditionList = conditionListMap.get(budgetId); + //判断品类 + + + } + + } + + + // + + + return null; + } + + + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index f9841e6d..14baf01b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -274,7 +274,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl implements TbsScheduleItemBudgetService { + private final TbsScheduleItemBudget2Mapper scheduleItemBudget2Mapper; + @Override public List betweenDateList(LocalDate startDate, LocalDate endDate) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); @@ -125,5 +130,81 @@ public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl listScheduleItemAmountByIds(List scheduleItemBudgetIdDtoList) { + + List scheduleItemBudgetIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemBudgetId).collect(Collectors.toList()); + List scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).distinct().collect(Collectors.toList()); + + // 预算金额 + List finalList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.getFinalBudgetOptFlag()); + // 被占用金额 + List usedList = scheduleItemBudget2Mapper.getSumAmtNotInList(scheduleItemBudgetIds, BudgetLogOptFlag.getFinalBudgetOptFlag()); + // 费用使用金额 + List costUsedList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.finalCostOptFlag); + // 政策使用金额 + List policyUsedList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.finalPolicyOptFlag); + + List policyCheckingList = scheduleItemBudget2Mapper.getPolicyCheckingList(scheduleItemBudgetIds, BudgetLogOptFlag.finalPolicyOptFlag); + + List costCheckingList = scheduleItemBudget2Mapper.getCostCheckingList(scheduleItemBudgetIds, BudgetLogOptFlag.finalCostOptFlag); + + List result = new ArrayList<>(); + + for (Long scheduleItemId : scheduleItemIds) { + TbsScheduleItemWithAmount withAmount = new TbsScheduleItemWithAmount(); + withAmount.setScheduleItemId(scheduleItemId); + for (TbsBudgetLogWithAmount obj : finalList) { + if(scheduleItemId.equals(obj.getId())){ + withAmount.setFinalAmt(obj.getAmt()); + break; + } + } + for (TbsBudgetLogWithAmount obj : usedList) { + if(scheduleItemId.equals(obj.getId())){ + withAmount.setAllUsingAmt(obj.getAmt()); + break; + } + } + + for (TbsBudgetLogWithAmount obj : costUsedList) { + if(scheduleItemId.equals(obj.getId())){ + withAmount.setCostUsingAmt(obj.getAmt()); + break; + } + } + for (TbsBudgetLogWithAmount obj : policyUsedList) { + if(scheduleItemId.equals(obj.getId())){ + withAmount.setPolicyUsingAmt(obj.getAmt()); + break; + } + } + for (TbsBudgetLogWithAmount obj : costCheckingList) { + if(scheduleItemId.equals(obj.getId())){ + withAmount.setCostCheckingAmt(obj.getAmt()); + break; + } + } + for (TbsBudgetLogWithAmount obj : policyCheckingList) { + if(scheduleItemId.equals(obj.getId())){ + withAmount.setPolicyCheckingAmt(obj.getAmt()); + break; + } + } + //因为log统计为负数,需要把数值取正 + withAmount.setAllUsingAmt(withAmount.getAllUsingAmt().negate()); + withAmount.setCostUsingAmt(withAmount.getCostUsingAmt().negate()); + withAmount.setCostCheckingAmt(withAmount.getCostCheckingAmt().negate()); + withAmount.setPolicyUsingAmt(withAmount.getPolicyUsingAmt().negate()); + withAmount.setPolicyCheckingAmt(withAmount.getPolicyCheckingAmt().negate()); + //计算剩余及审批合计 + withAmount.setAllCheckingAmt(withAmount.getCostCheckingAmt().add(withAmount.getPolicyCheckingAmt())); + withAmount.setSurplusAmt(withAmount.getFinalAmt().subtract(withAmount.getAllUsingAmt())); + result.add(withAmount); + } + return result; + } + } diff --git a/src/main/java/com/qs/serve/modules/third/util/ThirdRequestLogUtil.java b/src/main/java/com/qs/serve/modules/third/util/ThirdRequestLogUtil.java new file mode 100644 index 00000000..11c3ab89 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/util/ThirdRequestLogUtil.java @@ -0,0 +1,108 @@ +package com.qs.serve.modules.third.util; + +import lombok.Data; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +/** + * 日志平台工具类(Spring版本) + * @author YenHex + * @since 2023/12/21 + */ +public class ThirdRequestLogUtil { + + /* + public static void main(String[] args) { + ThirtyRequestLog requestLog = new ThirtyRequestLog(); + requestLog.setTitle("test"); + requestLog.setModule("test"); + requestLog.setRequestJson("{}"); + requestLog.setResponseJson("{}"); + requestLog.setKey1("A100"); + requestLog.setKey2("A100"); + requestLog.setKey3("A100"); + requestLog.setErrorMsg("A100"); + requestLog.setLogLevel("info"); + requestLog.setSuccessStatus(1); + requestLog.setRemark("A100"); + requestLog.setExtValue1("A100"); + requestLog.setExtValue2("A100"); + requestLog.setExtValue3("A100"); + requestLog.setExtValue4("A100"); + + String rs = ThirdRequestLogUtil.post(requestLog); + System.out.println(rs); + }*/ + + private static final String SAVE_LOG_URL = "http://192.168.0.9:7100/api/reqLog/saveLog"; + + private static RestTemplate restTemplate; + + private static RestTemplate getRestTemplate(){ + if(restTemplate==null){ + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setReadTimeout(5000); + factory.setConnectTimeout(15000); + restTemplate = new RestTemplate(factory); + } + return restTemplate; + } + + public static String post(ThirtyRequestLog requestLog) { + HttpHeaders headers = new HttpHeaders(); + HttpEntity formEntity = new HttpEntity<>(requestLog,headers); + return getRestTemplate().postForObject(SAVE_LOG_URL,formEntity, String.class); + } + + @Data + public static class ThirtyRequestLog{ + + /** 标题 长度255 */ + private String title; + + /** 业务模块 长度255 */ + private String module; + + /** 请求json 只接受json */ + private String requestJson; + + /** 返回json 只接受json */ + private String responseJson; + + /** 键id_1 长度255 */ + private String key1; + + /** 键id_2 长度255 */ + private String key2; + + /** 键id_3 长度255 */ + private String key3; + + /** 错误信息 长度不能超过1255字 */ + private String errorMsg; + + /** 严重程度:info,warning,error */ + private String logLevel; + + /** 状态:0-不成功,需要处理;1-成功 */ + private Integer successStatus; + + /** 备注 长度不能超过255字 */ + private String remark; + + /** 拓展1 长度不能超过255字 */ + private String extValue1; + + /** 拓展2 长度不能超过255字 */ + private String extValue2; + + /** 拓展3 长度不能超过255字 */ + private String extValue3; + + /** 拓展4 长度不能超过255字 */ + private String extValue4; + } + +} diff --git a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java index 1e00b33d..e8186c75 100644 --- a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java +++ b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java @@ -56,6 +56,10 @@ public class TzcPolicyItemController { for (TzcPolicyItem policyItem : list) { List policyGoodsList = tzcPolicyGoodsService.listByItemId(policyItem.getId()); policyItem.setPolicyGoodsList(policyGoodsList); + if(policyItem.getAttachIds()!=null&&policyItem.getAttachIds().length>0){ + List attachList = attachService.listByIds(Arrays.asList(policyItem.getAttachIds())); + policyItem.setAttachList(attachList); + } } return R.ok(list); } diff --git a/src/main/java/com/qs/serve/task/GoodsTask.java b/src/main/java/com/qs/serve/task/GoodsTask.java index 873ad504..63054584 100644 --- a/src/main/java/com/qs/serve/task/GoodsTask.java +++ b/src/main/java/com/qs/serve/task/GoodsTask.java @@ -34,4 +34,12 @@ public class GoodsTask { goodsApplicationService.syncStandGoods(false); } + /** + * 同步价格 + */ + @Scheduled(cron="0 0 1 * * ?") + public void syncInvPrice(){ + goodsApplicationService.syncSkuPrice(); + } + } diff --git a/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml b/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml new file mode 100644 index 00000000..bf341c04 --- /dev/null +++ b/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + +