Browse Source

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

v1.0
15989082884@163.com 2 years ago
parent
commit
bc535036c0
  1. 17
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  2. 37
      src/main/java/com/qs/serve/modules/bms/controller/BmsDutyInfoController.java
  3. 97
      src/main/java/com/qs/serve/modules/bms/entity/BmsDutyInfo.java
  4. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsDutyInfoMapper.java
  5. 14
      src/main/java/com/qs/serve/modules/bms/service/BmsDutyInfoService.java
  6. 10
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java
  7. 22
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsDutyInfoServiceImpl.java
  8. 31
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java
  9. 2
      src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java
  10. 5
      src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java
  11. 5
      src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java
  12. 14
      src/main/java/com/qs/serve/modules/tbs/common/consts/ChangeTypeEnum.java
  13. 2
      src/main/java/com/qs/serve/modules/tbs/common/dto/TbsBudgetChangeVo.java
  14. 27
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetBatchController.java
  15. 41
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java
  16. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  17. 5
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java
  18. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java
  19. 18
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java
  20. 17
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetChangeService.java
  21. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java
  22. 19
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  23. 124
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java
  24. 83
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  25. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  26. 1
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  27. 6
      src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml

17
src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java

@ -15,6 +15,7 @@ import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.service.impl.TbsBudgetApplyOperationServiceImpl;
import com.qs.serve.modules.tbs.service.impl.TbsBudgetBatchOperationServiceImpl;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import com.qs.serve.modules.tzc.service.impl.TzcPolicyOperationServiceImpl;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
@ -133,27 +134,27 @@ public class AsyncFactory {
AuthContextUtils.setTenant("001");
log.debug("--------------------------SubmitBudgetApply CallbackTimer Sleep Start------------------------------");
Thread.sleep(7*1000);
/*TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class);
TbsBudgetBatchOperationServiceImpl operationService = SpringUtils.getBean(TbsBudgetBatchOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
String summeryResult = operationService.checkAffairSummery(batchId);
if(summeryResult.equals(SeeYonOperationService.SummeryState_Success)){
DataAffairCommitService commitService = SpringUtils.getBean(DataAffairCommitService.class);
// 获取最后一条审批判断结果:TbsAffairCommitBo.state 0-否定,1-同意,2-退回
Integer state = commitService.getState(applyOperationService.getTemplateCode(),budgetId+"");
Integer state = commitService.getState(operationService.getTemplateCode(),batchId+"");
//调用成功回调方法
TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId);
doParam.setTargetId(batchId);
if (state==null||state==1){
applyOperationService.doFinished(doParam);
operationService.doFinished(doParam);
}else if (state==2){
applyOperationService.doCommitBacked(budgetId);
operationService.doCommitBacked(batchId);
}else if (state==0){
applyOperationService.doRefuse(doParam);
operationService.doRefuse(doParam);
}
}
log.debug("--------------------------SubmitBudgetApply CallbackTimer summeryResult:{} ------------------------------",summeryResult);
*/
} catch (Exception e) {
e.printStackTrace();
}

37
src/main/java/com/qs/serve/modules/bms/controller/BmsDutyInfoController.java

@ -0,0 +1,37 @@
package com.qs.serve.modules.bms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.R;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bms.entity.BmsDutyInfo;
import com.qs.serve.modules.bms.service.BmsDutyInfoService;
import java.util.List;
/**
* 基础档案 税务信息
* @author YenHex
* @since 2023-08-30
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/dutyInfo")
public class BmsDutyInfoController {
private BmsDutyInfoService bmsDutyInfoService;
@GetMapping("/list")
public R<List<BmsDutyInfo>> getList(){
List<BmsDutyInfo> list = bmsDutyInfoService.list(
new LambdaQueryWrapper<BmsDutyInfo>()
.eq(BmsDutyInfo::getShowFlag,1)
);
return R.ok(list);
}
}

97
src/main/java/com/qs/serve/modules/bms/entity/BmsDutyInfo.java

@ -0,0 +1,97 @@
package com.qs.serve.modules.bms.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-08-30
*/
@Data
@TableName("bms_duty_info")
public class BmsDutyInfo implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 公司名称 */
@Length(max = 255,message = "公司名称长度不能超过255字")
private String comName;
/** 税号 */
@Length(max = 255,message = "税号长度不能超过255字")
private String dutyCode;
/** 是否显示 */
private Integer showFlag;
/** 备注 */
@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;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@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;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
/** */
@JsonIgnore
@JsonProperty
private String tenantId;
public static BmsDutyInfo toNewObject(BmsDutyInfo source){
BmsDutyInfo dutyInfo = new BmsDutyInfo();
dutyInfo.setId(source.getId());
dutyInfo.setComName(source.getComName());
dutyInfo.setDutyCode(source.getDutyCode());
dutyInfo.setShowFlag(source.getShowFlag());
dutyInfo.setRemark(source.getRemark());
dutyInfo.setCreateTime(source.getCreateTime());
dutyInfo.setCreateBy(source.getCreateBy());
dutyInfo.setUpdateTime(source.getUpdateTime());
dutyInfo.setUpdateBy(source.getUpdateBy());
dutyInfo.setDelFlag(source.getDelFlag());
dutyInfo.setTenantId(source.getTenantId());
return dutyInfo;
}
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsDutyInfoMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsDutyInfo;
/**
* 税务信息表 Mapper
* @author YenHex
* @date 2023-08-30
*/
public interface BmsDutyInfoMapper extends BaseMapper<BmsDutyInfo> {
}

14
src/main/java/com/qs/serve/modules/bms/service/BmsDutyInfoService.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsDutyInfo;
/**
* 税务信息表 服务接口
* @author YenHex
* @date 2023-08-30
*/
public interface BmsDutyInfoService extends IService<BmsDutyInfo> {
}

10
src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBatchBo;
import java.util.List;
import java.util.Map;
@ -21,6 +22,15 @@ public interface BmsSubjectService extends IService<BmsSubject> {
*/
Map<String,BmsSubject> loadByNameOrCode(List<String> subjectCodes,Boolean throwInvalidCode);
/**
* 加载编码
* @param subjectCodes
* @param param param
* @return
*/
Map<String,BmsSubject> loadByCode(List<String> subjectCodes, TbsBudgetBatchBo param);
/**
* id加载列表
* @param ids

22
src/main/java/com/qs/serve/modules/bms/service/impl/BmsDutyInfoServiceImpl.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.bms.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.bms.entity.BmsDutyInfo;
import com.qs.serve.modules.bms.service.BmsDutyInfoService;
import com.qs.serve.modules.bms.mapper.BmsDutyInfoMapper;
/**
* 税务信息表 服务实现类
* @author YenHex
* @since 2023-08-30
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsDutyInfoServiceImpl extends ServiceImpl<BmsDutyInfoMapper,BmsDutyInfo> implements BmsDutyInfoService {
}

31
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java

@ -1,10 +1,12 @@
package com.qs.serve.modules.bms.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBatchBo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -51,6 +53,35 @@ public class BmsSubjectServiceImpl extends ServiceImpl<BmsSubjectMapper,BmsSubje
return subjectMap;
}
@Override
public Map<String, BmsSubject> loadByCode(List<String> subjectCodes, TbsBudgetBatchBo param) {
if(CollUtil.isEmpty(subjectCodes)){
return new HashMap<>();
}
List<BmsSubject> subjectList = this.list(
new LambdaQueryWrapper<BmsSubject>()
.in(BmsSubject::getSubjectCode,subjectCodes)
);
if(subjectCodes.size()>subjectList.size()){
for (String subjectCode : subjectCodes) {
boolean exist = subjectList.stream().anyMatch(a->a.getSubjectCode().equals(subjectCode));
if(!exist){
for (TbsBudgetBatchBo.BudgetMain budgetMain : param.getBudgetList()) {
if(budgetMain.getSubjectCode().equals(subjectCode)){
budgetMain.getErrorInfos().add("无效的科目编码:"+subjectCode);
param.setErrorFlag(true);
}
}
}
}
}
Map<String,BmsSubject> subjectMap = new HashMap<>();
for (BmsSubject subject : subjectList) {
subjectMap.put(subject.getSubjectCode(),subject);
}
return subjectMap;
}
@Override
public List<BmsSubject> listByIds(List<Long> ids, List<Long> noInIds) {
LambdaQueryWrapper<BmsSubject> lqw = new LambdaQueryWrapper<>();

2
src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java

@ -43,7 +43,7 @@ public class GoodsSpuApi {
PageUtil.startPage();
LambdaQueryWrapper<GoodsSpu> spuWrapper = new LambdaQueryWrapper<>(param);
//销售分组id(默认0,表所有 不进行条件过滤)
if(param.getGoodsSaleGroupId().equals(0L)){
if(param.getGoodsSaleGroupId()!=null&&param.getGoodsSaleGroupId().equals(0L)){
param.setGoodsSaleGroupId(null);
}
if(StringUtils.hasText(param.getSearchValue())){

5
src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java

@ -41,4 +41,9 @@ public class CtpAddNodeDTO {
*/
String targetId;
/**
* 评论(2023年8月30日添加)
*/
String comment;
}

5
src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java

@ -26,4 +26,9 @@ public class CtpAddNodeParam {
*/
String targetId;
/**
* 评论(2023年8月30日添加)
*/
String comment;
}

14
src/main/java/com/qs/serve/modules/tbs/common/consts/ChangeTypeEnum.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.tbs.common.consts;
/**
* @author YenHex
* @since 2023/8/30
*/
public enum ChangeTypeEnum {
batchApply,
batchChange,
apply,
change
}

2
src/main/java/com/qs/serve/modules/tbs/common/dto/TbsBudgetChangeVo.java

@ -122,4 +122,6 @@ public class TbsBudgetChangeVo {
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 是否批量提交 */
private Integer batchApplyFlag;
}

27
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetBatchController.java

@ -11,9 +11,14 @@ import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
import com.qs.serve.modules.tbs.entity.TbsBudgetChange;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBatchBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchItemService;
import com.qs.serve.modules.tbs.service.TbsBudgetChangeService;
import com.qs.serve.modules.tbs.service.impl.TbsBudgetBatchOperationServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -24,6 +29,7 @@ import com.qs.serve.modules.tbs.entity.TbsBudgetBatch;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchService;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
/**
@ -39,6 +45,8 @@ public class TbsBudgetBatchController {
private TbsBudgetBatchService tbsBudgetBatchService;
private TbsBudgetBatchOperationServiceImpl budgetBatchOperationService;
private final TbsBudgetBatchItemService budgetBatchItemService;
private final TbsBudgetChangeService tbsBudgetChangeService;
/**
@ -73,10 +81,23 @@ public class TbsBudgetBatchController {
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Budget, title = "批量申请", biz = BizType.QUERY)
@PreAuthorize("hasRole('tbs:budgetBatch:query')")
public R<TbsBudgetBatch> getById(@PathVariable("id") String id){
TbsBudgetBatch tbsBudgetBatch = tbsBudgetBatchService.getById(id);
return R.ok(tbsBudgetBatch);
TbsBudgetBatch budgetBatch = tbsBudgetBatchService.getById(id);
List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
List<TbsBudgetChange> changeList = new ArrayList<>();
for (TbsBudgetBatchItem batchItem : budgetBatchItemList) {
if(batchItem.getChangeId()!=null){
TbsBudgetChange budgetChange = tbsBudgetChangeService.getDetailById(batchItem.getChangeId().toString(),
ChangeTypeEnum.batchChange);
changeList.add(budgetChange);
}else {
TbsBudgetChange budgetChange = tbsBudgetChangeService.getDetailByBudgetId(batchItem.getBudgetId().toString(),
ChangeTypeEnum.batchApply);
changeList.add(budgetChange);
}
}
budgetBatch.setChangeList(changeList);
return R.ok(budgetBatch);
}

41
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java

@ -14,6 +14,7 @@ import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum;
import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo;
@ -72,22 +73,10 @@ public class TbsBudgetChangeController {
* @return
*/
@GetMapping("/{id}")
public R<TbsBudgetChange> getList(@PathVariable("id")Long id ){
TbsBudgetChange budgetChange = tbsBudgetChangeService.getById(id);
List<TbsBudgetChangeScheduleItem> changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId());
List<TbsBudgetChangeCondition> changeConditionList = tbsBudgetChangeConditionService.listByChangeId(budgetChange.getId());
Map<Integer,List<TbsBudgetChangeCondition>> map = changeConditionList.stream().collect(Collectors.groupingBy(TbsBudgetChangeCondition::getSourceFlag));
budgetChange.setChangeScheduleItemList(changeScheduleItemList);
budgetChange.setChangeConditionList(map.get(0));
budgetChange.setOrgConditionList(map.get(1));
if(budgetChange.getNewAttachIds()!=null&&budgetChange.getNewAttachIds().length>0){
budgetChange.setNewAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getNewAttachIds())));
}
if(budgetChange.getOrgAttachIds()!=null&&budgetChange.getOrgAttachIds().length>0){
budgetChange.setOrgAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getOrgAttachIds())));
}
public R<TbsBudgetChange> getList(@PathVariable("id")String id ){
TbsBudgetChange budgetChange = tbsBudgetChangeService.getDetailById(id, null);
if (budgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){
AsyncManager.me().execute(AsyncFactory.submitBudgetChange(budgetChange.getId()+""));
AsyncManager.me().execute(AsyncFactory.submitBudgetChange(id));
}
return R.ok(budgetChange);
}
@ -98,26 +87,8 @@ public class TbsBudgetChangeController {
* @return
*/
@GetMapping("/apply/{id}")
public R<TbsBudgetChange> getApplyBudget(@PathVariable("id")Long id ){
TbsBudget budget = tbsBudgetService.getById(id);
LambdaQueryWrapper<TbsBudgetCondition> conditionLqw = new LambdaQueryWrapper<>();
conditionLqw.eq(TbsBudgetCondition::getBudgetId,id);
conditionLqw.isNull(TbsBudgetCondition::getChangeId);
List<TbsBudgetCondition> conditions = tbsBudgetConditionService.list(conditionLqw);
LambdaQueryWrapper<TbsScheduleItemBudget> schItemBudgetLqw = new LambdaQueryWrapper<>();
schItemBudgetLqw.eq(TbsScheduleItemBudget::getBudgetId,id);
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService.list(schItemBudgetLqw);
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget);
List<TbsBudgetChangeCondition> budgetChangeConditions = conditions.stream()
.map(TbsBudgetChangeCondition::toNewObject).collect(Collectors.toList());
List<TbsBudgetChangeScheduleItem> budgetChangeScheduleItemList = scheduleItemBudgetList.stream()
.map(TbsBudgetChangeScheduleItem::toNewObject).collect(Collectors.toList());
budgetChange.setChangeScheduleItemList(budgetChangeScheduleItemList);
budgetChange.setChangeConditionList(budgetChangeConditions);
if(budget.getAttachIds()!=null&&budget.getAttachIds().length>0){
budgetChange.setNewAttachIds(budget.getAttachIds());
budgetChange.setNewAttachInfos(sysAttachService.listByIds(Arrays.asList(budget.getAttachIds())));
}
public R<TbsBudgetChange> getApplyBudget(@PathVariable("id")String id ){
TbsBudgetChange budgetChange = tbsBudgetChangeService.getDetailByBudgetId(id, null);
return R.ok(budgetChange);
}

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

@ -121,6 +121,9 @@ public class TbsBudget implements Serializable {
/** 提交审批时间 */
private LocalDateTime submitTime;
/** 是否批量提交 */
private Integer batchApplyFlag;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

5
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java

@ -4,6 +4,7 @@ import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -50,7 +51,7 @@ public class TbsBudgetBatch implements Serializable {
private LocalDateTime finishedTime;
/** 预算类型 0->修改;1->新增 */
private Integer batchType;
//private Integer batchType;
/** 致远表单id */
@Length(max = 255,message = "致远表单id长度不能超过255字")
@ -108,6 +109,8 @@ public class TbsBudgetBatch implements Serializable {
@JsonProperty
private String delFlag;
@TableField(exist = false)
private List<TbsBudgetChange> changeList;
public static TbsBudgetBatch toNewObject(TbsBudgetBatch source){
TbsBudgetBatch budgetBatch = new TbsBudgetBatch();

6
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java

@ -112,6 +112,9 @@ public class TbsBudgetChange implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime submitTime;
/** 是否批量提交 */
private Integer batchApplyFlag;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
@ -185,6 +188,9 @@ public class TbsBudgetChange implements Serializable {
@TableField(exist = false)
private List<?> orgAttachInfos;
@TableField(exist = false)
private String applyType;
public static TbsBudgetChange toNewObject(TbsBudget source){
TbsBudgetChange budgetChange = new TbsBudgetChange();
//budgetChange.setId(source.getId());

18
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java

@ -1,9 +1,11 @@
package com.qs.serve.modules.tbs.entity.bo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* @author YenHex
@ -12,6 +14,8 @@ import java.util.List;
@Data
public class TbsBudgetBatchBo {
@JsonIgnore
private boolean errorFlag;
private String remark;
@ -29,7 +33,7 @@ public class TbsBudgetBatchBo {
private String scheduleName;
/** 科目编码 */
private String subjectName;
private String subjectCode;
/** 成本中心类型:
* center,
@ -45,7 +49,7 @@ public class TbsBudgetBatchBo {
private String centerName;
/** 品牌名称 */
private String bandNames;
private String brandNames;
/** 类目名称 */
private String categoryNames;
@ -58,6 +62,14 @@ public class TbsBudgetBatchBo {
*/
List<BudgetAmount> scheduleAmount;
private List<Object> errorInfos;
public List<Object> getErrorInfos() {
if(errorInfos==null){
errorInfos = new ArrayList<>();
}
return errorInfos;
}
}
@Data
@ -69,6 +81,8 @@ public class TbsBudgetBatchBo {
private BigDecimal preDispatchAmount;
private Object errorInfo;
}
}

17
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetChangeService.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum;
import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo;
import com.qs.serve.modules.tbs.entity.TbsBudgetChange;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo;
@ -17,6 +18,22 @@ import java.util.List;
*/
public interface TbsBudgetChangeService extends IService<TbsBudgetChange> {
/**
* 获取详情
* @param id
* @param applyType
* @return
*/
TbsBudgetChange getDetailById(String id, ChangeTypeEnum applyType);
/**
* 获取详情
* @param budgetId
* @param applyType
* @return
*/
TbsBudgetChange getDetailByBudgetId(String budgetId,ChangeTypeEnum applyType);
/**
* 提交修改
* @param param

2
src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java

@ -107,7 +107,7 @@ public class TbsCenterDtoService {
}
return new TbsCenterDto(bizRegion.getId(),bizRegion.getCode(),bizRegion.getName(),centerType);
}
Assert.throwEx("无法匹配成本中心类型:"+centerType);
//Assert.throwEx("无法匹配成本中心类型:"+centerType);
return null;
}

19
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java

@ -1,6 +1,8 @@
package com.qs.serve.modules.tbs.service.impl;
import com.qs.serve.common.config.properties.ProjectProperties;
import com.qs.serve.common.framework.manager.AsyncFactory;
import com.qs.serve.common.framework.manager.AsyncManager;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.goods.service.GoodsCategoryService;
@ -34,21 +36,7 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
private final TbsBudgetBatchService budgetBatchService;
private final TbsBudgetBatchItemService budgetBatchItemService;
private final SysUserService sysUserService;
private final SeeYonRequestService seeYonService;
private final ProjectProperties projectProperties;
private final TbsBudgetService tbsBudgetService;
private final TbsBudgetConditionService tbsBudgetConditionService;
private final BmsSubjectService bmsSubjectService;
private final TbsCenterDtoService tbsCenterDtoService;
private final TbsScheduleService tbsScheduleService;
private final TbsScheduleItemService tbsScheduleItemService;
private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private final GoodsCategoryService goodsCategoryService;
private final TbsBudgetChangeService tbsBudgetChangeService;
private final TbsBudgetChangeConditionService tbsBudgetChangeConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService;
private final TbsBudgetChangeOperationServiceImpl changeOperationService;
@Override
@ -126,7 +114,8 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
@Override
public void doCommitBacked(String targetId) {
//补偿接口
AsyncManager.me().execute(AsyncFactory.submitBudgetBatch(targetId));
}
}

124
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

@ -77,6 +77,11 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
String templateCode = TbsSeeYonConst.BudgetBatchApplyConf.Code();
//构建Batch
TbsBudgetBatch budgetBatch = buildBatchData(param, batchCode, sysUser);
if(budgetBatch==null){
return param;
}
//保存后赋值
Long budgetBatchId = budgetBatch.getId();
@ -124,9 +129,34 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
return budgetBatch;
}
public TbsBudgetBatch buildBatchData(TbsBudgetBatchBo param,String batchCode,SysUser sysUser){
List<TbsBudgetBatchBo.BudgetMain> paramBudgetList = param.getBudgetList();
for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) {
if(!StringUtils.hasText(budgetMain.getScheduleName())){
budgetMain.getErrorInfos().add("预算周期名称不能为空");
param.setErrorFlag(true);
}
if(!StringUtils.hasText(budgetMain.getBudgetName())){
budgetMain.getErrorInfos().add("预算名称不能为空");
param.setErrorFlag(true);
}
if(!StringUtils.hasText(budgetMain.getCenterType())){
budgetMain.getErrorInfos().add("成本中心类型不能为空");
param.setErrorFlag(true);
}
if(!StringUtils.hasText(budgetMain.getCenterType())){
budgetMain.getErrorInfos().add("成本中心不能为空");
param.setErrorFlag(true);
}
for (TbsBudgetBatchBo.BudgetAmount budgetAmount : budgetMain.getScheduleAmount()) {
if(budgetAmount.getBudgetAmount()==null){
budgetAmount.setBudgetAmount(BigDecimal.ZERO);
}
if(budgetAmount.getPreDispatchAmount()==null){
budgetAmount.setPreDispatchAmount(BigDecimal.ZERO);
}
}
}
TbsBudgetBatch budgetBatch = new TbsBudgetBatch();
budgetBatch.setBatchTitle(sysUser.getName()+"发起了批量导入预算");
budgetBatch.setBatchCode(batchCode);
@ -142,18 +172,27 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
//加载 周期信息
List<String> scheduleNames = paramBudgetList.stream()
.map(TbsBudgetBatchBo.BudgetMain::getScheduleName).distinct().collect(Collectors.toList());
Map<String,TbsSchedule> scheduleMap = loadScheduleMap(scheduleNames);
Map<String,TbsSchedule> scheduleMap = loadScheduleMap(scheduleNames,param);
//加载 科目
Map<String,BmsSubject> subjectMap = loadSubjectMapWithFilterInvalid(param);
//加载 成本中心
Map<String,TbsCenterDto> centerDtoMap = new HashMap<>();
for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) {
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDtoByName(budgetMain.getCenterType(),budgetMain.getCenterName(),true);
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDtoByName(budgetMain.getCenterType(),budgetMain.getCenterName(),false);
if(centerDto==null){
budgetMain.getErrorInfos().add("无效的成本中心:"+budgetMain.getCenterType()+" "+budgetMain.getCenterName());
param.setErrorFlag(true);
}
//key=> budgetMain.getCenterType()+"_&_"+budgetMain.getCenterName()
centerDtoMap.put(budgetMain.getCenterType()+"_&_"+budgetMain.getCenterName(),centerDto);
}
//加载 品类
Map<String,GoodsCategory> categoryMap = loadGoodsCategoryMap(paramBudgetList);
Map<String,GoodsCategory> categoryMap = loadGoodsCategoryMap(param);
//有错误信息退出
if(param.isErrorFlag()){
return null;
}
//修改的生成为更变记录
List<TbsBudgetBatchBo.BudgetMain> updBudgetList = paramBudgetList.stream()
@ -187,6 +226,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
budgetChange.setUserId(sysUser.getId());
budgetChange.setUserCode(sysUser.getCode());
budgetChange.setUserName(sysUser.getName());
budgetChange.setBatchApplyFlag(1);
budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
boolean notChangeTitle = paramItem.getBudgetName()!=null&& paramItem.getBudgetName().equals(budget.getBudgetCode());
if(!notChangeTitle){
@ -228,10 +268,11 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
.filter(a->!StringUtils.hasText(a.getBudgetNumber())).collect(Collectors.toList());
for (TbsBudgetBatchBo.BudgetMain budgetMain : addBudgetList) {
TbsBudget newBudget = new TbsBudget();
tbsBudgetService.save(newBudget);
Long budgetId = newBudget.getId();
newBudget.setBatchApplyFlag(1);
TbsSchedule schedule = scheduleMap.get(budgetMain.getScheduleName());
this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, budgetMain, newBudget);
tbsBudgetService.save(newBudget);
Long budgetId = newBudget.getId();
//创建新条件
List<TbsBudgetCondition> conditionList = this.createTbsBudgetConditions(categoryMap, budgetMain, budgetId);
//创建新预算周期
@ -271,6 +312,10 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
//设置新的值
TbsBudget newBudget = new TbsBudget();
newBudget.setId(budgetId);
newBudget.setBatchApplyFlag(1);
newBudget.setUserId(sysUser.getId());
newBudget.setUserCode(sysUser.getCode());
newBudget.setUserName(sysUser.getName());
TbsSchedule schedule = scheduleMap.get(paramItem.getScheduleName());
this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, paramItem, newBudget);
//创建新条件
@ -290,7 +335,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
List<TbsBudgetCondition> existingConditionList = tbsBudgetConditionService
.list(new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId, budgetId));
String bandNames = paramItem.getBandNames();
String bandNames = paramItem.getBrandNames();
String categoryNames = paramItem.getCategoryNames();
String seriesNames = paramItem.getSeriesNames();
//设置changeConditionList参数
@ -372,8 +417,8 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
@NotNull
private List<TbsBudgetCondition> createTbsBudgetConditions(Map<String, GoodsCategory> categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) {
List<TbsBudgetCondition> conditionList = new ArrayList<>();
if(StringUtils.hasText(paramItem.getBandNames())){
String[] values = paramItem.getBandNames().split(",");
if(StringUtils.hasText(paramItem.getBrandNames())){
String[] values = paramItem.getBrandNames().split(",");
for (String value : values) {
GoodsCategory category = categoryMap.get(value);
TbsBudgetCondition budgetCondition = new TbsBudgetCondition();
@ -421,8 +466,8 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
newBudget.setBudgetNumber(paramItem.getBudgetNumber());
newBudget.setBudgetState(0);
newBudget.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
if(StringUtils.hasText(paramItem.getSubjectName())){
BmsSubject bmsSubject = subjectMap.get(paramItem.getSubjectName());
if(StringUtils.hasText(paramItem.getSubjectCode())){
BmsSubject bmsSubject = subjectMap.get(paramItem.getSubjectCode());
if(bmsSubject==null){
}
@ -441,7 +486,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
newBudget.setScheduleName(schedule.getName());
boolean conditionFlag = StringUtils.hasText(paramItem.getCategoryNames())
||StringUtils.hasText(paramItem.getSeriesNames())
||StringUtils.hasText(paramItem.getBandNames());
||StringUtils.hasText(paramItem.getBrandNames());
newBudget.setConditionFlag(conditionFlag?0:1);
newBudget.setUserId(sysUser.getId());
newBudget.setUserCode(sysUser.getCode());
@ -451,19 +496,23 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
/**
* 加载类目
* @param paramBudgetList
* @param param
* @return
*/
private Map<String,GoodsCategory> loadGoodsCategoryMap(List<TbsBudgetBatchBo.BudgetMain> paramBudgetList) {
private Map<String,GoodsCategory> loadGoodsCategoryMap(TbsBudgetBatchBo param) {
List<TbsBudgetBatchBo.BudgetMain> paramBudgetList = param.getBudgetList();
Set<String> goodsCategoryNames = new HashSet<>();
for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) {
String bandNames = budgetMain.getBandNames();
String bandNames = budgetMain.getBrandNames();
String categoryNames = budgetMain.getCategoryNames();
String seriesNames = budgetMain.getSeriesNames();
initCategorySet(goodsCategoryNames, bandNames);
initCategorySet(goodsCategoryNames, categoryNames);
initCategorySet(goodsCategoryNames, seriesNames);
}
if(goodsCategoryNames.size()<1){
return new HashMap<>();
}
List<GoodsCategory> goodsCategories = goodsCategoryService.list(
new LambdaQueryWrapper<GoodsCategory>()
.in(GoodsCategory::getName,goodsCategoryNames)
@ -474,7 +523,16 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
for (String categoryName : goodsCategoryNames) {
boolean exist = goodsCategories.stream().anyMatch(a->a.getName().equals(categoryName));
if(!exist){
Assert.throwEx("无效的品类:"+categoryName);
//Assert.throwEx("无效的品类:"+categoryName);
for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) {
boolean bandNamesFlag = budgetMain.getBrandNames() != null && budgetMain.getBrandNames().contains(categoryName);
boolean categoryNamesFlag = budgetMain.getCategoryNames() != null && budgetMain.getCategoryNames().contains(categoryName);
boolean seriesNamesFlag = budgetMain.getSeriesNames() != null && budgetMain.getSeriesNames().contains(categoryName);
if(bandNamesFlag||categoryNamesFlag||seriesNamesFlag){
budgetMain.getErrorInfos().add("无效的品类:"+categoryName);
param.setErrorFlag(true);
}
}
}
}
}
@ -499,21 +557,41 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
}
}
private Map<String,TbsSchedule> loadScheduleMap(List<String> scheduleNames) {
private Map<String,TbsSchedule> loadScheduleMap(List<String> scheduleNames,TbsBudgetBatchBo param) {
List<TbsSchedule> schedules = tbsScheduleService.list(
new LambdaQueryWrapper<TbsSchedule>().in(TbsSchedule::getName, scheduleNames)
);
if(scheduleNames.size()!=schedules.size()){
for (String scheduleName : scheduleNames) {
boolean exist = schedules.stream().anyMatch(a->a.getName().equals(scheduleName));
boolean exist = schedules.stream()
.filter(b->b.getName()!=null)
.anyMatch(a->a.getName().equals(scheduleName));
if(!exist){
Assert.throwEx("预算周期不存在:["+scheduleName+"]");
for (TbsBudgetBatchBo.BudgetMain budgetMain : param.getBudgetList()) {
if(budgetMain.getScheduleName()!=null&&budgetMain.getScheduleName().equals(scheduleName)){
budgetMain.getErrorInfos().add("预算周期不存在:"+scheduleName);
param.setErrorFlag(true);
break;
}
}
}
}
}
Map<String,TbsSchedule> scheduleMap = new HashMap<>(scheduleNames.size());
for (TbsSchedule schedule : schedules) {
List<TbsScheduleItem> scheduleItems = tbsScheduleItemService.listByScheduleId(schedule.getId());
for (TbsBudgetBatchBo.BudgetMain budgetMain : param.getBudgetList()) {
if(budgetMain.getScheduleName().equals(schedule.getName())){
for (TbsBudgetBatchBo.BudgetAmount budgetAmount : budgetMain.getScheduleAmount()) {
String scheduleItemName = budgetAmount.getScheduleItemName();
boolean exist = scheduleItems.stream().anyMatch(item -> scheduleItemName.equals(item.getItemName()));
if(!exist){
budgetAmount.setErrorInfo("周期项不存在:"+scheduleItemName);
param.setErrorFlag(true);
}
}
}
}
schedule.setScheduleItemlist(scheduleItems);
scheduleMap.put(schedule.getName(),schedule);
}
@ -521,15 +599,15 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
}
/**
* 加载param的所有科目过滤无效的
* 加载param的所有科目
* @param param
* @return
*/
private Map<String,BmsSubject> loadSubjectMapWithFilterInvalid(TbsBudgetBatchBo param){
List<String> subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectName()!=null)
.map(TbsBudgetBatchBo.BudgetMain::getSubjectName)
List<String> subjectCodes = param.getBudgetList().stream().filter(a->StringUtils.hasText(a.getSubjectCode()))
.map(TbsBudgetBatchBo.BudgetMain::getSubjectCode)
.collect(Collectors.toList());
return bmsSubjectService.loadByNameOrCode(subjectCodes,true);
return bmsSubjectService.loadByCode(subjectCodes,param);
}
}

83
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -12,9 +12,11 @@ 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.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum;
import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo;
import com.qs.serve.modules.tbs.common.util.TbsBudgetConditionUtil;
import com.qs.serve.modules.tbs.entity.*;
@ -23,17 +25,14 @@ import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount;
import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo;
import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.tbs.service.TbsBudgetChangeService;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -55,11 +54,83 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
private final SeeYonRequestService seeYonService;
private final ProjectProperties projectProperties;
private final TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService;
private final TbsBudgetChangeConditionService tbsBudgetChangeConditionService;
private final SysAttachService sysAttachService;
private final TbsBudgetConditionService tbsBudgetConditionService;
private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
@Override
public TbsBudgetChange getDetailById(String id, ChangeTypeEnum applyType) {
TbsBudgetChange budgetChange = this.getById(id);
if(applyType==null){
budgetChange.setApplyType(budgetChange.getBatchApplyFlag().equals(1)?
ChangeTypeEnum.batchChange.name():
ChangeTypeEnum.change.name());
}else {
budgetChange.setApplyType(applyType.name());
}
List<TbsBudgetChangeScheduleItem> changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId());
List<TbsBudgetChangeCondition> changeConditionList = tbsBudgetChangeConditionService.listByChangeId(budgetChange.getId());
Map<Integer,List<TbsBudgetChangeCondition>> map = changeConditionList.stream().collect(Collectors.groupingBy(TbsBudgetChangeCondition::getSourceFlag));
budgetChange.setChangeScheduleItemList(changeScheduleItemList);
budgetChange.setChangeConditionList(map.get(0));
budgetChange.setOrgConditionList(map.get(1));
if(budgetChange.getNewAttachIds()!=null&&budgetChange.getNewAttachIds().length>0){
budgetChange.setNewAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getNewAttachIds())));
}
if(budgetChange.getOrgAttachIds()!=null&&budgetChange.getOrgAttachIds().length>0){
budgetChange.setOrgAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getOrgAttachIds())));
}
return budgetChange;
}
@Override
public TbsBudgetChange getDetailByBudgetId(String budgetId,ChangeTypeEnum applyType) {
TbsBudget budget = tbsBudgetMapper.selectById(budgetId);
LambdaQueryWrapper<TbsBudgetCondition> conditionLqw = new LambdaQueryWrapper<>();
conditionLqw.eq(TbsBudgetCondition::getBudgetId,budgetId);
conditionLqw.isNull(TbsBudgetCondition::getChangeId);
List<TbsBudgetCondition> conditions = tbsBudgetConditionService.list(conditionLqw);
LambdaQueryWrapper<TbsScheduleItemBudget> schItemBudgetLqw = new LambdaQueryWrapper<>();
schItemBudgetLqw.eq(TbsScheduleItemBudget::getBudgetId,budgetId);
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService.list(schItemBudgetLqw);
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget);
if(applyType==null){
budgetChange.setApplyType(budget.getBatchApplyFlag().equals(1)?
ChangeTypeEnum.batchApply.name():
ChangeTypeEnum.apply.name());
}else {
budgetChange.setApplyType(applyType.name());
}
List<TbsBudgetChangeCondition> budgetChangeConditions = conditions.stream()
.map(TbsBudgetChangeCondition::toNewObject).collect(Collectors.toList());
List<TbsBudgetChangeScheduleItem> budgetChangeScheduleItemList = scheduleItemBudgetList.stream()
.map(TbsBudgetChangeScheduleItem::toNewObject).collect(Collectors.toList());
budgetChange.setChangeScheduleItemList(budgetChangeScheduleItemList);
budgetChange.setChangeConditionList(budgetChangeConditions);
if(budget.getAttachIds()!=null&&budget.getAttachIds().length>0){
budgetChange.setNewAttachIds(budget.getAttachIds());
budgetChange.setNewAttachInfos(sysAttachService.listByIds(Arrays.asList(budget.getAttachIds())));
}
return budgetChange;
}
@Override
public List<TbsBudgetChangeVo> selectChangeVoList(TbsBudgetChangeSo query) {
query.setPageSize(PageUtil.getPageSize());
query.setStartRow(PageUtil.getStartRow());
return baseMapper.selectChangeVoList(query);
List<TbsBudgetChangeVo> result = baseMapper.selectChangeVoList(query);
for (TbsBudgetChangeVo changeVo : result) {
if(changeVo.getBatchApplyFlag().equals(1)){
if(changeVo.getType().equals(ChangeTypeEnum.change.name())){
changeVo.setType(ChangeTypeEnum.batchChange.name());
}else {
changeVo.setType(ChangeTypeEnum.batchApply.name());
}
}
}
return result;
}
@Override

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

@ -99,7 +99,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsBudget tbsBudget = this.getById(id);
if(tbsBudget.getBudgetState().equals(1)){
Assert.throwEx("");
Assert.throwEx("已开启");
}
Map<String,Object> data = new HashMap<>();
data.put("exsp5", tbsBudget.getBudgetCode());
@ -137,6 +137,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
tbsBudget.setUserId(sysUser.getId());
tbsBudget.setUserCode(sysUser.getCode());
tbsBudget.setUserName(sysUser.getName());
tbsBudget.setBatchApplyFlag(0);
this.updateById(tbsBudget);
//创建流程后回调

1
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -121,6 +121,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
CtpAddNodeDTO addNodeDTO = new CtpAddNodeDTO();
addNodeDTO.setBackToMe(param.getBackToMe());
addNodeDTO.setTargetId(param.getTargetId());
addNodeDTO.setComment(param.getComment());
List<String> selectUserIds = new ArrayList<>();
SysUser loginUser = getUserMapper().selectById(AuthContextUtils.getSysUserId());
for (String userId : param.getUserIds()) {

6
src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml

@ -53,7 +53,8 @@
tbs_budget.`user_id`,
tbs_budget.`user_code`,
tbs_budget.`user_name`,
tbs_budget.`remark`
tbs_budget.`remark`,
tbs_budget.`batch_apply_flag`
from tbs_budget
where tbs_budget.del_flag = 0 and `tbs_budget`.`budget_check_state` != 0
<if test="query.budgetId != null"> and `tbs_budget`.`id` = #{query.budgetId}</if>
@ -92,7 +93,8 @@
tbs_budget_change.`remark`,
tbs_budget_change.`user_id`,
tbs_budget_change.`user_code`,
tbs_budget_change.`user_name`
tbs_budget_change.`user_name`,
tbs_budget_change.`batch_apply_flag`
from tbs_budget_change
where tbs_budget_change.del_flag = 0
<if test="query.code != null and query.code != ''">

Loading…
Cancel
Save