Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
c5c32aa16b
  1. 5
      doc/update.sql
  2. 80
      src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java
  3. 4
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java
  4. 3
      src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java
  5. 4
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  6. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java
  7. 18
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemBudgetIdDto.java
  8. 63
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsScheduleItemWithAmount.java
  9. 59
      src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java
  10. 27
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java
  11. 72
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudget2Mapper.java
  12. 19
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java
  13. 9
      src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java
  14. 96
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java
  15. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  16. 9
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoOperationServiceImpl.java
  17. 81
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java
  18. 108
      src/main/java/com/qs/serve/modules/third/util/ThirdRequestLogUtil.java
  19. 4
      src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java
  20. 8
      src/main/java/com/qs/serve/task/GoodsTask.java
  21. 118
      src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml

5
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)

80
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<List<TbsScheduleItemWithAmount>> queryBudgetItemUsed(@RequestBody TbsScheduleItemSearch query){
query.initCenterCombo();
if(CollectionUtil.isNotEmpty(query.getScheduleIds())){
LambdaQueryWrapper<TbsScheduleItem> lqw = new LambdaQueryWrapper<>();
lqw.in(TbsScheduleItem::getScheduleId,query.getScheduleIds());
lqw.select(TbsScheduleItem::getId);
List<TbsScheduleItem> scheduleItemList = tbsScheduleItemMapper.selectList(lqw);
List<String> itemIds = scheduleItemList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
query.setScheduleItemIds(itemIds);
}
List<TbsScheduleItemBudgetIdDto> scheduleItemBudgetIdDtoList = scheduleItemBudget2Mapper.listItemBudgetIds(query);
List<Long> scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).collect(Collectors.toList());
if(CollectionUtil.isEmpty(scheduleItemIds)){
return R.ok();
}
List<TbsScheduleItem> scheduleItemList = tbsScheduleItemMapper.selectBatchIds(scheduleItemIds);
List<TbsSchedule> scheduleList = tbsScheduleMapper.selectList(new QueryWrapper<>());
List<TbsScheduleItemWithAmount> 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);
}
}

4
src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java

@ -234,7 +234,7 @@ public class GoodsSkuController {
List<String> delSkuCodes = delList.stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).collect(Collectors.toList()); List<String> delSkuCodes = delList.stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).collect(Collectors.toList());
QueryWrapper lqw1 = new QueryWrapper<>(); QueryWrapper lqw1 = new QueryWrapper<>();
lqw1.eq("target_type", TbsGoodsType.sku.name()); lqw1.eq("target_type", TbsGoodsType.sku.name());
lqw1.eq("target_code",delSkuCodes); lqw1.in("target_code",delSkuCodes);
lqw1.select("target_code"); lqw1.select("target_code");
List<TbsActivityGoods> activityGoodsList = activityGoodsService.list(lqw1); List<TbsActivityGoods> activityGoodsList = activityGoodsService.list(lqw1);
List<TbsBudgetCondition> budgetConditionList = budgetConditionService.list(lqw1); List<TbsBudgetCondition> budgetConditionList = budgetConditionService.list(lqw1);
@ -313,7 +313,7 @@ public class GoodsSkuController {
goodsSkuService.save(addSku); goodsSkuService.save(addSku);
} }
} }
return R.ok(param); return R.ok(param.getSkuList());
} }
private GoodsSku buildByImportItem(GoodsSkuImportBo.SkuItem skuItem){ private GoodsSku buildByImportItem(GoodsSkuImportBo.SkuItem skuItem){

3
src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java

@ -43,6 +43,9 @@ public class GoodsApplicationService {
private final SeeYonRequestBaseService seeYonRequestBaseService; private final SeeYonRequestBaseService seeYonRequestBaseService;
private final GoodsCrmSkuMapper goodsCrmSkuMapper; private final GoodsCrmSkuMapper goodsCrmSkuMapper;
public void syncSkuPrice(){
R<String> result = seeYonRequestBaseService.getBase(TbsSeeYonConst.ERP_CUS_INV_SYNC_PRICE,"");
}
public void syncStandGoods(boolean isFullUpdate){ public void syncStandGoods(boolean isFullUpdate){
//兼容任务调度 //兼容任务调度

4
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_INFO = "/process/getUserByCode";
String OA_USER_LIST_1 = "/process/getUsersList"; String OA_USER_LIST_1 = "/process/getUsersList";
/** 获取流水号 */
String API_FLOW_CODE_TODO = "/process/getTodoFlowCode?todoId=";
String TASK_SYNC_DISPATCH = "/task/dispatch"; String TASK_SYNC_DISPATCH = "/task/dispatch";
/** 客户账单余额 */ /** 客户账单余额 */
String ERP_CUS_AMOUNT = "/erp/customer/amount"; String ERP_CUS_AMOUNT = "/erp/customer/amount";
String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices"; String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices";
String ERP_CUS_INV_STAND = "/erp/inventory/standList"; 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_SPECIAL = "/erp/inventory/specialSyncCrm";
String ERP_CUS_INV_SHELF = "/erp/inventory/shelfSyncCrm"; String ERP_CUS_INV_SHELF = "/erp/inventory/shelfSyncCrm";
String ERP_ORDER_CREATE = "/erp/order/create"; String ERP_ORDER_CREATE = "/erp/order/create";

3
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java

@ -53,6 +53,9 @@ public class TbsCostTodo implements Serializable {
/** 致远表单id */ /** 致远表单id */
private String syFormId; private String syFormId;
/** 致远表单流水号 */
private String syFlowCode;
/** 涉及品牌 */ /** 涉及品牌 */
@Length(max = 255,message = "涉及品牌长度不能超过255字") @Length(max = 255,message = "涉及品牌长度不能超过255字")
private String brands; private String brands;

18
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;
}

63
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;
}

59
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<String> centerCombos;
/**
* 周期ID
*/
private List<String> scheduleIds;
/**
* 周期ID
*/
private List<String> scheduleItemIds;
/**
* 品牌ID
*/
private List<Long> brandIds;
/**
* 成本中心列表
*/
private List<CenterItem> 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());
}
}
}

27
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;
}

72
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> {
/**
* 查询TbsScheduleItemBudget.id
* @param query
* @return
*/
List<TbsScheduleItemBudgetIdDto> listItemBudgetIds(@Param("query") TbsScheduleItemSearch query);
/**
* 统计Schedule金额
* @param ids scheduleItemIds
* @param optNumbers 包含
* @return
*/
@InterceptorIgnore(tenantLine = "true")
List<TbsBudgetLogWithAmount> getSumAmtInList(@Param("selectIds") List<Long> ids,@Param("optNumbers")List<Integer> optNumbers);
/**
* 统计Schedule金额
* @param ids scheduleItemIds
* @param optNumbers 不包含
* @return
*/
@InterceptorIgnore(tenantLine = "true")
List<TbsBudgetLogWithAmount> getSumAmtNotInList(@Param("selectIds") List<Long> ids,@Param("optNumbers")List<Integer> optNumbers);
/**
* 统计审批中的政策占用多少的预算
* @param ids
* @param optNumbers
* @return
*/
@InterceptorIgnore(tenantLine = "true")
List<TbsBudgetLogWithAmount> getPolicyCheckingList(@Param("selectIds") List<Long> ids,@Param("optNumbers")List<Integer> optNumbers);
/**
* 统计审批中的费用占用多少的预算
* @param ids
* @param optNumbers
* @return
*/
@InterceptorIgnore(tenantLine = "true")
List<TbsBudgetLogWithAmount> getCostCheckingList(@Param("selectIds") List<Long> ids,@Param("optNumbers")List<Integer> optNumbers);
}

19
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<Long> activityIds, List<Long> budgetIds);
}

9
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.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; 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.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.time.LocalDate;
import java.util.List; import java.util.List;
@ -28,5 +30,12 @@ public interface TbsScheduleItemBudgetService extends IService<TbsScheduleItemBu
*/ */
List<TbsBudgetScheduleWithAmount> listScheduleAmountByIds(List<Long> scheduleItemBudgetIds); List<TbsBudgetScheduleWithAmount> listScheduleAmountByIds(List<Long> scheduleItemBudgetIds);
/**
* 统计预算周期使用情况
* @param budgetIdDtoList
* @return
*/
List<TbsScheduleItemWithAmount> listScheduleItemAmountByIds(List<TbsScheduleItemBudgetIdDto> budgetIdDtoList);
} }

96
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<Long> activityIds, List<Long> budgetIds) {
//加载基础数据
QueryWrapper acgLqw = new QueryWrapper<>();
acgLqw.in("activity_id",activityIds);
List<TbsBudget> budgetList = budgetMapper.selectBatchIds(budgetIds);
List<TbsActivity> activityList = activityMapper.selectBatchIds(activityIds);
List<TbsActivityCenter> allCenterList = activityCenterMapper.selectList(acgLqw);
List<TbsActivitySubject> allSubjectList = activitySubjectMapper.selectList(acgLqw);
List<TbsActivityCenterGoods> allCenterGoodsList = activityCenterGoodsMapper.selectList(acgLqw);
Map<Long,List<TbsActivityCenter>> centerListMap = allCenterList.stream().collect(Collectors.groupingBy(TbsActivityCenter::getActivityId));
Map<Long,List<TbsActivitySubject>> subjectListMap = allSubjectList.stream().collect(Collectors.groupingBy(TbsActivitySubject::getActivityId));
Map<Long,List<TbsActivityCenterGoods>> centerGoodsListMap = allCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId));
LambdaQueryWrapper<TbsBudgetCondition> conditionLqw = new LambdaQueryWrapper<>();
conditionLqw.in(TbsBudgetCondition::getBudgetId,budgetIds);
List<TbsBudgetCondition> allConditionList = budgetConditionMapper.selectList(conditionLqw);
Map<Long,List<TbsBudgetCondition>> 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<TbsActivitySubject> subjectList = subjectListMap.get(activityId);
for (TbsActivitySubject subject : subjectList) {
if(!subject.getSubjectId().equals(budget.getSubjectId())){
String msg = "无法匹配科目";
}
}
}
//判断成本中心
List<TbsActivityCenter> centerList = centerListMap.get(activityId);
for (TbsActivityCenter center : centerList) {
if(!center.getCenterType().equals(budget.getCenterType())||center.getCenterId().equals(budget.getCenterId())){
String msg = "无法匹配成本中心";
}
}
//判断时间
List<TbsBudgetCondition> budgetConditionList = conditionListMap.get(budgetId);
//判断品类
}
}
//
return null;
}
}

3
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -274,7 +274,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
} }
if(tbsCostApply.getTemplateId()!=null){ if(tbsCostApply.getTemplateId()!=null){
TbsActivityTemplate activityTemplate = tbsActivityTemplateService.getById(tbsCostApply.getTemplateId()); TbsActivityTemplate activityTemplate = tbsActivityTemplateService.getById(tbsCostApply.getTemplateId());
if(tbsCostApply.getChangeSourceId()==null&&activityTemplate.getTemplateState().equals(0)){ if(tbsCostApply.getChangeSourceId()==null&&activityTemplate.getTemplateState().equals(0)
&&!tbsCostApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){
Assert.throwEx("当前模板已停用"); Assert.throwEx("当前模板已停用");
} }
} }

9
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoOperationServiceImpl.java

@ -13,6 +13,7 @@ import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo;
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo; import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.tbs.common.TbsCommonCheckState; import com.qs.serve.modules.tbs.common.TbsCommonCheckState;
@ -50,6 +51,7 @@ public class TbsCostTodoOperationServiceImpl implements SeeYonOperationService {
private final SysUserMapper sysUserMapper; private final SysUserMapper sysUserMapper;
private final ProjectProperties projectProperties; private final ProjectProperties projectProperties;
private final SeeYonRequestService seeYonService; private final SeeYonRequestService seeYonService;
private final SeeYonRequestBaseService seeYonRequestBaseService;
/** /**
* 提交 * 提交
@ -98,6 +100,13 @@ public class TbsCostTodoOperationServiceImpl implements SeeYonOperationService {
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.CheckCostAgreeConf.Code(),param.getId()+""); BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.CheckCostAgreeConf.Code(),param.getId()+"");
seeYonService.createCallbackStatus(callbackBo); seeYonService.createCallbackStatus(callbackBo);
//流水号
R codeRs = seeYonRequestBaseService.getBase(TbsSeeYonConst.API_FLOW_CODE_TODO+todoId,"获取条款申请流水号");
if(codeRs!=null && codeRs.getData()!=null){
String flowCode = codeRs.getData().toString();
costTodo.setSyFlowCode(flowCode);
}
costTodo.setCheckStatus(TbsCommonCheckState.State_1_apply); costTodo.setCheckStatus(TbsCommonCheckState.State_1_apply);
costTodo.setSubmitTime(LocalDateTime.now()); costTodo.setSubmitTime(LocalDateTime.now());
costTodo.setSyFormId(formId); costTodo.setSyFormId(formId);

81
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java

@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetScheduleWithAmount; 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 com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudget2Mapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -28,6 +31,8 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl<TbsScheduleItemBudgetMapper,TbsScheduleItemBudget> implements TbsScheduleItemBudgetService { public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl<TbsScheduleItemBudgetMapper,TbsScheduleItemBudget> implements TbsScheduleItemBudgetService {
private final TbsScheduleItemBudget2Mapper scheduleItemBudget2Mapper;
@Override @Override
public List<TbsScheduleItemBudget> betweenDateList(LocalDate startDate, LocalDate endDate) { public List<TbsScheduleItemBudget> betweenDateList(LocalDate startDate, LocalDate endDate) {
LambdaQueryWrapper<TbsScheduleItemBudget> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsScheduleItemBudget> lqw = new LambdaQueryWrapper<>();
@ -125,5 +130,81 @@ public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl<TbsScheduleIte
} }
return result; return result;
} }
@Override
public List<TbsScheduleItemWithAmount> listScheduleItemAmountByIds(List<TbsScheduleItemBudgetIdDto> scheduleItemBudgetIdDtoList) {
List<Long> scheduleItemBudgetIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemBudgetId).collect(Collectors.toList());
List<Long> scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).distinct().collect(Collectors.toList());
// 预算金额
List<TbsBudgetLogWithAmount> finalList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.getFinalBudgetOptFlag());
// 被占用金额
List<TbsBudgetLogWithAmount> usedList = scheduleItemBudget2Mapper.getSumAmtNotInList(scheduleItemBudgetIds, BudgetLogOptFlag.getFinalBudgetOptFlag());
// 费用使用金额
List<TbsBudgetLogWithAmount> costUsedList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.finalCostOptFlag);
// 政策使用金额
List<TbsBudgetLogWithAmount> policyUsedList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.finalPolicyOptFlag);
List<TbsBudgetLogWithAmount> policyCheckingList = scheduleItemBudget2Mapper.getPolicyCheckingList(scheduleItemBudgetIds, BudgetLogOptFlag.finalPolicyOptFlag);
List<TbsBudgetLogWithAmount> costCheckingList = scheduleItemBudget2Mapper.getCostCheckingList(scheduleItemBudgetIds, BudgetLogOptFlag.finalCostOptFlag);
List<TbsScheduleItemWithAmount> 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;
}
} }

108
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<ThirtyRequestLog> 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;
}
}

4
src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java

@ -56,6 +56,10 @@ public class TzcPolicyItemController {
for (TzcPolicyItem policyItem : list) { for (TzcPolicyItem policyItem : list) {
List<TzcPolicyGoods> policyGoodsList = tzcPolicyGoodsService.listByItemId(policyItem.getId()); List<TzcPolicyGoods> policyGoodsList = tzcPolicyGoodsService.listByItemId(policyItem.getId());
policyItem.setPolicyGoodsList(policyGoodsList); policyItem.setPolicyGoodsList(policyGoodsList);
if(policyItem.getAttachIds()!=null&&policyItem.getAttachIds().length>0){
List<SysAttach> attachList = attachService.listByIds(Arrays.asList(policyItem.getAttachIds()));
policyItem.setAttachList(attachList);
}
} }
return R.ok(list); return R.ok(list);
} }

8
src/main/java/com/qs/serve/task/GoodsTask.java

@ -34,4 +34,12 @@ public class GoodsTask {
goodsApplicationService.syncStandGoods(false); goodsApplicationService.syncStandGoods(false);
} }
/**
* 同步价格
*/
@Scheduled(cron="0 0 1 * * ?")
public void syncInvPrice(){
goodsApplicationService.syncSkuPrice();
}
} }

118
src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudget2Mapper">
<select id="listItemBudgetIds" resultType="com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto">
SELECT
tbs_schedule_item_budget.id as schedule_item_budget_id,
tbs_schedule_item_budget.schedule_item_id
FROM `tbs_schedule_item_budget`
LEFT JOIN tbs_budget on tbs_schedule_item_budget.budget_id = tbs_budget.id
LEFT JOIN tbs_budget_condition on tbs_budget_condition.budget_id = tbs_budget.id
where
tbs_schedule_item_budget.del_flag = 0
and tbs_budget.del_flag = 0
and tbs_budget.budget_state = 1
<if test="query.centerCombos != null and query.centerCombos.size > 0">
and tbs_budget.center_combo in
<foreach collection="query.centerCombos" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="query.brandIds != null and query.brandIds.size > 0">
and
(
tbs_budget.condition_flag = 0 or tbs_budget_condition.brand_id in
<foreach collection="query.brandIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
)
</if>
and tbs_schedule_item_budget.schedule_item_id in
<foreach collection="query.scheduleItemIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
group by tbs_schedule_item_budget.id
</select>
<select id="getSumAmtInList" resultType="com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount">
select
schedule_item_id as id,
sum(amount) as amt
from tbs_budget_log
where
del_flag = 0 and opt_type in
<foreach collection="optNumbers" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND schedule_item_budget_id in
<foreach collection="selectIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
group by schedule_item_id
</select>
<select id="getSumAmtNotInList" resultType="com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount">
select
schedule_item_id as id,
sum(amount) as amt
from tbs_budget_log
where
del_flag = 0 and opt_type not in
<foreach collection="optNumbers" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND schedule_item_budget_id in
<foreach collection="selectIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
group by schedule_item_id
</select>
<select id="getPolicyCheckingList" resultType="com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount">
select
schedule_item_id as id,
sum(amount) as amt
from tbs_budget_log
left join tzc_policy on tbs_budget_log.policy_id = tzc_policy.id
where
tbs_budget_log.policy_id is not null
and tzc_policy.policy_status = 1
and tbs_budget_log.del_flag = 0
and tzc_policy.del_flag = 0
and opt_type in
<foreach collection="optNumbers" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND schedule_item_budget_id in
<foreach collection="selectIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
group by schedule_item_id
</select>
<select id="getCostCheckingList" resultType="com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount">
select
schedule_item_id as id,
sum(amount) as amt
from tbs_budget_log
left join tbs_cost_apply on tbs_budget_log.cost_apply_id = tbs_cost_apply.id
where
tbs_budget_log.cost_apply_id is not null
and tbs_cost_apply.charge_state = 1
and tbs_budget_log.del_flag = 0
and tbs_cost_apply.del_flag = 0
and opt_type in
<foreach collection="optNumbers" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND schedule_item_budget_id in
<foreach collection="selectIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
group by schedule_item_id
</select>
</mapper>
Loading…
Cancel
Save