diff --git a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java index a03e0ab6..07e5235b 100644 --- a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java +++ b/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(); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsDutyInfoController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsDutyInfoController.java new file mode 100644 index 00000000..cee9107e --- /dev/null +++ b/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> getList(){ + List list = bmsDutyInfoService.list( + new LambdaQueryWrapper() + .eq(BmsDutyInfo::getShowFlag,1) + ); + return R.ok(list); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsDutyInfo.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsDutyInfo.java new file mode 100644 index 00000000..03961e0d --- /dev/null +++ b/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; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsDutyInfoMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsDutyInfoMapper.java new file mode 100644 index 00000000..c726194b --- /dev/null +++ b/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 { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsDutyInfoService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsDutyInfoService.java new file mode 100644 index 00000000..c4d1a7df --- /dev/null +++ b/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 { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java index edd03d77..7bc080fe 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java +++ b/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 { */ Map loadByNameOrCode(List subjectCodes,Boolean throwInvalidCode); + + /** + * 加载编码 + * @param subjectCodes + * @param param param + * @return + */ + Map loadByCode(List subjectCodes, TbsBudgetBatchBo param); + /** * id加载列表 * @param ids diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsDutyInfoServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsDutyInfoServiceImpl.java new file mode 100644 index 00000000..35a93e2c --- /dev/null +++ b/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 implements BmsDutyInfoService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java index f5f18e0a..ec260fab 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java +++ b/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 loadByCode(List subjectCodes, TbsBudgetBatchBo param) { + if(CollUtil.isEmpty(subjectCodes)){ + return new HashMap<>(); + } + List subjectList = this.list( + new LambdaQueryWrapper() + .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 subjectMap = new HashMap<>(); + for (BmsSubject subject : subjectList) { + subjectMap.put(subject.getSubjectCode(),subject); + } + return subjectMap; + } + @Override public List listByIds(List ids, List noInIds) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java index 17db7adc..0183dc50 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java @@ -43,7 +43,7 @@ public class GoodsSpuApi { PageUtil.startPage(); LambdaQueryWrapper spuWrapper = new LambdaQueryWrapper<>(param); //销售分组id(默认0,表所有 不进行条件过滤) - if(param.getGoodsSaleGroupId().equals(0L)){ + if(param.getGoodsSaleGroupId()!=null&¶m.getGoodsSaleGroupId().equals(0L)){ param.setGoodsSaleGroupId(null); } if(StringUtils.hasText(param.getSearchValue())){ diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java b/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java index 105aa443..577b741e 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java b/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java index febef91c..13cda24f 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/consts/ChangeTypeEnum.java b/src/main/java/com/qs/serve/modules/tbs/common/consts/ChangeTypeEnum.java new file mode 100644 index 00000000..f8ecacb4 --- /dev/null +++ b/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 + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/common/dto/TbsBudgetChangeVo.java b/src/main/java/com/qs/serve/modules/tbs/common/dto/TbsBudgetChangeVo.java index e1b31956..b30f5343 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/dto/TbsBudgetChangeVo.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetBatchController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetBatchController.java index ee1f45c3..0ed64199 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetBatchController.java +++ b/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 getById(@PathVariable("id") String id){ - TbsBudgetBatch tbsBudgetBatch = tbsBudgetBatchService.getById(id); - return R.ok(tbsBudgetBatch); + TbsBudgetBatch budgetBatch = tbsBudgetBatchService.getById(id); + List budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); + List 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); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java index e57af613..ef39af5f 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java +++ b/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 getList(@PathVariable("id")Long id ){ - TbsBudgetChange budgetChange = tbsBudgetChangeService.getById(id); - List changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId()); - List changeConditionList = tbsBudgetChangeConditionService.listByChangeId(budgetChange.getId()); - Map> 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 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 getApplyBudget(@PathVariable("id")Long id ){ - TbsBudget budget = tbsBudgetService.getById(id); - LambdaQueryWrapper conditionLqw = new LambdaQueryWrapper<>(); - conditionLqw.eq(TbsBudgetCondition::getBudgetId,id); - conditionLqw.isNull(TbsBudgetCondition::getChangeId); - List conditions = tbsBudgetConditionService.list(conditionLqw); - LambdaQueryWrapper schItemBudgetLqw = new LambdaQueryWrapper<>(); - schItemBudgetLqw.eq(TbsScheduleItemBudget::getBudgetId,id); - List scheduleItemBudgetList = tbsScheduleItemBudgetService.list(schItemBudgetLqw); - TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget); - List budgetChangeConditions = conditions.stream() - .map(TbsBudgetChangeCondition::toNewObject).collect(Collectors.toList()); - List 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 getApplyBudget(@PathVariable("id")String id ){ + TbsBudgetChange budgetChange = tbsBudgetChangeService.getDetailByBudgetId(id, null); return R.ok(budgetChange); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index f3f07b03..06b67974 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/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") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java index 22713aa8..2555dcb5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java +++ b/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 changeList; public static TbsBudgetBatch toNewObject(TbsBudgetBatch source){ TbsBudgetBatch budgetBatch = new TbsBudgetBatch(); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java index e606b25b..4f7f51d5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java +++ b/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()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java index a1743710..e6423d38 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java +++ b/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 scheduleAmount; + private List errorInfos; + + public List getErrorInfos() { + if(errorInfos==null){ + errorInfos = new ArrayList<>(); + } + return errorInfos; + } } @Data @@ -69,6 +81,8 @@ public class TbsBudgetBatchBo { private BigDecimal preDispatchAmount; + private Object errorInfo; + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetChangeService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetChangeService.java index 6550446f..372f88a8 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetChangeService.java +++ b/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 { + /** + * 获取详情 + * @param id + * @param applyType + * @return + */ + TbsBudgetChange getDetailById(String id, ChangeTypeEnum applyType); + + /** + * 获取详情 + * @param budgetId + * @param applyType + * @return + */ + TbsBudgetChange getDetailByBudgetId(String budgetId,ChangeTypeEnum applyType); + /** * 提交修改 * @param param diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java index 1daa94f2..a025e238 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java index 7114bf22..a6d1737c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java +++ b/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)); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java index 773b52cb..6b03d2db 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java @@ -77,6 +77,11 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl 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 scheduleNames = paramBudgetList.stream() .map(TbsBudgetBatchBo.BudgetMain::getScheduleName).distinct().collect(Collectors.toList()); - Map scheduleMap = loadScheduleMap(scheduleNames); + Map scheduleMap = loadScheduleMap(scheduleNames,param); //加载 科目 Map subjectMap = loadSubjectMapWithFilterInvalid(param); //加载 成本中心 Map 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 categoryMap = loadGoodsCategoryMap(paramBudgetList); + Map categoryMap = loadGoodsCategoryMap(param); + + //有错误信息退出 + if(param.isErrorFlag()){ + return null; + } //修改的生成为更变记录 List updBudgetList = paramBudgetList.stream() @@ -187,6 +226,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl!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 conditionList = this.createTbsBudgetConditions(categoryMap, budgetMain, budgetId); //创建新预算周期 @@ -271,6 +312,10 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl existingConditionList = tbsBudgetConditionService .list(new LambdaQueryWrapper() .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 createTbsBudgetConditions(Map categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) { List 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 loadGoodsCategoryMap(List paramBudgetList) { + private Map loadGoodsCategoryMap(TbsBudgetBatchBo param) { + List paramBudgetList = param.getBudgetList(); Set 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 goodsCategories = goodsCategoryService.list( new LambdaQueryWrapper() .in(GoodsCategory::getName,goodsCategoryNames) @@ -474,7 +523,16 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpla.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 loadScheduleMap(List scheduleNames) { + private Map loadScheduleMap(List scheduleNames,TbsBudgetBatchBo param) { List schedules = tbsScheduleService.list( new LambdaQueryWrapper().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 scheduleMap = new HashMap<>(scheduleNames.size()); for (TbsSchedule schedule : schedules) { List 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 loadSubjectMapWithFilterInvalid(TbsBudgetBatchBo param){ - List subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectName()!=null) - .map(TbsBudgetBatchBo.BudgetMain::getSubjectName) + List 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); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index c89dc3f4..72abfc2a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/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 changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId()); + List changeConditionList = tbsBudgetChangeConditionService.listByChangeId(budgetChange.getId()); + Map> 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 conditionLqw = new LambdaQueryWrapper<>(); + conditionLqw.eq(TbsBudgetCondition::getBudgetId,budgetId); + conditionLqw.isNull(TbsBudgetCondition::getChangeId); + List conditions = tbsBudgetConditionService.list(conditionLqw); + LambdaQueryWrapper schItemBudgetLqw = new LambdaQueryWrapper<>(); + schItemBudgetLqw.eq(TbsScheduleItemBudget::getBudgetId,budgetId); + List 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 budgetChangeConditions = conditions.stream() + .map(TbsBudgetChangeCondition::toNewObject).collect(Collectors.toList()); + List 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 selectChangeVoList(TbsBudgetChangeSo query) { query.setPageSize(PageUtil.getPageSize()); query.setStartRow(PageUtil.getStartRow()); - return baseMapper.selectChangeVoList(query); + List 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 diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index f210ad0a..194c523a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -99,7 +99,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); TbsBudget tbsBudget = this.getById(id); if(tbsBudget.getBudgetState().equals(1)){ - Assert.throwEx(""); + Assert.throwEx("已开启"); } Map data = new HashMap<>(); data.put("exsp5", tbsBudget.getBudgetCode()); @@ -137,6 +137,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl tbsBudget.setUserId(sysUser.getId()); tbsBudget.setUserCode(sysUser.getCode()); tbsBudget.setUserName(sysUser.getName()); + tbsBudget.setBatchApplyFlag(0); this.updateById(tbsBudget); //创建流程后回调 diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java index 1d4e4a78..d1e3a624 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java +++ b/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 selectUserIds = new ArrayList<>(); SysUser loginUser = getUserMapper().selectById(AuthContextUtils.getSysUserId()); for (String userId : param.getUserIds()) { diff --git a/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml index 78f5a78f..a9a6d357 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml +++ b/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 and `tbs_budget`.`id` = #{query.budgetId} @@ -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